๐ Python for SRE/DevOps: Building SDKs + Jenkins Automations
SRE/DevOps ์์ง๋์ด๊ฐ Python SDK๋ฅผ ๋ด๋ถ ํจํค์ง๋ก ๊ตฌ์ถํ๊ณ Jenkins ํ์ดํ๋ผ์ธ์ ํตํฉํด ์๋ํ ์ํฌํ๋ก์ฐ ์ฌ์ฌ์ฉ์ฑ ํ๋ณด
AI ์์ฝ
Context
SRE์ DevOps ํ์ ์ธํ๋ผ ์๋ํ, ์๋ฆผ ๊ด๋ฆฌ, API ์ฐ๋ ์์ ์ ์ํํ ๋ ์ผํ์ฉ ์คํฌ๋ฆฝํธ์ ์์กดํ๊ณ ์์๋ค. ์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๊ณ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ ํ ๊ฐ ๊ณต์ ๊ฐ ๋ณต์กํ๋ค.
Technical Solution
- Python ๊ฐ์ํ๊ฒฝ(venv)๊ณผ pip๋ฅผ ํ์ฉํ ์์กด์ฑ ๊ฒฉ๋ฆฌ: ํ๋ก์ ํธ๋ณ๋ก ๋ ๋ฆฝ์ ์ธ ํจํค์ง ํ๊ฒฝ ๊ตฌ์ฑ
- HTTP API ํต์ ๊ณ์ธต ๊ตฌํ: requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก GET, POST, DELETE ๋ฉ์๋ ๋ฐ ์ธ์ฆ, ํ์์์, ์ฌ์๋ ๋ก์ง ์์ฑ
- BaseClient ํจํด์ SDK ์ํคํ ์ฒ ์ค๊ณ: client.py, base_client.py, models.py, exceptions.py๋ก ๊ตฌ์กฐํ๋ ํด๋์ค ๊ธฐ๋ฐ SDK ๊ฐ๋ฐ
- pyproject.toml๊ณผ python -m build๋ฅผ ํตํ Python ํจํค์งํ: ๋ฒ์ ๊ด๋ฆฌ ๋ฐ wheel ํ์์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ก ์ ํ
- Jenkins ํ์ดํ๋ผ์ธ์ Python SDK ํตํฉ: pip install๋ก ํจํค์ง ์ค์น ํ Python ์คํฌ๋ฆฝํธ ์คํ, cron ์ค์ผ์ค๋ง ์ ์ฉ
- pytest์ mocking์ ํ์ฉํ ํ ์คํธ ์์ฑ: API ํธ์ถ ์์ด ํด๋ผ์ด์ธํธ ๋ฉ์๋ ๊ฒ์ฆ ๋ฐ ์์ ํ ์คํ ํจํด ํ๋ณด
Key Takeaway
๋ด๋ถ ์๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Python SDK๋ก ํจํค์งํ๊ณ Jenkins ํ์ดํ๋ผ์ธ์์ ํธ์ถํ๋ ๋ฐฉ์์ ํ๋ซํผ ์์ง๋์ด๋ง์ ํ์ค ํจํด์ด๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ณ ํ์ด ์์ฑํ ๋๊ตฌ๋ฅผ ํ์ฌ ์ ์ฒด์์ ์ผ๊ด๋๊ฒ ๋ฐฐํฌํ๊ณ ์ ์ง๋ณด์ํ ์ ์๋ค.
์ค์ฒ ํฌ์ธํธ
์จํ๋ ๋ฏธ์ค ๋๋ AWS ํ๊ฒฝ์์ ๋ฐ๋ณต์ ์ธ ์ธํ๋ผ ์๋ํ ์์ (์ด๋ฒคํธ ์์ฑ, ๋ฆฌ์์ค ์ ๋ฆฌ, ๋ชจ๋ํฐ๋ง)์ ์ํํ๋ ํ์์, BaseClient ํจํด์ผ๋ก SDK๋ฅผ ์ค๊ณํ๊ณ pyproject.toml์ผ๋ก ํจํค์งํ ํ Jenkins ํ์ดํ๋ผ์ธ์ cron ํธ๋ฆฌ๊ฑฐ์์ pip install ๋ฐ Python ์คํฌ๋ฆฝํธ ์คํ ๋ฐฉ์์ ๋์ ํ๋ฉด, ์คํฌ๋ฆฝํธ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๋กค๋ฐฑ ๊ฐ๋ฅ์ฑ์ ํ๋ณดํ ์ ์๋ค.