마이크로서비스

박형석·2022년 4월 6일
0

마이크로서비스란?

마이크로서비스는 애플리케이션 구축을 위한 아키텍처 기반의 접근 방식이다. 아키텍처 프레임워크인 마이크로서비스는 분산되어 있고 느근하게 결합되어 있으므로 한 팀에서 변경한다 해도 전체 애플리케이션이 분할되지는 않는다. 마이크로서비스 사용의 이점은 개발팀이 애플리케이션의 새로운 구성 요소를 신속히 빌드하여 변화하는 비즈니스 요구를 충족할 수 있다. - Red Hat


마이크로서비스 아키텍처의 정의

다음 특징을 갖는 서비스들의 조합으로 이뤄진 설계

  • 유지보수에 유리하고, 테스트 가능해야 함
  • 느슨하게 결합되어야 함
  • 독립적으로 배포 가능함
  • 비즈니스 역량을 중심으로 구성해야 함
  • 작은 팀에 의해 소유됨

마이크로서비스의 특징

자율성

마이크로서비스 아키텍처의 각 구성 요소 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발, 배포, 운영을 하고 확장을 할 수 있다.

Stateless

마이크로서비스는 Stateless 방식으로 서로 통신할 수 있고, 이러한 방식으로 구축된 애플리케이션은 내결함성이 높고 단일 ESB에 대한 의존성은 더 낮다. 또, 마이크로서비스가 프로그래밍 언어에 구속받지 않는 애플리케이션 프로그래밍 인터페이스(API)이기 때문에 개발팀이 자체 툴을 선택할 수도 있다.


마이크로서비스의 장점

민첩성

소규모 팀 조직에서 더 독립적이면서 신속하게 업무를 수행할 수 있다. 덕분에 개발 주기 시간이 단축된다.

확장성

각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있다.

손쉬운 배포

CI/CD를 통해 새로운 아이디어를 손쉽게 시험하고 문제 발생시 간단히 롤백할 수 있게 해 준다.

기술적 자유

각각의 팀별로 적합한 도구를 선택할 수 있다.

편리한 액세스

하나의 큰 애플리케이션을 더 작은 조각으로 분할했기 때문에 개발자들이 각 조각을 파악하고 업데이트하며 개선하기가 용이해졌다.


과거와 현재의 서비스

과거(Monolithic Architectur)

예전에는 기술적 계층에 따른 팀 분류가 되었다. 예를 들면

  • UI팀
  • 비즈니스 로직팀
  • 데이터베이스 팀
    그래서 단순한 서비스 수정이나 변경이 필요한 경우에도 팀 간의 협업 비용이 증가했다.

현재(Microservice)

현재의 팀을 나누는 기준은 비즈니스 수행 능력에 따른 팀 분류이다. 이 중 비즈니스 수행능력을 나누는 기준은 업무 도메인에 따라 나눈다.
쇼핑몰로 예를 들면

  • 회원
  • 상품
  • 배송
    과 같이 각각의 도메인에 따라 팀을 나누게 된다.

팀이 하는일이 하나의 서비스로 나뉘어짐

소프트웨어 스택, 데이터베이스 선택, 프로젝트 관리등이 팀 별로 독립적.


현명한 엔드포인트와 바보 파이프라인

서비스(엔드포인트)는 일을 하게 하고, 통신(파이프라인)은 최대한 단순하게 한다.

서비스와 서비스 사이는 느슨하게, 응집성은 높게.

대표적인 방법

  1. REST API(HTTP)
  2. 메시지 버스를 이용한 메시지 전달(메시지 큐)
profile
Better Than Yesterday

0개의 댓글