백엔드 2번 째 챌린지 서버 아키텍쳐 개선 과정입니다. 3가지 단계를 거치면서 문제를 보완하고 백엔드 자체 목표를 달성 할 수 있었습니다.
1번그림 :
처음에는 서버를 한 대만 두었고 nginx와 젠킨스를 사용해서 무중단배포를 구현했습니다.
2번 그림 : 스케일 아웃에 대한 피드백을 받은 후, ELB(엘라스틱 로드 밸런싱)를 도입하여 2가지 목표를 달성할 수 있었습니다.
첫번 째로, scale out에 대한 문제를 해결했습니다. 서버를 1대 더 추가하여 RR(라운드로빈)방식으로 트래픽을 균등 분배하였습니다. 이를 통해, 갑자기 1대의 서버가 죽는 상황에도 서비스 유지가 가능해졌습니다.
두번 째로, 기존에 http로만 동작하던 서버에 SSL인증서를 받음으로써 https를 적용하였습니다.
3번 그림 : 설명 : 하지만, 이전 방식에서는 문제가 있었습니다.
scale out을 진행할 때마다, 직접 동일 환경의 서버를 만들어 ELB 타겟그룹에 추가해줘야 했기 때문에 갑작스러운 서버 부하에 즉각 대응이 불가능했습니다.
그래서, AWS에서 제공하는 기능인 Auto Scaling을 활용하였습니다. 기존 서버의 CPU사용률이 40%를 넘어가면 자동으로 서버가 추가되도록 설정하였습니다. Auto scaling 적용 후, 부하테스트를 시행했을 때 다음과 같은 성능의 개선을 가져올 수 있었습니다.
전체적인 아키텍쳐