마이크로 서비스 인 액션 3장을 읽고 정리해보았습니다.
좋은 아키텍처란 변경이 쉬운 소프트웨어다. 모놀리식 애플리케이션에서는 아키텍처가 애플리케이션 자체의 경계로 제한된다. 반면에 마이크로 서비스 애플리케이션에서는 크기와 범위 측면에서 계속 진화하는 것에 대해 계획을 세운다. 마이크로 서비스는 다른 마이크로 서비스들과 함께 개발, 배포, 실행할 수 있는 환경에 존재한다. 아키텍처는 이런 전체환경을 포함해야 한다.
마이크로 서비스 애플리케이션을 위한 4계층 모델은 다음과 같다.
개발, 운영, 배포를 지원하는 도구와 인프라스트럭처를 제공한다. 튼튼한 플랫폼 계층은 전체적인 구현 비용을 절감하고 전반적인 안전성을 개선하며 신속한 서비스 개발을 가능하게 한다.
플랫폼 위에 서비스 간의 상호 협력을 통해 비즈니스, 기술적 역량을 제공한다.
클라이언트가 경계를 통해 애플리케이션과 상호작용한다. 내부의 복잡도와 변경을 추상화해 제공한다. 또한 서비스 계층 내에서 도메인을 분리하기 위해 경계 계층을 사용할 수 있다.
웹사이트, 모바일 앱 같은 클라이언트 애플리케이션을 말하는데 마이크로 서비스 백엔드와 상호작용한다. 사용자에게 애플리케이션의 인터페이스를 제공한다.
마이크로 서비스는 서로 커뮤니케이션 한다. 요청을 주고받기 위해 결정한 방법이 애플리케이션의 형태를 결정하게 된다.
다음 작업을 시작하기 전에 현재 작업의 결과 또는 성공/실패를 아는 시나리오에 적합하다.
이벤트를 선언해서 새로운 요구사항을 다루도록 시스템을 쉽게 확장할 수 있다. 새로운 서비스는 기존 서비스를 변경하지 기존 이벤트를 사용해 만들 수 있다. 이 스타일은 서비스 간의 좀 더 유연한 발전을 가능하게 하고 느슨한 결합을 생성한다. 일반적으로 비동기메시징은 이벤트를 수신하고 이벤트 컨슈머에게 전달하는 독립적인 구성요소인 커뮤니케이션 브로커를 요구한다. 종종 이벤트 백본이라고 불리기도 한다. 브로커로 사요용되는 일반적인 도구에는 카프카, 래빗엠큐, 레디스가 있다.
가장 일반적인 2가지 이벤트 기반 패턴은 Job queue와 Publish-Subscribe패턴이 있따.
서비스는 커뮤니케이션하기 위해 서로를 발견해야 한다. 플랫폼 계층이 이를 제공한다. 가장 기초적인 방법은 로드 밸런서를 활용하는 것이다. 좀 더복잡한 시나리오에는 한계가 있어 더 집노된 방식은 컨설과 같은 레지스트리를 이용하는 것이다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!