주제 정리

[아키텍처]마이크로 서비스

박상순 2021. 8. 19. 02:55

마이크로 서비스란?

  • 대규모 애플리케이션을 개발할 때 각각의 담당 영역을 가진 소규모의 독립적인 구성요소로 구분하여 개발하는 방식
  • 사용자의 요청을 처리하기 위해 여러 내부 마이크로 서비스를 호출하여 응답을 작성한다. (주로 API 형식)
  • 수천 개의 독립적인 웹 표준, 언어, 데이터베이스, 개발자 툴로 확인되는 웹 서버의 구성 요소들을 의미하며 개발 회사, 오픈 소스 클라우드에서 제공되는 소프트웨어나 앱 또한 구성요소이다.

용도

  • 주로 애플리케이션의 개발 속도를 높이기 위해서 사용하는 방식
  • 웹사이트 마이그레이션 - 모놀리식 플랫폼에서 호스팅되는 복잡한 웹사이트를 클라우드, 컨테이너 기반으로 마이그레이션 한다.
  • 미디어 콘텐츠 - 이미지와 통영상을 객체 스토리지 저장하여 웹, 모바일에서 제공
  • 트랜잭션 및 인보이스 - 결체, 주문을 독립적인 서비스 단위로 구분하여 인보이스(거래내역서)가 발행 되지 않아도 결제가 가능
  • 데이터 처리 - 기존의 데이터 처리를 위해 클라우드를 확장하여 지원 가능

수행 방식

 

모놀리식과 마이크로 서비스의 구조

마이크로 서비스

장점

  • 기능별 개발하며 서비스 단위 별로 작업을 할 수 있다.
  • 새로운 기능과 수정사항은 마이크로 서비스 하나만 빌드, 배포로 빠르게 가능하다.
  • 기능별로 기술, 언어를 선택 사용하여 개발이 쉽다.
  • 기능의 오류는 기능을 가지고 있는 마이크로 서비스만 수정한다면 정상화 된다.

 

단점

  • 분산되어 있어 관리, 모니터링이 어렵다.
  • 서로를 호출하며 서비스가 진행되어서 개발이 까다롭다.
  • 통신관련 오류가 비교적 쉽게 발생할 수 있다.
  • End to End 테스트를 위해서는 많은 마이크로 서비스를 구동해야하기 때문에 까다롭다.

모놀리식

장점

  • 개발되어있는 환경이 같다 복잡도가 낮다.
  • 쉽게 같은 서버 환경을 구축 가능 (같은 앱으로 하나 더 만들면되기 때문에)
  • End to End 테스트가 용이

 

단점

  • 프로젝트 하나의 규모가 커 빌드, 배포 구동 시간이 오래걸린다.
  • 하나의 수정 사항으로도 전체를 빌드, 배포해야한다.
  • 모든 코드가 같이 있어 구조를 알기 어렵고유지 보수가 어렵다.
  • 하나의 오류가 전체에 영향을 끼친다.
  • 기능별로 다른 기술, 언어 등을 선택하기 어렵다.

서비스 지향(SOA)와 마이크로 서비스의 차이

기능별로 분산하여 개발하고 통신하여 서비스를 제공한다는 점이 매우 유사하다.

두 아키텍처의 큰 차이점은 SOA는 공통된 언어로 개발하고 ESB를 사용하여 통신을 한다.

마이크로 서비스는 API로 통신을 하여 각 기능간의 언어적으로 제약이 없다.

    ESB - 통신을 위해 서비스들을 하나로 묶는 미들웨어

Google의 관련 제품 및 서비스

  • Kubernates - 컨테이너화 된 앱을 자동으로 배포, 스케일링, 관리 해주는 시스템
  • Cloud Run - Serverless 한 서버 = 서버를 관리 운영의 필요가 없다. 인프라적인 부분을 알아서 제어 실질 서비스만 서버에 올려 사용하면 모든 것은 자동화
  • Cloud SQL - DB 관리 서비스 (AWS의 RDS랑 비슷한 느낌)
  • Anthos - 앱 관리, 운영에 초점을 둔 서비스

참고 자료

728x90

'주제 정리' 카테고리의 다른 글

[운영체제] 블로킹 vs 논블로킹, 동기 비동기  (0) 2021.09.16
[운영체제] Lock의 종류  (0) 2021.08.26
[JAVA] HashSet  (0) 2021.08.13
[JAVA] HashTable, HashMap  (0) 2021.08.12
Object 객체 탐구  (0) 2021.08.07