마이크로서비스 아키텍처

이재문·2022년 3월 15일
0
post-thumbnail

마이크로서비스 아키텍처란?

마이크로서비스 아키텍처(micro architecture)를 알기 전. 마이크로서비스를 먼저 알아보자
보통의 어플리케이션서버에는 여러개의 어플리케이션으로 구성이 되어 이루어져있다. 이 어플리케이션들을 다른 역할을 하는 어플리케이션을 작게 나눠 수정, 관리 하도록 만든 아키텍처를 마이크로서비스 아키텍처라한다.

예를 들어 네이버를 볼 때 광고배너, 날씨, 로그인 등 역할이 다른 어플리케이션은 독립적으로도 작동을 할 수 있기 때문에 API를 나눠 서비스를 한다.

모놀리틱 아키텍처

마이크로서비스 아키텍처에 반대되는 아키텍처인 모놀리틱 아키텍처(monolithic architecture)가 있다.
모놀리틱 아키텍처란? 지금까지 내가 만든 WAS와 같다.
로그인, 날씨, 메일 등의 모든 기능을 하나의 서버로 관리하는 것이다.
즉 프로젝트가 하나라는 것이다. 그럼 하나의 프로젝트로 배포가 된다.
모놀리틱 아키텍처가 나쁜것은 아니고, 많은 서비스가 모놀리틱으로 구현된다.

모놀리틱 아키텍처 장점

대부분의 장점이 하나의 프로젝트로 구성되어 생기는 장점이다.

  • 로컬 환경에서 개발하기 편하다.
  • 하나의 프로젝트이기에 배포 또한 편하다.
  • 전체적인 서비스에 대한 테스트가 편하다.

하지만 프로젝트와 서비스가 커지면서 단점이 생긴다.
모놀리틱 아키텍처로 구성했을 때 서비스가 복잡해진다면 하나의 기능을 추가 하더라도 많은 코드를 수정해야 하고, 테스트 또한 복잡해진다.

모놀리틱 아키텍처 단점

프로젝트와 서비스가 성장하고 커지면서 단점이 생긴다.

  • 하나의 기능을 추가할 때, 많은 줄을 코드를 수정해야 한다.
  • 수정되거나 추가된 코드로 인한 버그가 있을 수 있기에 전체적인 테스트또한 필요하다.
  • 기능에 맞춰 다른 언어나, 프레임워크를 사용 할 수 없다.

마이크로서비스 아키텍처

위에서 살펴 본 모놀리틱 아키텍처와 반대로 독립적인 기능을 하는 서비스로 분리하여 설계한다.

위 그림처럼 각각의 서비스가 독립적으로 서비스를 하고 클라이언트는 RESTAPI를 이용해 API Gateway를 통해 응답 받는다

마이크로서비스 아키텍처 장점

마이크로서비스 아키텍처는 서비스가 커질수록 장점이 많아진다.

  • 서비스가 개별로 이루어져있어 다른 서비스에 영향을 미치는 범위가 적다.
  • 개별 서비스를 배포할 수 있다.
  • 요청이 많은 서비스 하나에 의해 서비스 자체가 커지지 않는다.
  • 애자일한 개발방식이 될 수 밖에 없다.
    • 서비스가 독립적으로 구현되기에 팀 단위로 개발할 수 밖에 없어진다. 그에따라 팀의 의사에 따라 서비스의 방향이 결정되기에 애자일 개발 방식이 된다.

마이크로서비스 아키텍처 단점

  • 서비스마다 통신처리가 필요하다.
  • 서비스가 개별로 이루어져있기에 여러가지 요청, 처리에 대한 속도에 관여된다.
  • 트랜젝션 관리가 어렵다.

API Gateway

위 그림에서 개별의 서비스가 API Gateway를 거쳐 클라이언트로 응답하는 것을 볼 수 있다.
여러가지 API가 하나의 페이지에서 보인다고 생각해보자. 이때 API Gateway가 없다면 각 서비스의 엔드포인트와 호스트등 모두 알아야한다. 결과로 요청과 응답이 많아지면서 속도도 늦어지고, 코드 또한 복잡해진다. 이 문제들 뿐 아니라 API별 호환성 등 여러가지 문제들이 있기에 API Gateway를 사용한다.
API Gateway란 서버로 오는 API 요청을 처리해주는 Gateway이다.

API Gateway 역할

  • 클라이언트의 요청 처리
  • 로드밸런싱
  • 캐싱
  • 요청 / 응답에 대한 모니터링

등의 여러가지 역할이 있다.

profile
이제부터 백엔드 개발자

0개의 댓글