✅ MSA(Microservices Architecture)
는 애플리케이션을 여러 개의 독립적인 서비스로 나누어 개발하는 아키텍처
✅ 각 서비스는 도메인 기반의 마이크로서비스로 설계되어 독립적으로 배포, 운영 및 확장 가능
✅ 일반적으로 REST API, gRPC, 메시지 큐(Kafka 등)를 사용하여 서비스 간 통신
✅ 맡은 파트별 독립적인 서비스를 개발가능
✅ 대규모 서비스의 경우 고가용성을 위해서라도 서비스의 분리가 필요
✅ 개별 서비스 단위 배포로 신규 배포건이 기존에 영향을 주지 않음
✅ 서비스 개발이 특정 언어나 기술에 종속되지 않게 개발 가능
❌ 배포/모니터링/트랜잭션 관리가 구현되지 않았을 경우 오히려 리스크가 있음
❌ 개별 서비스가 DB를 가지기 때문에 트랜잭션 관리와 데이터 일관성의 리스크
❌ 화면이 들어가는 MVP/MVC 구조인 경우
데이터 기반 개인화 상품 추천
을 구성추천
문제점
유저별 구매/관심 상품
테이블을 만들어줘야하는데 물리적으로 분리된 DB에서 JOIN연산은 사실상 불가능CQRS(Command Query Responsibility Segregation)
패턴을 활용DB 레플리카 방식
✅ 데이터 일관성을 보장하기 위해 DB 복제를 구성
✅ 각 마이크로서비스가 개별 DB를 가지되, 일부 데이터는 복제하여 일관성 유지
event-driven 방식
✅ 서비스 간 결합도를 낮추기 위해 이벤트 기반 적용
✅ Kafka 등 메시지 큐를 활용하여 비동기 통신으로 데이터 처리