특가 이벤트: Auto Scaling 적용기

박상하·2025년 4월 4일

1년차

목록 보기
11/26

우리 서비스는 이커머스 서비스이다.

그렇다보니 가끔 특가 이벤트를 한다. 이번 특가 이벤트는 갑작스럽게 시작되어..
미리 대비를 하지 못한 이슈가 있었다..!

백엔드 개발자분께서 API요청이 단기간에 몇 십만 건 들어왔다고 말씀해주셨다 ㄷㄷ

그래프를 보면 서버가 안죽은게 신기할 정도다. cpu 사용률이 90%에 육박했었다..

이 짤이 생각났다 ㅋㅋ

그래서 CTO님과 백엔드 개발자님께서 협의하여 오토스케일링을 적용하셨는데
어깨넘어로 본 오토스케일링 적용기를 포스팅하려고한다.

EC2 Auto Scaling

EC2는 Auto Scaling의 기능을 지원한다.

먼저, Auto Scaling에 대해 알아보자.

Auto Scaling 이란?

자동적으로 서버의 사이즈를 조절하는것

CPU, 메모리, 디스크 등 자원들의 상태를 모니터링하여 서버의 사이즈를 자동적으로 조정하는 것이다.

스케일링의 방법에는 대표적으로 2가지가 있다.

  1. 스케일 업
  2. 스케일 아웃

스케일 업이란 성능 자체를 높이는것
스케일 아웃이란 물리적 대수를 늘리는것

우리는 스케일 아웃으로 스케일링을 진행하였다.
스케일 업은 가성비가 좋지않다.

10배 가격을 내도 성능이 10배 좋아지는 게 아니지만
스케일 아웃은 가격과 거의 비례하게 성능이 좋아진다.

그럼 이제 EC2 Auto Scaling을 직접 적용해보자.

Auto Scaling 적용

자, 생각해보면 인스턴스는 동일한 운영체제, 용량, 빌드 파일 등을 가지고 있을 것이다.
늘어난 인스턴스는 동일한 환경을 가져야 배포에 문제가 없을 것이다.

그렇기 때문에..!!

AMI (Amazon Machine Images)

AMI는 인스턴스의 환경을 기억하는 기본 세팅 모음

자, 그럼 AMI를 추출해서 템플릿에 박으면 ec2가 동일한 환경으로 출발~ 할수있는거다.

AMI를 만들어보자.

만들기 전에..!

일단 우리 서비스는 기존에 사용하던 인스턴스의 이미지를 복사하면 됐다.
그 이미지에는 이미 배포에 필요한 docker-compose 파일이나 nginx가 담겨있다.

그렇기에 AMI를 시작 템플릿에 박아두면 그 이후의 배포과정만 명령문에 추가해주면된다.

즉, 인스턴스 하나에 먼저 배포를 하고 새로운 인스턴스가 가져야할 파일들을 가진 후
이후 과정은 템플릿 시작 코드에 따로 넣어주면 좀 더 간단하게 오토 스케일링 된 인스턴스의 배포과정을 단순화 할 수 있다.

대신 이런 단점도 있다. 기존 인스턴스가 2대고 최대 4대일 때

트래픽이 많지않아 2대가 꾸준히 운영되고있었고 위 2대에만 새로운 버전을 계속 배포해왔다면

아직 스케일링되지 않았던 2대가 작동이 되었을때 최초 AMI를 참고하기 때문에 이전 버전을 보여줄 확률이 높다.

그렇기에 배포시에는 AMI를 업데이트하여 새로운 버전의 AMI를 시작 템플릿에 넣어주는 것이 중요하다.

이는 시작 템플릿을 설명할 때 다시 한번 말하겠다.

ec2->인스턴스에서 해당 인스턴스에 우 클릭하면 이미지 생성을 할 수 있다.

여기서 중요한건 만약 운영중인 서비스인 경우 인스턴스 재부팅 체크를 끄지않는다면
서비스가 중단될 수 있으니.. 해당 인스턴스에 뭔가가 서비스중이면..
꼭 체크를 제거할것!

이렇게 이미지를 생성하면 AMI 카테고리에 생성중인 AMI를 확인할 수 있다.

(생성이 꽤 오래걸림)

시작 템플릿

자, 이제 시작 템플릿으로 가보자.

시작 템플릿은 ec2 가 새롭게 생생될 때의 템플릿 (기본 세팅)을 자동으로 해주는 틀이다.

그럼 이제 이 곳에 내가 생성했던 AMI를 넣어준다. 그럼 그 AMI를 기반으로 EC2가 설정될 것이다.(운영체제, 파일 등)

여기는 그냥 쭉쭉 넣어주면된다.

중요한건 !!

가장 하단으로 내리면 사용자 데이터를 넣을 수 있다.

여기에 필요한 명령어를 넣어주면된다.

bash에서의 명령문을 넣고싶다면

#!/bin/bash 를 최상단에 두고

하단에 넣어주면된다. 필자의 경우는
ecr, docker에 로그인하여 컨테이너를 실행시켜주는 로직을 넣어두었다.

이렇게 하면 시작 템플릿도 완성 !

오토 스케일링 그룹

이제 이 오토 스케일링 그룹에 해당 템플릿을 넣어주면 끝난다.
오토스케일링 그룹을 생성하면 자동으로 인스턴스가 생성된다.(사용자 지정)

오른쪽 상단 Auto Scailing 그룹 생성 클릭

하나씩 넣어주면된다 이제부터.

시작 템플릿은 아까 생성한 템플릿을 넣어주고

로드밸런서가 있다면 해당 로드밸런서를 넣어주고 쭉 넣어준다..

그룹 크기는 초기 크기를 설정한다.
즉, 인스턴스 초기 몇대 사용할 건지
그리고 최소용량은 고정적으로 몇 대 사용할건지
만약 늘어난다면 최대용량 즉, 몇 대 까지 사용할건지

그렇게 쭉 넣어주면 인스턴스가 생성이 된다 !!!

여기서 하나 또 해줘야할 게 있다.

인스턴스 축소 보호란 만약 오토스케일링이 적용되어 인스턴스 수가 늘어나고 줄어들 때
고정 인스턴스로 2개를 사용하겠다는 것이다. 즉, 늘어났다가 줄어들 때 안바뀌는 인스턴스 설정이다.

이걸 해주어야 배포할 때 편하겠지!

또 한 번의 특가 이벤트 이번엔?

4월 7일 12시에 특가 이벤트가 한 번 더 열렸다.
트래픽은 저번 특가 이벤트 거의 비슷하거나 그 이상이었다.

하지만 이번 이벤트는 오토스케일링을 적용을 했다.

정책은 평균 cpu 사용률 50%가 넘으면 인스턴스가 추가되도록 했다.

인스턴스는 최소 2대 최대 4대로 설정을 했다.
최대 4개까지 늘어나 각각 약 35%씩 cpu 사용률을 보이며 이벤트에 대응할 수 있었다.

오토스케일링이라는 기능이 이커머스 도메인에서 특히 유용한 기능이라는 것을 알 수 있었다.
요금의 부담이 있을 수 있으니 항상 오토스케일링 인스턴스의 최대 용량과 최소 용량을 잘 체크하자.

0개의 댓글