왜 필요한가
작은 앱을 관리 가능한 절차로 배포하고 싶습니다. 여러 서비스를 각각 배포하고 조율하는 일이 현재 문제보다 커질 수 있습니다.
어떻게 해결하는가
- 가상 독서 앱: 한 팀, 앱 v1에 카탈로그·보관함·결제 포함. A17은 태그 없음.
- 보관함에 태그 기능을 추가하고 앱 v2를 배포합니다. 결제 동작은 그대로지만 같은 배포물에 포함됩니다. 공유 데이터베이스는 앱이 소유합니다.
- 보관함이 프로세스 내부에서 카탈로그를 조회한 뒤
travel을 기록합니다. 쓰기 전 조회 실패 시 태그 없음 유지, 복구 후 재시도.
설명을 위한 가상 예시
하나의 배포물이 함께 이동
독서 앱 · 한 팀 · A17은 태그 없음
변경: 보관함 태그 추가. 결제 동작은 그대로.
배포 단위 · 1
앱 v1 → 앱 v2서버 애플리케이션 전체 빌드·배포
카탈로그
동작 유지
보관함
태그 기능 추가
결제
동작 유지
보관함 → 카탈로그 · 프로세스 내부 호출
기능 상자는 내부 모듈 구성 여부를 정하지 않습니다.
공유 데이터베이스 · 소유자: 앱
카탈로그 / 보관함 / 결제
카탈로그 조회 성공 후 보관함이 태그 기록.
- 조회 성공 → travel 기록 → A17 태그는 travel.
- 쓰기 전 조회 실패 → 태그 없음. 실패 안내, 복구 후 재시도.
복제본은 같은 배포물의 사본이며 별도 서비스가 아닙니다. 프로세스가 죽으면 해당 복제본의 모든 기능이 영향을 받습니다.
소유권 상자는 접근 규칙을 뜻하며 데이터베이스 서버 수를 뜻하지 않습니다.
무엇이라 부르는가
모놀리스는 서버 애플리케이션을 하나의 단위로 배포합니다. 같은 배포물의 복제본을 늘려도 모놀리스이며, 내부에 모듈을 둘 수 있습니다. Lewis·Fowler
배포와 프로세스 장애는 공유합니다. 경계가 중요해지면 명시적인 모듈을 추가합니다.
이 선택에 관한 이야기
세 언어가 댓글을 공유합니다. 작성하려면 GitHub 로그인이 필요합니다.