Cloud Visualizer
← 전체 목록
🧱

Layered Architecture

구조 패턴서버 내부 책임을 층으로 나눠 복잡도를 낮추는 구조

아키텍처 다이어그램

점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다

왜 필요한가요?

서버 코드가 커질수록 화면 처리, 규칙 계산, 저장소 접근, 외부 API 연결이 한 함수와 한 파일 안에 섞이기 쉽습니다. 이런 상태에서는 수정 한 번이 예상보다 넓게 번지고, 테스트도 어디서 끊어야 할지 애매해집니다. 새 기능을 넣을수록 기존 코드 구조가 더 빨리 탁해집니다. Layered Architecture는 바로 이 내부 혼잡을 줄이기 위한 정리 방식입니다.

왜 이런 방식이 등장했나요?

초기 업무 시스템은 기능 수가 적을 때는 하나의 코드베이스로도 충분했습니다. 하지만 도메인 규칙이 늘고 외부 연동이 붙으면서 코드가 서로 다른 이유로 자주 함께 바뀌기 시작했습니다. 이때 가장 먼저 필요한 것은 배포 단위를 쪼개기보다, 한 애플리케이션 안에서 책임 경계를 읽을 수 있게 만드는 일이었습니다. Layered Architecture는 그 요구에 대한 가장 보편적인 응답 중 하나였습니다.

안에서 어떻게 동작하나요?

가장 바깥 층은 입력과 출력, 그 안쪽은 유스케이스 조정, 더 안쪽은 핵심 도메인 규칙, 그리고 가장 바깥 기술 연결은 인프라 층이 맡는 식으로 나눕니다. 중요한 점은 파일을 폴더로만 나누는 것이 아니라, 어떤 층이 어떤 질문에 답하는지를 고정하는 데 있습니다. 그러면 변경이 들어왔을 때 화면 문제인지, 흐름 문제인지, 규칙 문제인지, 기술 연결 문제인지 판단이 쉬워집니다.

무엇과 헷갈리나요?

Layered Architecture와 Microservices는 모두 복잡도를 나누려는 시도입니다. 하지만 Layered Architecture는 하나의 애플리케이션 내부를 책임별로 정리하는 방식이고, Microservices는 배포 단위 자체를 여러 서비스로 쪼개는 방식입니다. 즉 전자는 '한 앱 안을 어떻게 나눌까'에 가깝고, 후자는 '앱 경계를 어디서 끊을까'에 가깝습니다.

언제 쓰나요?

하나의 서버 애플리케이션을 운영하면서도 업무 규칙을 오래 유지하고 테스트하고 확장해야 할 때 Layered Architecture는 기본 정리 도구가 됩니다. 특히 데이터 접근 코드가 도메인 판단을 침범하거나, 프레젠테이션 코드가 규칙을 직접 품기 시작할 때 유용합니다. 다만 모든 층이 항상 같은 속도로 커지는 것은 아니어서, 나중에는 배포 단위 자체를 다시 생각하게 될 수 있습니다.

업무 규칙과 데이터 접근을 분리해야 하는 서버 애플리케이션팀원이 많아져 코드 읽기 기준이 필요한 프로젝트테스트 대상을 계층별로 분리하고 싶은 서비스단일 배포 단위 안에서 책임을 정돈해야 하는 시스템
관련 문서

더 읽어보기

현재 페이지의 개념 설명을 본 뒤 배경 설명과 참고 문서를 이어서 볼 수 있습니다.

Software Architecture