1. 비즈니스 개념에 따른 모델
- 바운디드 컨텍스트를 잘 나누고 개발한다.
2. 자동화 테스팅은 중요하다.
- 빠른 피드백을 얻기 위해서 CI/CD 를 활용한다.
- 어디에나 같은 방식으로 배포하기 위해서 같은 산출물(도커)를 활용한다.
3. 내부 구현 은폐
- REST 구조를 고려하라.
- 서로 다른 MSA 가 다른 기술 스택으로 구현되어도 문제 없도록 만들어라
- DB도 분산해라
4. 팀을 조직에 맞춰서 조정하라.
- 콘웨이의 법칙
5. 오케스트레이션보다는 코레오그래피를 지향하라.
- 비동기적인 작업 처리
독립적인 배포
- 다른 서비스와 독립적으로 배포할 수 있도록 해라.
- 블루/그린 배포나 카나리 배포를 고려하라.
소비자 주도 계약 테스트
- 소비자 입장에서 서비스는 ㅁㅁㅁ 해야 한다.
이런식의 내용을 적고 테스트 코드로 옮긴다.
버전관리
여러 버전의 엔드포인트가 공존하도록 개발해야 한다.
장애격리
- 어디서나 장애가 발생할 수 있다고 생각하고 개발한다.
- 타임아웃 설정한다.
- 회로 차단기, 격벽을 고려한다.
- 주어진 상황에서 가용성과 일관성 중에 어떤것을 희생하는게 맞는지 판단한다.
로그와 통계를 수집한다.
- 시스템간 호출을 추적할 수 있는 상관관계 id 를 사용한다.
- 상관관계 id = 서비스 호출을 추적할 수 있는 고유 값 ex) project service - 1123
msa 를 쓰지 말아야 할때
아직 바운디드 컨텍스트를 어떻게 나눠야 할지 모를때
해당 분야를 잘 모른다면 일단 모놀리틱으로 개발하고 컨텍스트를 나눈다.
잘못 나눠서 개발하는 것보다 그게 낫다.
'아키텍처 | 설계' 카테고리의 다른 글
blocking sync / blocking async / non-blocking sync / non-blocking async (0) | 2020.08.10 |
---|---|
콘웨이의 법칙과 시스템 설계 / 대규모 마이크로 서비스 - 마이크로 서비스 아키텍처 11장 (0) | 2020.06.08 |
MSA 모니터링 / 장애전파 / 테스트 (0) | 2020.06.07 |
카나리 배포 , 블루그린 배포 (0) | 2020.06.07 |
kafka, rabitmq, sqs 사용시 고려사항 - 마이크로 서비스 아키텍처 (0) | 2020.06.07 |
댓글