마이크로서비스 아키텍처란?
마이크로서비스 아키텍처(micro architecture)를 알기 전. 마이크로서비스를 먼저 알아보자
보통의 어플리케이션서버에는 여러개의 어플리케이션으로 구성이 되어 이루어져있다. 이 어플리케이션들을 다른 역할을 하는 어플리케이션을 작게 나눠 수정, 관리 하도록 만든 아키텍처를 마이크로서비스 아키텍처라한다.예를 들어 네이버를 볼 때 광고배너, 날씨, 로그인 등 역할이 다른 어플리케이션은 독립적으로도 작동을 할 수 있기 때문에 API를 나눠 서비스를 한다.
마이크로서비스 아키텍처에 반대되는 아키텍처인 모놀리틱 아키텍처(monolithic architecture)가 있다.
모놀리틱 아키텍처란? 지금까지 내가 만든 WAS와 같다.
로그인, 날씨, 메일 등의 모든 기능을 하나의 서버로 관리하는 것이다.
즉 프로젝트가 하나라는 것이다. 그럼 하나의 프로젝트로 배포가 된다.
모놀리틱 아키텍처가 나쁜것은 아니고, 많은 서비스가 모놀리틱으로 구현된다.
대부분의 장점이 하나의 프로젝트로 구성되어 생기는 장점이다.
하지만 프로젝트와 서비스가 커지면서 단점이 생긴다.
모놀리틱 아키텍처로 구성했을 때 서비스가 복잡해진다면 하나의 기능을 추가 하더라도 많은 코드를 수정해야 하고, 테스트 또한 복잡해진다.
프로젝트와 서비스가 성장하고 커지면서 단점이 생긴다.
위에서 살펴 본 모놀리틱 아키텍처와 반대로 독립적인 기능을 하는 서비스로 분리하여 설계
한다.
위 그림처럼 각각의 서비스가 독립적으로 서비스를 하고 클라이언트는 RESTAPI를 이용해 API Gateway를 통해 응답 받는다
마이크로서비스 아키텍처는 서비스가 커질수록 장점이 많아진다.
위 그림에서 개별의 서비스가 API Gateway를 거쳐 클라이언트로 응답하는 것을 볼 수 있다.
여러가지 API가 하나의 페이지에서 보인다고 생각해보자. 이때 API Gateway가 없다면 각 서비스의 엔드포인트와 호스트등 모두 알아야한다. 결과로 요청과 응답이 많아지면서 속도도 늦어지고, 코드 또한 복잡해진다. 이 문제들 뿐 아니라 API별 호환성 등 여러가지 문제들이 있기에 API Gateway를 사용한다.
API Gateway란 서버로 오는 API 요청을 처리해주는 Gateway이다.
등의 여러가지 역할이 있다.