๋๋ ์ผ์ฃผ์ผ ๋์ ์งํ๋๋ ํ๋ก์ ํธ๋ฅผ ์ข์ํ์ง๋ง XNUMX๋ ๋์ ์งํ๋๋ ํ๋ก์ ํธ๋ ๊ฒ์ด ๋ฉ๋๋ค. Agile์์ ์ ๋ MVP์ ์ฆ๋ถ์ด๋ผ๋ ๊ฐ๋ ์ด ์ ๋ง ๋ง์์ ๋ค์์ต๋๋ค. ์คํ ๊ฐ๋ฅํ ๋ถ๋ถ์ ๋ง๋ค๊ณ , ๊ตฌํํ๊ณ , ๊ณ์ ์งํํ๋ ๊ฒ์ด ๋ฐ๋ก ์ ์ผ์ ๋๋ค.
๋์์ ์ฑ ์ด๋ ์ปจํผ๋ฐ์ค์์ ๋ ผ์๋๋ ํํ์ DevOps ํ์ ์ XNUMX๋ ์ ๊ฑธ์น ํ๋ก์ ํธ์ ๋ถ๊ณผํฉ๋๋ค. ์๋๋ฉด ๋ช ๋ ์์.
์ฐ๋ฆฌ๋ "๋จ์ผ ์คํ๋ฆฐํธ์ MVP DevOps"์ "์ฆ๋ถ ์ค๋น"๋ผ๋ ํจ๋ฌ๋ค์์ผ๋ก DevOps ๊ณผ์ ์ ๊ตฌ์ถํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ๊ฐ์ ๊ด์ ์์ ๋ณด๋ฉด "์ฐธ๊ฐ์๊ฐ ๋์์ค์๋ง์ ์ง์์ ์ฆ์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌํํ๊ณ ๊ทธ๋ก๋ถํฐ ์ด์ต์ ์ป์ ์ ์๋๋ก"์ ๋๋ค.
MVP DevOps: ์ด ๊ณผ์ ์๋ ๊ธฐ๋ณธ DevOps ํ๋ก์ธ์ค๋ฅผ ์ํ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ CI/CD ์์คํ ์ ๊ฒํ ๋ฐ ๋น๊ตํ๊ฑฐ๋ ์ฝ๋ํ ์ธํ๋ผ ์ ๊ทผ ๋ฐฉ์์ ๊น์ด๋ฅผ ๋ฐํ๋ ์์ ์ ์ค์ค๋ก ์ค์ ํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ Gitlab CI/CD, Ansible, Terraform ๋ฐ Packer, Molecule, Prometheus, EFK๋ผ๋ ํ๋์ ๋ช ํํ ์คํ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ข๋ฅผ ์๊ฐํ๊ณ ๊ต์ก ์๋ฃ์์ ํ์ผ๋ฟ ํ๋ก์ ํธ๋ฅผ ์ํ ์ธํ๋ผ๋ฅผ ์์งํ์ฌ ์์ ํ ์ ์์ต๋๋ค.
์ฆ๊ฐ์ ๋ํ ์ค๋น: ์ฐ๋ฆฌ๋ ๊ฐ ์์์ ๋ง์ ์ฐ์ต๊ณผ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋์ ๋๊ตฌ๋ฅผ ์ ํํ๊ณ ๊ต์ก ๋๋ฉด์ ์ฌ์ฉํ์ฌ ๊ตฌํ์ ์์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ ํ๊ฒฝ ์ถ์๋ฅผ ์ํ Ansible ํ๋ ์ด๋ถ์ ์์ฑํ๊ฑฐ๋ ๋ด์ ์ฐ๊ฒฐํ๊ณ ํด๋ํฐ์์ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฆ, ์ผ์ฃผ์ผ ์์ ๊ตฌ์ฒด์ ์ธ ์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ์ญ์์ค. ํ์ฌ ์ ์ฒด์ DevOps ํ์ ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ ์ ์์ง๋ง ์ด๋ฏธ ์กด์ฌํ๋ฉฐ ์๋ํ๊ณ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
Slurm DevOps ์ฃผ์
์ฃผ์ #1: Git ๋ชจ๋ฒ ์ฌ๋ก - ๊ทธ ์์ฒด๋ก ๋งํฉ๋๋ค.
์ฃผ์ #2: ๊ฐ๋ฐ ๊ด์ ์์ ์ ํ๋ฆฌ์ผ์ด์
์์
โ ์์ง๋์ด์๊ฒ๋ ๊ด๋ฆฌ์์ ๊ฐ๋ฐ์์ ์ญ๋์ด ํ์ํ๋ฏ๋ก ๊ด๋ฆฌ์์๊ฒ ๊ฐ๋ฐ์ ๋ํด ์๋ ค์ค๋๋ค.
์ฃผ์ #3: CI/CD ๊ธฐ๋ณธ ์ฌํญ
- CI/CD ์๋ํ ์๊ฐ
- Gitlab CI ๊ธฐ๋ณธ ์ฌํญ
- gitlab-runner ๋ชจ๋ฒ ์ฌ๋ก
- CI/CD ๋ฑ์ ์ผ๋ถ์ธ Bash, Make, Gradle ๋๊ตฌ
- CI ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ธ Docker
์ฃผ์ #4: ํ๋ก๋์ ์ค์ธ Gitlab CI/CD
- ์ทจ์ ํ ๋ ๊ฒฝ์
- ์คํ ์ ์ด ๋ฐ ์ ํ: ๊ฒฝ์ฐ์๋ง
- ์ํฐํฉํธ ์์
- ํ ํ๋ฆฟ, ํฌํจ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค: ๋ฐฐํฌ ๋จ์ํ
CI/CD์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๊ฐ๋ , ๊ทธ๋ฆฌ๊ณ CI/CD ๊ตฌํ์ ์ํ ๋๊ตฌ๋ฅผ ํ์๋ค์๊ฒ ์๊ฐํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์์ CI/CD ๋์์ธ ํจํด๊ณผ ์ ํฉํ ๊ตฌํ ๋๊ตฌ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ Gitlab์์ CI/CD์ ๊ตฌํ์ ๋ณด์ฌ์ฃผ๊ณ Gitlab CI๋ฅผ ์ฌ์ฉํ๋ ๊ณ ๊ธ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉฐ ์ค์ ์ ์๋ดํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์์ ์์ ์ ํ๋ก์ ํธ์ ๋ง๊ฒ Gitlab CI๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ DevOps Slurm๊ณผ ๋น๊ตํ์ฌ ์ด๋ก ์ 2๋ฐฐ(์ฃผ์ ๋น XNUMX์๊ฐ) ๋จ์ถํ๊ณ ๋ชจ๋ ์์คํ ๊ฒํ ๋ฅผ ํผํ๊ณ Gitlab CI๋ง ๋จ๊ฒผ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ต์ ์ค์ ์ ๋๊ณ ๋ง์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ฃผ์ #5: ์ฝ๋ํ ์ธํ๋ผ
- IaC: ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ์ ๊ทผ
- ์ธํ๋ผ ์ ๊ณต์๋ก์์ ํด๋ผ์ฐ๋ ์ ๊ณต์
- ์์คํ ์ด๊ธฐํ ๋๊ตฌ, ์ด๋ฏธ์ง ๊ตฌ์ถ(ํจ์ปค)
- Terraform์ ์์๋ก ์ฌ์ฉํ๋ IaC
- ๊ตฌ์ฑ ์ ์ฅ, ํ์ , ์ ํ๋ฆฌ์ผ์ด์ ์๋ํ
- Ansible ํ๋ ์ด๋ถ ์์ฑ ์ฐ์ต
- ๋ฉฑ๋ฑ์ฑ, ์ ์ธ์ฑ
- Ansible์ ์๋ก ์ฌ์ฉํ๋ IaC
UI์ OpenStack CLI์ ๋ํ ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ์ค์ด๊ณ ์ค์ต์ ์ง์คํ์ต๋๋ค.
๋์ผํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง IaC ์ ๊ทผ ๋ฐฉ์์ ์ดํด๋ณด๊ณ ๊ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฅ๋จ์ ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์์ ์ด๋ค ์ ๊ทผ ๋ฐฉ์์ ์ด๋์ ์ฌ์ฉํด์ผ ํ๋์ง ์ดํดํ๊ณ Terraform๊ณผ Ansible์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
Terraform ์ฃผ์ ์์๋ ์ค์ ๋ก ํ์ํฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์์ ํ ๋ ํ์์ ๋ชจ๋์ ์ง์ ์์ฑ ๋ฐ ๊ตฌ์ฑํ๊ณ ์์ ๋ฐฉ๋ฒ(์ฌ์ฌ์ฉ, ๋ฒ์ ํ)์ ๋ฐฐ์๋๋ค. Consul์ ์์ ์ ์ถ๊ฐํ๊ณ ์ด๋ค ๊ฒฝ์ฐ์ ํ์ํ์ง, ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฃผ์ #6: ์ธํ๋ผ ํ ์คํธ
- ์ ๊ทธ๋ค์ด ํ ์คํธ๋ฅผ ์์ฑํ์ง ์๋์ง ์์๋ณผ๊น์?
- IaC์๋ ์ด๋ค ํ ์คํธ๊ฐ ์๋์?
- ์ ์ ๋ถ์๊ธฐ, ์ ๋ง ๊ทธ๋ ๊ฒ ์ธ๋ชจ๊ฐ ์๋์?
- Ansible + ๋ถ์๋ฅผ ์๋ก ์ฌ์ฉํ IaC์ ๋จ์ ํ ์คํธ
- CI์ ์ผ๋ถ๋ก ํ ์คํธ
- ์คํ ๋ก์ด๋ ํ ์คํธ ๋๋ IaC ํ ์คํธ๊ฐ ์๋ฃ๋ ๋๊น์ง 5์๊ฐ์ ๊ธฐ๋ค๋ฆฌ์ง ์๋ ๋ฐฉ๋ฒ
์ฐ๋ฆฌ๋ ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ์ค์ด๊ณ , Vagrant/Molecule์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ์ค์ด๊ณ , ๋ฆฐํฐ์ ์ค์ ์ ๋๊ณ ์์
ํ๋ฉด์ ์ค์ต๊ณผ ์ง์ ํ
์คํธ๋ฅผ ๋๋ ธ์ต๋๋ค. CI ๊ด์ ์์ ์ดํด๋ณด๊ธฐ
ํ
์คํธ ์๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ. ์ค์ ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ญํ ์ ๋ฐ๋ผ ํธ์คํธ์ ๋ํ ํ์ ๋ณ์๊ฐ ์๋์ง ํ์ธํ๋ ์์ฒด ์์ฑ ๋ฆฐํฐ;
- ๋ณ๊ฒฝ๋ ์ญํ ๋ง CI ํ ์คํธ์ ์ถ๊ฐํ๋ฏ๋ก ํ ์คํธ ์คํ ์๊ฐ์ด ํฌ๊ฒ ๋จ์ถ๋ฉ๋๋ค.
- ์๋๋ฆฌ์ค ํ ์คํธ ์ถ๊ฐ. ํตํฉ ํ ์คํธ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํฉ๋๋ค.
์ฃผ์ #7: Prometheus๋ฅผ ์ฌ์ฉํ ์ธํ๋ผ ๋ชจ๋ํฐ๋ง
- ๊ฑด๊ฐํ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ
- ํ๋งค ์ด์ ์๋ ๋ถ์, ๊ฐ๋ฐ ํจ์จ์ฑ ๋ฐ ์ฝ๋ ์์ ์ฑ์ ์ํ ๋๊ตฌ๋ก ๋ชจ๋ํฐ๋ง
- ํ๋ก๋ฉํ ์ฐ์ค + ๊ฒฝ๊ณ ๊ด๋ฆฌ์ + ๊ทธ๋ผํ๋ ์ค์
- ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ํฐ๋ง์ผ๋ก ์ ํ
์์ฒญ ID, API ๋ชจ๋ํฐ๋ง ๋๊ตฌ ๋ฑ ๋ง์ดํฌ๋ก์๋น์ค ๋ชจ๋ํฐ๋ง์ ๋ํด ๋ง์ด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๋ง์ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ ๋ฆฝ์ ์ธ ์์ ์ด ๋ง์ด ์์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ ์์ ์ ์์ถ์ ์๋ฅผ ์์ฑํด ๋ด ์๋ค. ํ๋ก๋์ ์ธํ๋ผ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฟ๋ง ์๋๋ผ Gitlab์ ์ด์ ๋ธ๋ฆฌ์ ๋ํ ๋ชจ๋ํฐ๋ง๋ ์ค์ ํ๊ฒ ์ต๋๋ค. ์คํจํ ํ ์คํธ์ ๋ํ ํต๊ณ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ค์ ๋ก healthCheck ์์ด ๋ชจ๋ํฐ๋ง์ด ์ด๋ค ๋ชจ์ต์ธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฃผ์ ๋ฒํธ 8. ELK๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊น
- Elastic ๋ฐ ํด๋น ๋๊ตฌ ๊ฐ์
- ELK/Elastic Stack/x-pack - ๋ฌด์์ด๊ณ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ElasticSearch๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ (๊ฒ์, ์ ์ฅ, ํ์ฅ ๊ธฐ๋ฅ, ๊ตฌ์ฑ ์ ์ฐ์ฑ)
- ์ธํ๋ผ ๋ชจ๋ํฐ๋ง(x-pack)
- ์ปจํ ์ด๋ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ(x-pack)
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ์ฌ์ฉํ์ฌ ๋ก๊น
- Kibana ์์ ๊ดํ
- Amazon์ Elasticsearch์ฉ Open Distro
์ฃผ์ ๋ ์์ ํ ์ฌ์ค๊ณ๋์์ผ๋ฉฐ Eduard Medvedev๊ฐ ์ฃผ์ตํ๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด DevOps ๋ฐ SRE ์น ์ธ๋ฏธ๋์์ ๊ทธ๋ฅผ ๋ณด์์ต๋๋ค. ๊ทธ๋ ๊ต์ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ EFK ์์ ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค๋ช ํ๊ณ ์์ฐํ ๊ฒ์ ๋๋ค. Kibana์ ๋ํ ์ฐ์ต์ด ์์ ๊ฒ์ ๋๋ค.
์ฃผ์ #9: ChatOps๋ฅผ ํตํ ์ธํ๋ผ ์๋ํ
- DevOps ๋ฐ ChatOps
- ChatOps: ๊ฐ์
- Slack ๋ฐ ๋์
- ChatOps์ฉ ๋ด
- ํด๋ด๊ณผ ๋์
- ะะตะทะพะฟะฐัะฝะพััั
- ํ ์คํธ
- ๋ชจ๋ฒ ์ฌ๋ก์ ์ต์ ์ฌ๋ก
ChatOps๋ ๊ถํ ๋ถ๋ฆฌ๋ฅผ ํตํ ์ธ์ฆ ๊ดํ, ๋ค๋ฅธ ์ฌ์ฉ์์ ์กฐ์น ํ์ธ, Mattermost ํํ์ Slack ๋์ ์ด๋ก ๋ฐ ์ค์ต, ๋ด์ ๋ํ ๋จ์ ๋ฐ ํตํฉ ํ ์คํธ ์ด๋ก ์ ์ถ๊ฐํ์ต๋๋ค.
DevOps ์ฌ๋ผํ๋ 30์ 30์ผ์ ์์๋ฉ๋๋ค. ๊ฐ๊ฒฉ - 000.
๋ค ์ฝ์ผ์ ๋ถ๋ค์๊ฒ๋ habrapost ํ๋ก๋ชจ์
์ฝ๋๋ฅผ ์ด์ฉํด DevOps ๊ฐ์ข๋ฅผ 15% ํ ์ธํด ๋๋ฆฝ๋๋ค.
๋ฑ๋ก
Slurms์์ ๋ง๋์ ๋ฐ๊ฐ์์!
์ถ์ฒ : habr.com