ex) 여러 서비스(유저 서비스, 장바구니 서비스, 배달 서비스, DB 등) 모든 비즈니스 로직들이 하나의 애플리케이션으로 묶여 있다.
단일 애플리케이션: 모든 애필리케이션 기능이 하나의 코드베이스 안에서 동작한다.
통합된 배포: 애플리케이션의 모든 구성 요소가 하나의 패키지로 묶여 배포되며, 시스템 전체를 동시에 업데이트해야 한다.
공유된 자원: 메모리, 데이터베이스 연결, 세션 정보 등이 전체 애플리케이션에서 공유된다.
단일 데이터베이스: 모든 모듈과 서비스가 동일한 데이터베이스를 통해 데이터를 저장하고 관리한다.
단일 코드베이스: 모든 코드가 하나의 코드베이스에 통합되어 관리된다.
단순한 개발 및 배포: 모든 구성 요소가 하나로 묶여 있기 때문에, 배포 또한 간단하며 단일 패키지로 배포할 수 있다.
코드 관리 용이: 별도의 서비스 간 통신이나 복잡한 분산 시스템을 고려할 필요가 없기 때문에 개발이 직관적이다.
성능 최적화 용이: 동일한 프로세스 내에서 모든 기능을 실행하므로, 서비스 간의 호출이나 네트워크 통신이 필요 없어서 성능 최적화가 상대적으로 쉽다.
개발 초기 비용 절감: 시스템의 규모가 작은 경우, 개발 및 운영 비용을 절감할 수 있다.
확장성 제한: 애플리케이션이 커지고 복잡해지면 확장성에 제약이 생긴다. 시스템의 각 구성 요소가 연관돼 있기 때문에, 일부 기능만 확장하거나 수정하기 어려운 경우가 많다.
유지보수의 어려움: 코드베이스가 커질 수록 유지보수가 어려워진다. 여러 기능이 서로 얽혀 있기 때문에, 하나의 모듈을 수정하거나 추가할 때 전체 시스템에 영향을 미칠 수 있다.
배포 및 업데이트 문제: 작은 기능 변경이나 버그 수정도 전체 시스템을 재 배포해야 한다.
기술 스택 변경 어려움: 새로운 기술을 도입하거나 기존 시스템을 개선하려면 전체 시스템을 변경해야 할 수 있다.
소규모 애플리케이션
빠르게 배포해야 할 때