์ฐ๋ฆฌ๋ ์ต์ ์ ๋คํด DevOps๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ฐ๋ฆฌ๋ 8๋ช ์ด์๊ณ Vasya๋ Windows์์ ๊ฐ์ฅ ๋ฉ์ง ์ฌ๋์ด์์ต๋๋ค. ๊ฐ์๊ธฐ Vasya๊ฐ ๋ ๋ฌ๊ณ ์ ๋ Windows ๊ฐ๋ฐ์์ ์ ๊ณตํ๋ ์ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ์๋ฌด๋ฅผ ๋งก์์ต๋๋ค. Windows ๊ฐ๋ฐ ์คํ ์ ์ฒด๋ฅผ ํ ์ด๋ธ ์์ ๋ด๋ ค๋์์ ๋ ์ํฉ์ด ๊ณ ํต์ค๋ฝ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค...
์ด์ผ๊ธฐ๋ ์ด๋ ๊ฒ ์์๋๋ค ์๋ ์ฐ๋๋ผ ์ ์น๋
ธ๋ฐ ์
TFS, Puppet, Linux .NET ์ฝ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ RPM์ ์ฝ๊ณ ์ฝ๊ฒ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ๊ฐ๋ฐ ํ์ด Postgres ๋ฐ Flyway๋ผ๋ ๋จ์ด๋ฅผ ์ฒ์ ๋ฃ๊ณ ๋ง๊ฐ์ผ์ด ๋ด์ผ ๋ชจ๋ ์ธ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ง์ํฉ๋๊น? Docker์ ์ด๋ป๊ฒ ํตํฉํ๋์? .NET ๊ฐ๋ฐ์๊ฐ Windows์ ์ค๋ฌด๋๋ฅผ ๋ฒ๋ฆฌ๊ณ Puppet๊ณผ Linux๋ฅผ ์ ํํ๋๋ก ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? Windows๋ฅผ ํ๋ก๋์
ํ๊ฒฝ์์ ์ ์งํ ํ๋, ์๊ตฌ๋, ์์๋ ์๋ ๊ฒฝ์ฐ ์ด๋
์ ๊ฐ๋ฑ์ ์ด๋ป๊ฒ ํด๊ฒฐํฉ๋๊น? ์ด์ ๋ํ ๋ด์ฉ์ ๋ฌผ๋ก ์น ๋ฐฐํฌ, ํ
์คํธ, CI, ๊ธฐ์กด ํ๋ก์ ํธ์์ TFS๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก Alexander์ ๋ณด๊ณ ์ ๊ธฐ๋ก์๋ ๋ถ๋ฌ์ง ๋ชฉ๋ฐ ๋ฐ ์์
์๋ฃจ์
์ ๋ํ ์ ๋ณด๋ ํฌํจ๋์ด ์์ต๋๋ค.
๊ทธ๋์ Vasya๋ ๋ ๋ฌ๊ณ ์์ ์ ๋์๊ฒ ๋ฌ๋ ค ์์ผ๋ฉฐ ๊ฐ๋ฐ์๋ ๊ฐํด๋ฅผ ๋ค๊ณ ์ด์กฐํ๊ฒ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๋ง์นจ๋ด Vasya๋ฅผ ๋๋ ค๋ฐ์ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ ๋ ๋๋ ์ฌ์ ์ ์์ํ์ต๋๋ค. ์ฐ์ ์ฐ๋ฆฌ ํ์ฌ์ Win VM ๋น์จ์ ํ๊ฐํ์ต๋๋ค. ์ ์๋ Windows์ ์ ๋ฆฌํ์ง ์์์ต๋๋ค.
DevOps๋ฅผ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ณํ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ํด๊ฒฐ์ฑ
์ ํ๋๋ฟ์ด์์ต๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ๋ชจ๋ ๊ฒ์ Linux๋ก ์ฎ๊ธฐ๋ ๊ฒ์
๋๋ค. Google์ด ์ ๋ฅผ ๋์์ฃผ์์ต๋๋ค. ๋น์์๋ .Net์ด ์ด๋ฏธ Linux๋ก ํฌํ
๋์ด ์์๊ณ ์ด๊ฒ์ด ํด๊ฒฐ์ฑ
์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค!
Linux์ ํจ๊ป .NET Core๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์์ต๋๋ค. "๋์ ์ง๋ถํ๋ค"์ "์ง๋ถํ์ง ์๋๋ค" ์ฌ์ด์์ ๋๋ค์๋ ๋์ฒ๋ผ ๋ ๋ฒ์งธ๋ฅผ ์ ํํ ๊ฒ์ด๋ค. MSDB ๋ผ์ด์ ์ค ๋น์ฉ์ ์ฝ 1๋ฌ๋ฌ์ด๊ณ , Windows ๊ฐ์ ๋จธ์ ์ ์ฒด๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ๋ ์๋ฐฑ ๋ฌ๋ฌ๊ฐ ์์๋ฉ๋๋ค. ๋๊ธฐ์ ์ ๊ฒฝ์ฐ ์ด๋ ํฐ ๋น์ฉ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๊ธ - ์ฒซ ๋ฒ์งธ ์ด์ . ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์๋์ง๋ง ์ค์ํ ๊ฒ ์ค ํ๋์ ๋๋ค.
Windows ๊ฐ์ ๋จธ์ ์ Linux ํ์ ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ฐจ์งํฉ๋๋ค. ๊ทธ๋ค์ ๋ฌด๊ฒ๋ค. ๋๊ธฐ์ ์ ๊ท๋ชจ๋ฅผ ๊ณ ๋ คํ์ฌ ์ฐ๋ฆฌ๋ Linux๋ฅผ ์ ํํ์ต๋๋ค.
์์คํ ์ ๊ธฐ์กด CI์ ๊ฐ๋จํ ํตํฉ๋ฉ๋๋ค.. ์ฐ๋ฆฌ๋ ์ง๋ณด์ ์ธ DevOps๋ผ๊ณ ์๊ฐํ๋ฉฐ Bamboo, Jenkins ๋ฐ GitLab CI๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋๋ถ๋ถ์ ์์ ์ด Linux์์ ์คํ๋ฉ๋๋ค.
๋ง์ง๋ง ์ด์ ๋ ํธ๋ฆฌํ ๋ฐ์ฃผ. ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ ์ธ ๋ถ๋ถ์ ์ดํดํ๊ณ ์ค๋จ ์๋ ์๋น์ค๋ฅผ ๋ณด์ฅํ๋ฉฐ XNUMX์ฐจ ๋ผ์ธ์์ ์๋น์ค๋ฅผ ์ ์งํ๋ "์์ค์ฝํธ"์ ๋ํ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถฐ์ผ ํ์ต๋๋ค. ๊ทธ๋ค์ ์ด๋ฏธ Linux ์คํ์ ์ต์ํ๊ธฐ ๋๋ฌธ์ Windows ํ๋ซํผ์ฉ ์ํํธ์จ์ด์ ๋์ผํ ๊ธฐ๋ฅ์ ์ดํดํ๊ธฐ ์ํด ์ถ๊ฐ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ ๊ฒ๋ณด๋ค ์๋ก์ด ์ ํ์ ์ดํดํ๊ณ ์ง์ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
์๊ตฌ ์ฌํญ
๋งจ ๋จผ์ - ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ก์ด ์๋ฃจ์ ์ ํธ์์ฑ. ํนํ Linux๋ผ๋ ๋จ์ด๊ฐ ์ธ๊ธ๋ ์ดํ์๋ ๊ทธ๋ค ๋ชจ๋๊ฐ ๋ณํํ ์ค๋น๊ฐ ๋์ด ์์ง ์์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด์ ๋ธ๋ฆฌ ๋ฐ ์ค๋ฌด๋์ ๋ํ ์๋ ํ ์คํธ ๊ธฐ๋ฅ์ด ์๋ ์์ ์ด ์ ํธํ๋ Visual Studio์ธ TFS๋ฅผ ์ํฉ๋๋ค. ์์ฐ์ ์ด๋ป๊ฒ ์ ๋ฌ๋๋์ง๋ ๊ทธ๋ค์๊ฒ ์ค์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ Windows ๊ฐ๋ฐ์ ์ํด ๋ชจ๋ ๊ฒ์ ๋ณ๊ฒฝํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์๋ก์ด ํ๋ก์ ํธ๊ฐ ํ์ํจ ๊ธฐ์กด CI์ ํตํฉ. ๋ ์ผ์ ์ด๋ฏธ ๊ฑฐ๊ธฐ์ ์์๊ณ ๋ชจ๋ ์์ ์ ๊ตฌ์ฑ ๊ด๋ฆฌ ์์คํ ์ ๋งค๊ฐ๋ณ์, ์น์ธ๋ ์ ๋ฌ ํ์ค ๋ฐ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ณ ๋ คํ์ฌ ์ํ๋์ด์ผ ํ์ต๋๋ค.
์ง์ ๋ฐ ์ด์์ ์ฉ์ด์ฑ, ๋ค์ํ ๋ถ์ ๋ฐ ์ง์ ๋ถ์์ ๋ชจ๋ ์ ๊ท ์ฐธ๊ฐ์์ ๋ํ ์ต์ ์ง์ ์๊ณ๊ฐ์ ๋ํ ์กฐ๊ฑด์ ๋๋ค.
๋ง๊ฐ์ผ - ์ด์ .
์๊ฐ๋ฐ๊ทธ๋ฃน
๋น์ Windows ํ์ ์ด๋ค ์์ ์ ํ๊ณ ์์๋์?
์ด์ ๋ ์์ ์๊ฒ ๋งํ ์ ์์ด์ ์์ด๋ดํฐํฐ์๋ฒ4 ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ADFS์ ๋ฉ์ง ๋ฌด๋ฃ ๋์์
๋๋ค. Entity Framework ์ฝ์ด - SQL ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ํ์ ์์ด OOP ์ฉ์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ๋ฅผ ์ค๋ช
ํ ์ ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ฒ๊ตญ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์คํ ๊ณํ์ ๋
ผ์ํ๋ ๋์ ์ ๋ ์ด ์คํ์ ๋ง์น PostgreSQL๊ณผ Git๋ง ์ธ์ํ๋ ์๋ฉ๋ฅด ์คํ ๋ฌธ์์ฒ๋ผ ๋ณด์์ต๋๋ค.
๋น์ ์ฐ๋ฆฌ๋ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ธํ ๊ตฌ์ฑ ๊ด๋ฆฌ ์์คํ ์ผ๋ก. ๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ ๊น๋ฉ CI, ํ๋ ฅ์๋, ๊ท ํ ์กํ ๊ณ ๋ถํ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ HAProxy ๋ชจ๋ ๊ฒ์ ๋ชจ๋ํฐ๋งํ์ต๋๋ค ์ ๋น์ธ , ์ธ๋ ๊ทธ๋ผ ํ๋ ะธ ํ๋ก ๋ฉํ ์ฐ์ค, ์ฌ๋ฅ๊พผ, ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ด ์ฒ ์กฐ๊ฐ ์์์ ํ์ ํ๊ณ ์์์ต๋๋ค HP c ESXi ์ VM์จ์ด. ๋ชจ๋๊ฐ ๊ทธ๊ฒ์ ์๊ณ ์์ต๋๋ค - ์ฅ๋ฅด์ ๊ณ ์ ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด ๋ชจ๋ ๊ฐ์
์ ์์ํ๊ธฐ ์ ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํด๋ณด๊ณ ์ดํดํ๋ ค๊ณ ๋
ธ๋ ฅํฉ์๋ค.
๋ฌด์
TFS๋ ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ์ต์ข ์์ฐ ์์คํ ์ ์ ๋ฌํ ๋ฟ๋ง ์๋๋ผ ํฌ๋ก์ค ํ๋ซํผ ์์ค์์ CI๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ค์ํ ์๋น์ค์ ๋งค์ฐ ์ ์ฐํ๊ฒ ํตํฉํ ์ ์๋ ์ธํธ๋ฅผ ๊ฐ์ถ ์๋นํ ๊ฐ๋ ฅํ ์์คํ ์ ๋๋ค.
์ด์ ์๋ ๋จ๋จํ ์ฐฝ์ด์์ต๋๋ค. TFS๋ ๋ง์ ํ๋ก์ ํธ๋ฅผ ์กฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฌ๋ฌ ๋น๋ ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ฐ ์์ด์ ํธ์๋ ์์
์ ๋ณ๋ ฌํํ๊ณ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ๊ธฐ ์ํ 3~4๋ช
์ ์์
์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฆด๋ฆฌ์ค ๊ณํ์ ๋ฐ๋ผ TFS๋ ๊ฐ ๊ตฌ์ด ๋น๋๋ฅผ Windows ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ ์ ๋ฌํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ฌ์ฑํ๊ณ ์ถ์๋์?
์ฐ๋ฆฌ๋ ์ ๋ฌ ๋ฐ ๊ฐ๋ฐ์ ์ํด TFS๋ฅผ ์ฌ์ฉํ๊ณ Linux ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋๋ฐ, ๊ทธ ์ฌ์ด์๋ ์ผ์ข ์ ๋ง๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ ๋ง์ ์์ ๊ทธ๋ฆฌ๊ณ ์์๋ ์ผ์ ์๊ธ์ด ์์ต๋๋ค. ๋ถํดํ๊ธฐ ์ ์ ํ ๊ฑธ์ ๋ฌผ๋ฌ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ๋ช ๋ง๋ ๋ง์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ณํ
์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ถ์นด๋ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Client
์ฌ์ฉ์์๋ ๋ ๊ฐ์ง ์ ํ์ด ์์์ต๋๋ค. ์ฒ์์ผ๋ก SSL SHA-2 ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ์ฌ ์ก์ธ์ค ๊ถํ์ ์ป์์ต๋๋ค. ์ ์ด ๋ก๊ทธ์ธ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ์ต๋๋ค.
HAProxy
๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ ์์ฒญ์ด HAProxy๋ก ์ด๋ํ์ฌ ๋ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- ๊ธฐ๋ณธ ์น์ธ;
- SSL ์ข ๋ฃ;
- HTTP ์์ฒญ ํ๋
- ๋ฐฉ์ก ์์ฒญ.
ํด๋ผ์ด์ธํธ ์ธ์ฆ์๊ฐ ์ฒด์ธ์ ๋ฐ๋ผ ํ์ธ๋์์ต๋๋ค. ์ฐ๋ฆฌ - ๊ถ์ ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ธ์ฆ์๋ฅผ ์ง์ ๋ฐ๊ธํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ฐ๋นํ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ์ฌํญ์ ์ฃผ๋ชฉํ์ธ์. ์ ์ ํ์ ๋ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ฐฑ์๋
๊ทธ๋ค์ Linux์์ ๋ฐฑ์๋๋ฅผ ๋ง๋ค ๊ณํ์ด์์ต๋๋ค. ๋ฐฑ์๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๊ณ ํ์ํ ๊ถํ ๋ชฉ๋ก์ ๋ก๋ํ ๋ค์ ์น์ธ๋ ์ฌ์ฉ์๊ฐ ๊ฐ์ง ๊ถํ์ ๋ฐ๋ผ ๊ธ์ต ๋ฌธ์์ ์๋ช ํ๊ณ ์คํ์ ์ํด ์ ์กํ๊ฑฐ๋ ์ผ์ข ์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์๋ ์ก์ธ์ค ๊ถํ์ ์ ๊ณตํฉ๋๋ค.
HAProxy๋ฅผ ํตํ ๋น์ฉ ์ ๊ฐ
๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ ๊ฐ์ง ์ปจํ ์คํธ ์ธ์๋ ID ์ปจํ ์คํธ๋ ์์์ต๋๋ค. ์์ด๋ดํฐํฐ์๋ฒ4 ๋ก๊ทธ์ธ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ฌด๋ฃ์ด๋ฉฐ ๊ฐ๋ ฅํ ์๋ ๋ก๊ทธ ๊ธฐ๋ฅ์ ๋๋ค. ADFS - Active Directory Federation Services.
์ ์ ์์ฒญ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋จ๊ณ - ํด๋ผ์ด์ธํธ ๋ฐฑ์๋์ ๋ค์ด๊ฐ๋ค, ์ด ์๋ฒ์ ํต์ ํ๊ณ ํด๋ผ์ด์ธํธ์ ๋ํ ํ ํฐ์ด ์๋์ง ํ์ธํ์ต๋๋ค. ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ์์ฒญ์ ์๋ ์ปจํ ์คํธ๋ก ๋ค์ ๋ฐํ๋์์ง๋ง ๋ฆฌ๋๋ ์ ์ ์ฌ์ฉํ๊ณ ๋ฆฌ๋๋ ์ ์ ํตํด ID๋ก ์ด๋ํ์ต๋๋ค.
๋ ๋ฒ์งธ ๋จ๊ณ - ์์ฒญ์ด ์์ ๋์์ต๋๋ค. IdentityServer์ ์ธ์ฆ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ฑ๋ก๋ ์์น์ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์จ ํ ํฐ์ด IdentityServer ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ๋ฌ์ต๋๋ค.
์ธ ๋ฒ์งธ ๋จ๊ณ - ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ๋ฆฌ๋๋ ์ ๋์์ต๋๋ค ๊ทธ๊ฒ์ด ๋์จ ๋งฅ๋ฝ์.
IdentityServer4์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. HTTP๋ฅผ ํตํด ๋ฐํ ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐํํฉ๋๋ค.. ์๋ฒ๋ฅผ ์ค์ ํ๋ ๋ฐ ์๋ฌด๋ฆฌ ์ด๋ ค์์ ๊ฒช์๋๋ผ๋, ์ค๋ช
์๋ฅผ ํตํด ์๋ฌด๋ฆฌ ๊นจ๋ฌ์๋๋ผ๋ HTTPS๋ฅผ ํตํด ์ ๊ณต๋ URL์ด ํฌํจ๋ ์ด๊ธฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค IdentityServer๋ ๋์ผํ ์ปจํ
์คํธ๋ฅผ HTTP๋ก ๋ฐํํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ถฉ๊ฒฉ์ ๋ฐ์์ต๋๋ค! ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ๊ฒ์ ID ์ปจํ
์คํธ๋ฅผ ํตํด HAProxy๋ก ์ ์กํ๊ณ , ํค๋์์ HTTP ํ๋กํ ์ฝ์ HTTPS๋ก ์์ ํด์ผ ํ์ต๋๋ค.
๊ฐ์ ๋ ์ ์ ๋ฌด์์ด๋ฉฐ ์ ์ฅํ ๊ณณ์ ์ด๋์ ๋๊น?
IdentityServer4๋ฅผ ๋ณ๋์ ์ธ๊ทธ๋จผํธ์ ๋ณ๋์ ๋ ธ๋๋ก ๋ฐฐ์นํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋๊ฐ ์คํ๋๋ ๋์ผํ ์๋ฒ์ ๋ฐฑ์๋์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์, ๋ฆฌ์์ค ๊ทธ๋ฃน์ ์ธ์ฆํ๊ธฐ ์ํ ๋ฌด๋ฃ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ๋น์ฉ์ ์ ์ฝํ์ต๋๋ค. .
์๋ ๋ฐฉ์
์ฝ์๋๋ก Magic Box์ ๋๋ค. ์ฐ๋ฆฌ๋ Linux๋ก ์ ํํ ๊ฒ์ด ๋ณด์ฅ๋๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค. ์๋ฃจ์ ์ด ํ์ํ ํน์ ์์ ์ ๊ณต์ํํด ๋ณด๊ฒ ์ต๋๋ค.
์ธํ๊ทน์ด ๋ฑ์ฅํฉ๋๋ค. ์๋น์ค์ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ฑ์ ์ ๊ณตํ๊ณ ๊ด๋ฆฌํ๋ ค๋ฉด ๋ฉ์ง ๋ ์ํผ๋ฅผ ์์ฑํด์ผ ํ์ต๋๋ค. ์ฐํ ํ ํต์ ์์
์ด ์ผ๋ง๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ํ๋์๋์ง๋ฅผ ์ค๋๋ ฅ ์๊ฒ ๋ณด์ฌ์ค๋๋ค.
๋ฐฐ๋ฌ ๋ฐฉ๋ฒ. ๊ธฐ์ค์ RPM์ ๋๋ค. Linux์์๋ ๊ทธ๊ฒ ์์ด๋ ํ ์ ์๋ค๋ ๊ฒ์ ๋ชจ๋๊ฐ ์ดํดํ์ง๋ง ์ด์ ๋ธ๋ฆฌ ํ ํ๋ก์ ํธ ์์ฒด๋ ์คํ ๊ฐ๋ฅํ DLL ํ์ผ ์ธํธ์์ต๋๋ค. ๊ทธ ์ค ์ฝ 150 ๊ฐ๊ฐ ์์๋๋ฐ ํ๋ก์ ํธ๊ฐ ์๋นํ ์ด๋ ค์ ์ต๋๋ค. ์ ์ผํ ์กฐํ๋ก์ด ์๋ฃจ์ ์ ์ด ๋ฐ์ด๋๋ฆฌ๋ฅผ RPM์ผ๋ก ํจํค์งํ๊ณ ์ฌ๊ธฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค.
๋ฒ์ ๊ด๋ฆฌ. ์ถ์๋ฅผ ์์ฃผ ํด์ผ ํ๊ณ , ํจํค์ง ์ด๋ฆ์ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง ๊ฒฐ์ ํด์ผ ํ์ต๋๋ค. TFS์์ ํตํฉ ์์ค์ ๋ํ ์ง๋ฌธ์ ๋๋ค. Linux์ ๋น๋ ์์ด์ ํธ๊ฐ ์์์ต๋๋ค. TFS๊ฐ ์์ ์ ์ฒ๋ฆฌ๊ธฐ(์์ ์)์๊ฒ ๋น๋ ์์ด์ ํธ๋ก ๋ณด๋ผ ๋ ์ฒ๋ฆฌ๊ธฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์ ๋๋๋ ์ฌ๋ฌ ๋ณ์๋ ์ ๋ฌํฉ๋๋ค. ์ด๋ฌํ ํ๊ฒฝ ๋ณ์์๋ ๋น๋ ์ด๋ฆ, ๋ฒ์ ์ด๋ฆ ๋ฐ ๊ธฐํ ๋ณ์๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ "RPM ํจํค์ง ๊ตฌ์ถ" ์น์ ์ ์ฐธ์กฐํ์ธ์.
TFS ์ค์ ํ์ดํ๋ผ์ธ ์ค์ ์ ๋ค์ด๊ฐ์ต๋๋ค. ์ด์ ์๋ Windows ์์ด์ ํธ์์ ๋ชจ๋ Windows ํ๋ก์ ํธ๋ฅผ ์์งํ์ง๋ง ์ด์ Linux ์์ด์ ํธ๊ฐ ๋ํ๋ฉ๋๋ค. ๋น๋ ๊ทธ๋ฃน์ ํฌํจ๋์ด์ผ ํ๊ณ ์ผ๋ถ ์ํฐํฉํธ๋ก ๋ณด๊ฐ๋๋ฉฐ ์ด ๋น๋ ์์ด์ ํธ์ ์ด๋ค ์ ํ์ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ๊ฒ์ธ์ง ์๋ ค์ฃผ๋ ๋น๋ ์์ด์ ํธ์ ๋๋ค. , ์ด๋ป๊ฒ๋ ํ์ดํ๋ผ์ธ์ ์์ ํฉ๋๋ค.
IdentityServer. ADFS๋ ์ฐ๋ฆฌ ๋ฐฉ์์ด ์๋๋ฉฐ ์คํ ์์ค๋ฅผ ์งํฅํฉ๋๋ค.
๊ตฌ์ฑ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ง์ ์์
๋ค ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Linux ๋น๋ ์์ด์ ํธ. Linux๋ Linux์ฉ์ผ๋ก ์ ์๋์๊ธฐ ๋๋ฌธ์ ๋
ผ๋ฆฌ์ ์
๋๋ค. ์ด ๋ถ๋ถ์ ์ธ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ก์ต๋๋ค.
- ์์ ์ ๊ตฌ์ฑ ํ๋ก์ ํธ์ ๋ํ ๋ถ์ฐ ์์ ์ด ์์๋์๊ธฐ ๋๋ฌธ์ ํผ์๊ฐ ์๋๋๋ค.
- .NET Core 1.x ์ค์น. ํ์ค ์ ์ฅ์์์ ์ด๋ฏธ 1์ ์ฌ์ฉํ ์ ์๋๋ฐ ์ 2.0.x๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๊น? ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ์ ์์ํ์ ๋ ์์ ๋ฒ์ ์ด 1.09์๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ํ๋ด 2.x.
RPM ์ ์ฅ์. RPM ํจํค์ง๋ฅผ ์ด๋๊ฐ์ ์ ์ฅํด์ผ ํ์ต๋๋ค. ๋ชจ๋ Linux ํธ์คํธ์์ ์ฌ์ฉํ ์ ์๋ ๋์ผํ ํ์ฌ RPM ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค. ๊ทธ๊ฒ์ด ๊ทธ๋ค์ด ํ ์ผ์ ๋๋ค. ์ ์ฅ์ ์๋ฒ๊ฐ ๊ตฌ์ฑ๋์์ต๋๋ค. ์น ํํฌ ์ง์ ๋ ์์น์์ ํ์ํ RPM ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ์ต๋๋ค. ํจํค์ง ๋ฒ์ ์ด ๋น๋ โโ์์ด์ ํธ์ ์ํด ์นํ ์ ๋ณด๊ณ ๋์์ต๋๋ค.
๊น๋ฉ. ์ฃผ๋ชฉ! ์ฌ๊ธฐ์ GitLab์ ๊ฐ๋ฐ์๊ฐ ์๋ ์ด์ ๋ถ์์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์ , ํจํค์ง ๋ฒ์ ์ ์ ์ดํ๊ณ ๋ชจ๋ Linux ์์คํ ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ฉฐ ๋ ์ํผ(๋ชจ๋ Puppet ๋งค๋ํ์คํธ)๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ธํ โ ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ Gitlab์์ ์ํ๋ ๊ตฌ์ฑ์ ์ ํํ๊ฒ ์ ๊ณตํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ด๋น์ ์์ํฉ๋๋ค. RPM์ผ๋ก์ DLL ์ ๋ฌ์ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
DDL์ RPM์ผ๋ก ์ ๋ฌ
.NET ๊ฐ๋ฐ์ ์ธ๊ธฐ ์คํ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. Visual Studio๋ฅผ ์ฌ์ฉํ๊ณ ๋ฆด๋ฆฌ์ค ๋ถ๊ธฐ๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ ํ Git์ ์ ๋ก๋ํ๋๋ฐ ์ฌ๊ธฐ์ Git์ TFS ์ํฐํฐ, ์ฆ ๊ฐ๋ฐ์๊ฐ ์์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฅ์์ ๋๋ค.
๊ทธ ํ TFS๋ ์๋ก์ด ์ปค๋ฐ์ด ๋์ฐฉํ์์ ํ์ธํฉ๋๋ค. ์ด๋ค ์ฑ์ธ๊ฐ์? TFS ์ค์ ์๋ ํน์ ๋น๋ ์์ด์ ํธ์ ์ด๋ค ๋ฆฌ์์ค๊ฐ ์๋์ง ๋ํ๋ด๋ ๋ ์ด๋ธ์ด ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ ์ฐ๋ฆฌ๊ฐ .NET Core ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์๋ ๊ฒ์ ํ์ธํ๊ณ ํ์์ Linux ๋น๋ ์์ด์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
๋น๋ ์์ด์ ํธ๋ ์์ค๋ฅผ ์์ ํ๊ณ ํ์ํ ๊ฒ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ์์กด์ฑ .NET ์ ์ฅ์, npm ๋ฑ์์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ฅผ ๋น๋ํ๊ณ ํ์ ํจํค์ง์ ํ ํ RPM ํจํค์ง๋ฅผ RPM ์ ์ฅ์๋ก ๋ณด๋ ๋๋ค.
๋ฐ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค. ์ด์ ๋ถ์ ์์ง๋์ด๋ ํ๋ก์ ํธ ์ถ์์ ์ง์ ์ฐธ์ฌํฉ๋๋ค. ๊ทธ๋ ํจํค์ง ๋ฒ์ ์ ๋ณ๊ฒฝํฉ๋๋ค. ํ์๋ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ํผ๊ฐ ์ ์ฅ๋ ์ ์ฅ์์์ Puppet์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์, ์ ์ฅ์์์ ์ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค๋ฉด ์ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ฉ๋๋ค.
๋ง๋ก ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํ์ง๋ง ๋น๋ ์์ด์ ํธ ์์ฒด ๋ด๋ถ์์๋ ์ด๋ค ์ผ์ด ๋ฐ์ํ ๊น์?
ํจํค์ง DLL RPM
TFS๋ก๋ถํฐ ํ๋ก์ ํธ ์์ค ๋ฐ ๋น๋ ์์ ์ ๋ฐ์์ต๋๋ค. ๋น๋ ์์ด์ ํธ ์์ค์์ ํ๋ก์ ํธ ์์ฒด๋ฅผ ๊ตฌ์ถํ๊ธฐ ์์ํฉ๋๋ค.. ์กฐ๋ฆฝ๋ ํ๋ก์ ํธ๋ ์ธํธ๋ก ์ ๊ณต๋ฉ๋๋ค. DLL ํ์ผ, ํ์ผ ์์คํ ์ ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด zip ์์นด์ด๋ธ๋ก ํจํค์ง๋ฉ๋๋ค.
ZIP ์์นด์ด๋ธ๋ ํ๊ธฐ๋ฉ๋๋ค. RPM ํจํค์ง ๋น๋ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค. ๋ค์์ผ๋ก Bash ์คํฌ๋ฆฝํธ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ด๊ธฐํํ๊ณ ๋น๋ ๋ฒ์ , ํ๋ก์ ํธ ๋ฒ์ , ๋น๋ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ณ RPM-build๋ฅผ ์คํํฉ๋๋ค. ๋น๋๊ฐ ์๋ฃ๋๋ฉด ํจํค์ง๊ฐ ๋ค์ ์์น์ ๊ฒ์๋ฉ๋๋ค. ๋ก์ปฌ ์ ์ฅ์, ๋น๋ ์์ด์ ํธ์ ์์ต๋๋ค.
๋ค์์ผ๋ก ๋น๋ ์์ด์ ํธ์์ RPM ์ ์ฅ์์ ์๋ฒ๋ก JSON ์์ฒญ์ด ์ ์ก๋์์ต๋๋ค. ๋ฒ์ ๋ฐ ๋น๋ ์ด๋ฆ์ ๋ํ๋ ๋๋ค. ์์ ์ด์ผ๊ธฐํ Webhook์ ๋น๋ ์์ด์ ํธ์ ๋ก์ปฌ ์ ์ฅ์์์ ๋ฐ๋ก ์ด ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ค์นํ ์ ์๋๋ก ๋ง๋ญ๋๋ค.
RPM ์ ์ฅ์์ ์ด ํน์ ํจํค์ง ์ ๋ฌ ์ฒด๊ณ๊ฐ ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ด์
๋ธ๋ ํจํค์ง๋ฅผ ์ ์ฅ์๋ก ์ฆ์ ๋ณด๋ผ ์ ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ฌ์ค ์ด๋ ์์ ์ ๋ณด์ฅํ๊ธฐ ์ํ ์กฐ๊ฑด์ด๋ค. ์ด ์๋๋ฆฌ์ค๋ ๊ถํ์ด ์๋ ์ฌ๋์ด ๋ชจ๋ Linux ์์คํ
์ ์ก์ธ์คํ ์ ์๋ ์๋ฒ์ RPM ํจํค์ง๋ฅผ ์
๋ก๋ํ ๊ฐ๋ฅ์ฑ์ ์ ํํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ๊ด๋ฆฌ
๊ฐ๋ฐํ๊ณผ์ ํ์์์ ๊ทธ ์ฌ๋๋ค์ MS SQL์ ๋ ๊ฐ๊น๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ง๋ง Windows๊ฐ ์๋ ๋๋ถ๋ถ์ ํ๋ก์ ํธ์์๋ ์ด๋ฏธ PostgreSQL์ ์จ ํ์ ๋คํด ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ ๋ฃ ๋ชจ๋ ๊ฒ์ ํฌ๊ธฐํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ PostgreSQL์ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
์ด ๋ถ๋ถ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ Flyway์ Entity Framework Core ์ค์์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ค์ ์ฅ์ ๊ณผ ๋จ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฃ์ ํ์
์ด๋ ๊ฒฝ๋ก๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๊ฐ๋๋ค. ์ฐ๋ฆฌ๋ ๋๋๋ฆด ์ ์์ด - ์ด๊ฒ์ ์๋นํ ๋จ์ ์ ๋๋ค. ๊ฐ๋ฐ์ ํธ์์ฑ ์ธก๋ฉด์์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก Entity Framework Core์ ๋น๊ตํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ต์ฐ์ ์ผ๋ก ์ผ์๊ณ ์ฃผ์ ๊ธฐ์ค์ Windows ๊ฐ๋ฐ์ ์ํด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ด์์ต๋๋ค.
Flyway๋ฅผ ์ํด ์ด๋ค ์ข ๋ฅ์ ํฌ์ฅ์ง๊ฐ ํ์ํ์ต๋๋ค๋จ์๋ค์ด ๊ธ์ ์ฐ์ง ์๋๋ก SQL ์ฟผ๋ฆฌ. OOP ์ฉ์ด๋ก ์๋ํ๋ ๋ฐ ํจ์ฌ ๋ ๊ฐ๊น์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์์ ์ ๋ํ ์ง์นจ์ ์์ฑํ๊ณ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์คํํ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฒ์ ์ด ์ค๋น๋๊ณ ํ ์คํธ๋์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์์ด๊ณ ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค.
Entity Framework Core์๋ ๋ง์ด๋์ค๊ฐ ์์ต๋๋ค. ๋ถํ๊ฐ ์ฌํ ๊ฒฝ์ฐ ์ต์ ์ด ์๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค., ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์๊ฐ ์๋นํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ณ ๋ถํ ์๋น์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ฐฑ RPS ๋จ์๋ก ๋ถํ๋ฅผ ๊ณ์ฐํ์ง ์๊ณ ์ด๋ฌํ ์ํ์ ๊ฐ์ํ๊ณ ๋ฌธ์ ๋ฅผ ๋ฏธ๋์ ์ฐ๋ฆฌ์๊ฒ ์์ํ์ต๋๋ค.
ํ๋ก
Entity Framework ์ฝ์ด ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๊ฐ๋ฐ์ด ์ฝ์ต๋๋ค.๋ฐ ํ๋ผ์ด์จ์ด ๊ธฐ์กด CI์ ์ฝ๊ฒ ํตํฉ. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์์๊ฒ ํธ๋ฆฌํจ์ ์ ๊ณตํฉ๋๋ค :)
๋กค์ ์ ์ฐจ
Puppet์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ด๋นํ๋ ๋ฒ์ ์ ํฌํจํ์ฌ ํจํค์ง ๋ฒ์ ์ด ๋ณ๊ฒฝ๋ ๊ฒ์์ ํ์ธํฉ๋๋ค. ๋จผ์ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๊ธฐ๋ฅ์ด ํฌํจ๋ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๊ป ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ ์์๋ฉ๋๋ค. ๋ค์์ผ๋ก ๋๋จธ์ง ๊ตฌ์ฑ ์์๋ฅผ ์ค์นํฉ๋๋ค. ํจํค์ง๊ฐ ์ค์น๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋๋ ์์๋ Puppet ๋งค๋ํ์คํธ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ํ ํฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ Puppet ๋ง์คํฐ์ ๊ตฌ์ฑ์ผ๋ก ๊ฐ์ ธ์์ ์ํธํ๋ ํ์์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
TFS ๋ฌธ์
๋ชจ๋ ๊ฒ์ด ์ค์ ๋ก ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ๋ค๋ ๊ฒ์ ๊ฒฐ์ ํ๊ณ ๊นจ๋ฌ์ ํ, ์ ๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ Win ๊ฐ๋ฐ ๋ถ์ ์ ์ฒด๋ฅผ ์ํด TFS์ ์ด์ ๋ธ๋ฆฌ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ๊ตฌ์ถ/๋ฆด๋ฆฌ์คํ๊ณ ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด, ์๋์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
์ฃผ์ ํ๋ก์ ํธ ์ค ํ๋๋ฅผ ์กฐ๋ฆฝํ๋ ๋ฐ 12~15๋ถ์ด ์์๋ฉ๋๋ค. ๋๋ฌด ๊ธด ์๊ฐ์ด๋ฏ๋ก ๊ทธ๋ ๊ฒ ์ด ์๋ ์์ต๋๋ค. ๋น ๋ฅธ ๋ถ์์ ๋ฐ๋ฅด๋ฉด I/O๊ฐ ํฌ๊ฒ ๊ฐ์ํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ผ๋ฉฐ ์ด๋ ์ด๋ ์ด์์ ๋ฐ์ํ์ต๋๋ค.
๊ตฌ์ฑ์์๋ณ๋ก ๋ถ์ํ ๊ฒฐ๊ณผ ์ธ ๊ฐ์ง ์ด์ ์ ํ์ธํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ - "์นด์คํผ์คํค ๋ฐฑ์ ", ๋ชจ๋ Windows ๋น๋ ์์ด์ ํธ์ ์์ค๋ฅผ ๊ฒ์ํฉ๋๋ค. ๋๋ฒ์งธ - Windows ์ธ๋ฑ์. ๋นํ์ฑํ๋์ง ์์์ผ๋ฉฐ ๋ฐฐํฌ ํ๋ก์ธ์ค ์ค์ ๋น๋ ์์ด์ ํธ์์ ๋ชจ๋ ๊ฒ์ด ์ค์๊ฐ์ผ๋ก ์ธ๋ฑ์ฑ๋์์ต๋๋ค.
์ธ ๋ฒ์งธ - Npm ์ค์น. ๋๋ถ๋ถ์ ํ์ดํ๋ผ์ธ์์ ์ฐ๋ฆฌ๋ ์ด ์ ํํ ์๋๋ฆฌ์ค๋ฅผ ์ฌ์ฉํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ ์ฌ๋์ ์ ๋์๊ฐ์? Npm ์ค์น ์ ์ฐจ๋ ์ข ์์ฑ ํธ๋ฆฌ๊ฐ ํ์ฑ๋ ๋ ์คํ๋ฉ๋๋ค. ํจํค์ง ์ ๊ธ.json, ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํจํค์ง ๋ฒ์ ์ด ๊ธฐ๋ก๋ฉ๋๋ค. ๋จ์ ์ Npm ์ค์น๊ฐ ๋งค๋ฒ ์ธํฐ๋ท์์ ์ต์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ๋๋ค.
๊ฐ๋ฐ์๋ ๋๋๋ก ํน์ ๋ถ๋ถ์ด๋ ์ ์ฒด ํ๋ก์ ํธ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ํ ์คํธํ๊ธฐ ์ํด ๋ก์ปฌ ์ปดํจํฐ์์ ์คํํฉ๋๋ค. ๋๋ก๋ ๋ชจ๋ ๊ฒ์ด ํ์ง์์ ๋ฉ์ง๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ง๋ง ์กฐ๋ฆฝํ๊ณ ์ถ์ํ์ง๋ง ์๋ฌด๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ํ์ ํ๊ธฐ ์์ํฉ๋๋ค. ์, ์ข ์์ฑ์ด ์๋ ๋ค์ํ ๋ฒ์ ์ ํจํค์ง์ ๋๋ค.
๊ฒฐ์
- AV ์์ธ์ ์์ค.
- ์ธ๋ฑ์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
- ์ด๋ npm ci.
npm ci์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ํ ๋ฒ ์์งํฉ๋๋ค., ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์์๊ฒ ์ ๊ณตํ ๊ธฐํ๋ฅผ ์ป์ต๋๋ค ํ์ฌ ํจํค์ง ๋ชฉ๋ก, ์ํ๋ ๋งํผ ํ์ง์์ ์คํํ ์ ์์ต๋๋ค. ์ด๊ฒ ์๊ฐ ์ ์ฝ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ์.
๊ตฌ์ฑ
์ด์ ์ ์ฅ์ ๊ตฌ์ฑ์ ๋ํด ์กฐ๊ธ ์ค๋ช ํฉ๋๋ค. ์ญ์ฌ์ ์ผ๋ก ์ฐ๋ฆฌ๋ Nexus ๋ค์์ ํฌํจํ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ด๋ฆฌ์ฉ ๋ด๋ถ REPO. ์ด ๋ด๋ถ ์ ์ฅ์์๋ ์์ฒด ์์ฑ ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ ๋ด๋ถ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ์ฌ์ฉํฉ๋๋ค NuGet, ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์์ ๋นํด ์บ์ฑ์ด ๋ ์ข๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฒฐ๊ณผ
๋น๋ ์์ด์ ํธ๋ฅผ ์ต์ ํํ ํ ํ๊ท ๋น๋ ์๊ฐ์ด 12๋ถ์์ 7๋ถ์ผ๋ก ๋จ์ถ๋์์ต๋๋ค.
Windows์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์์ง๋ง ์ด ํ๋ก์ ํธ์์ Linux๋ก ์ ํํ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ๊ณ์ฐํ๋ฉด ์ฝ $10๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค. ์ด๋ ๋ผ์ด์ผ์ค ๋น์ฉ๋ง ์ ์ฝํ ๊ธ์ก์ด๊ณ ์ฝํ ์ธ ๋ฅผ ๊ณ ๋ คํ๋ฉด ๊ทธ ์ด์์ ๋๋ค.
๊ณํ
๋ค์ ๋ถ๊ธฐ์๋ ์ฝ๋ ์ ๋ฌ ์ต์ ํ ์์ ์ ๊ณํํ์ต๋๋ค.
์ฌ์ ๋น๋๋ Docker ์ด๋ฏธ์ง๋ก ์ ํ. TFS๋ Docker ์ด๋ฏธ์ง์ ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ ์ด์ ๋ธ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ํ์ดํ๋ผ์ธ์ ํตํฉํ ์ ์๋ ๋ง์ ํ๋ฌ๊ทธ์ธ์ด ํฌํจ๋ ๋ฉ์ง ๊ธฐ๋ฅ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋์ผํ ํธ๋ฆฌ๊ฑฐ์ ๋ํด ์ด ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ํจํค์ง ์ ๊ธ.json. ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ตฌ์ฑ ์์์ ๊ตฌ์ฑ์ด ์ด๋ป๊ฒ๋ ๋ณ๊ฒฝ๋๋ฉด ์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. ๋์ค์ ์กฐ๋ฆฝ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ง๊ธ์ ๊ทธ๋ ์ง ์์ง๋ง, ์ฐ๋ฆฌ ํ์ฌ์์ ํ๋ฐํ ๊ฐ๋ฐ ์ค์ด๊ณ ์ค๋ซ๋์ ํ๋ก๋์ ์๋ฃจ์ ์ ์ ๊ณตํด ์จ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ก ์ ํํ ์์ ์ด๋ค.
๊ฐ์
๋๋ ๋ชจ๋์๊ฒ ์๋์ฐ๋ฅผ ๋ฒ๋ฆฌ๋ผ๊ณ ๊ถ์ ํ์ง๋ง, ์๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ์๊ฐ ์๋๋ค. ๊ทธ ์ด์ ๋ ๋๋ถ๋ถ์ ์คํ์์ค ์๋ฃจ์ ์ด ๋ฆฌ๋ ์ค ์คํ. ๊ด์ฐฎ์ผ์ธ์ ์์์ ์ ์ฝํ๋ค. ์ ์๊ฐ์๋ ๋ฏธ๋๋ ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ถ Linux ๊ธฐ๋ฐ ์คํ ์์ค ์๋ฃจ์ ์ ๋ฌ๋ ค ์์ต๋๋ค.
Alexander Sinchinov์ ์ฐ์ฌ ํ๋กํ
DevOps ํ์ ์ ๋ฌธ๊ฐ์ ์ํ ์ ๋ฌธ๊ฐ๋ฅผ ์ํ ๊ฐ๋ฐ, ํ ์คํธ, ์ด์ ํ๋ก์ธ์ค์ ํตํฉ์ ๊ดํ ์ปจํผ๋ฐ์ค์ ๋๋ค. ๊ทธ๋์ ์๋ ์ฐ๋๊ฐ ๋งํ ํ๋ก์ ํธ๋ ๋ฌด์์ ๋๊น? ๊ตฌํ๋์ด ์๋ ์ค์ด๋ฉฐ ๊ณต์ฐ ๋น์ผ ๋ ๋ฒ์ ์ฑ๊ณต์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ์์์ต๋๋ค. ~์RIT++์ DevOps ์ปจํผ๋ฐ์ค 27์ 28์ผ๊ณผ XNUMX์ผ์๋ ์ค๋ฌด์๋ค์๊ฒ์ ๋น์ทํ ์ฌ๋ก๊ฐ ๋ ๋ง์ด ๋์ฌ ์์ ์ด๋ค. ๋ง์ง๋ง ๊ฐ์ฐจ์ ํ์นํ ์ ์์ผ๋ฉฐ๋ ํฌํธ๋ฅผ ์ ์ถํ๋ค ์๋๋ฉด ์๊ฐ์ ๊ฐ๊ณ์์ฝํ๋ค ํฐ์ผ. Skolkovo์์ ๋ง๋๋ณด์ธ์!
์ถ์ฒ : habr.com