-
클라우드 마이크로 서비스 - Microservice Architecture StructuresInfra/클라우드 2023. 12. 12. 11:44
Microservice Architecture Structures
MSA 표준 구성요소
마이크로서비스는 독립적으로 deploy(배포)되고 확장될 수 있는 서비스들을 조합해서 하나의 거대한 어플리케이션을 구성하는 아키텍쳐 패턴이라고 보면 될 것 같다. 이런 마이크로 서비스를 지원하고 관리하기 위해서 일반적으로 서비스 디스커버리라던가 API 게이트웨이 아니면 오케스트레이션 또는 컨텍스트 바운더리 등의 서비스들을 연결해서 사용하게 된다.
위 그림은 2018년도 Gartner라는 시장 조사 기관에서 발표한 내용인데 넷플릭스, 트위터, 아마존, 나이티 등의 회사에서 채택한 아키텍쳐로서 소개되면서 주목을 받기 시작했다. 지금까지도 널리 많은 서비스들에서 참조되고 있는 구조이기도 하다.
아키텍쳐 관련되어 있는 표준 기술은 없지만 리눅스 재단의 산하인 Cloud Native Computing Foundation 간단하게 CNCF라고 불리고 있는데, CNCF에서는 각 시스템과 시스템을 구성하고 있는 서비스 별로 CNCF의솔루션이라든가 널리 사용되고 있는 기술들에 대해서 소개를 하고 있다. 이거 외에도 많은 소프트웨어 벤더들이 기존 제품들 즉 본인들이 가지고 있었던 서비스 오리지널 아키텍쳐의 어떤 제품이라던가 PaaS 시스템 등을 마이크로 서비스를 지원하기 위한 플랫폼으로 으로서 전환시키고 자사의 브랜드를 재구성하고 있는 추세이기도 하다.
여러 1)클라이언트에서 보내진 요청들이 수집되어 API Gateway로 간다. 그다음 2)수집된 클라이언트 요청들은 Service Router에게로 가서 자신들이 어디로 가야할지 질문을 하게 될 것이다. 3)필요한 마이크로 서비스가 어디에 저장되어 있는지 Service Discovery의 등록 서비스에 물어보게된다.
이제 요청이 어디로 향해야 될지 마이크로 서비스를 검색을 했다면 그림에 중앙에 보이는 진한 남색 박스들이 마이크로 서비스들인데 마이크로 서비스 A,B 둘다 인스턴스로 나누어져 2개의 형태인 것을 확인 할 수 있다. A,B같은 마이크로 서비스가 어디에 존재 하는지 Service Discovery에서 위치를 검색했다고 하면, 그 다음에는 직접 서비스로 이동을 해야되는데 , 그림에서 처럼 서비스당 인스턴스가 2개인 식으로 분산된 형태로 구성이 되어 있다고 하면 마이크로 서비스에 접근하기 전에 Load Balancer에 의해서 어떠한 서비스로 보낼질 것인지 결정을 하게 될 것이다. 일반적으로 Service Router라 던가 Load Balancer를 하나의 시스템으로 묶어서 사용하는 경우도 있다.
마이크로 서비스 안에서 사용하고 있는 환경 설정 정보는 이전 게시물에서 여러차례 언급되어 왔듯이 마이크로 서비스 안에서 사용하고 Configuration 서비스를 통해서 외부 시스템에 저장을 시켜서 사용하는 것이 일반적이다. 다음으로 이런 마이크로 서비스는 컨테이너 기술 더 자세히는 컨테이너 가상화 기술을 통해서 구성이 되어 있다. 또한 Telemetry 기능이라는 것은 마이크로 서비스의 모니터링 기능과 진단 기능을 가지고 있다. 기존에 있었던 서비스들이 이러한 구조와 같이 연결돼서 서비스를 구축하고 있다고 보면된다.
Service Mesh Capabilities
Service Mesh라는 것은 마이크로 서비스 아키텍처를 적용한 시스템 내부의 통신을 의미한다. 이런 Service Mesh를 통해서 서비스 간의 통신을 추상화하고 또 안전하고 신뢰성 있지만 빠르게 만들어주는 인프라 스트럭쳐의 레이러 라고 생각하면된다.
Service Mesh는 추상화를 통해서 복잡한 내부 네트워크를 제어하고 추적한다. 그리고 내부 네트웨크에 관련된 로직을 추가함으로써 안전성, 신뢰성, 탄력선, 표준선, 가시성, 보완성 등을 확보할 수 있게 된다.
Service Mesh는 URI경로라던가 호스트 헤더, API 버전 또는 기타 응용 프로그램의 규칙을 기반으로 하는 네트웨크 레이어 이다. Service Mesh의 구체적인 경량 프록시를 통해서 다양한 라우팅 기능과 서킷 브레이커(Circuit Breaker)같은 공통 기능을 설정할 수도 있다.이것은 서비스 간의 통신에 연관된 기능 뿐 만 아니라 서비의 배포 전략에도 도움을 줄 수 있다.
서비스 메시는 하나의 서비스 제품이라던가 서비스를 지칭하는 것이 아니라 추상적이 개념이다. 서비스 메쉬라는 계층에서 위 그림에 나와있는 다양한 기능과 서비스를 제공해 줌으로써 안정적이고 효율적인 마이크로 서비스를 운영하는 것에 그 목적이 있다.
MSA 기반 기술
[출처 - Spring Cloud로 개발하는 마이크로 서비스 애플리케이션, 저 Dowon Lee]
'Infra > 클라우드' 카테고리의 다른 글
클라우드 마이크로 서비스 - Spring Cloud Netflix Eureka (0) 2023.12.12 클라우드 마이크로 서비스 - Spring Cloud (0) 2023.12.12 클라우드 마이크로 서비스 - SOA vs MSA (0) 2023.12.12 클라우드 마이크로 서비스 - Microservice Architecture (1) 2023.12.11 클라우드 마이크로 서비스 - Monolithic vs MSA (0) 2023.12.11