ํธ๋ํฝ ํญํ์๋ ์๋ฒ๊ฐ ๋ฉ์ถ์ง ์๋ ๋น๊ฒฐ
- ๊ณต์ ๋งํฌ ๋ง๋ค๊ธฐ
- X
- ์ด๋ฉ์ผ
- ๊ธฐํ ์ฑ
ํธ๋ํฝ ํญํ์๋ ์๋ฒ๊ฐ ๋ฉ์ถ์ง ์๋ ๋น๊ฒฐ: ์คํ ์ค์ผ์ผ๋ง(Auto Scaling) ์ฑ ์๋ฒ ๊ตฌ์ถ ๊ฐ์ด๋
์ฑ์ ์ด์ํ๋ค ๋ณด๋ฉด ๊ฐ์ฅ ๊ฐ์ด์ด ์ฒ ๋ ํ๋ ์๊ฐ์ด ์ธ์ ์ธ๊ฐ์? ๋ฐ๋ก ์์์น ๋ชปํ ์ด๋ฒคํธ๋ ๋ง์ผํ ์ผ๋ก ๊ฐ์๊ธฐ ์ฌ์ฉ์๊ฐ ๋ชฐ๋ ค ์๋ฒ๊ฐ ๋ค์ด๋ ๋์ ๋๋ค. ๋ฐค์ ์ค์น๋ฉฐ ์๋ฒ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ์๋๋ ์ด์ ๊ทธ๋ง! ์ค๋์ ์ฌ์ฉ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์์์ ๋์ด๋๊ณ ์ค์ด๋๋(Auto Scaling) ์ฑ ์๋ฒ ์ํคํ ์ฒ์ ์ถ์ฒ ์๋ฃจ์ ์ ๊น๋ํ๊ฒ ์ ๋ฆฌํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
1. ์ ์คํ ์ค์ผ์ผ๋ง(Auto Scaling)์ด ํ์์ผ๊น?
ํธ๋ํฝ์ด ๋์ด๋ ๋ ๋์ฒํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ค์ผ์ผ ์ (Scale-up): ์๋ฒ ์์ฒด์ ์คํ(CPU, RAM)์ ๋์ด๋ ๋ฐฉ๋ฒ. ๋น์ฉ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๊ณ ๊ฒฐ๊ตญ ํ๋์จ์ด ํ๊ณ์ ๋ถ๋ชํ๋๋ค.
์ค์ผ์ผ ์์(Scale-out): ๋น์ทํ ์ฌ์์ ์๋ฒ ๋์๋ฅผ ๋๋ ค ํธ๋ํฝ์ ๋ถ์ฐํ๋ ๋ฐฉ๋ฒ. ์คํ ์ค์ผ์ผ๋ง์ด ๋ฐ๋ก ์ด ์ค์ผ์ผ ์์์ ์๋ํํ ๊ฒ์ ๋๋ค.
๋น์ฉ์ ์๋ผ๊ณ ์๋น์ค ์์ ์ฑ์ ๋์ผ ์ ์๋ ํ๋ ํด๋ผ์ฐ๋ ์๋์ ํ์ ๊ต์์ ๋๋ค.
2. ์ํฉ๋ณ ์ถ์ฒ ์ฑ ์๋ฒ & ํ๋ซํผ
๋ด ์๋น์ค์ ๊ท๋ชจ์ ๊ฐ๋ฐ ๋ฆฌ์์ค์ ๋ง์ถฐ ๊ฐ์ฅ ์ ์ ํ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
① ๊ฐ์ฅ ๋์ค์ ์ด๊ณ ๊ฐ๋ ฅํ ์กฐํฉ: AWS (EC2 + Auto Scaling + ALB)
ํน์ง: ์ ์ธ๊ณ 1์ ํด๋ผ์ฐ๋์ธ AWS์ ํ์ค ์คํ ์ค์ผ์ผ๋ง ์กฐํฉ์ ๋๋ค.
์๋ ๋ฐฉ์: Application Load Balancer(ALB)๊ฐ ํธ๋ํฝ์ ๋ถ์ฐํ๊ณ , CPU ์ฌ์ฉ๋ฅ ์ด๋ ์์ฒญ ์(Request Count) ๋ฑ์ ์งํ๋ฅผ ๊ธฐ์ค์ผ๋ก Auto Scaling ๊ทธ๋ฃน์ด EC2 ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ์์ฑ(Out) ๋ฐ ์ ๊ฑฐ(In)ํฉ๋๋ค.
์ถ์ฒ ๋์: ์ธํ๋ผ๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ๊ณ ์ถ๊ณ , ํ์ฅ์ฑ์ด ๋ฌด๊ถ๋ฌด์งํ ์๋น์ค๋ฅผ ๋ง๋๋ ํ.
② ์๋ฒ ๊ด๋ฆฌ ์ง์ฅํ์ถ: AWS ECS / EKS (์ปจํ ์ด๋ ๊ธฐ๋ฐ)
ํน์ง: ๊ฐ์ ์๋ฒ(VM)๋ฅผ ๊ด๋ฆฌํ๋ ๋์ Docker ์ปจํ ์ด๋ ๋จ์๋ก ์คํ ์ค์ผ์ผ๋ง์ ์ํํฉ๋๋ค.
์๋ ๋ฐฉ์: ์ฟ ๋ฒ๋คํฐ์ค(Kubernetes) ๊ธฐ๋ฐ์ HPA(Horizontal Pod Autoscaler)๋ฅผ ์ด์ฉํ๋ฉด ํธ๋ํฝ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ฑ ์ปจํ ์ด๋๊ฐ ๋ช ์ด ๋ง์ ๋ณต์ ๋ฉ๋๋ค.
์ถ์ฒ ๋์: ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)๋ฅผ ๋์ ํ๊ฑฐ๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ํ๋ ํ.
③ ์ธํ๋ผ ์ธํ ์ด ๊ท์ฐฎ๋ค๋ฉด: PaaS ํ๋ซํผ (Heroku, AWS Elastic Beanstalk, Google App Engine)
ํน์ง: ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ฉด ์๋ฒ ํ๋ก๋น์ ๋๋ถํฐ ์คํ ์ค์ผ์ผ๋ง๊น์ง ์์์ ๋ค ํด์ค๋๋ค.
์๋ ๋ฐฉ์: ์ค์ ํ์ผ ๋ช ์ค๋ง ์ ์ด๋๋ฉด ํ๋ซํผ์ด ํธ๋ํฝ์ ๊ฐ์งํ๊ณ ์์์ ์ธ์คํด์ค๋ฅผ ์กฐ์ ํฉ๋๋ค.
์ถ์ฒ ๋์: ์ธํ๋ผ ์์ง๋์ด๊ฐ ๋ฐ๋ก ์๊ณ , ๋น ๋ฅธ ํ๋ก๋ํธ lanรงamento(์ถ์)์ ๋น์ฆ๋์ค ๋ก์ง์๋ง ์ง์คํ๊ณ ์ถ์ ์ด๊ธฐ ์คํํธ์ .
④ ๊ฐ์ฑ๋น์ ์ฌํํจ์ ์ํ๋ค๋ฉด: Fly.io / Render
ํน์ง: ์ต๊ทผ ๊ฐ๊ด๋ฐ๋ ํค๋ก์ฟ ๋์ ์๋น์ค๋ค์ ๋๋ค. ๊ธ๋ก๋ฒ๋ฆฌํ๊ฒ ์๋ฒ๋ฅผ ๋ถ์ฐ ๋ฐฐ์นํ๊ธฐ ์ข๊ณ ์คํ ์ค์ผ์ผ๋ง ์ค์ ์ด ๋งค์ฐ ์ง๊ด์ ์ ๋๋ค.
์ถ์ฒ ๋์: ์ฌ์ด๋ ํ๋ก์ ํธ, ์๊ท๋ชจ ์น์๋น์ค, API ์๋ฒ.
3. ์ฑ๊ณต์ ์ธ ์คํ ์ค์ผ์ผ๋ง์ ์ํ ๊ฟํ 3๊ฐ์ง
๋ฌด์ํ์ฑ(Stateless) ์ค๊ณ๋ ํ์: ์๋ฒ๊ฐ ์ธ์ ๋ ์ฃฝ๊ณ ์๋ก ๋ง๋ค์ด์ง ์ ์์ด์ผ ํฉ๋๋ค. ์ฌ์ฉ์ ์ธ์ ์ ๋ณด๋ ์ ๋ก๋ ํ์ผ์ ์๋ฒ ๋ด๋ถ๊ฐ ์๋๋ผ Redis, AWS S3, ์ธ๋ถ DB ๋ฑ ๋ณ๋ ์คํ ๋ฆฌ์ง์ ๋ถ๋ฆฌํด ๋์ด์ผ ํฉ๋๋ค.
์ ์ ํ ์ฟจ๋ค์ด(Cooldown) ํ์ ์ค์ : ํธ๋ํฝ์ด ์ ๊น ํ์๋ค๊ณ ์๋ฒ๊ฐ ์์ฐฝ ๋์ด๋ฌ๋ค๊ฐ ๋ฐ๋ก ์ค์ด๋ค๋ฉด ๋น์ฉ ๋ญ๋น์ ์ฑ๋ฅ ์ ํ๊ฐ ์ต๋๋ค. ์งํ ๋ณํ์ ๋ฐ๋ฅธ ์ ์ ์๊ฐ์ ๊ผญ ๋์ธ์.
๋ถํ ํ ์คํธ(Load Testing)๋ ์ค์ ์ ์: k6๋ JMeter ๊ฐ์ ๋๊ตฌ๋ก ๋ฏธ๋ฆฌ ๊ฐ์ง ํธ๋ํฝ์ ๋ณด๋ด๋ฉฐ ์คํ ์ค์ผ์ผ๋ง์ด "์ง์ง๋ก" ์ ๋์ํ๋์ง ๊ผญ ํ ์คํธํด ๋ณด์ธ์.
๋งบ์๋ง
์๋ฒ ํ์ฅ์ ๋ํ ๋๋ ค์์ ์์ ์ฃผ๋ ์คํ ์ค์ผ์ผ๋ง์ ์ด์ ์ ํ์ด ์๋ ์์กด ์ ๋ต์ ๋๋ค. ์ฐ๋ฆฌ ์๋น์ค์ ๊ท๋ชจ์ ์์ฐ์ ๋ง๋ ๋ฐฉ์์ ์ ํํด ๋ ๋ ํ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค!
- ๊ณต์ ๋งํฌ ๋ง๋ค๊ธฐ
- X
- ์ด๋ฉ์ผ
- ๊ธฐํ ์ฑ