Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

MSA

몇년 전부터 MSA를 인터넷 서비스에 적용하기 위한 노력을 하고 있다. 특히 컨테이너를 기반으로 하는 MSA에 관심이 있다.

MSA는 클라우드 환경이 일반화되면서 주도적인 개발모델이 됐다. 클라우드는 네트워크, 컴퓨터 메모리를 통합해서 하나의 컴퓨터처럼 보이게 한다. 기존에 서버 단위로 실행되는 애플리케이션들은 클라우드 환경에서 마치 프로세스처럼 작동을 한다. 그나마 VM(가상머신)기반의 클라우드에서는 서버를 사용한다는 느낌이 어느 정도남아 있었는데, 컨테이너로 넘어오면서는 이러한 느낌마저 사라져 버렸다.

예전부터 단일 컴퓨터 시스템에서는 "필요한 일만 하는 프로그램들을 연결해서 작업을 처리하는" 모델을 널리 사용했다. 리눅스 개발자라면 익숙할 "파이프(PIPE)"가 그것이다. 아래 예제를 보자.
$ ps aux | grep conky | grep -v grep | awk '{print $2}' | xargs kill
이 모델을 클라우드 환경에 옮겨 놓은게 MSA다. 파이프 대신에 REST, HTTP 등이 쓰일 뿐 원리는 동일하다.

API Gateway

리눅스(유닉스)의 파이프 모델은 소위 말하는 "작은 시스템 큰 구현"을 가능하게 한다. MSA는 이걸 클라우드상에 구현한 (파이프라인)모델이다. 인터넷 서비스가 목적이므로 어떤 형태로 인터넷에 노출해야 한다. API Gateway는 이 파이프라인을 인터넷과 연결하는 접점(Single entry point)이다. 이제 클라이언트는 파이프라인이 어떻게 수어되는지 상관 없이, 기능을 호출할 수 있다.

 API-GATEWAY

API GW는 모든 클라이언트를 위한 단일 접점을 제공한다. API GW는 클라이언트의 요청을 처리 할 수 있는 서버로 프락시(Proxy)한다.

API GW는 단일한 프로토콜(보통 HTTP)을 지원 할 수도 있지만, 클라이언트의 종류에 따라서 웹소켓이나 MQTT등을 포함한 두 가지 이상의 프로토콜을 지원할 수도 있다. IoT 디바이스가 클라우드에 연결되면서, 이러한 요구사항이 증가하는 추세다.

... 계속