모놀리스 아키텍처(Monolithic Architecture)
중소 규모의 많은 웹 애플리케이션은 모놀리스 아키텍처 형태로 구축된다. 모놀리스 아키텍처에서 애플리케이션은 배포 가능한 하나의 산출장접물로 생성된다. 모든 UI, 비지니스 및 데이터베이스 액세스 로직은 함께 고유한 애플리케이션으로 패키징 되어 서버에 배포 된다.

장점
- 개발 시작이 빠름: 초기 구조가 단순해 프로젝트 초기 구현과 프로토타이핑이 용이합니다.
- 배포와 운영이 단순함: 전체 애플리케이션을 하나의 산출물로 빌드/배포하므로 배포 파이프라인과 운영 절차가 단순합니다.
- 디버깅·테스트가 쉬움: 전체 코드베이스가 한 곳에 있어 로컬에서 통합 테스트나 문제 추적이 비교적 수월합니다.
- 성능 최적화가 용이: 프로세스 내 함수 호출을 통해 서비스 간 통신 오버헤드가 없고, 같은 프로세스 공간에서 최적화가 가능합니다.
- 인프라 비용이 낮을 수 있음: 초기에는 여러 서비스·컨테이너를 운영하는 것보다 리소스와 관리 복잡도가 낮습니다.
- 학습 비용 절감: 팀이 소규모이거나 경험이 제한적일 때 설계·운영 복잡도가 낮아 도입이 쉽습니다.
단점
- 확장성 한계: 특정 기능만 확장하고 싶어도 전체 애플리케이션을 함께 확장해야 해 비용 비효율이 발생할 수 있습니다.
- 배포 위험 증가: 한 부분의 변경이 전체 애플리케이션에 영향을 주어 배포 실패 시 전체 서비스 장애로 이어질 수 있습니다.
- 복잡도 누적: 코드베이스가 커지면 모듈 간 경계가 흐려지고 유지보수가 어려워집니다(스파게티화 위험).
- 개발 속도 저하: 팀 규모가 커지면 여러 팀이 동일 코드베이스에서 충돌하며 병행 작업이 어려워 질 수 있습니다.
- 기술 선택 제약: 기능별로 다른 기술 스택을 도입하기 어려워 유연성이 떨어집니다.