์๋ ํ์ธ์! ์ ์ด๋ฆ์ Vadim Madison์ด๊ณ Avito ์์คํ ํ๋ซํผ ๊ฐ๋ฐ์ ์ด๋๊ณ ์์ต๋๋ค. ํ์ฌ ๋ด์์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๋ฒ ์ธ๊ธ๋์์ต๋๋ค. ์ด์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ต๋ํ ํ์ฉํ๊ณ ๊ทธ ์์์ ๊ธธ์ ์์ง ์๋๋ก ์ธํ๋ผ๋ฅผ ์ด๋ป๊ฒ ๋ณํ์์ผฐ๋์ง ๊ณต์ ํ ์๊ฐ์ ๋๋ค. ์ฌ๊ธฐ์์ PaaS๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง, ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๊ณ ๋ง์ดํฌ๋ก์๋น์ค ์์ฑ์ ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ฝ์ด๋ณด์ธ์. ์๋์ ์ ๊ฐ ์ด ๋ชจ๋ ๋ด์ฉ์ด Avito์์ ์์ ํ ๊ตฌํ๋๋ ๊ฒ์ ์๋๋ฉฐ, ๊ทธ ์ค ์ผ๋ถ๋ ํ๋ซํผ์ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
(๊ทธ๋ฆฌ๊ณ ์ด ๊ธฐ์ฌ ๋ง์ง๋ง ๋ถ๋ถ์์๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ์ ๋ฌธ๊ฐ Chris Richardson์ XNUMX์ผ๊ฐ ์ธ๋ฏธ๋์ ์ฐธ์ํ ์ ์๋ ๊ธฐํ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.)
์ฐ๋ฆฌ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ๋๋ฌํ ๋ฐฉ๋ฒ
Avito๋ ์ธ๊ณ์์ ๊ฐ์ฅ ํฐ ๊ธฐ๋ฐ ์ฌ์ดํธ ์ค ํ๋์ด๋ฉฐ ๋งค์ผ 15๋ง ๊ฐ ์ด์์ ์๋ก์ด ๊ด๊ณ ๊ฐ ๊ฒ์๋ฉ๋๋ค. ์ฐ๋ฆฌ ๋ฐฑ์๋๋ ์ด๋น 20๋ง ๊ฐ๊ฐ ๋๋ ์์ฒญ์ ๋ฐ์๋ค์ ๋๋ค. ํ์ฌ ์๋ฐฑ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์๋
๋์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ถํด ์์ต๋๋ค. ์ ํํ ์ด๋ป๊ฒ - ์ฐ๋ฆฌ ๋๋ฃ๋ค์ด ์์ธํ
์ฒ์์ ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์ถ์ํ๋ ๋ฐ ํฌ๊ด์ ์ผ๋ก ๋์์ด ๋๋ ์ํ๊ณ๋ฅผ ๋ง๋ค์ง ์์์ต๋๋ค. ๊ทธ๋ค์ ํฉ๋ฆฌ์ ์ธ ์คํ ์์ค ์๋ฃจ์ ์ ๋ชจ์์ ์ง์์ ์ถ์ํ๊ณ ๊ฐ๋ฐ์๋ฅผ ์ด๋ํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ทธ๋ XNUMX๊ณณ(๋์๋ณด๋, ๋ด๋ถ ์๋น์ค)์ ๋ฐฉ๋ฌธํ๊ณ , ๊ทธ ํ ์ฝ๋๋ฅผ ์์ ๋ฐฉ์์ผ๋ก ๋จ์ผ์ฒด๋ก ์๋ผ๋ด๋ ค๋ ์ด๋ง์ด ๋์ฑ ๊ฐํด์ก์ต๋๋ค. ์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋ น์์ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์์ผ๋ก ์ด๋ค ์์ผ๋ก๋ ์ํํ๋ ์์ ์ ๋ํ๋ด๊ณ ๋ ธ๋์์ ์๋ํ๋ฅผ ๋ํ๋ ๋๋ค.
์ด์ PaaS CLI ์ ํธ๋ฆฌํฐ์์ ํ๋์ ๋ช ๋ น์ผ๋ก ์ ์๋น์ค๊ฐ ์์ฑ๋๊ณ , ๋ ๊ฐ์ ๋ช ๋ น์ผ๋ก ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ถ๊ฐ๋์ด Stage์ ๋ฐฐํฌ๋ฉ๋๋ค.
'๋ง์ดํฌ๋ก์๋น์ค ๋จํธํ' ์๋๋ฅผ ๊ทน๋ณตํ๋ ๋ฐฉ๋ฒ
๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์๋ ์ ํ ๋ณ๊ฒฝ์ ์ผ๊ด์ฑ์ ์ํด ๊ฐ๋ฐ์๊ฐ ์ด์์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์ ํด์ผ ํ์ต๋๋ค. ์๋ก์ด ์ํคํ ์ฒ๋ฅผ ์์ ํ ๋ ์๋น์ค ์ปจํ ์คํธ๋ ๋ ์ด์ ์๋ก ์์กดํ์ง ์์ต๋๋ค.
๋ํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๊ฐ ํจ๊ณผ์ ์ด๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ง์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
โข ๋ก๊น
;
โข ์์ฒญ ์ถ์ (Jaeger);
โข ์ค๋ฅ ์ง๊ณ(Sentry);
โข Kubernetes์ ์ํ, ๋ฉ์์ง, ์ด๋ฒคํธ(์ด๋ฒคํธ ์คํธ๋ฆผ ์ฒ๋ฆฌ);
โข ๋ ์ด์ค ์ ํ/์ํท ๋ธ๋ ์ด์ปค(Hystrix๋ฅผ ์ฌ์ฉํ ์ ์์);
โข ์๋น์ค ์ฐ๊ฒฐ ์ ์ด(Netramesh ์ฌ์ฉ)
โข ๋ชจ๋ํฐ๋ง(Grafana);
โข ์กฐ๋ฆฝ(TeamCity);
โข ํต์ ๋ฐ ์๋ฆผ(Slack, ์ด๋ฉ์ผ);
โข ์์
์ถ์ ; (์ง๋ผ)
โข ๋ฌธ์ ์ค๋น.
์์คํ ์ ๋ฌด๊ฒฐ์ฑ์ ์์ง ์๊ณ ํ์ฅ์ ๋ฐ๋ฅธ ํจ์จ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ Avito์ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ฑ์ ์ฌ๊ณ ํ์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
๋ค์์ ๋ง์ Avito ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํตํฉ๋ "๋น์ฌ์ ์ ์ฑ "์ ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ธํ๋ผ๋ฅผ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๋๋๋ ๊ฒ;
- PaaS(Platform as a Service) ๊ฐ๋ ;
- ๋ง์ดํฌ๋ก์๋น์ค์์ ์ผ์ด๋๋ ๋ชจ๋ ์ผ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
์ธํ๋ผ ์ถ์ํ ๊ณ์ธต์๋ ์ธ ๊ฐ์ ๊ณ์ธต์ด ํฌํจ๋ฉ๋๋ค. ์์์ ์๋๋ก ๊ฐ์.
A. ์๋จ - ์๋น์ค ๋ฉ์. ์ฒ์์ Istio๋ฅผ ์ฌ์ฉํด ๋ณด์์ง๋ง ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ๋นํด ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ฐ๋ผ์ ๊ฑด์ถ ํ Alexander Lukyanchenko์ ์์ ์์ง๋์ด๋ ์์ ๋ง์ ์๋ฃจ์
์ ๊ฐ๋ฐํ์ต๋๋ค.
B. ์ค๊ฐ - Kubernetes. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ํฉ๋๋ค.
C. ํ๋จ - ๋ฒ ์ด๋ฉํ. ์ฐ๋ฆฌ๋ ํด๋ผ์ฐ๋๋ OpenStack ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ง ์๊ณ ์ ์ ์ผ๋ก ๋ฒ ์ด๋ฉํ์ ์์กดํฉ๋๋ค.
๋ชจ๋ ๋ ์ด์ด๋ PaaS๋ก ๊ฒฐํฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ซํผ์ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
I. ๋ฐ์ ๊ธฐ, CLI ์ ํธ๋ฆฌํฐ๋ฅผ ํตํด ์ ์ด๋ฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฐฉ์์ผ๋ก ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋๋ ๊ฒ์ ๋ฐ๋ก ๊ทธ๋ ์ ๋๋ค.
II. ํตํฉ ์์ง๊ธฐ ๊ณตํต ๋์๋ณด๋๋ฅผ ํตํด ๋ชจ๋ ๋๊ตฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
III. ์ ์ฅ. ์ค์ํ ์์ ์ ๋ํ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ ์ค์ผ์ค๋ฌ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์์คํ ๋๋ถ์ ๋๊ตฐ๊ฐ๊ฐ Jira์์ ์์ ์ค์ ์ ์์ด๋ฒ๋ ธ๋ค๊ณ ํด์ ๋จ ํ๋์ ์์ ๋ ๋์น์ง ์์ต๋๋ค. ์ด๋ฅผ ์ํด Atlas๋ผ๋ ๋ด๋ถ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Avito์ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌํ์ ๊ฐ๋ฐ ๋ฐ ๋ฆด๋ฆฌ์ค์ ๊ฐ ๋จ๊ณ์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํ ์ ์ด๋ฅผ ๋จ์ํํ๋ ๋จ์ผ ์ฒด๊ณ์ ๋ฐ๋ผ ์ํ๋ฉ๋๋ค.
ํ์ค ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์ด๋ป๊ฒ ์๋ํ๋์?
์ผ๋ฐ์ ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค ์์ฑ ์ฒด์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CLI ํธ์ โ ์ง์์ ์ธ ํตํฉ โ ๊ตฝ๊ธฐ โ ๋ฐฐํฌ โ ์ธ๊ณต ํ ์คํธ โ ์นด๋๋ฆฌ์ ํ ์คํธ โ ์คํด์ฆ ํ ์คํธ โ ์์ฐ โ ์ ์ง ๊ด๋ฆฌ.
์ ํํ ์ด ์์๋๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
CLI ํธ์
โข ๋ง์ดํฌ๋ก์๋น์ค ์์ฑ.
์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฐ๋ฐ์์๊ฒ ๋ง์ดํฌ๋ก์๋น์ค ์ํ ๋ฐฉ๋ฒ์ ๊ฐ๋ฅด์น๊ธฐ ์ํด ์ค๋ซ๋์ ๋
ธ๋ ฅํ์ต๋๋ค. ์ฌ๊ธฐ์๋ Confluence์ ์์ธํ ์ง์นจ์ ์์ฑํ๋ ๊ฒ์ด ํฌํจ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณํ์ด ๋ณ๊ฒฝ๋๊ณ ๋ณด์๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ฌ์ ์ด๊ธฐ์ ๋ณ๋ชฉ ํ์์ด ๋ํ๋ฌ์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ํ๋ ๋ฐ ํจ์ฌ ๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ๊ณ ์ฌ์ ํ ์์ฑ ์ค์ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํ์ต๋๋ค.
๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ ๋จ๊ณ๋ฅผ ์๋ํํ๋ ๊ฐ๋จํ CLI ์ ํธ๋ฆฌํฐ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. ์ค์ ๋ก ์ด๋ ์ฒซ ๋ฒ์งธ git push๋ฅผ ๋์ฒดํฉ๋๋ค. ๊ทธ๋ ๊ฐ ์ ํํ ํ๋ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ "๋ง๋ฒ์ฌ" ๋ชจ๋์์ ๋จ๊ณ๋ณ๋ก ํ ํ๋ฆฟ์ ๋ฐ๋ผ ์๋น์ค๋ฅผ ์์ฑํฉ๋๋ค. Avito ๋ฐฑ์๋์๋ PHP, Golang ๋ฐ Python๊ณผ ๊ฐ์ ์ฃผ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ํ ํ๋ฆฟ์ด ์์ต๋๋ค.
- ํ ๋ฒ์ ํ๋์ ๋ช ๋ น์ผ๋ก ํน์ ์์คํ ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค. - Minikube๊ฐ ์์๋๊ณ Helm ์ฐจํธ๊ฐ ์๋์ผ๋ก ์์ฑ๋์ด ๋ก์ปฌ kubernetes์์ ์์๋ฉ๋๋ค.
โ ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ก์ปฌ, ์คํ ์ด์ง, ํ๋ก๋์ ๋ฑ ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ๊ธฐ ์ํด IP, ๋ก๊ทธ์ธ ๋ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค. ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ด๊ฒฐํจ์ฑ ๊ตฌ์ฑ๊ณผ ๊ท ํ ์กฐ์ ์ ํตํด ์ฆ์ ๋ฐฐํฌ๋ฉ๋๋ค.
โ ๋ผ์ด๋ธ ์ด์ ๋ธ๋ฆฌ ์์ฒด๋ฅผ ์ํํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์์ ์ IDE๋ฅผ ํตํด ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ฌด์ธ๊ฐ๋ฅผ ์์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ํธ๋ฆฌํฐ๋ ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ (Golang์ฉ)์ ๋ค์ ๋น๋ํ๊ณ ๋ค์ ์์ํฉ๋๋ค. PHP์ ๊ฒฝ์ฐ ํ๋ธ ๋ด๋ถ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํ๋ฉด ์ค์๊ฐ ๋ค์ ๋ก๋๊ฐ "์๋์ผ๋ก" ์ํ๋ฉ๋๋ค.
โ ์๋ ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค. ๊ณต๋ฐฑ ํํ์ด์ง๋ง ์ฌ์ฉํ๊ธฐ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
โข ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ.
๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ์ฝ๊ฐ์ ๊ท์ฐฎ์ ์ผ์ด์์ต๋๋ค. ๋ค์์ด ํ์ํ์ต๋๋ค.
I. ๋์ปคํ์ผ.
II. ๊ตฌ์ฑ.
III. Helm ์ฐจํธ๋ ๊ทธ ์์ฒด๋ก ๋ณต์กํ๋ฉฐ ๋ค์์ ํฌํจํฉ๋๋ค.
- ์ฐจํธ ์์ฒด
โ ํ
ํ๋ฆฟ;
โ ๋ค์ํ ํ๊ฒฝ์ ๊ณ ๋ คํ ํน์ ๊ฐ.
Kubernetes ๋งค๋ํ์คํธ๋ฅผ ์ฌ์์ ํ๋ ์๊ณ ๋ฅผ ๋์ด ์ด์ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฐฐํฌ๋ฅผ ์ต๋ํ ๋จ์ํํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด์ ๋ถํฐ Dockerfile์ด ์๊ณ ๊ฐ๋ฐ์๋ ํ๋์ ์งง์ app.toml ํ์ผ์ ์ ์ฒด ๊ตฌ์ฑ์ ์์ฑํฉ๋๋ค.
๋ค, app.toml ์์ฒด์์๋ ์ ์ ๋์ ํ ์ผ์ด ์์ต๋๋ค. ๋ฐ์์ํฌ ์๋น์ค ๋ณต์ฌ๋ณธ์ ์์น์ ์(๊ฐ๋ฐ ์๋ฒ, ์ค๋น ๋จ๊ณ, ํ๋ก๋์ ๋จ๊ณ)๋ฅผ ์ง์ ํ๊ณ ํด๋น ์ข ์์ฑ์ ํ์ํฉ๋๋ค. [engine] ๋ธ๋ก์์ ์ค ํฌ๊ธฐ = "small"์ ํ์ธํ์ธ์. ์ด๋ Kubernetes๋ฅผ ํตํด ์๋น์ค์ ํ ๋น๋๋ ํ๋์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ํ์ํ ๋ชจ๋ Helm ์ฐจํธ๊ฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ์ด ์์ฑ๋ฉ๋๋ค.
โข ๊ธฐ๋ณธ ๊ฒ์ฆ. ์ด๋ฌํ ๊ฒ์ฌ๋ ์๋ํ๋ฉ๋๋ค.
์ถ์ ํด์ผ ํ ์ฌํญ:
โ Dockerfile์ด ์์ต๋๊น?
โ app.toml์ด ์์ต๋๊น?
โ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฌธ์๊ฐ ์๋์?
โ ์ข
์์ฑ์ด ์ฌ๋ฐ๋ฅธ๊ฐ์?
โ ๊ฒฝ๊ณ ๊ท์น์ด ์ค์ ๋์๋์ง ์ฌ๋ถ.
๋ง์ง๋ง์ผ๋ก, ์๋น์ค ์์ ์๋ ๋ชจ๋ํฐ๋งํ ์ ํ ์ธก์ ํญ๋ชฉ์ ์ง์ ๊ฒฐ์ ํฉ๋๋ค.
โข ๋ฌธ์ ์ค๋น.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ์์ญ์
๋๋ค. ๊ฐ์ฅ ๋ช
๋ฐฑํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋์์ "์์ฃผ ์ํ์ง๋" ๊ธฐ๋ก์ด๊ธฐ๋ ํ๋ฏ๋ก ์ฒด์ธ์ ์ทจ์ฝํ ์ฐ๊ฒฐ๊ณ ๋ฆฌ์ด๊ธฐ๋ ํฉ๋๋ค.
๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ํ ๋ฌธ์๊ฐ ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์ ๋ธ๋ก์ด ํฌํจ๋ฉ๋๋ค.
I. ์๋น์ค์ ๋ํ ๊ฐ๋ตํ ์ค๋ช . ๋ง ๊ทธ๋๋ก ์ด ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง, ์ ํ์ํ์ง์ ๋ํ ๋ช ๋ฌธ์ฅ์ ๋๋ค.
II. ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ ๋งํฌ. ์๋ฅผ ๋ค์ด ์บ์ฑ์ ์ํด Redis๋ฅผ ์ฌ์ฉํ๋์ง, ์ง์ ๋ชจ๋์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ฌ์ฉํ๋์ง ๋ฑ์ ํ๋์ ์ฝ๊ฒ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ์ฌ Avito์์๋ Confluence์ ๋ํ ๋งํฌ์ ๋๋ค.
III. ๋ฐ๋ถ. ์๋น์ค ์์๊ณผ ์๋น์ค ์ฒ๋ฆฌ์ ๋ณต์ก์ฑ์ ๋ํ ๊ฐ๋จํ ์๋ด์์ ๋๋ค.
IV. ์์ฃผํ๋ ์ง๋ฌธ, ๋๋ฃ๊ฐ ์๋น์ค ์์ ์ ์ง๋ฉดํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
V. API ์๋ํฌ์ธํธ์ ๋ํ ์ค๋ช . ๊ฐ์๊ธฐ ๋ชฉ์ ์ง๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ทํ์ ๊ด๋ จ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ด๋นํ๋ ๋๋ฃ๊ฐ ๊ทธ์ ๋ํ ๋น์ฉ์ ๊ฑฐ์ ํ์คํ ์ง๋ถํ ๊ฒ์ ๋๋ค. ์ด์ ์ด๋ฅผ ์ํด Swagger์ Brief๋ผ๋ ์๋ฃจ์ ์ ์ฌ์ฉํฉ๋๋ค.
XNUMX. ๋ผ๋ฒจ. ๋๋ ํด๋น ์๋น์ค๊ฐ ์ํ ํ์ฌ์ ์ ํ, ๊ธฐ๋ฅ ๋๋ ๊ตฌ์กฐ์ ๋ถ์๋ฅผ ํ์ํ๋ ํ์์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋๋ฃ๊ฐ ์ผ์ฃผ์ผ ์ ์ ๋์ผํ ์ฌ์ ๋ถ์ ์ถ์ํ ๊ธฐ๋ฅ์ ์ ๊ฑฐํ๊ณ ์๋์ง ์ฌ๋ถ ๋ฑ์ ๋น ๋ฅด๊ฒ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
โ ฆ. ์๋น์ค ์์ ์ ๋๋ ์์ ์. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ PaaS๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๊ฒฐ์ ํ ์ ์์ง๋ง, ์์ ์ ์ํด ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ฝ๋ ๊ฒํ ์ ์ ์ฌํ๊ฒ ๋ฌธ์๋ฅผ ๊ฒํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ง์์ ์ธ ํตํฉ
- ์ ์ฅ์๋ฅผ ์ค๋น ์ค์ ๋๋ค.
- TeamCity์์ ํ์ดํ๋ผ์ธ์ ์์ฑํฉ๋๋ค.
- ๊ถํ ์ค์ .
- ์๋น์ค ์์ ์๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ PaaS์ ์๋ ํ์์ ์ต์ํ์ ์๋ํ๋ผ๋ ํ์ด๋ธ๋ฆฌ๋ ์ฒด๊ณ๊ฐ ์์ต๋๋ค. ์ง์์ ์ํด ์๋น์ค๊ฐ ๋ค๋ฅธ ๊ฐ๋ฐ ํ์ผ๋ก ์ด์ ๋๊ฑฐ๋, ์๋ฅผ ๋ค์ด ์๋น์ค ๊ฐ๋ฐ์๊ฐ ๊ทธ๋ง๋ ๊ฒฝ์ฐ ์์ ์๋ ์ฒด๊ณ๋ ์คํจํฉ๋๋ค.
- Atlas์ ์๋น์ค ๋ฑ๋ก (์ ์ฐธ์กฐ). ๋ชจ๋ ์์ ์์ ์ข ์์ฑ์ ํฌํจํฉ๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์ธ ์ค์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ ์ค ์ ์ฌ์ ์ผ๋ก ์ํํ ๊ฒ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ทธ ์ค ํ๋์์ ๋ค๋ฅธ ์๋น์ค ๋ฒ์ ๊ฐ์ ๋ฐ์ดํฐ ์คํค๋ง ํธํ์ฑ์ ๊นจ๋จ๋ฆด ์ ์๋ ๋ณ๊ฒฝ ํ ์ด๋ธ์ด๋ ๊ธฐํ ํญ๋ชฉ์ด ๋ํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ํ๋์ง ์๊ณ ๊ตฌ๋ ์ ๋ฐฐ์น๋ฉ๋๋ค. PaaS๋ ์ฌ์ฉ์ด ์์ ํ ๋ ์๋น์ค ์์ ์์๊ฒ ์ ํธ๋ฅผ ๋ณด๋ด์ผ ํฉ๋๋ค.
๋นต ๊ตฝ๊ธฐ
๋ค์ ๋จ๊ณ๋ ๋ฐฐํฌ ์ ์๋น์ค ํจํค์ง์ ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํฉ๋๋ค. ๊ณ ์ ์ ๋ฐ๋ฅด๋ฉด - Docker ์ด๋ฏธ์ง์์.
- ์๋น์ค ์์ฒด ๋ฐ ๊ด๋ จ ๋ฆฌ์์ค์ ๋ํ Helm ์ฐจํธ ์์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์บ์๋ฅผ ํฌํจํฉ๋๋ค. CLI ํธ์ ๋จ๊ณ์์ ์์ฑ๋ app.toml ๊ตฌ์ฑ์ ๋ฐ๋ผ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
- ๊ด๋ฆฌ์๊ฐ ํฌํธ๋ฅผ ์ด ์ ์๋ ํฐ์ผ ๋ง๋ค๊ธฐ (ํ์ํ ๊ฒฝ์ฐ).
- ๋จ์ ํ ์คํธ ์คํ ๋ฐ ์ฝ๋ ์ ์ฉ ๋ฒ์ ๊ณ์ฐ. ์ฝ๋ ์ ์ฉ ๋ฒ์๊ฐ ์ง์ ๋ ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์ผ๋ฉด ์๋น์ค๊ฐ ๋ ์ด์ ๋ฐฐํฌ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ํ์ฉ ๊ฐ๋ฅํ ์์ค์ ๋๋ฌํ๋ฉด ์๋น์ค์ "๋น๊ด์ " ๊ณ์๊ฐ ํ ๋น๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๊ฐ์ด ์ง๋๋ ์งํ๊ฐ ๊ฐ์ ๋์ง ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ํ ์คํธ ์ธก๋ฉด์์ ์ง์ ์ด ์๋ค๋ ์๋ฆผ์ ๋ฐ๊ฒ ๋ฉ๋๋ค( ์ด์ ๋ํด ๋ญ๊ฐ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค).
- ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ์ ํ ๊ณ ๋ ค. ์ฐ๋ฆฌ๋ ์ฃผ๋ก Golang์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ฑํ๊ณ Kubernetes์์ ์คํํฉ๋๋ค. ๋ฐ๋ผ์ Golang ์ธ์ด์ ํน์ฑ๊ณผ ๊ด๋ จ๋ ํ ๊ฐ์ง ๋ฏธ๋ฌํจ: ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ GOMAXPROCS ๋ณ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ์์คํ
์ ๋ชจ๋ ์ฝ์ด๊ฐ ์ฌ์ฉ๋๋ฉฐ ์ด๋ฌํ ์๋น์ค๊ฐ ๋์ผํ ์์คํ
์์ ์ฌ๋ฌ ๊ฐ ์์๋๋ฉด ์์๋ฉ๋๋ค. ์์์ ๋๊ณ ๊ฒฝ์ํ๋ฉฐ ์๋ก ๊ฐ์ญํฉ๋๋ค. ์๋ ๊ทธ๋ํ๋ ๊ฒฝํฉ ์์ด ๋ฆฌ์์ค ๊ฒฝ์ ๋ชจ๋์์ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ ๊ฒฝ์ฐ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ณํ๋ ์ง ๋ณด์ฌ์ค๋๋ค. (๊ทธ๋ํ ์ถ์ฒ๋
์ฌ๊ธฐ์ ).
์คํ ์๊ฐ์ ์ ์์๋ก ์ข์ต๋๋ค. ์ต๋: 643ms, ์ต์: 42ms. ์ฌ์ง์ ํด๋ฆญ ๊ฐ๋ฅํฉ๋๋ค.
์์ ์๊ฐ์ ์ ์์๋ก ์ข์ต๋๋ค. ์ต๋: 14091ns, ์ต์: 151ns. ์ฌ์ง์ ํด๋ฆญ ๊ฐ๋ฅํฉ๋๋ค.
์ด์
๋ธ๋ฆฌ ์ค๋น ๋จ๊ณ์์ ์ด ๋ณ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ๊ฑฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐํฌ
โข ๊ท์น์ ํ์ธํฉ๋๋ค. ์๋ํ ํ๊ฒฝ์ ์๋น์ค ์ด์
๋ธ๋ฆฌ ์ ๊ณต์ ์์ํ๊ธฐ ์ ์ ๋ค์ ์ฌํญ์ ํ์ธํด์ผ ํฉ๋๋ค.
- API ์๋ํฌ์ธํธ.
โ API ์๋ํฌ์ธํธ ์๋ต์ด ์คํค๋ง๋ฅผ ์ค์ํฉ๋๋ค.
โ ๋ก๊ทธ ํ์.
โ ์๋น์ค ์์ฒญ์ ๋ํ ํค๋ ์ค์ (ํ์ฌ๋ netramesh์ ์ํด ์ํ๋จ)
โ ์ด๋ฒคํธ ๋ฒ์ค์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ์์ ์ ํ ํฐ์ ์ค์ ํฉ๋๋ค. ์ด๋ ๋ฒ์ค ์ ์ฒด์ ์๋น์ค ์ฐ๊ฒฐ์ ์ถ์ ํ๋ ๋ฐ ํ์ํฉ๋๋ค. ์๋น์ค ์ฐ๊ฒฐ์ ์ฆ๊ฐ์ํค์ง ์๋ ๋ฉฑ๋ฑ์ฑ ๋ฐ์ดํฐ(์ข์ ์ )์ ์๋น์ค ์ฐ๊ฒฐ์ ๊ฐํํ๋ ๋น์ฆ๋์ค ๋ฐ์ดํฐ(๋งค์ฐ ๋์ ์ )๋ฅผ ๋ชจ๋ ๋ฒ์ค๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ฐ๊ฒฐ์ฑ์ด ๋ฌธ์ ๊ฐ ๋๋ ์์ ์ ๋๊ฐ ๋ฒ์ค๋ฅผ ์ฐ๊ณ ์ฝ๋์ง ์ดํดํ๋ฉด ์๋น์ค๋ฅผ ์ ์ ํ๊ฒ ๋ถ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์ง Avito์๋ ์ปจ๋ฒค์ ์ด ๋ง์ง ์์ง๋ง ํ์ ํ์ฅ๋๊ณ ์์ต๋๋ค. ํ์ด ์ดํดํ๊ณ ์ดํดํ ์ ์๋ ํํ๋ก ๊ทธ๋ฌํ ๊ณ์ฝ์ด ๋ ๋ง์ด ์ ๊ณต๋ ์๋ก ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ๋ ์ฌ์์ง๋๋ค.
ํฉ์ฑ ํ ์คํธ
โข ํ์ ๋ฃจํ ํ
์คํธ. ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ด์ ์คํ ์์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
โข ์คํธ๋ ์ค ํ
์คํธ. ์ฐ๋ฆฌ๋ ๋ชจ๋ ์๋น์ค๋ฅผ ์ต์ ์ ์ฑ๋ฅ์ผ๋ก ์ ๊ณตํ๋ ค๊ณ ๋
ธ๋ ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ์๋น์ค์ ๋ชจ๋ ๋ฒ์ ์ ๋ก๋ ํ
์คํธ๋ฅผ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์๋น์ค์ ํ์ฌ ์ฑ๋ฅ๊ณผ ๋์ผํ ์๋น์ค์ ์ด์ ๋ฒ์ ๊ณผ์ ์ฐจ์ด์ ์ ์ดํดํ ์ ์์ต๋๋ค. ์๋น์ค ์
๋ฐ์ดํธ ํ ์ฑ๋ฅ์ด XNUMX๋ฐฐ ๊ฐ์ํ๋ค๋ฉด ์ด๋ ์์ ์์๊ฒ ๋ถ๋ช
ํ ์ ํธ์
๋๋ค. ์ฝ๋๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ ์ํฉ์ ์์ ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๋ ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ Auto Scaling์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๊ณ ๊ฒฐ๊ตญ ์๋น์ค์ ํ์ฅ์ฑ์ ์ ๋ฐ์ ์ผ๋ก ์ดํดํฉ๋๋ค.
๋ถํ ํ ์คํธ ์ค์ ๋ฆฌ์์ค ์๋น๊ฐ ์ค์ ๋ ํ๋๋ฅผ ์ถฉ์กฑํ๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฃผ๋ก ๊ทน๋จ์ ์ธ ๊ฒ์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
a) ์ด ๋ถํ๋ฅผ ์ดํด๋ด
๋๋ค.
- ๋๋ฌด ์์ - ๋ถํ๊ฐ ๊ฐ์๊ธฐ ์ฌ๋ฌ ๋ฒ ๋จ์ด์ง๋ฉด ๋ฌด์ธ๊ฐ๊ฐ ์ ํ ์๋ํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ๋๋ฌด ํฌ๋ฉด ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
b) RPS์ ๋ฐ๋ฅธ ์ปท์คํ๋ฅผ ์ดํด๋ด
๋๋ค.
์ฌ๊ธฐ์๋ ํ์ฌ ๋ฒ์ ๊ณผ ์ด์ ๋ฒ์ ์ ์ฐจ์ด์ ์ด ์๋์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค๊ฐ 100rps๋ฅผ ์์ฑํ๋ค๋ฉด ์๋น์ค๊ฐ ์ ๋๋ก ์์ฑ๋์ง ์์๊ฑฐ๋ ์ด๊ฒ์ด ํน์ด์ฑ์ด์ง๋ง ์ด์จ๋ ์ด๋ ์๋น์ค๋ฅผ ๋งค์ฐ ๋ฉด๋ฐํ ์ดํด๋ด์ผ ํ๋ ์ด์ ์
๋๋ค.
๋ฐ๋๋ก RPS๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ์ผ์ข
์ ๋ฒ๊ทธ๊ฐ ์์ด์ ์ผ๋ถ ์๋ํฌ์ธํธ๊ฐ ํ์ด๋ก๋ ์คํ์ ์ค์งํ์ง๋ง ๋ค๋ฅธ ์๋ํฌ์ธํธ๋ ๋จ์ํ ํธ๋ฆฌ๊ฑฐ๋์์ ์ ์์ต๋๋ค. return true;
์นด๋๋ฆฌ์ ํ ์คํธ
ํฉ์ฑ ํ
์คํธ๋ฅผ ํต๊ณผํ ํ ์์์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ
์คํธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์๋น์ค์ ๋์ ๊ณ ๊ฐ ์ค 0,1% ๋ฏธ๋ง์ ์์ ๋ถ๋ถ๋ถํฐ ์ ์คํ๊ฒ ์์ํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์๋น์ค์ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ์ฌ๋ฐ๋ฅธ ๊ธฐ์ ๋ฐ ์ ํ ์งํ๊ฐ ๋ชจ๋ํฐ๋ง์ ํฌํจ๋๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์นด๋๋ฆฌ์ ํ
์คํธ์ ์ต์ ์๊ฐ์ 5๋ถ์ด๊ณ , ๊ธฐ๋ณธ ํ
์คํธ ์๊ฐ์ 2์๊ฐ์
๋๋ค. ๋ณต์กํ ์๋น์ค์ ๊ฒฝ์ฐ ์๊ฐ์ ์๋์ผ๋ก ์ค์ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ถ์ํฉ๋๋ค :
โ ์ธ์ด๋ณ ์ธก์ ํญ๋ชฉ, ํนํ php-fpm ์์
์;
โ Sentry์ ์ค๋ฅ;
- ์๋ต ์ํ
- ์๋ต ์๊ฐ, ์ ํํ๊ณ ํ๊ท ์ ์ธ ์๋ต ์๊ฐ;
- ์ง์ฐ ์๊ฐ;
โ ์์ธ, ์ฒ๋ฆฌ ๋ฐ ์ฒ๋ฆฌ๋์ง ์์
โ ์ ํ ์งํ.
์์ฐฉ ํ ์คํธ
์คํด์ฆ ํ
์คํธ๋ "์คํด์ง" ํ
์คํธ๋ผ๊ณ ๋ ํฉ๋๋ค. ์ด ๊ธฐ์ ์ ์ด๋ฆ์ Netflix์ ๋์
๋์์ต๋๋ค. ๊ทธ ๋ณธ์ง์ ๋จผ์ ํ๋์ ์ธ์คํด์ค๋ฅผ ์คํจ ์ง์ ๊น์ง ์ค์ ํธ๋ํฝ์ผ๋ก ์ฑ์ฐ๊ณ ์ ํ์ ์ค์ ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ด ์์ ๋ค์ ์ต๋๊ฐ๊น์ง ๋ก๋ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ "์์ฐฉ"์ผ๋ก ์ฒ์ฅ๊ณผ ๋ธํ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ํ ๋ฒ์ ํ๋์ ์ธ์คํด์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ณํ ํจํด์ ๊ณ์ฐํฉ๋๋ค.
"์์ฐฉ"์ ํตํ ํ
์คํธ ๋ฐ์ดํฐ๋ ๊ณตํต ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํ๋ฌ ๋ค์ด๊ฐ ์ธ๊ณต ๋ก๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐํํ๊ฑฐ๋ "ํฉ์ฑ"์ ๋์ฒดํ ์๋ ์์ต๋๋ค.
์์ฐ
โข ํ์ฅ. ์๋น์ค๋ฅผ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก ์ถ์ํ ๋ ๊ท๋ชจ๊ฐ ์ด๋ป๊ฒ ํ์ฅ๋๋์ง ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๊ฒฝํ์ CPU ํ์๊ธฐ๋ง ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ ํจ๊ณผ์ ์ด์ง ์์ต๋๋ค. ์์ํ ํํ์ RPS ๋ฒค์น๋งํน์ ์ฌ์ฉํ ์๋ ํฌ๊ธฐ ์กฐ์ ์ ์๋ํ์ง๋ง ์จ๋ผ์ธ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ํน์ ์๋น์ค์๋ง ํด๋น๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋จผ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ ํ ์งํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํ์ฅ ์ ๋ค์์ ๋ถ์ํฉ๋๋ค.
- CPU ๋ฐ RAM ํ์๊ธฐ,
โ ๋๊ธฐ์ด์ ์๋ ์์ฒญ ์
- ์๋ต ์๊ฐ,
โ ์ถ์ ๋ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ธกํฉ๋๋ค.
์๋น์ค๋ฅผ ํ์ฅํ ๋ ์ฒด์ธ์ ์ฒซ ๋ฒ์งธ ์๋น์ค๋ฅผ ํ์ฅํ์ง ์๊ณ ์ก์ธ์คํ๋ ์๋น์ค๊ฐ ๋ก๋ ์ ์คํจํ์ง ์๋๋ก ์ข ์์ฑ์ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์ ์ฒด ์๋น์ค ํ์ ๋ํด ํ์ฉ ๊ฐ๋ฅํ ๋ก๋๋ฅผ ์ค์ ํ๊ธฐ ์ํด "๊ฐ์ฅ ๊ฐ๊น์ด" ์ข ์ ์๋น์ค์ ๊ธฐ๋ก ๋ฐ์ดํฐ(CPU ๋ฐ RAM ํ์๊ธฐ ์กฐํฉ๊ณผ ์ฑ๋ณ ์ธก์ ํญ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ํจ)๋ฅผ ์ดํด๋ณด๊ณ ์ด๋ฅผ ๊ธฐ๋ก ๋ฐ์ดํฐ์ ๋น๊ตํฉ๋๋ค. ์ด๊ธฐํ ์๋น์ค ๋ฑ "์ข ์์ฑ ์ฒด์ธ" ์ ๋ฐ์ ๊ฑธ์ณ ์์์ ์๋๋ก ์งํ๋ฉ๋๋ค.
ะะฑัะปัะถะธะฒะฐะฝะธะต
๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์๋๋๋ฉด ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
ํธ๋ฆฌ๊ฑฐ๊ฐ ๋ฐ์ํ๋ ์ผ๋ฐ์ ์ธ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ ์ ์ฌ์ ์ผ๋ก ์ํํ ๋ง์ด๊ทธ๋ ์ด์
์ด ๊ฐ์ง๋์์ต๋๋ค.
โ ๋ณด์ ์
๋ฐ์ดํธ๊ฐ ์ถ์๋์์ต๋๋ค.
โ ์๋น์ค ์์ฒด๊ฐ ์ค๋ซ๋์ ์
๋ฐ์ดํธ๋์ง ์์์ต๋๋ค.
โ ์๋น์ค ๋ถํ๊ฐ ๋์ ๋๊ฒ ๊ฐ์ํ๊ฑฐ๋ ์ผ๋ถ ์ ํ ์งํ๊ฐ ์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
โ ์๋น์ค๊ฐ ๋ ์ด์ ์๋ก์ด ํ๋ซํผ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ์์ต๋๋ค.
์ผ๋ถ ํธ๋ฆฌ๊ฑฐ๋ ์ด์ ์์ ์ฑ์ ๋ด๋นํ๊ณ , ์ผ๋ถ๋ ์์คํ ์ ์ง ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ผ๋ก, ์๋ฅผ ๋ค์ด ์ผ๋ถ ์๋น์ค๊ฐ ์ค๋ซ๋์ ๋ฐฐํฌ๋์ง ์์๊ณ ํด๋น ๊ธฐ๋ณธ ์ด๋ฏธ์ง๊ฐ ๋ณด์ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ์ง ๋ชปํ์ต๋๋ค.
๊ณ๊ธฐ๋ฐ
๊ฐ๋จํ ๋งํด์ ๋์๋ณด๋๋ ์ ์ฒด PaaS์ ์ ์ดํ์ ๋๋ค.
- ํ ์คํธ ๋ฒ์, ์ด๋ฏธ์ง ์, ํ๋ก๋์ ์ฌ๋ณธ ์, ๋ฒ์ ๋ฑ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์๋น์ค์ ๋ํ ๋จ์ผ ์ ๋ณด ์ง์ ์ ๋๋ค.
- ์๋น์ค ๋ฐ ๋ผ๋ฒจ(์ฌ์ ๋ถ ์์ ํ์, ์ ํ ๊ธฐ๋ฅ ๋ฑ)๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ ๋๊ตฌ์ ๋๋ค.
- ์ถ์ , ๋ก๊น , ๋ชจ๋ํฐ๋ง์ ์ํ ์ธํ๋ผ ๋๊ตฌ์ ํตํฉํ๊ธฐ ์ํ ๋๊ตฌ์ ๋๋ค.
- ๋จ์ผ ์ง์ ์ ์๋น์ค ๋ฌธ์์ ๋๋ค.
- ์๋น์ค ์ ์ฒด์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋จ์ผ ๊ด์ ์์ ๋ณผ ์ ์์ต๋๋ค.
์ ์ฒด๋ก
PaaS๋ฅผ ๋์ ํ๊ธฐ ์ ์ ์๋ก์ด ๊ฐ๋ฐ์๋ Kubernetes, Helm, ๋ด๋ถ TeamCity ๊ธฐ๋ฅ, ๋ด๊ฒฐํจ์ฑ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์บ์์ ๋ํ ์ฐ๊ฒฐ ์ค์ ๋ฑ ํ๋ก๋์ ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋๊ตฌ๋ฅผ ์ดํดํ๋ ๋ฐ ๋ช ์ฃผ๋ฅผ ๋ณด๋ผ ์ ์์์ต๋๋ค. ๋น ๋ฅธ ์์์ ์ฝ๊ณ ์๋น์ค ์์ฒด๋ฅผ ๋ง๋๋ ๋ฐ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ ๋ HighLoad++ 2018์์ ์ด ์ฃผ์ ์ ๋ํ ๋ณด๊ณ ์๋ฅผ ์ ์ถํ์ต๋๋ค. ์์ฒญํ์ค ์ ์์ต๋๋ค.
๋๊น์ง ์ฝ์ด์ฃผ์ ๋ถ๋ค์ ์ํ ๋ณด๋์ค ํธ๋
Avito์์๋ ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก XNUMX์ผ๊ฐ์ ๋ด๋ถ ๊ต์ก์ ์กฐ์งํ๊ณ ์์ต๋๋ค.
ํ๋ จ์ 5์ 7์ผ๋ถํฐ XNUMX์ผ๊น์ง ๋ชจ์คํฌ๋ฐ์์ ์งํ๋๋ค. ์ด๋ ์์ ํ ์ฑ์์ง๋ ๊ทผ๋ฌด์ผ์ ๋๋ค. ์ ์ฌ ๋ฐ ๊ต์ก์ ์ฌ๋ฌด์ค์์ ์งํ๋๋ฉฐ, ์ ์ ๋ ์ฐธ๊ฐ์๋ ๊ตํต๋น์ ์๋ฐ๋น๋ฅผ ์ง์ ์ง๋ถํฉ๋๋ค.
์ฐธ๊ฐ์ ์ฒญ์ ํ ์ ์์ต๋๋ค
์ด ๊ฒ์๋ฌผ ์
๋ฐ์ดํธ์ ๊ฐ๋ฐ์์ฉ ์์
๋คํธ์ํฌ Avito(AvitoTech in
์ถ์ฒ : habr.com