반응형
"MSA란, 시스템을 여러 개의 독립된 서비스로 나눠서, 이 서비스를 조합으로서 기능을 제공하는 아키텍처 디자인 패턴" - 조대협
Amazon의 선택
2002년 제프 베조스 메일(Amazon CEO)
- 모든 팀들은 데이터와 기능들 서비스 인터페이스로 연결시켜라
- 팀들은 이 인터페이스를 통해서만 연락해야 한다.
- 다른 어떤 커뮤니케이션 방법도 허용되지 않는다. 직접 링크를 보내거나 다른 팀의 스토리지에 직접 액세스해서도 안 되며, 공유 메모리나 백도어 같은 것도 안된다. 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로 이루어져야 한다.
- 어떤 기술을 쓰든 상관없다. HTTP, Cobra, Pubsub, 독자 프로토콜.. 그건 상관없다.
- 모든 서비스 인터페이스는 예외 없이 외부에서 이용 가능하게 만들어져야 한다. 그 말을 팀들은 외부 개발자들이 인터페이스를 이용할 수 있게 해야 한다는 것이다. 예외는 없다.
2006년 아마존 웹 서비스 (AWS) 릴리즈
- 내부적으로 사용한 것과 똑같은 플랫폼 (워너 보겔스 CTO)
Netflix의 선택
- 2008년 데이터베이스에 심각한 문제가 발생해 고객에게 DVD를 보낼 수 없는 사태 발생(Single points of failure)
- Scale-up 확장 가능한 인프라 스트럭처와 단일 장애 지점이라는 한계에서 벗어나길 선언
- 그 시작이 아파치 카산드라
- 2009년 AWS로 이관 시작
- 세 가지 목표에 집중 확장성, 성능, 가용성
- "자체 보유 인프라와 설루션으로는 이렇게 급증한 트래픽을 감당할 수 있는 확장성을 확보할 수 없었을 것' - 유리 이즈 라일 례프 스키, Netflix 클라우드 및 플랫폼 엔지니어링 부문 부사장
- Netflix runs on microservices
MSA Definition
- 공식정인 정의는 없다. 단지 다음 공감대가 있을 뿐
- 각 서비스 간 Network를 통해, 보통 HTTP를 통해
- 독립된 배포 단위
- 각 서비스는 쉽게 교체 가능
- 각 서비스는 기능 중심으로 구성됨, e.g. 프런트 엔드, 추천, 정산, 상품 등
- 각 서비스에 적합한 프로그래밍 언어, 뎅터베이스, 환경으로 만들어진다.
- 서비스는 크기가 작고, 상황에 따라 경계를 정하고, 자율적으로 개발되고, 독립적으로 배포되고, 분산되고, 자동화된 프로세스로 구축되고 배포된다.
- 마이크로 서비스는 한 팀에 의해 개발될 수 있는 크기가 상한선이다. 절대 3~9명의 사람들이 스스로 더 많은 개발을 할 수 없을 정도로 커지면 안 된다.
- "마이크로 서비스는 아직까지 아이디어 수준에서 크게 벗어나 있지 않다. 다양한 산업 분야에서 폭넓게 적용되고 있지만 그것이 좋은지 나쁜지는 시간이 더 지나 보야 알 수 있다." - 조시 롱, 케니 바스타니, Pivotal
모놀리틱 아키텍처와 마이크로 서비스 아키텍처 비교
마이크로서비스 아키텍처의 예 (ex: 주문, 정산 시스템)
반응형
'Programming > ETC' 카테고리의 다른 글
Intellij 단축키 꿀팁 (1) | 2021.01.28 |
---|---|
WebRTC 개요 (0) | 2019.02.28 |
Vector Space Model (0) | 2017.11.27 |
Boolean 정보 검색 요약 (0) | 2017.11.27 |