본문 바로가기
프로젝트/RanDrive

MSA(Microservice Architecture)

by HWK 2023. 10. 5.

MSA 탄생배경

모든 서비스를 하나에 모아놓다보니, 업데이트도 힘들고, 크기도 너무크다. 이를 Monolithic이라고 한다.

지금까지 시용한 방식이며, 하나의 기능을 추가하는 것만 해도 결국 많은 기능을 수정해야 했었다.
이때 서비스를 나눠서 관리하면, 따로 따로 관리가 되며, 각각의 서비스에 대한 호출은 API에 의해서 이뤄진다.

각각의 기술을 따로 관리해야 하므로, 각각의 서비스간의 커뮤니케이션이 중요하다.

SOA라는 MSA와 비슷한 기술이 있는데 SOA는 이 커뮤니케이션은 SOAP라는 다소 무거운 방식으로 통신을 하고,
MSA는 기본적으로 REST API를 통해 통신한다. 
이 REST API는 그동안 주구장창 해오던 것들이다.

더보기
  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.

 

MSA가 좋은 이유

  1. 신규 업데이트와 배포가 좋음
  2. 특정 부분에 문제가 발생 시, 다른 부분에 전파가 잘 되지 않음
  3. Scale Out시 필요한 자원만 증가시킬 수 있다. 기존엔 모든 자원을 증가시키므로, 비용적인 측면에서 이점이 있다.

MSA 사용시 필요한 기술과 구성요소

- 기술

  1. Spring Cloud
  2. Service Mesh(ISTIO)

- 구성요소

  1. Config Mamgement : 서비스의 재밀드, 재부팅 없이 설정사항 반영
  2. Service Discovery : MSA 기반 서비스 배포 시 서비스 검색 및 등록
  3. API Management : 클라이언트 접근 요청을 일원화
  4. Centealized Logging : 서비스별 로그의 중앙집중화
  5. Distributed Tracing : 마이크로서비스 간의 호출 추적
  6. Centralized Monitoring : 서비스별 메트릭 정보의 중앙 집중화
  7. Resilience & Fault Tolerance : MSA 구조에서 하나의 실패한 서비스가 체인에 연결된 전체 서비스들에 파급 효과를 발생시키지 않도록 하기 위한 계단식 실패 방지 구조
  8. Auto-Scaling & Self-Healing : 자동 스케일링, 복구 자동화를 통한 서비스 관리 효율화

 

직면할 수 있는 어려움

복잡성, 사이드카 컨테이너 수 증가,미성숙 기술력, 정말 복잡해질 때만 생산성 늘어남
고로 앵간 복잡한거 아니면 쓰지마라...?

 

출처: https://www.youtube.com/watch?v=8d4h7K_Fq-0 

 

MSA의 장단점

독립적 배포를 보자마자 정말 정말 어려울 것이라고 느껴졌다. 각각의 배포가 정말 중요해진다 한다.

하지만 이런 단점을 해결하기 위한 기술들이 있다고 한다! 아래를 보자

각각의 마이크로 서비스들에게 인증 인가와 같은 과정을 해줘야 하는데 이는 API Gateway가 해준다.

대표적으로 Zuul과 Spring Cloud Gateway가 있다.

 

무엇을 배우고 적용시켜야 하는가

아래를 보자. Spring boot와 Spring cloud로 microservice를 만들고, 그 주변 기술들을 배워서 적용시켜야 MSA가 된다.

그 후 Spring Cloud에 대한 강의를 듣고 있는데, 신기하면서도 아직은 어떻게 적용시킬지는 모르겠다.

대충 Spring Cloud Config Server을 만든 후, Spring Cloud Config Client에서 해당 서버 내용을 보는 것인데,
무료강의에서는 합쳐지는 부분까지는 안알려 주는것 같다.

 

출처: 유투브 나무소리 https://www.youtube.com/watch?v=8Gj4ROwBAgw&list=PLOSNUO27qFbv95vD0Cc5Vwtro4vcMZGiy&index=14 

 

다시 뒤엎기로 했다.
MSA는 우리같은 작은 프로젝트에 사용하면 나쁜점만 있다고 하신다.. 또한 친환경 걷기를 하기에는... 탄소 배출량이나 차량 현황이 구획별로 나뉘어져 있는데, 이 구획이 너무나 크다.. 한 2x2km정도? ㅜㅜ

'프로젝트 > RanDrive' 카테고리의 다른 글

Docker와 EC2 사용한 배포  (0) 2023.10.08
Docker 적용  (1) 2023.10.07
SA 설계 마치기  (0) 2023.10.06
주제 정하기  (1) 2023.10.05
프로젝트 시작(주제, 룰 정하기)  (1) 2023.10.04