<aside> 🎯
한줄 결론: Web·Application·DB의 역할을 분리하고, 병목 계층만 수평 확장하며, 상태와 DB를 서버 밖에 두어야 장애와 확장에 대응할 수 있다.
</aside>
사용자 로그인, 상품 조회·주문, 회원·주문 정보 저장 기능이 있는 이커머스를 단계적으로 개선한다. 실제 AWS 리소스를 새로 만들기보다 왜 구조가 바뀌는지 이해한다.
문제: Web·주문 로직·DB가 한 서버에 섞여 병목과 장애 원인을 구분하기 어렵다.
답: 요청을 받는 Presentation, 업무 로직의 Application, 데이터를 저장하는 Data 계층으로 나눈다.
구조 변경: 단일 서버 → Web / App / DB
효과: 계층별 로그·자원 사용량을 확인하고 필요한 부분만 배포·확장할 수 있다.
App CPU만 100%라면 App이 병목이다.
선택: 계속 성장하는 서비스는 App을 두 대 이상으로 수평 확장한다.
App 2대를 만들기만 해서는 요청이 자동 분산되지 않는다. Load Balancer가 하나의 주소로 요청을 받고 여러 App에 나눈다.