기업이 대규모 애플리케이션 구조를 더 작고 독립적인 서비스로 나누는 데 도움이 되는 상위 6가지 마이크로서비스 패턴 을 검토할 것 입니다.
1. 세분화된 SOA
세분화된 SOA는 이제 막 시작할 때 마이크로서비스에 대한 가장 일반적인 접근 방식입니다. 이 패턴은 서비스 지향 아키텍처 와 동일한 원칙을 적용 하지만 인프라를 더 작고 세분화된 조각으로 나눌 때 일반적으로 발생하는 문제를 줄입니다.
대부분의 경우 이 패턴은 각 서비스가 외부 시스템에 대한 연결을 제공하는 SOA 통합의 확장입니다. 이는 외부 저장소에 대한 긴밀한 종속성을 형성하여 변경 속도를 줄이고 시스템의 응집력이 해당 응용 프로그램의 내부 상태를 반영하도록 합니다.
2. 세분화된 SOA를 통한 계층화된 API
세분화된 SOA 패턴의 다음 진화는 그 위에 API를 계층화하는 것입니다. 대부분의 경우 이 두 가지 패턴이 공존합니다. 세분화된 SOA 접근 방식을 통한 계층화된 API는 API 주도 연결 과 밀접한 관련이 있습니다 . 두 가지 모두에서 System API는 애플리케이션을 노출하고 Process API는 이를 조정하며 Experience API는 최종 사용자 경험을 제공합니다.
마이크로서비스 아키텍처는 구조가 부족할 때 합리화하기 어려워 각 마이크로서비스의 목적을 분류하고 시각화하기 어려울 수 있습니다. 이 패턴은 마이크로 서비스를 목적(시스템, 프로세스 또는 도메인 모델 및 경험)별로 그룹화된 계층으로 구성하여 일부 구조를 만들고 아키텍처를 보다 쉽게 관리할 수 있도록 합니다.
3. 계층화된 API를 통한 메시지 지향 상태 관리
앞의 두 패턴에는 상태 관리 기능이 없었습니다. 즉, 이를 사용하여 구현된 마이크로서비스에는 데이터 무결성 이 부족 했습니다. 계층화된 API 패턴을 통한 메시지 지향 상태 관리는 마이크로서비스 또는 데이터 저장소 간에 주요 비즈니스 데이터의 상태를 복제하여 데이터 무결성을 보장합니다.
이를 통해 시스템은 이벤트를 수렴 하고 상태를 비동기적으로 다른 위치로 보내거나 다른 마이크로서비스를 통해 쿼리할 수 있도록 하는 메시지 대기열 을 사용하여 일관된 외부 보기를 제공할 수 있습니다. 구성 요소를 분리하면 각 마이크로 서비스의 구현과 동작이 모호해집니다.
4. 계층화된 API를 통한 이벤트 기반 상태 관리
조직은 REST API 및 동기 통신이 제공하지 않는 실시간 데이터 업데이트를 위해 이벤트 기반 패턴 을 활용합니다. 이는 사기 탐지, 워크플로 알림, 뉴스 피드 및 주식 틱과 같은 사용 사례에 중요합니다. 이벤트 기반 시스템은 메시지 지향 시스템과 같은 대기열을 사용하지만 대기열을 통해 전달되는 것, 특히 이벤트의 설계 및 동작에 대해 적용되는 표준이 있습니다.
이벤트 는 대표 상태 및 타임스탬프와 관련된 작업입니다. 이 이벤트를 사용하면 이벤트를 순서대로 재생하여 상태의 구체화된 보기를 재구성할 수 있습니다.
5. 계층화된 API의 격리 상태
이벤트 기반 마이크로 서비스에 대한 다른 접근 방식은 각 개별 마이크로 서비스에 지속성을 추가하는 것입니다. 이 패턴은 교환 대신 쿼리 시 일관성을 구현하고 각 마이크로 서비스의 상태를 격리하여 이를 달성하여 각각이 고유한 상태를 포함하도록 합니다.
각 마이크로 서비스는 이 패턴에서 자체 내에서 단일 정보 소스 가 되며 이벤트 로그이든 엔터프라이즈 자산이든 상관없이 외부 저장소와 지속적으로 조정되는 내부 데이터 저장소를 포함합니다. 단일 소스 진실 패턴은 복잡한 문제( 마스터 데이터 관리 에서 볼 수 있는 문제와 유사 )를 보는 경향이 있지만 외부 저장소를 사용하면 이를 단순화할 수 있습니다.
6. 계층화된 API에서 상태 복제(이벤트 소싱)
복제 상태 는 일관성이 필요하기 때문에 본질적으로 격리 상태 의 반대입니다. 격리된 상태에서 마이크로 서비스는 상호 의존적이 되며 단일 마이크로 서비스의 실패로 인해 다른 마이크로 서비스가 실패할 수 있습니다. 상태 복제는 격리된 각 마이크로서비스가 내부 상태를 다시 빌드할 수 있는 모든 상태 변형을 저장할 단일 위치를 제공합니다.
상태 복제를 예측하려면 각 마이크로서비스의 관리 프로세스와 동작에 대한 더 깊은 이해가 필요합니다. 본질적으로 이 디자인은 결국 일관성이 있습니다. 이것은 전통적인 트랜잭션 디자인에서 문제처럼 보일 수 있지만 디자인의 특성에 대한 통찰력으로 완화됩니다. 이는 더 큰 자유와 변화의 속도를 가능하게 하고 궁극적으로 더 빠른 가치 실현을 가능하게 합니다.
출처 : https://blogs.mulesoft.com/dev-guides/microservices/top-6-microservices-patterns/
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit