AI 에이전트가 수직 슬라이스(Vertical Slices)에 대한 내 생각을 바꾸어 놓았다
요약
AI 에이전트 중심의 개발 환경에서는 기존의 계층형 아키텍처보다 기능 중심의 수직 슬라이스(Vertical Slices) 아키텍처가 더 효율적입니다. 각 에이전트가 특정 기능의 구현부터 테스트까지 전체 소유권을 가질 수 있어 협업과 코드 리뷰가 용이해집니다.
핵심 포인트
- 계층형 아키텍처는 AI 에이전트가 작업할 때 여러 파일을 동시에 수정해야 하는 불편함이 있음
- 수직 슬라이스 방식은 기능을 중심으로 코드를 구성하여 에이전트의 작업 경계를 명확히 함
- 기능별 테스트 구성을 통해 구현과 검증의 소유권을 일치시킬 수 있음
- 응집도를 높이는 아키텍처는 인간과 AI 에이전트 모두의 협업 효율을 향상시킴
과거의 선호 방식
수년 동안 나는 전통적인 계층형 아키텍처 (Layered Architecture)를 선호해 왔다.
Controllers/
Services/
Repositories/
...
이 방식은 탐색을 직관적으로 만들어 준다. 만약 리포지토리 (Repository)가 필요하다면, 어디를 찾아봐야 할지 정확히 알 수 있다.
최적화 대상의 변화
그러다 여러 개의 AI 에이전트 (AI agents)와 함께 작업하기 시작했고, 갑자기 최적화 대상이 바뀌었다. 한 에이전트는 배송 (Shipping)을 구현하고, 다른 에이전트는 결제 (Billing)를 구현한다고 상상해 보자.
계층형 아키텍처를 사용하면, 두 에이전트가 서로 다른 기능을 작업하고 있음에도 불구하고 결국 컨트롤러 (Controllers), 서비스 (Services), 리포지토리 (Repositories), 테스트 (Tests), 그리고 의존성 주입 (Dependency Injection)을 모두 건드리게 된다. 단일 기능의 구현이 프로젝트 전체에 흩어지게 되는 것이다. 코드 리뷰 (Code review) 또한 마찬가지다.
에이전트 소유권에 적합한 수직 슬라이스 (Vertical Slices)
더 효과적인 모델은 코드를 계층이 아닌 기능 (Features) 중심으로 구성하는 것이었다. 배송 (Shipping)과 결제 (Billing)는 여러 폴더에서 재구성해야 하는 흩어진 개념이 아니게 된다. 그것들은 프로젝트 구조의 가시적인 부분이 된다.
Features/
├── Shipping/
│ ├── Controllers/
...
이제 각 에이전트는 솔루션 (Solution) 전체에 흩어진 몇 개의 파일이 아니라, 기능 전체를 소유한다. 변경 사항을 검토할 때 컨트롤러, 서비스, 리포지토리, DTO, 의존성 주입, 테스트 등을 여기저기서 찾는 대신 Features/Shipping을 여는 것만으로 충분해진다.
기능별 테스트
동일한 소유권 경계가 검증 (Verification)에도 적용된다. 만약 구현이 특정 기능에 속해 있다면, 그것이 작동함을 증명하는 테스트 (Tests) 또한 해당 기능별로 구성되어야 한다. 그렇지 않으면 리뷰 시 테스트 프로젝트 내의 여러 계층을 여전히 오가야 하기 때문이다.
Features/
├── Shipping/
│ ├── HTTP/
...
각 에이전트는 구현과 이를 검증하는 데 필요한 모든 것을 소유한다. 이를 통해 작업 경계가 명확해진다. 에이전트는 기능을 변경하고, 관련 테스트를 업데이트하며, 시스템의 나머지 부분은 그대로 둔다. 그 이상은 하지 않는다.
관찰 가능한 소유권
관찰 가능한 소유권
나는 이전에 이벤트 기반 아키텍처 (Event-driven architectures)가 동작을 관찰 가능하게 만들기 때문에 AI와 잘 작동한다고 주장한 바 있다. 나는 이것이 아키텍처 측면에서의 동일한 효과라고 생각한다.
수직 슬라이스 (Vertical slices)는 소유권을 즉각적으로 관찰 가능하게 만든다. 어떤 에이전트가 특정 기능을 소유하고 있는지, 그 변경 사항을 어디서 검토해야 하는지, 그리고 해당 테스트가 어디에 위치하는지를 즉시 알 수 있다.
기존 워크플로우가 다시 한번 빛을 발하다
흥미로운 점은 수직 슬라이스가 AI를 위해 설계된 것이 아니라는 사실이다. 그것은 응집도 (Cohesion)를 개선하기 위해 설계되었다. 에이전트 중심 개발 (Agentic development)은 단지 동일한 문제들을 다시 드러낼 뿐이다. 즉, 에이전트들도 인간과 마찬가지로 서로 협업 (Coordinate)해야 한다는 점이다.
아키텍처가 요구하는 협업의 양이 적을수록, 인간과 AI 모두에게 더 잘 작동한다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기