PSD( Private-Self-Development )

MSA 본문

Backend/MSA

MSA

chjysm 2024. 1. 9. 16:33

MSA 란?

마이크로 서비스 아키텍처의 준말.

이 아키텍처는 소프트웨어 시스템을 작은, 독립적인 컴포넌트로 분할하여 각 컴포넌트를 개별적으로 배포하고 확장할 수 있게 한다.

이러한 아키텍처는 대규모 시스템에서 일반적으로 사용되며, 유연성과 확장성을 제공합니다.

 

 

현재의 IT 서비스들은 Cloud Natice Architecure(Anti-fragile) 로 진화하게 되었다.

이유 

  • 확장 가능한 아키텍처 
  • 탄력적 아키텍처 (Auto scaileing)
  • 장애 격리
  • 적은 금액 

 

Cloud Native Application 의 요소 4가지

  • Microservice
  • DevOps
  • CI/CD
    • 지속적 통합(CI) / 지속적 배포(CD)
  • Container 가상화

 

MSA 의 특징 

  • 프로세스 및 구조 변경을 위한 도전이 전제 조건
  • 독립적 작은 서비스
  • 서로 합치기 가능
  • Restful
  • 설정 정보는 외부에 두어야한다.
  • 클라우드 환경
  • 동적 스케일 업 아웃 적용
  • CI/CD
  • 시각화 하여 관리해야한다.

 

모든  서비스가 다 MSA 로 변경되어야 할까?

하기 항목들을 따져봐야 한다.

  1. 어느 정도의 공수가 드는가?
  2. 각각의 서비스가 독립 운영 가능 한가?
  3. 각각의 서비스의 독립적 확장성 이 좋은가?
  4. 오류 사항이 독립적인가?
  5. 외부 종속성 최소화 잘 되어 있는가?
  6. 여러 언어 사용 가능 한가?
카나리 배포
95% 사용자 이전 서비스
5% 사용자 새 버전 서비스
블루그린 배포
이전 → 새 버전 점진적 이전

 

MSA 의 구성 요소

이러한 MSA 에는 독립적 컴포넌트들을 연결 시켜주는 여러 구성 요소들이 존재하고 있고

구성 요소들을 구축하는데에는 다양한 선택지(기술, 언어)가 존재한다.

해당 강의를 통해 
각각의 구성 요소들의 역할과 구축 및 사용 방법에 대해서 알아 볼 것이다

 

 

출저 : Gartner

 

External Gateway

클라이언트가 요청하는 관문
서비스 엑세스를 관리하고 트래픽 관리, 보안정책 적용 

  • Policy Management
  • API Gateway
    •  클라이언트 요청이 처음 도착하는 관문 Service Route 에 해당 요청을 전송한다
  • Consumer Identity Provider

 

Service Mesh 

각각의 서비스를 관리하고 클라이언트 요청을 서비스에 전달 및 서비스간 통신을 자동화 해주는 미들웨어 영역

  • Service Router
    • 요청을 어디로 보낼 지 Serivce Discovery 를 통해 서비스가 어디있는지 확인 
  • Load Balancing
    • 부하 관리를 위해 해당 서비스를 호출 할 것인지 정해준다 
  • Serivce Discovery
    • 각 서비스들의 위치를 저장하고 찾아주는 역할 
  • Config. Store
    • MSA 내부 환경 설정 정보를 저장하는 하는 저장소
  • Identity Provider
    • 각각의 서비스를 지칭할 ID 를 관리하는 역할

 

Runtime Platform

실제 서비스들이 위치하는 영역

  • Platform API 
  • Container Mangement
    • Instance 

 

CI/CD Automation

서비스들을 자동으로 빌드/배포/구동 하는 영역

  • Build Automation
  • Image Repo 
  • Deployment Automation
  • Platform Automation

 

Backing Service

MSA 에서 사용하는 Storege 들과 메시지 처리등을 관리하는 영역

  • Persistence
  • MOM

 

Telemetry

MSA 의 모니터링 및 진단 기능을 하는 영역

  • Monitoring
  • Diagnostics

 

 

 

공부에 사용한 Dependency

  • Naming Server(Service Discovery) : Spring Cloud Netfilix Eureka
  • API Gateway : Netflix Zuul (Deprecated),  Spring Cloud Gateway
  • Queuing System : Kafka

 

 

 


출저

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 - 인프런

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

'Backend > MSA' 카테고리의 다른 글

Kafka( 카프카 )  (0) 2024.04.22
Feign Client  (1) 2024.04.19
Spring Cloud Config  (0) 2024.04.16
API Gateway  (0) 2024.03.26
Service Discovery  (1) 2024.01.09