
오토 스케일링(Auto Scaling): 서버비 60% 절감의 비밀 (feat. AWS, K8s)
새벽엔 낭비하고 점심엔 터지는 서버 문제 해결기. '택시 배차'와 '피자 배달' 비유로 알아보는 오토 스케일링과 서버리스의 차이, 그리고 Spot Instance를 활용한 비용 절감 꿀팁.

새벽엔 낭비하고 점심엔 터지는 서버 문제 해결기. '택시 배차'와 '피자 배달' 비유로 알아보는 오토 스케일링과 서버리스의 차이, 그리고 Spot Instance를 활용한 비용 절감 꿀팁.
서버를 끄지 않고 배포하는 법. 롤링, 카나리, 블루-그린의 차이점과 실제 구축 전략. DB 마이그레이션의 난제(팽창-수축 패턴)와 AWS CodeDeploy 활용법까지 심층 분석합니다.

내 서버가 해킹당하지 않는 이유. 포트와 IP를 검사하는 '패킷 필터링'부터 AWS Security Group까지, 방화벽의 진화 과정.

왜 넷플릭스는 멀쩡한 서버를 랜덤하게 꺼버릴까요? 시스템의 약점을 찾기 위해 고의로 장애를 주입하는 카오스 엔지니어링의 철학과 실천 방법(GameDay)을 소개합니다.

React나 Vue 프로젝트를 빌드해서 배포했는데, 홈 화면은 잘 나오지만 새로고침만 하면 'Page Not Found'가 뜨나요? CSR의 원리와 서버 설정(Nginx, Apache, S3)을 통해 이를 해결하는 완벽 가이드.

클라우드 서버를 처음 쓰다 보면 흔히 이런 상황을 겪습니다. 점심시간(12:00~13:00)에 트래픽이 평소보다 10배 이상 폭발하는데, 새벽엔 사용자가 거의 없는 서비스. "점심시간을 무조건 버티자!"는 생각에 고사양 서버 10대를 24시간 내내 켜두면 어떻게 될까요?
결과는 어땠을까요? 점심시간은 무사히 넘깁니다. 쾌적하죠. 하지만 문제는 새벽 3시입니다. 사용자가 거의 없는 그 시간에도 비싼 서버 10대는 전기세를 펑펑 쓰며 맹렬하게 돌아가고 있습니다.
클라우드 비용이 예상보다 많이 나오는 사례가 흔합니다. 이런 식으로 트래픽과 무관하게 서버를 과잉 provisioning 해두면, 비용이 매출을 훌쩍 넘겨버리는 상황도 생깁니다.
저는 이 패턴을 공부하면서 깨달았습니다. "트래픽은 파도처럼 출렁이는데, 서버는 벽돌처럼 고정되어 있으면 돈을 바닥에 버리는 거구나." 이 문제를 해결해준 구세주가 바로 오토 스케일링(Auto Scaling)이었습니다.
처음 오토 스케일링을 공부할 때 가장 막막했던 질문들은 다음과 같습니다.
단순히 "자동으로 늘어난다"는 개념은 알겠는데, "어떻게 설정해야 사고가 안 나는지"에 대한 실제적인 감(Intuition)이 전혀 없었습니다.
이 개념을 가장 잘 설명해준 비유는 "카카오택시 배차 시스템"이었습니다.
이러면 택시 회사는 필요한 만큼만 기사님 월급을 주면 되고, 손님은 기다릴 필요가 없습니다. 클라우드(Cloud)의 핵심 가치가 바로 이 "쓴 만큼만 낸다(Pay-as-you-go)"에 있으며, 오토 스케일링은 그 가치를 실현하는 도구입니다.
Target Tracking Policy라고 부릅니다. "난 그냥 CPU 50% 유지하고 싶어"라고 하면 알아서 늘리고 줄입니다.서버(EC2)가 부팅되고 애플리케이션(Java/Node)이 실행되는 데 보통 3~5분이 걸립니다. 트래픽은 1초 만에 폭등하는데 5분을 기다리면 서버는 이미 터져있겠죠?
여기서 한 발 더 나아가면 아예 "서버 관리 자체를 안 하는" 서버리스(AWS Lambda)가 있습니다. 오토 스케일링과 서버리스의 차이는 "택시 회사 vs 피자 배달"입니다.
"와! 그럼 무조건 서버리스가 좋네요?" 꼭 그렇지는 않습니다. Cold Start(첫 실행 딜레이) 문제와, 24시간 내내 돌릴 경우 EC2보다 비싼 비용 구조 때문입니다. 간헐적으로 폭발하는 트래픽에는 서버리스가 최고고, 꾸준한 베이스 트래픽에는 EC2 오토 스케일링이 가성비가 좋습니다.
요즘은 쿠버네티스(Kubernetes)를 많이 쓰니 HPA(Horizontal Pod Autoscaler)로 정리해봤습니다.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: backend-api-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: backend-api
minReplicas: 2 # 최소 2대는 항상 유지 (새벽에도 죽지 않게)
maxReplicas: 10 # 최대 10대까지만 (비용 폭탄 방지)
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60 # CPU가 60% 넘으면 늘려라!
주의할 점 (Cool-down / Stabilization Window):
한 번 늘렸으면 바로 줄이지 말고 좀 기다려야 합니다. 1분 만에 늘렸다가 사용자가 잠깐 줄었다고 바로 서버를 끄면, 다시 늘어날 때 대응을 못 합니다. 이를 Thundering Herd 문제나 Flapping 현상이라고 합니다.
보통 scaleDownStabilizationWindow를 5분 정도로 주어, "트래픽이 줄어도 5분간은 지켜보다가 진짜 줄면 꺼라"라고 설정합니다.
오토 스케일링으로 늘어나는 서버들은 굳이 비싼 '온디맨드(On-Demand)'를 쓸 필요가 없습니다. AWS의 '남는 서버'를 경매 방식으로 싸게 빌려 쓰는 스팟 인스턴스를 섞어 쓰면 비용을 최대 90%까지 더 줄일 수 있습니다.
이 조합(Mixed Instances Policy)이 스타트업 인프라 비용 절감의 핵심 비기입니다.
오토 스케일링을 제대로 적용하면 이런 변화가 생깁니다.
"서버 한 대를 1년 내내 켜두는 것"은 집에 아무도 없는데 에어컨을 풀가동하는 것과 같습니다. 이제 스마트하게, 필요한 만큼만 씁시다.