본 글은 책 「샘뉴먼, "마이크로서비스 아키텍처 구축", 2017」의 마지막장을 정리한 글입니다.
1. 비즈니스 개념에 맞춘 모델링
- 비즈니스 경계로 나눠진 콘텍스트가 기술적 개념에 맞춰 구성된 인터페이스보다 안정적
- 도메인 경계를 정의하기 위해 경계가 있는 콘텍스트(Bounded Context)를 이용
2. 자동화 문화의 적용
- 서비스들의 동작을 보장하는 것이 모놀리식 시스템보다 복잡하므로 자동화 테스팅이 중요
- 명령행 호출을 통한 배포와 지속적 배포 이용
- 배포 시 환경 차이를 구체화 하기 위한 환경 정의 (ex OS)
- 더 빠른 배포를 위한 커스텀 이미지 생성과 불변 서버를 이용
3. 내부 세부 구현의 은폐
- 경계가 있는 콘텍스트로 모델링을 통해 세부 구현을 은폐
- 테이터베이스를 감추고 데이터 펌프, 이벤트 데이터 펌프를 통해 여러서비스 데이터 통합
4. 모든것을 분권화
- 각 서비스를 소유한 팀이 의사결정과 통제를 가짐
- 개발, 테스트팅, 배포가 쉽게하여 별도의 팀이 이를 수행할 필요가 없음
- 콘웨이의 법칙에 따라 팀을 조직에 맞춰 조정
- 공유 거버넌스를 시도
- 오케스트레이션과 미들웨어 대신 코레오그래피 선호
5. 독립적인 배포
- 마이크로 서비스가 독자적으로 배포되로록 노력
- 여러 버전의 엔드포인트 공존
- 강력히 결합된 클라이언트/서버 스텁의 생성은 피하기 (like Java RMI)
- 호스트당 단일 서비스 모델 사용
- 소비자 주도 계약(Consumer-Driven Contract) 사용
6. 장애 격리
- 네트워크 호출을 할때 지역 호출처럼 처리하지 말 것. (지나치게 추상화한 클라이언트 사용 하지 말 것)
- 항상 장애가 발생할 것을 염두해둘 것
- 타임아웃 설정, 격벽, 회로 차단기를 언제 어떻게 사용할지 이해할 것
- 가용성과 일관성 중 어느것을 희생하는것인지 옳은지 판단 (CAP 이론 관련)
7. 매우 식별 가능한
- 시스템 정상 동작 판단을 위한 통합된 뷰가 필요
- 합성(가상) 트랜잭션을 주입하여 실사용자 행위를 모의하는 유의적 모니터링 사용
- 로그와 통계를 수집
- 모든 호출을 추적할 수 있도록 상관관계 ID를 사용
'코딩공부 > MSA' 카테고리의 다른 글
[Spring Cloud] Spring Cloud 프로젝트 개요 (1) | 2024.09.10 |
---|---|
[Spring Cloud] Spring Cloud Gateway - 기본 제공 Route Predicate Factories (0) | 2024.09.04 |
[Spring Cloud] Spring Cloud Gateway - 설정 및 동작 원리 (0) | 2024.09.02 |