์ปค์คํ ๋ฐํ์์ ์ฌ์ฉํ๋ฉด ์ง์๋๋ ๊ฐ๋ณํ ํ๊ฒฝ ์ธ์ด์ ๋์ฒด ๊ตฌํ์ ์ฌ์ฉํ๊ฑฐ๋ Google์์ ์ ๊ณตํ๋ ์ธ์ด๋ฅผ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค. ๋ํ ๋ค์ด์ค๋ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ค๋ฅธ ์ธ์ด๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค(์์). ์ปค์คํ ๋ฐํ์์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ณํ ํ๊ฒฝ์ ํ์ฅ, ๋ชจ๋ํฐ๋ง, ๋ถํ ๋ถ์ฐ ์ธํ๋ผ๋ฅผ ์ ๊ณต ๋ฐ ๊ด๋ฆฌํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋์ ์ง์คํ ์ ์์ต๋๋ค.
์ปค์คํ ๋ฐํ์์ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- App Engine์๋ํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํ์ ๊ตฌ์ฑ์ ์ค๋ช
ํ๋
app.yaml
ํ์ผ์ ์ ๊ณตํฉ๋๋ค. - ๋ฐํ์ ํ๊ฒฝ์ ๋ด๋ถ์ ์ผ๋ก ๊ตฌ์ฑํ๋
Dockerfile
์ ์ถ๊ฐํฉ๋๋ค. - ์ฝ๋๊ฐ ์ผ๋ถ ๊ธฐ๋ณธ ๊ท์น์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
app.yaml
ํ์ผ ์ ๊ณต
app.yaml
๊ตฌ์ฑ ํ์ผ์๋ ์ ์ด๋ ๋ค์ ์ค์ ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
runtime: custom
env: flex
์ฑ์ ์ค์ ํ ์ ์๋ ๋ค๋ฅธ ํญ๋ชฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ app.yaml๋ก ์ฑ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
Dockerfile ๋ง๋ค๊ธฐ
Docker ์น์ฌ์ดํธ์์ Dockerfile ๋ง๋ค๊ธฐ์ ๋ํ ์ข ํฉ ๋ฌธ์๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ปค์คํ ๋ฐํ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์ฒด ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๊ฑฐ๋ Google์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ์ฌ๋ถ๋ฅผ Dockerfile์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ง์
Dockerfile์์ ์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ๋ FROM
๋ช
๋ น์ด์
๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์ฒด ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ฑฐ๋ DockerHub์ ๊ฐ์ Container Registry์์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
Dockerfile ์ฐพ๊ธฐ
์ผ๋ฐ์ ์ผ๋ก Dockerfile ์ด๋ฆ์ ํญ์ Dockerfile
์ด๋ฉฐ ํด๋น app.yaml
ํ์ผ๊ณผ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ํ์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋๊ตฌ ํ๊ฒฝ์ ์๊ตฌ ์ฌํญ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Maven, Gradle, Eclipse, IntelliJ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ Cloud SDK ๊ธฐ๋ฐ ์๋ฐ ๋๊ตฌ๋ Dockerfile
์ด src/main/docker/Dockerfile
์ ์๊ณ app.yaml
ํ์ผ์ด src/main/appengine/app.yaml
์ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋๊ตฌ ํ๊ฒฝ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฝ๋ ๊ตฌ์กฐ
์ด ์น์ ์์๋ Google ์ ๊ณต ๊ธฐ๋ณธ ์ด๋ฏธ์ง ๋๋ ์ฌ์ฉ์์ ๊ณ ์ ํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ฌ์ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฝ๋์์ ๊ตฌํ๋์ด์ผ ํ๋ ๋์์ ์ค๋ช ํฉ๋๋ค.
ํฌํธ 8080์ผ๋ก ์์ ๋๊ธฐ
App Engine ํ๋ฐํธ ์๋๋ ๋ค์ด์ค๋ ์์ฒญ์ ๊ฒฝ๋ก๋ฅผ ํฌํธ 8080์ ์ ํฉํ ๋ชจ๋๋ก ์ง์ ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๊ฐ 8080์์ ์์ ๋๊ธฐ ์ค์ธ์ง ํ์ธํด์ผ ํฉ๋๋ค.
์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ
๊ฐ๋ณํ ํ๊ฒฝ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ๋ฅผ ์ ์กํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ
์ธ์คํด์ค๋ฅผ ์ข
๋ฃํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ก ์ถ๊ฐ๋๋ ์์ฒญ์ ๋ค๋ฅธ ์ธ์คํด์ค(์๋ ๊ฒฝ์ฐ)๋ก ๋ผ์ฐํ
๋๊ณ ํ์ฌ ์ฒ๋ฆฌ ์ค์ธ ์์ฒญ์ ์๋ฃํ ์ ์๋ ์๊ฐ์ด ์ ๊ณต๋ฉ๋๋ค. ์ธ์คํด์ค๋ฅผ ์ข
๋ฃํ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ณํ ํ๊ฒฝ์ ์ฑ ์ปจํ
์ด๋์ STOP
(SIGTERM
) ์ ํธ๋ฅผ ์ ์กํฉ๋๋ค. ์ฑ์ด ์ด ์ด๋ฒคํธ์ ์๋ตํ ํ์๋ ์์ง๋ง ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๊ธฐ ์ ์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ์ ๋ฆฌ ์์
์ ์ํํ ์ ์์ต๋๋ค. ์ ์ ์กฐ๊ฑด์์ ์์คํ
์ ์ฑ์ด ์ค์งํ ๋๊น์ง ์ต๋ 30์ด๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ์ธ์คํด์ค ์ข
๋ฃ ์งํ KILL
(SIGKILL
) ์ ํธ๋ฅผ ์ ์กํฉ๋๋ค.
๋๋ฌผ์ง๋ง ์ค๋จ์ผ๋ก ์ธํด App Engine์์ 30์ด ์ข
๋ฃ ์๊ฐ์ ์ ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค. ์ด๋ ์ธ์คํด์ค๊ฐ ์ข
๋ฃ๋๊ธฐ ์ ์ STOP
๋ฐ KILL
์ ํธ๊ฐ ์ ์ก๋์ง ์์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ด ์บ์๋ก ์ฌ์ฉํด์ ์ธ์คํด์ค ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ฌํด์ผ ํฉ๋๋ค.
์ํ ํ์ธ ์์ฒญ
์ ๊ธฐ์ ์ธ ์ํ ํ์ธ ์์ฒญ์ ํตํด VM ์ธ์คํด์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐฐํฌ๋์๋์ง ํ์ธํ๊ณ ์คํ ์ค์ธ ์ธ์คํด์ค๊ฐ ์ ์ ์ํ๋ก ์ ์ง๋๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ปค์คํ ๋ฐํ์ ๋น๋ ํ ๋ฐฐํฌ
app.yaml
๋ฐ DOCKER
ํ์ผ์ ๊ตฌ์ฑํ ํ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ App Engine์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๋๋ Artifact Registry์ ์ ์ฅ๋ ์ปค์คํ ๋ฐํ์์ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Cloud Build๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋น๋ํ ํ ํด๋น ์ด๋ฏธ์ง๋ฅผ Artifact Registry์ ์ ์ฅํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด๋ฏธ์ง ๋ด๋ณด๋ด๊ธฐ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Google Cloudํตํฉ
์ปค์คํ ๋ฐํ์์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Google Cloud ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud ์๋น์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ปค์คํ ๋ฐํ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ค API๋ฅผ ํตํด ๋ชจ๋ ํ์ฌ ์๋น์ค๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Google Cloud ์๋น์ค๋ก ์ธ์ฆ
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ Google API๋ฅผ ์ธ์ฆ ๋ฐ ํธ์ถํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์์ Docker ์ด๋ฏธ์ง ์ปดํ์ผ์ ์ํด Cloud Build๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ cloudbuild
๋คํธ์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํธ์คํธํ์ฌ ์ฐ๊ด๋ Google Cloud ์๋น์ค๊ฐ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ์ฐพ์ ์ ์๊ฒ ํฉ๋๋ค.
์ธ์ฆ์ ๋ํ ์์ธํ ๋ด์ฉ์ Google์์ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
๋ก๊น
App Engine์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ์ด ์ ์ก๋๋ฉด ์์ฒญ๊ณผ ์๋ต ์ธ๋ถ์ ๋ณด๊ฐ ์๋์ผ๋ก ๋ก๊น ๋๋ฉฐ, Google Cloud ์ฝ์ ๋ก๊ทธ ํ์๊ธฐ์์ ์ด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ์์ฒญ ์ฒ๋ฆฌ ์ stdout
๋ฐ stderr
์ ๊ณ ์ ํ ๋ก๊น
๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ํ์ผ์ ์๋์ผ๋ก ์์ง๋๋ฉฐ ๋ก๊ทธ ํ์๊ธฐ์์ ๋ณผ ์ ์์ต๋๋ค. ํฌ๊ธฐ๋ฅผ ์ ํํ๊ธฐ ์ํด stdout
๋ฐ stderr
์ ๋ํ ์ต์ ํญ๋ชฉ๋ง ์ ์ง๋ฉ๋๋ค.
.log
๋๋ .json
์ผ๋ก ๋๋๋ ํ์ผ์ ์ฌ์ฉํ์ฌ /var/log/app_engine/custom_logs
์ ์ปค์คํ
๋ก๊ทธ๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์ด๋์ ์๋ ํํฐ ์์ด์ ํธ๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ stdout
๋ฐ stderr
๋๋ ์ปค์คํ
๋ก๊ทธ์ ๋ก๊น
ํ๋๋ก ์์ด์ ํธ๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ฌํ ์์ด์ ํธ๋ก ์ธํด ์์ฑ๋ ์ค๋ฅ๊ฐ Cloud Logging์ ํ์๋ฉ๋๋ค.
์ฑ์ ์์ฒญ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ๋ Cloud Logging ์์ด์ ํธ์์ ์์ง๋๋ฉฐ ์ต๋ 1GB ํฌ๊ธฐ๋ก ์ต๋ 90์ผ ๋์ ๋ณด๊ด๋ฉ๋๋ค. ๋ก๊ทธ๋ฅผ ์ฅ๊ธฐ๊ฐ ์ ์ฅํ๊ฑฐ๋ 1GB๋ณด๋ค ํฐ ํ์ผ๋ก ์ ์ฅํ๋ ค๋ฉด Cloud Storage๋ก ๋ก๊ทธ๋ฅผ ๋ด๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ๋ํ ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ก๊ทธ๋ฅผ BigQuery ๋ฐ Pub/Sub๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋ก๊ทธ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ผ๋ถ ๋ก๊ทธ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๋ก๊ทธ ์ด๋ฆ | ํ์ด๋ก๋ ์ ํ | ๋ชฉ์ |
---|---|---|
crash.log |
ํ ์คํธ | ์ค์ ์ด ์คํจํ ๋ ๊ธฐ๋ก๋๋ ์ ๋ณด์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋์ง ์์ผ๋ฉด ์ด ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค. |
monitoring.* |
ํ ์คํธ | Cloud Monitoring์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ Docker ์ปจํ ์ด๋์ ์ ๋ณด์ ๋๋ค. |
shutdown.log |
ํ ์คํธ | ์ข ๋ฃ ์ ๊ธฐ๋ก๋๋ ์ ๋ณด์ ๋๋ค. |
stdout |
ํ ์คํธ | ์ฑ์ ํ์ค ์ถ๋ ฅ์ ๋๋ค. |
stderr |
ํ ์คํธ | ์ปจํ ์ด๋์ ํ์ค ์ค๋ฅ์ ๋๋ค. |
syslog |
ํ ์คํธ | Docker ์ปจํ ์ด๋ ์ธ๋ถ์ VM syslog์ ๋๋ค. |