[MSA] MSA의 핵심 원칙 :: 매운코딩
728x90
300x250

 

MSA는 빠르게 빌드,배포 가능!

CI/CD Pipeline, Automation, API Gateway의 중요성이 대두되고 있음.

 

과거 API Gateway는 트래픽을 분산, 분배(로드밸런싱)해서 라우팅하는 것에 그침.

MSA에서는 어느서비스로 적당한 트래픽으로 보내는게 중요함.

 

 

MSA의 특징?

1. 조직의 역량 (변화에 빠르게 대응하는 능력)을 높일 수 있다.

시스템의 구조에 따라 조직의 구조도 맞춰진다. 서비스별로 목적을 가진 조직이 작게작게 나눠진다..

과거는 프엔팀, 백엔팀이 나눠져있었다면 요즘은 서비스별로 프엔,백엔,디자이너 각각 존재

* 기능<목적 조직

 

 

2. 개발+유지보수의 통합으로 고객 요구사항에 빠른 대응

기존의 si 프로젝트->유지보수로 넘어가게되면 각기 다른 인력이기에 인수인계를 하더라도

안정화 적응하는데에 시간이 걸린다. 

개발+유지보수를 하나의 제품으로 보고 동일한 인력이 계속 관리한다면 소스와 히스토리를 더 잘알기에 빠르게 대응이 가능하다.

최대한 단순한방식의 프로토콜을 사용하며 자원을 관리한다.(라우팅,변환,로직적용..)

 

3. CI/CD 자동화

 

4. 문제발생 시 대처 방식

서비스 간 호출을 감지한다 (ex. Circuit Breaker)

그 호출하는 도중에 에러가 발생한다면.. 다른 길을 찾아야한다.

S1 --> S2 --> S3 ...일때, S2-->S3에서 에러가 발생한다면, S4로 우회하거나 대기하여 트래픽기다렸다가 재시도하거나.. 문제를 임시방편으로 해결하기 위한 설정이 가능하다.

모놀리식에서는 if/else로 했다.

 

이후 복구를 진행한다. (Conainer Ochestraion, K8S)

보통 쿠버네티스는 여러가지 각기다른 OS등의 이미지파일을 연결하여 하나의 클러스터에서 실행하고 관리가 가능하다.

추가로 컨테이너가 실패하거나 노드가 다운되면 자동으로 감지하여 새로운 컨테이너를 다른 노드에 배포하고, 서비스를 복구한다.

 

App.은 항상 Replicaset+ Deployment가 감싸고 있다. 

Deployment는 Service호출을 통해서만 실행이 된다.

Service가 죽었는지 살았는지 지속적으로 모니터링(감지) 하는게 Readiness (쿠버네티스에서 자체적으로 지원 O)

 

Readiness Probe는 파드가 트래픽을 받을 준비가 되었는지를 확인하는 메커니즘이다. 레디니스 프로브는 애플리케이션이 초기화되는 데 시간이 걸리는 경우, 애플리케이션이 실제로 준비되었을 때 트래픽을 받도록 보장한다.

 

컨테이너가 실패하거나 노드가 다운되면 자동으로 감지하여 새로운 컨테이너를 다른 노드에 배포하고, 서비스를 복구한다.

 

  • Application: 사용자에게 제공되는 실제 프로그램이나 서비스.
  • Pod: 쿠버네티스에서 컨테이너를 실행하는 가장 작은 단위.
  • ReplicaSet: 특정 수의 파드를 유지하여 애플리케이션의 가용성을 보장.
  • Deployment: 애플리케이션의 배포와 업데이트를 관리하는 상위 개념.
  • Service: 파드 간의 네트워크 접근을 관리하고 로드 밸런싱을 제공.
  • Readiness Probe: 파드가 트래픽을 받을 준비가 되었는지 확인하는 메커니즘.

 

의도치 않은 결과 방지 (Transaction, Event Driven)

ex.. 연쇄적인 서비스호출 중 오류발생시 일부만 rollback 되거나 이후단은 진행이 되지 않을때..

 

Event Driven 객체를 통해서 각각 서비스별 상태메시지도 따로 기록해서 각 서비스는 서비스대로 호출하도록한다?. (Saga 라고 함)

 

  

 

서비스 간의 영향도 (Chaos Test)

 

 

 

 

출처 : 패스트캠퍼스 간편결제 MSA 초격차 강의

 

 

 

 

728x90

+ Recent posts