์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํ๋ฉด์๋ ๊น๋ค๋ก์์ก์ต๋๋ค. ์ด ๋ฌธ์์์๋ ์๋ฐ ๊ฐ๋ฐ์๊ฐ DevOps ๋ฐฉ์์ ์์ํ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ๋จ๊ณ๋ณ ์ ์ฐจ๋ฅผ ์๋ดํฉ๋๋ค. ์ ๋๋ก ์์ ํ ๋ชฉ๋ก์ด ์๋๋๋ค. ์ฌ๊ธฐ์ ์ ์ํ๋ ์์ด๋์ด์ ๋๋ถ๋ถ์ ๊ถ์ฅ์ฌํญ์ ๋ํ์ฌ ๋ ํญ๋์ ๊ฐ์๋ฅผ ์ ๊ณตํ๋ DORA DevOps ์ฐ๊ตฌ ๋ฐ ํ๊ฐ ์ฐ๊ตฌ์์ ๊ฐ์ ธ์์ต๋๋ค. ๊ธฐํ ์ถ์ฒ๋ก๋ ๋์ฝ ํฌ์ค๊ทธ๋ ๋ฐ์ฌ, ์ ์ฆ ํ๋ธ, ์ง ํด์ Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations๊ณผ ํ์ดํฐ์ค ์ํฐ์ค, ํฐ ๋งจ์๋ , ํ์ด๋ผ ๋ผ์ดํธ๊ฐ ํ๋ ์ดํธํ Software Engineering at Google์ด ์์ต๋๋ค.
์ด ๋ฌธ์๋ฅผ ์ฝ๊ธฐ ์ ์ ์๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ๋จผ์ ์ฝ์ด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ๋ฐ ์กฐ์ง๋ง๋ค ๋์ฆ๋ ๊ณ ์ ํ์ง๋ง ๋ค์ ๊ธฐ์ ์คํ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์์คํ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
| ์ํ ๊ธฐ์ ์คํ 1 | ์ํ ๊ธฐ์ ์คํ 2 |
|---|---|
|
|
์ด๋ฌํ ๊ตฌ์ฑ์์๋ก ๋น๋๋ ์์คํ ์ ์ฌ์ฉํ๋ฉด ํ์ง ๋ฐ ์ฃผ๊ธฐ ์๊ฐ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ํ ์ต์ ๋ฒ๊ทธ ์์ ๊ณผ ๋ณด์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ ์ ์์ต๋๋ค.
๋ฒ์ ์ ์ด
์ฐ๊ตฌ (17ํ์ด์ง, 14ํ์ด์ง, 31ํ์ด์ง, 60ํ์ด์ง)์ ๋ฐ๋ฅด๋ฉด ์์ค ์ฝ๋์ฉ ๋ฒ์ ์ ์ด๋ ์๋ํ ๋ฐ ํ ์คํธ์ ๊ฒฐํฉํ์ฌ ํ์ง ํฅ์์ ๋น๋กฏํ ์ฌ๋ฌ๊ฐ์ง ์ด์ ์ ์์ธกํฉ๋๋ค.
- Cloud Source Repositories[๋น ๋ฅธ ์์]์ ์์ค ์ฝ๋๋ฅผ ์ํ ๋ฌด๋ฃ Git ์ํฌํ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Artifact Registry[์ปจํ ์ด๋] [Java ํจํค์ง] ๋ ๋น๋๋ Java ์ํฐํฉํธ๋ฅผ ์ ์งํ๊ธฐ์ ์ข์ ์์น์ ๋๋ค.
GitHub, Gitlab, Bitbucket๋ ์์ค ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๊ธฐ์ ์ ํฉํฉ๋๋ค.
์๋ํ๋ ํ ์คํธ
ํ ์คํธ ์๋ํ๋ ์ด๋ฌํ ๊ธฐ๋ฒ ๋๋ถ๋ถ์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ ๋งค์ฐ ์ค์ํ ์ ์์ต๋๋ค. ํ ์คํธ ๊ถ์ฅ์ฌํญ์ ๋ํ ์์ธํ ๋ด์ฉ์ SRE Book์ ์์ ์ฑ ํ ์คํธ(Testing for Reliability) ์ฅ๊ณผ Google ํ ์คํธ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฐ ๊ฐ๋ฐ์์ ์ฃผ๋ ๊ด์ฌ์ฌ๋ ์๋ํ๋ ๋จ์ ํ ์คํธ ๋ฐ ํตํฉ ํ ์คํธ์ ๋๋ค. JUnit, Spring ํ ์คํธ, Apache Maven Surefire, Gradle ์๋ฐ ํ ์คํธ๋ ์๋ฐ ๊ฐ๋ฐ์์๊ฒ ์ ์ฉํ ๋ฆฌ์์ค์ ๋๋ค.
์ง์์ ํตํฉ/๋ฐฐํฌ ์๋ํ
์ง์์ ํตํฉ ๋ฐ ๋ฐฐํฌ ์๋ํ๋ ์ต์ DevOps ์์ ์ ์ง์ํฉ๋๋ค. ์ ์, ํ ์คํธ, ๋ฐฐํฌ
- Cloud Build [๋น ๋ฅธ ์์] [Java ๊ด๋ จ] [๋ฐฐํฌ] [ํธ๋ฆฌ๊ฑฐ] ๋ ๋๋ถ๋ถ์ ์์ ์ ์ฝ๊ฒ ๋ง์ถค์ค์ ํ ์ ์๋ ๋ฌด๋ฃ (120 ๋น๋ ๋ถ / ์ผ) ๋๋ ์ ๋น์ฉ์ ๊ฐํธํ ๋น๋ ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
- Tekton์ ์์คํ ์ ๋ง๊ฒ Cloud Build ์์ด๋์ด๋ฅผ ์กฐ์ ํ ์ ์๋ ์คํ์์ค ํ๋ก์ ํธ์ ๋๋ค.
- Spinnaker๋ ์คํ์์ค, ๋ฉํฐ ํด๋ผ์ฐ๋ ์ง์์ ๋ฐฐํฌ ํ๋ซํผ์ผ๋ก, ์ํํธ์จ์ด ๋ณ๊ฒฝ์ฌํญ์ ํ์ ์ ๊ฐ์ง๊ณ ์ ์ํ๊ฒ ์ถ์ํ๋๋ก ๋์์ค๋๋ค. ๋ณต์กํ ์ํํธ์จ์ด ์์คํ ์ ์ถ์ํ๊ณ ๋กค๋ฐฑํ๋ ํ๋ก์ธ์ค๋ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- GitHub์ ์์ ์ ํ ์คํธ๋ฅผ ์ค์ ํ๊ณ GitHub์์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ ํํฐ ์๋ฃจ์ ์ ๋๋ค.
- Gitlab, Circle CI, Travis CI ๋ฑ ๋ค๋ฅธ ์๋ฃจ์ ๋ ์์ต๋๋ค.
Cloud ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Google ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์ ํธ๋๋ ๋ฐฉ๋ฒ์ Cloud ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ง์ ์๋ด๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ ๋๋ค. Java์ ๊ฒฝ์ฐ Libraries-BOM์ ์ฌ์ฉํ๋ฉด ๊ฐ ์ํฐํฉํธ์ ํธํ ๊ฐ๋ฅํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ฒด ๋ฒ์ ์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ํธํ๋์ง ์๋ ์ํฐํฉํธ๊ฐ ์ ํ๋ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ๋ค์ด์๋ชฌ๋ ์ข ์ ํญ๋ชฉ ๋ฌธ์ ๋ผ๊ณ ํฉ๋๋ค. ๊ฐ๋ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณ์ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ํ ๋ฒ์ ํ๋์ฉ ์ ๋ฐ์ดํธํ๊ณ ํ ์คํธํ์ฌ ์ ๋ฐ์ดํธ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํฉ๋๋ค. ์ต์ ๋ฒ์ ์ ์ด ํ์ด์ง์ ํญ์ ๋์ด๋์ด ์๊ฑฐ๋ Maven-Central์ ๊ฒ์ํ์ฌ ์ต์ ๋ฒ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
์ข ์ ํญ๋ชฉ์ ์ต์ ์ํ๋ก ์ ์ง
์ ์์ ํ์์๋ก๋ถํฐ ๋ณดํธํ๋ ค๋ฉด ์ข ์ ํญ๋ชฉ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋์์ด ๋๋ ์ฌ๋ฌ ๊ฐ์ง ์ 3์ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ๋ฉด ์ข ์ ํญ๋ชฉ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ ํ ์คํธ์ ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ๋ฅผ ๊ฒฐํฉํ๋ฉด ํ๋ฆ์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
- ์ข ์ ํญ๋ชฉ ์๋ํ๊ฐ ์์ค ์ ์ด์ ๋ณ๊ฒฝ์ ์ ์ํฉ๋๋ค.
- ์ง์์ ๋น๋ ์์คํ ์ด ๋ณ๊ฒฝ์ฌํญ์ ๋น๋ํ๊ณ ํ ์คํธํฉ๋๋ค.
- ์ฌ๋์ด ์ ์์ ๊ฒํ ํ๊ณ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ณ๊ฒฝ์ฌํญ๊ณผ ํจ๊ป ๋ณ๊ฒฝ์ ์๋ฝํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ด ์๋ฝ๋๋ฉด ์ง์์ ๋ฐฐํฌ ์์คํ ์์ ์ฝ๋๋ฅผ ํ๋ก๋์ ์ผ๋ก ์ถ์ํ๋๋ก ์ ์์ด ์์ฑ๋ฉ๋๋ค. (๋๋ ์ปค์คํ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.)
์ง์๋๋ ์๋ฐ ๋ฐํ์ ํ๊ฒฝ(JRE) ์ฌ์ฉ
์๋ฐ ๊ฐ๋ฐ ํคํธ์ ํ์ ์งํฉ์ธ JRE๋ ์ด์์ฒด์ ์์ ์์ผ๋ฉฐ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํ ์ํํธ์จ์ด์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ์ ๋ฐ์ดํธ, ๋ณด์, ๋ฒ๊ทธ ์์ ์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ก๋์ ์์ ์ต์ LTS ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ์ฝ๋๊ฐ ์ด์ JDK์ ๋ํด ์ปดํ์ผ๋๋ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ดํ JRE๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์ฌ๋ฌ JDK ๋ฒ์ ์ผ๋ก ์์ ํ๋ ๊ฒฝ์ฐ SDKMAN!์ ์ฌ์ฉํ๋ฉด ๋ค์ํ JDK ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋ ์ฌ์ฉ (Google Kubernetes Engine, Cloud Run, GKE ํด๋ฌ์คํฐ)
RenovateBot ๋๋ DependaBot์์ Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ด์์ ์ฃผ๊ธฐ์ ์ผ๋ก JRE ๋ฐ JDK์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํฉ๋๋ค. JDK์ JRE๋ฅผ ๋์ผํ ๋ฒ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Dockerfile์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ JRE๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ ๋น๋ํฉ๋๋ค.
Compute Engine ์ฌ์ฉ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
App Engine ๊ฐ๋ณํ ํ๊ฒฝ
์๋ฐ 8๋ง ์ง์ํฉ๋๋ค.
App Engine ํ์ค
์๋ฐ 8์์ ์๋ฐ 11๋ก App Engine ์ฑ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฐธ์กฐํ์ธ์.
์๋ฐ ๊ฐ๋ฐ ํคํธ์ LTS ๋ฒ์ ์ฌ์ฉ
JDK๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ๋๊ตฌ ๋ชจ์์ ๋๋ค. ์๋ก์ด ์ธ์ด ๊ธฐ๋ฅ์ ํน์ JDK์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ฅ๊ธฐ์ ์ง์(LTS)์ ํตํด ์ฌ์ฉ๋์ JDK์ ๊ณ ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ฉด ๋ค์ LTS ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ณ ์ ๋ ์ฃผ LTS ์ถ์ ๋ฒ์ ์ ์ต์ ๋ถ ์ถ์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ฉ์๋ JDK ๋ฐ JRE๋ฅผ ๋๊ธฐํ ์ํ๋ก ์ ์งํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๊ฒฝ์ฐ(์: JDK๊ฐ ๋ ์ด์ ์ง์๋์ง ์๋ ๊ฒฝ์ฐ) ์ดํ JDK๋ก ์ปดํ์ผํ๊ณ ์ด์ JRE์์ ์คํํด์ผ ํฉ๋๋ค.
Maven์ผ๋ก ์ด ์์ ์ ์ํํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ๋ฉํ ์ธ์ด ์์ค๊ณผ ๋์ JRE๋ฅผ ์ค์ ํฉ๋๋ค. pom.xml ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์
๋ฐ์ดํธํฉ๋๋ค(์๋ฐ 8์ ๊ฒฝ์ฐ).
xml
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
์๋ฐ 11๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
Gradle์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์๋ฐ 8์ฉ build.gradle ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์
๋ฐ์ดํธํฉ๋๋ค.
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
๋๋ ์๋ฐ 11์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
compileJava {
sourceCompatibility = 11
targetCompatibility = 11
}
์ฐธ๊ณ ๋ก ์๋ฐ 8 ์ด์ ๋ฒ์ ์์๋ ์๋ฐ 8 ์ดํ์ ์ญ์ ๋ 1. ํ๋ฆฌํฝ์ค(์๋ฐ 7์ ๊ฒฝ์ฐ 1.7, ์๋ฐ 8์ ๊ฒฝ์ฐ 1.8)๊ฐ ์์์ต๋๋ค.