brunch

SWS: AWS ALB에 여러개의 서버를 배포하는법

AWS ALB에 여러개의 Private EC2 인스턴스를 라우팅 하기

by Steve Web Service


이전에 썼던 EC2 DMS 관련 포스팅에서 썼던 기능을 만든 후, 나는 기술 관련 질문을 하는 커뮤니티에서 EC2 인스턴스에 프로젝트를 배포하려는 사람들이 또 어떤 고민을 하는지 찾아보기 시작했다.


그러던 중 동료에게도 들었던 내용과 비슷한 고민을 찾았는데, 스터디하기 어려웠던 개념중 하나가 바로 하나의 ALB에 여러개의 인스턴스를 연결하고 라우팅 해주는 것에 대한 고민이었다.


이렇게 말하면 이해하기가 어려울테니 아래 이미지를 보면서 설명하겠다.


위 시나리오는 이렇다. MSA를 한다고 했을 때 payment 서버와 logging 서버 그리고 product 서버를 따로 EC2 인스턴스를 분리하여 배포하는 시나리오라고 가정해보자.


이때 중요한것은 하나의 ALB에 요청이 왔을때 트래픽을 적절한 서버에 라우팅 시켜줘 해당 서버에 요청이 가도록 해줘야 한다.


기존에 EC2 DMS의 한계는 API서버 1개 - 1개의 ALB의 구조로만 구현이 되어있었기에 타겟 그룹의 규칙은 크게 없이 / 즉 모든 요청이 하나의 EC2로만 가도록 설정되어있었다.


SWS 홈페이지 확인하러가기

EC2 DMS 문서 보러가기


그래서 우리는 EC2 DMS로 위의 문제를 해결하기 위해 아래 이미지와 같은 플로우를 생각해냈다.

1. SWS Project(VPC)를 선택한다.

2. NEW ALB를 선택한다.

3. Target Path Pattern을 CUSTOM을 선택하고 규칙을 입력한다. 이때 서버 마다 컨트롤러의 prefix path를 사용자가 설정해놓고 그 규칙을 입력한다. 예를들어 payment 서버는 /api/payment 로 시작하는 path로 요청이 오면 payment EC2에 트래픽이 도달한다.

4. Target Health Check Path를 입력한다. 예를들어 /api/payment/health 라는 path로 요청하면 인증/인가 어떤것도 거치지 않고 public하게 열어 놓아서 OK라는 간단한 텍스트라도 뜨도록 페이지를 구현해야한다.

5. Target Priority는 우선순위이며, 1 ~ 999 범위 내에서 선택해야하며 숫자가 높을 수록 우선순위가 낮다.

나머지는 EC2 DMS의 생성 방식과 동일하다. → EC2 DMS 생성 방법 바로가기


우리는 위와 같은 아이디어를 구현해서 결국 EC2 DMS를 통해서 또 다른 EC2 인스턴스를 배포할 때 타겟 ALB만 선택하고 위와 같은 과정을 똑같이 진행하면 하나의 ALB에 여러개의 인스턴스를 라우팅 해줄 수 있도록 사람들에게 도움을 줄 수 있었다.


만약 위와 같은 과정을 직접 설정하게 된다면 ALB의 생성부터 타겟그룹에 path pattern 설정 등 다양한 학습이 선행되어야한다.


그런데 위와 같은 설정만으로 우리는 목표를 달성할 수 있다. 정말로 쉽지 않은가?


SWS 홈페이지 확인하러가기

EC2 DMS로 ALB에 여러 인스턴스 라우팅하는 법 문서 보러가기


우리는 계속 사용자가 AWS Cloud에 대한 학습 없이도 클라우드 아키텍처를 구축할 수 있게 도와주는 툴을 만들어 개발자가 비즈니스에 조금 더 집중할 수 있도록 도와주고 나아가 적은 인원의 개발자로도 최대한의 AWS 리소스들을 사용할 수 있도록 가치를 제공할 것이다.


다음 기사는 또 다른 문제를 해결한 히스토리에 대해서 쓰려고 한다. 끝


SWS 홈페이지 확인하러가기




keyword
작가의 이전글SWS Console: 클라우드 퀵빌더를 구축하다.