SRE/DevOps ์์ง๋์ด์ ํ๊ฒฝ์์๋ ์ด๋ ๋ ํด๋ผ์ด์ธํธ(๋๋ ๋ชจ๋ํฐ๋ง ์์คํ
)๊ฐ ๋ํ๋ "๋ชจ๋ ๊ฒ์ด ์์ค๋์์ต๋๋ค"๋ผ๊ณ ๋ณด๊ณ ํ๋ ๊ฒ์ ๋๊ตฌ๋ ๋๋ ์ผ์ด ์๋๋๋ค. ์ฌ์ดํธ๊ฐ ์๋ํ์ง ์๊ณ , ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉฐ, ์ถ์ด ์ ํดํ๊ณ ์์ต๋๋ค. ... ๊ทธ๋ฌํ ์ํฉ์์ ์๋ฌด๋ฆฌ ๋์์ ์ฃผ๊ณ ์ถ์ด๋ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋๊ตฌ ์์ด๋ ์ด๋ฅผ ์ํํ๋ ๊ฒ์ด ๋งค์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ข
์ข
๋ฌธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋ ์์ฒด์ ์จ๊ฒจ์ ธ ์์ผ๋ฏ๋ก ํ์งํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌํ๊ณผ ๊ธฐ์จ ์์์โฆ
์ฐ๋ฆฌ๋ New Relic๊ณผ ์ค๋ซ๋์ ๊น์ ์ฌ๋์ ๋น ์ก์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ํ์ํ ๋๊ตฌ์์ผ๋ฉฐ, ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ ๋ฑ์ ๊ณ์ธกํ ์ ์๋ ๋๊ตฌ์ด๊ธฐ๋ ํฉ๋๋ค. ์๋น์ค ๊ฐ๊ฒฉ ์ ์ฑ
์ด ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ๋ชจ๋ ๊ฒ์ด ํ๋ฅญํ์ ๊ฒ์
๋๋ค. ๋น์ฉ
์ผ๋ฐ์ ์ธ ์ํฉ: New Relic์ "์๊ตฌ์ ์ผ๋ก" ํ์ํ์ง ์์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ์์๋๋ ์๊ฐ์๋ง ๊ธฐ์ตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ ๊ธฐ์ ์ผ๋ก ๋น์ฉ์ ์ง๋ถํด์ผ ํ๋ฉฐ(์๋ฒ๋น ์ 140๋ฌ๋ฌ) ์๋์ผ๋ก ํ์ฅ๋๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ์์๋ ํฉ๊ณ๊ฐ ์๋นํ ์ปค์ง๋๋ค. ์ข
๋์ ์ต์
์ด ์์ง๋ง New Relic์ ํ์ฑํํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ์์ํด์ผ ํ๋ฉฐ, ์ด๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋ ๋ฌธ์ ์ํฉ์ด ์์ค๋ ์ ์์ต๋๋ค. ์ผ๋ง ์ ๋ด๋ ๋ฆญ์์๋ ์๋ก์ด ์๊ธ์ ๋ฅผ ์ ๋ณด์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๋ ์ ๋ ดํ ๋์์ ์ฐพ๊ธฐ ์์ํ๊ณ Datadog๊ณผ Atatus๋ผ๋ ๋ ๊ฐ์ง ์๋น์ค๋ฅผ ์ ํํ์ต๋๋ค. ์ ๊ทธ๋ค์๊ฒ?
๊ฒฝ์์ฌ ์๊ฐ
์์ฅ์ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์๋ค๋ ์ ์ ๋ฐ๋ก ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์คํ ์์ค ์ต์ ๋ ๊ณ ๋ คํ์ง๋ง ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒด ํธ์คํ ์๋ฃจ์ ์ ํธ์คํ ํ ์ ์๋ ์ฌ์ ์ฉ๋์ ๊ฐ๊ณ ์๋ ๊ฒ์ ์๋๋๋ค... - ๋ํ ์ถ๊ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ํํ ์ปคํ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค. ์ฐ๋ฆฌ์ ํ์:
- PHP ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๊ธฐ๋ณธ ์ ๊ณต ๋ฐ ๊ฐ๋ฐ๋ ์ง์(์ฐ๋ฆฌ ๊ณ ๊ฐ์ ์คํ์ ๋งค์ฐ ๋ค์ํ์ง๋ง ์ด๋ New Relic์ ๋ํ ๋์์ ์ฐพ๋ ๋งฅ๋ฝ์์ ํ์คํ ๋ฆฌ๋์ ๋๋ค)
- ์ ๋ ดํ ๋น์ฉ(ํธ์คํธ๋น ์ 100๋ฌ๋ฌ ๋ฏธ๋ง)
- ์๋ ๊ณ์ธก;
- ์ฟ ๋ฒ๋คํฐ์ค์์ ํตํฉ;
- New Relic ์ธํฐํ์ด์ค์์ ์ ์ฌ์ฑ์ ๋์ ๋๋ ์ฅ์ ์ ๋๋ค(์์ง๋์ด๋ค์ด ์ต์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค).
๋ฐ๋ผ์ ์ด๊ธฐ ์ ํ ๋จ๊ณ์์ ์ฐ๋ฆฌ๋ ํนํ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๋ฃจ์ ์ ์ ๊ฑฐํ์ต๋๋ค.
- Tideways, AppDynamics ๋ฐ Dynatrace - ๋น์ฉ;
- Stackify๋ ๋ฌ์์ ์ฐ๋ฐฉ์์ ์ฐจ๋จ๋์์ผ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ์ ๊ฒ ํ์๋ฉ๋๋ค.
๊ธฐ์ฌ์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ฌธ์ ์ ์๋ฃจ์ ์ ๋จผ์ ๊ฐ๋ตํ๊ฒ ์ ์ํ ๋ค์ New Relic๊ณผ์ ์ผ๋ฐ์ ์ธ ์ํธ ์์ฉ ๋ฐ ๋ค๋ฅธ ์๋น์ค์์ ์ ์ฌํ ์์ ์ ์ํํ๋ฉด์ ์ป์ ๊ฒฝํ/์ธ์์ ๋ํด ์ด์ผ๊ธฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ ์ ๋ ๊ฒฝ์์ฌ ์๊ฐ
์ฝ
๊ทธ๋ฌ๋ New Relic ์์ด์ ํธ๋ ๋ ์ ํ๋กํ ์ฝ์์ ์คํ๋๋ฉฐ OpenTracing์ ์ง์ํ์ง ์์ต๋๋ค. ๊ณ ๊ธ ๊ณ์ธก์๋ ํนํ New Relic์ ๋ํ ํธ์ง์ด ํ์ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก Kubernetes ์ง์์ ์์ง ์คํ์ ์ ๋๋ค.
2010๋
๋ถํฐ ๊ฐ๋ฐ ์์
Datadog์ ์ฌ์ฉํ ๋ ๋๋๋ก ๋ง์ดํฌ๋ก์๋น์ค ๋งต์ ์๋ชป ๊ตฌ์ถํ๊ณ ์ผ๋ถ ๊ธฐ์ ์ ์ธ ๋จ์ ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค ์ ํ์ ์๋ชป ์๋ณํ์ฌ(Django๋ฅผ ์บ์ฑ ์๋น์ค๋ก ์ฐฉ๊ฐ) ๋๋ฆฌ ์ฌ์ฉ๋๋ Predis ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ PHP ์ ํ๋ฆฌ์ผ์ด์ ์์ 500 ์ค๋ฅ๋ฅผ ๋ฐ์์์ผฐ์ต๋๋ค.
์ค์ํ ๋จ์ ์ Node.js์ PHP๋ง ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ฉด์ Datadog๋ณด๋ค ๋์ ๋๊ฒ ์ ๊ตฌํ๋์์ต๋๋ค. ํ์์ ๋ฌ๋ฆฌ Atatus์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ์ถ๊ฐ ๋ ์ด๋ธ์ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค.
New Relic์ผ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ
์ด์ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก New Relic์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์ ๋ณด๊ฒ ์ต๋๋ค. ํด๊ฒฐ์ฑ ์ด ํ์ํ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ํ๋ก ๋ณด๋ฉด ์ฝ๊ฒ ์ ์ ์์ด์ ์คํ์ดํฌ - ๋ถ์ํด๋ณด์. New Relic์์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์น ํธ๋์ญ์
์ด ์ฆ์ ์ ํ๋๊ณ , ๋ชจ๋ ๊ตฌ์ฑ์์๊ฐ ์ฑ๋ฅ ๊ทธ๋ํ์ ํ์๋๋ฉฐ, ์ค๋ฅ์จ, ์์ฒญ๋ฅ ํจ๋์ด ์์ต๋๋ค... ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๋ฌํ ํจ๋์์ ์ง์ ์๋ก ๋ค๋ฅธ ํจ๋ ๊ฐ์ ์ด๋ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด MySQL์ ํด๋ฆญํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์น์
์ผ๋ก ์ด๋ํฉ๋๋ค.
๊ณ ๋ ค์ค์ธ ์์์ ํ๋์ด ๊ธ์ฆํ ๊ฒ์ ๋ณผ ์ ์์ผ๋ฏ๋ก PHP, ์ด ์ฐจํธ๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ผ๋ก ๋ค์์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ฑฐ๋ ๋ด์ญ:
๋ณธ์ง์ ์ผ๋ก MVC ๋ชจ๋ธ์ ์ปจํธ๋กค๋ฌ์ธ ํธ๋์ญ์
๋ชฉ๋ก์ ์ด๋ฏธ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌ๋์ด ์์ต๋๋ค. ์๊ฐ์ด ๊ฐ์ฅ ๋ง์ด ์์๋จ, ์ด๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ด ์ํํ๋ ์์
์ ์ฆ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ค์์ New Relic์ด ์๋์ผ๋ก ์์งํ๋ ๊ธด ์ฟผ๋ฆฌ์ ์์
๋๋ค. ์ ๋ ฌ์ ์ ํํ๋ฉด ๋ค์์ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
- ๊ฐ์ฅ ๋ง์ด ๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ
- ๊ฐ์ฅ ์์ฃผ ์์ฒญ๋๋ ์ปจํธ๋กค๋ฌ
- ์ปจํธ๋กค๋ฌ ์ค ๊ฐ์ฅ ๋๋ฆฝ๋๋ค.
๋ํ ๊ฐ ํธ๋์ญ์ ์ ํ์ฅํ์ฌ ์ฝ๋๊ฐ ์คํ๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํํ ์์ ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธด ์์ฒญ(2์ด ์ด์ ๊ฑธ๋ฆฌ๋ ์์ฒญ) ์ถ์ ์ ์๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ค์์ ๊ธด ํธ๋์ญ์
์ ๋ํ ํจ๋์
๋๋ค.
๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ณผ ์ ์์ผ๋ฉฐ, ๋์์ ์์ฒญ์ด ์คํ๋ ์๊ฐ์ ํด๋น URI์ ๋๋ฉ์ธ๋ ํ์๋ฉ๋๋ค. ์ด๋ ๋ก๊ทธ์์ ์์ฒญ์ ์ฐพ๋ ๋ฐ ๋์์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ฐ๋ค ์ถ์ ์ธ๋ถ์ ๋ณด, ์ด๋ฌํ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ โ ์ ํ๋ฆฌ์ผ์ด์
์ด ์คํ๋๋ ๋์ ์คํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ํ๊ฐํฉ๋๋ค.
์ด๋ฌํ ์ง์์ ๋ฐํ์ผ๋ก ์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์๋๊ฐ ๋๋ ค์ง๋ ์ด์ ๋ฅผ ํ๊ฐํ๊ณ ๊ฐ๋ฐ์์ ํ๋ ฅํ์ฌ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต์ ์ธ์ธ ์ ์์ต๋๋ค. ์ค์ ๋ก New Relic์ ํญ์ ๋ช
ํํ ๊ทธ๋ฆผ์ ์ ๊ณตํ์ง๋ ์์ง๋ง ์กฐ์ฌ ๋ฒกํฐ๋ฅผ ์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๊ธด
PDO::Construct
์ฐ๋ฆฌ๋ฅผ pgpoll์ ์ด์ํ ๊ธฐ๋ฅ์ผ๋ก ์ด๋์์ต๋๋ค. - ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ถ์์
Memcache::Get
๊ฐ์ ๋จธ์ ์ด ์๋ชป ๊ตฌ์ฑ๋์๋ค๊ณ ์ ์ํ์ต๋๋ค. - ํ ํ๋ฆฟ ์ฒ๋ฆฌ ์๊ฐ์ด ์์ฌ์ค๋ฝ๊ฒ ์ฆ๊ฐํ์ฌ ๊ฐ์ฒด ์ ์ฅ์์ 500๊ฐ์ ์๋ฐํ๊ฐ ์๋์ง ํ์ธํ๋ ์ค์ฒฉ ๋ฃจํ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ๋ฑ๋ฑโฆ
๋ํ ์ฝ๋๋ฅผ ์คํํ๋ ๋์ ์ธ๋ถ ๋ฐ์ดํฐ ์ ์ฅ์์ ๊ด๋ จ๋ ํญ๋ชฉ์ด ๋ฉ์ธ ํ๋ฉด์์ ์ปค์ง๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. Redis ๋๋ PostgreSQL์ ๋ชจ๋ ํญ์ ์จ๊ฒจ์ ธ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค.
๊ฑฐ๋์์ ์ํ๋๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์กฐ์ฌ ๋ฐ ์ ๋ ฌ ์ฟผ๋ฆฌ์ ๋ํ ํน์ ๊ธฐ๋ฐ์ ์ ํํ ์ ์์ต๋๋ค. ์์ฒญ ํญ์ผ๋ก ์ด๋ํ๋ฉด ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ปจํธ๋กค๋ฌ์์ ์ด ์์ฒญ์ด ๋ช ๋ฒ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์์ผ๋ฉฐ ํธ์ถ ๋น๋๋ ์ถ์ ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋งค์ฐ ํธ์ํฉ๋๋ค:
ํญ์ ์ ์ฌํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ธ๋ถ ์๋น์ค, ๊ฐ์ฒด ์ ์ฅ์ ์ก์ธ์ค, ์ผํธ๋ฆฌ๋ก ์ด๋ฒคํธ ์ ์ก ๋ฑ๊ณผ ๊ฐ์ ์ธ๋ถ HTTP ์๋น์ค์ ๋ํ ์์ฒญ์ ์จ๊น๋๋ค. ํญ์ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ ์ ์ฌํฉ๋๋ค.
๊ฒฝ์์: ๊ธฐํ์ ์ธ์
์ด์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ New Relic์ ๊ธฐ๋ฅ์ ๊ฒฝ์์ ์ฒด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค. ๋ถํํ๊ฒ๋ ์ฐ๋ฆฌ๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์คํ๋๋ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋ฒ์ ์์ ์ธ ๊ฐ์ง ๋๊ตฌ๋ฅผ ๋ชจ๋ ํ ์คํธํ ์ ์์์ต๋๋ค. ํ์ง๋ง ์ต๋ํ ๋์ผํ ์ํฉ/๊ตฌ์ฑ์ ๋น๊ตํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
1. ๋ฐ์ดํฐ๋
Datadog์ ์๋น์ค ๋ฒฝ์ด ์๋ ํจ๋๋ก ์ฐ๋ฆฌ๋ฅผ ๋ง์ดํฉ๋๋ค.
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์/๋ง์ดํฌ๋ก ์๋น์ค๋ก ๋๋๋ ค๊ณ ์๋ํ๋ฏ๋ก ์์ Django ์ ํ๋ฆฌ์ผ์ด์
์์๋ PostgreSQL์ ๋ํ 2๊ฐ์ ์ฐ๊ฒฐ์ ๋ณผ ์ ์์ต๋๋ค(defaultdb
ะธ postgres
), Celery, Redis๋ ์์ต๋๋ค. Datadog์ ์ฌ์ฉํ๋ ค๋ฉด MVC ์์น์ ๋ํ ์ต์ํ์ ์ง์์ด ํ์ํฉ๋๋ค. ์ฆ, ์ฌ์ฉ์ ์์ฒญ์ด ์ผ๋ฐ์ ์ผ๋ก ์ด๋์์ ์ค๋์ง ์ดํดํด์ผ ํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋์์ด ๋ฉ๋๋ค. ์๋น์ค ์ง๋:
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , New Relic์๋ ๋น์ทํ ๊ฒ์ด ์์ต๋๋ค.
... ๋ด ์๊ฐ์ ๊ทธ๋ค์ ์ง๋๋ ๋ ๊ฐ๋จํ๊ณ ๋ช
ํํด์ก์ต๋๋ค. ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์๋ฅผ ํ์ํ์ง ์๊ณ (Datadog์ ๊ฒฝ์ฐ์ฒ๋ผ ์ง๋์น๊ฒ ์์ธํ๊ฒ ๋ง๋ค ์ ์์) ํน์ ์๋น์ค๋ ๋ง์ดํฌ๋ก์๋น์ค๋ง ํ์ํฉ๋๋ค.
Datadog์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ์๋น์ค ๋งต์์ ์ฌ์ฉ์ ์์ฒญ์ด Django๋ก ์ค๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. Django ์๋น์ค๋ก ๊ฐ์ ๋ง์ง๋ง์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ํ๋ ๊ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ถํํ๋ ์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ์น ๊ฑฐ๋ ์๊ฐ, ๋ฉ์ธ New Relic ํจ๋์์ ๋ณผ ์ ์๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ์ ๋์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์์ ์๊ฐ(%). ์ผ๋ก ์ ํํ๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ ํ๋ณ ์์ฒญ๋น ํ๊ท ์๊ฐ...๊ทธ๋ฆฌ๊ณ ์ด์ ์ต์ํ ๊ทธ๋ํ๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์์ต๋๋ค!
Datadog์ด ๋ค๋ฅธ ์ฐจํธ๋ฅผ ์ ํํ ์ด์ ๋ ์ฐ๋ฆฌ์๊ฒ ๋ฏธ์คํฐ๋ฆฌ์
๋๋ค. ๋ ๋ค๋ฅธ ์ค๋ง์ค๋ฌ์ด ์ ์ ๋ ๊ฒฝ์์
์ฒด์ ๋ฌ๋ฆฌ ์์คํ
์ด ์ฌ์ฉ์์ ์ ํ์ ๊ธฐ์ตํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ ์ผํ ํด๊ฒฐ์ฑ
์ ์ฌ์ฉ์ ์ ์ ํจ๋์ ๋ง๋๋ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ ๋ ์ด๋ฌํ ๊ทธ๋ํ์์ ๊ด๋ จ ์๋ฒ์ ๋ฉํธ๋ฆญ์ผ๋ก ์ ํํ๊ณ , ๋ก๊ทธ๋ฅผ ์ฝ๊ณ , ์น ์๋ฒ ํธ๋ค๋ฌ(Gunicorn)์ ๋ก๋๋ฅผ ํ๊ฐํ๋ Datadog์ ๊ธฐ๋ฅ์ ๋ง์กฑํ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด New Relic๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค... ๊ทธ๋ฆฌ๊ณ ์กฐ๊ธ ๋ ์์ต๋๋ค(๋ก๊ทธ)!
๊ทธ๋ํ ์๋์๋ New Relic๊ณผ ์์ ํ ์ ์ฌํ ํธ๋์ญ์ ์ด ์์ต๋๋ค.
Datadog์์๋ ํธ๋์ญ์
์ ํธ์ถํฉ๋๋ค. ์์. ์์ฒญ ์, ํ๊ท ์๋ต ์๊ฐ ๋ฐ ์ ํํ ๊ธฐ๊ฐ ๋์ ์์๋ ์ต๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ์ ๋ ฌํ ์ ์์ต๋๋ค.
๋ฆฌ์์ค๋ฅผ ํ์ฅํ์ฌ New Relic์์ ์ด๋ฏธ ๊ด์ฐฐํ ๋ชจ๋ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฆฌ์์ค์ ๋ํ ํต๊ณ, ๋ด๋ถ ํธ์ถ์ ์ผ๋ฐํ๋ ๋ชฉ๋ก, ์๋ต ์ฝ๋๋ณ๋ก ์ ๋ ฌํ ์ ์๋ ์์ฒญ์ ์๊ฐ ์์ต๋๋ค... ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฐ๋ฆฌ ์์ง๋์ด๋ค์ ์ด ์ ๋ ฌ์ ์ ๋ง ์ข์ํ์ต๋๋ค.
Datadog์ ๋ชจ๋ ์์ ๋ฆฌ์์ค๋ฅผ ์ด๊ณ ์ฐ๊ตฌํ ์ ์์ต๋๋ค.
์์ฒญ ๋งค๊ฐ๋ณ์, ๊ฐ ๊ตฌ์ฑ์์์ ์์๋ ์๊ฐ์ ์์ฝ ์ฐจํธ, ํธ์ถ ์์๋ฅผ ๋ณด์ฌ์ฃผ๋ ํญํฌํ ์ฐจํธ๊ฐ ํ์๋ฉ๋๋ค. ํญํฌํ ์ฐจํธ์ ํธ๋ฆฌ ๋ณด๊ธฐ๋ก ์ ํํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ ์์ฒญ์ด ์คํ๋ ํธ์คํธ์ ๋ก๋๋ฅผ ํ์ธํ๊ณ ์์ฒญ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ๊ฒ์
๋๋ค.
ํ๋ฅญํ ํตํฉ!
ํญ์ด ์ด๋์ ์๋์ง ๊ถ๊ธํ ๊ฒ์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ะธ ์ธ๋ถ ์๋น์ค, ๋ด๋ ๋ฆญ์์์ ๊ฐ์ด. ์ฌ๊ธฐ์๋ ์๋ฌด๊ฒ๋ ์์ต๋๋ค. Datadog์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์๋ก ๋ถํดํ๋ฏ๋ก PostgreSQL์ด ๊ณ ๋ ค๋ฉ๋๋ค. ๋ณ๋์ ์๋น์ค, ์ธ๋ถ ์๋น์ค ๋์ ์ฐพ์๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค. aws.storage
(์ ํ๋ฆฌ์ผ์ด์
์ด ์ก์ธ์คํ ์ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ธ๋ถ ์๋น์ค์์๋ ์ ์ฌํฉ๋๋ค.)
๋ค์์ ์์
๋๋ค. postgres
:
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ชจ๋ ๊ฒ์ด ์์ต๋๋ค:
์์ฒญ์ด ์ด๋ค "์๋น์ค"์์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
Datadog์ NGINX Ingress์ ์๋ฒฝํ๊ฒ ํตํฉ๋์ด ์์ฒญ์ด ํด๋ฌ์คํฐ์ ๋์ฐฉํ๋ ์๊ฐ๋ถํฐ ์๋ํฌ์๋ ์ถ์ ์ ์ํํ ์ ์์ผ๋ฉฐ ํต๊ณ ์งํ ์์ , ๋ก๊ทธ ๋ฐ ํธ์คํธ ์งํ ์์ง๋ ๊ฐ๋ฅํ๋ค๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ์ ๋๋ค. .
Datadog์ ํฐ ์ฅ์ ์ ๊ฐ๊ฒฉ์ ๋๋ค. ๋ฐ์ ํ๋ค ์ธํ๋ผ ๋ชจ๋ํฐ๋ง, APM, ๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ์ข ํฉ ํ ์คํธ, ์ฆ ๊ณํ์ ์ ์ฐํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
2.์ํฌ์ค
Atatus ํ์ ์์ ๋ค์ ์๋น์ค๊ฐ "New Relic๊ณผ ๋์ผํ์ง๋ง ๋ ์ฐ์ํ๋ค"๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ด๊ฒ์ด ์ ๋ง๋ก ๊ทธ๋ฐ์ง ๋ด ์๋ค.
๋ฉ์ธ ํจ๋์ ๋น์ทํด ๋ณด์ด์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ๋ Redis์ memcached๋ฅผ ํ์ธํ ์๋ ์์์ต๋๋ค.
APM์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํธ๋์ญ์
์ ์ ํํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์น ํธ๋์ญ์
๋ง ํ์ํฉ๋๋ค. Datadog๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฉ์ธ ํจ๋์์ ์ํ๋ ์๋น์ค๋ก ์ด๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋์ฑ์ด ํธ๋์ญ์
์ ์ค๋ฅ ๋ค์ ๋์ด๋๋๋ฐ, ์ด๋ APM์ ์์ด ๊ทธ๋ฆฌ ๋
ผ๋ฆฌ์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
Atatus ํธ๋์ญ์ ์์๋ ๋ชจ๋ ๊ฒ์ด New Relic๊ณผ ์ต๋ํ ์ ์ฌํฉ๋๋ค. ๋จ์ ์ ๊ฐ ์ปจํธ๋กค๋ฌ์ ์ญํ์ด ์ฆ์ ํ์๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ปจํธ๋กค๋ฌ ํ ์ด๋ธ์์ ์ด๋ฅผ ์ฐพ์ ์ ๋ ฌํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ๋ง์ ์๊ฐ์ ์๋นํจ:
์ผ๋ฐ์ ์ธ ์ปจํธ๋กค๋ฌ ๋ชฉ๋ก์ ํญ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ฌ๋ณด๊ธฐ:
์ด๋ค ๋ฉด์์ ์ด ํ
์ด๋ธ์ Datadog์ ์ฐ์์ํค๋ฉฐ ์ ๋ New Relic์ ์ ์ฌํ ํ
์ด๋ธ๋ณด๋ค ๋ ์ข์ํฉ๋๋ค.
๊ฐ ํธ๋์ญ์ ์ ํ์ฅํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํํ ์์ ์ ํ์ธํ ์ ์์ต๋๋ค.
ํจ๋์ ๋ํ Datadog์ ๋ ์ฐ์์ํต๋๋ค. ๋ง์ ์์ฒญ๊ณผ ์ผ๋ฐ์ ์ธ ํตํ ๊ทธ๋ฆผ์ด ์์ต๋๋ค. ์๋จ ํจ๋์๋ ์ค๋ฅ ํญ์ด ์ ๊ณต๋ฉ๋๋ค. HTTP ์คํจ ๋๋ฆฐ ์ฟผ๋ฆฌ์ ์ ์ธ์
์ถ์ :
ํธ๋์ญ์
์ผ๋ก ์ด๋ํ๋ฉด ์ถ์ ์ ์๋ฅผ ๋ณผ ์ ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์์ฒญ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๊ณ ์์ฒญ ํค๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด New Relic๊ณผ ์ ์ฌํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Atatus๋ ์๋ฆผ ๋ธ๋ก์ ํธ์ถ์ ๋ถ์ด๋ ์ผ๋ฐ์ ์ธ New Relic ์์ด ์์ธํ ์ถ์ ์ ๋ง์กฑํ์ต๋๋ค.
๊ทธ๋ฌ๋ New Relic๊ณผ ๊ฐ์ด ์ด๊ณ ์ ์์ฒญ(<5ms)์ ์ฐจ๋จํ๋ ํํฐ๊ฐ ๋ถ์กฑํฉ๋๋ค. ๋ฐ๋ฉด์ ์ต์ข
๊ฑฐ๋ ์๋ต(์ฑ๊ณต ๋๋ ์ค๋ฅ)์ด ํ์๋๋ ์ ์ ๋ง์์ ๋ค์์ต๋๋ค.
ํจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฒญํ๋ ๋ด์ฉ์ ์ฐ๊ตฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Redis์ memcached๋ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ณ ์์ง๋ง Atatus๋ PostgreSQL๊ณผ MySQL๋ง ์ฐพ์๋ค๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์์ฒญ์ ์๋ต ๋น๋, ํ๊ท ์๋ต ์๊ฐ ๋ฑ ์ผ๋ฐ์ ์ธ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ฉ๋๋ค. ๋ํ ๊ฐ์ฅ ๋๋ฆฐ ์ฟผ๋ฆฌ๊ฐ ์๋ ํญ์ ๋ํด์๋ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค. ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. ๋ํ PostgreSQL์ ๋ํ ์ด ํญ์ ๋ฐ์ดํฐ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ์ ์ผ์นํ์ต๋๋ค.
ํญ ์ธ๋ถ ์์ฒญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ ๋์ผํฉ๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
์ ์๋ ๋ ๋๊ตฌ ๋ชจ๋ APM ์ญํ ์ ์ ์ํํ์ต๋๋ค. ๊ทธ๋ค ์ค ๋๊ตฌ๋ผ๋ ํ์ํ ์ต์๊ฐ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ์ธ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋ตํ๊ฒ ์์ฝ๋ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋๊ทธ
์ฅ์ :
- ํธ๋ฆฌํ ๊ด์ธ ์ผ์ (APM ๋น์ฉ์ ํธ์คํธ๋น 31 USD)
- Python๊ณผ ์ ์๋ํ์ต๋๋ค.
- OpenTracing๊ณผ์ ํตํฉ ๊ฐ๋ฅ์ฑ
- ์ฟ ๋ฒ๋คํฐ์ค์์ ํตํฉ;
- NGINX Ingress์์ ํตํฉ.
๋จ์ :
- ๋ชจ๋ ์ค๋ฅ๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ์ ์ผํ APM(predis)
- ์ฝํ PHP ์๋ ๊ณ์ธก;
- ์๋น์ค์ ๊ทธ ๋ชฉ์ ์ ๋ํ ๋ถ๋ถ์ ์ผ๋ก ์ด์ํ ์ ์.
์ํํฌ์ค
์ฅ์ :
- ์ฌ์ธต์ ์ธ PHP ๊ณ์ธก;
- New Relic๊ณผ ์ ์ฌํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค.
๋จ์ :
- ์ด์ ์ด์ ์ฒด์ (Ubuntu 12.05, CentOS 5)์์๋ ์๋ํ์ง ์์ต๋๋ค.
- ์ฝํ ์๋ ๊ณ์ธก;
- ๋ ๊ฐ์ง ์ธ์ด(Node.js ๋ฐ PHP)๋ง ์ง์ํฉ๋๋ค.
- ๋๋ฆฐ ์ธํฐํ์ด์ค.
์๋ฒ๋น ์ 69๋ฌ๋ฌ์ธ Atatus์ ๊ฐ๊ฒฉ์ ๊ณ ๋ คํ๋ฉด ์ฐ๋ฆฌ์ ์๊ตฌ ์ฌํญ(K8s์ ์น ์ ํ๋ฆฌ์ผ์ด์ )๊ณผ ์ ํตํฉ๋๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ง์ Datadog์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋๊ตฌ "; - ยซ
Kubernetes ํฌ๋์์ ๋๋ฒ๊น ์ ์ํ kubectl-debug ํ๋ฌ๊ทธ์ธ "; - ยซ
๋ง์ดํฌ๋ก์๋น์ค: Kubernetes๊ฐ ์๋๋ผ๋ ํฌ๊ธฐ๊ฐ ์ค์ํฉ๋๋ค ".
์ถ์ฒ : habr.com