์์ ์ GCP ( Google Cloud Platform )์์๋ Cloud Repository ์ push๋ฅผ ํ๋ฉด Cloud Pub/Sub์ผ๋ก ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐ ํด์ฃผ๋ ๋น๊ณต์ ๊ธฐ๋ฅ์ด ์์๋ ์ ์ด ์์๋ค.
์๋
์ด๋ง๋์ฏค ๊ทธ ๊ธฐ๋ฅ์ด ์์ด์ ธ์ Google์ ๋ฌธ์๋ฅผ ํ์ ์ด ์์๋ค.
๋น์์ ๋ต๋ณ์ ํด๋น ๊ธฐ๋ฅ์ ๋น๊ณต์ ๊ธฐ๋ฅ์ด๊ณ ์ญ์ ๋์๋ค๋ ๋ต๋ณ์ ๋ฐ๊ณ ์ข์ ์ ํ์ ์ด ์๋ค.
ํ์ง๋ง, ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ ๊ธฐ๋ฅ์ ๋ถํ์ ํ๋ค.
์ฐ์ ๊ฐ๋ตํ ์คํ ์ ์ค๋ช ํ์๋ฉด.
๋์ถฉ ์ด๋ฐ ์คํ ์ด๋ค. ์๋ฅผ๋ค๋ฉด ๋จ์ํ ์์ค๋ฅผ ํธ์ฌํ๋๊ฒ๋ง์ผ๋ก ์๋๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ํ์์ด ์ฑ์์ง์์๋ง ๊ฐ๋ฅํ๋ค๋ฉด, ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ผญ ์ฑ์์ง์ด ์๋๋ผ, Compute Engine ์ผ๋ก๋ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค. ๊ทธ ์ธ์๋ ์ฌ๋์ด๋ ๋ค์ํ ์ฐ๋์ด ๊ฐ๋ฅํ๋ค.
ํ์ฉ์ ๊ฐ์ ํ๋๋ก ํ๊ณ , ์ฐ์ ๋ฐฉ๋ฒ์... ๋งค์ฐ ์ฌํํ๋ค. ์์ ํฌ์คํ
์ ์ฐธ๊ณ ํ์ฌ ์ค๋ช
ํ๋๋ก ํ๋ค.
( ์ด์ ํฌ์คํ
: https://steemit.com/kr/@calmlake79/google-app-engine-git )
์ฐ์ Cloud Pub/Sub์ ๋ํด์์๋ณด์.
Cloud Pub/Sub์ ์คํธ๋ฆผ์ ์ด์ฉํ์ฌ ์๋ฒ๊ฐ์ ๊ฐ๋จํ ๋ฉ์์ง ์ ๋ฌ์ ์ํ ๋๊ตฌ์ ๋๋ก ์ดํดํ๋ฉด ๋๋ค.
์์ธํ ์ค๋ช
์ ๋งํฌ( https://cloud.google.com/pubsub/ ) ์ ์์ผ๋ฉฐ, ๊ฐ์ธ์ ์ผ๋ก ํํํ๊ธฐ์๋ ์ผ์ข
์ ์๋ฒ๊ฐ์ ์ฑํ
์ ์ํ ๊ฐ๋จํ ํต์ ์์คํ
์ ๋๋ก ์ค๋ช
์ ํ๊ณค ํ๋ค.
์๋ฅผ๋ค์ด์ ํ ์๋ฒ๊ฐ ์๋ก ์ธ์คํด์ค๊ฐ ์ฌ๋ผ์ฌ๋ "๋ ๋ถํ
ํ์ด!" ๋ผ๊ณ ๋ค๋ฅธ ์๋ฒ์๊ฒ ์๋ ค์ค๋ Cloud Pub/Sub์ ์ด์ฉํ๋ฉด ํธ๋ฆฌํ๋ค.
์์ ์๋ Cloud Storage์ ์ด๋ฏธ์ง๊ฐ ์๋ก ์ฌ๋ผ์ค๊ฑฐ๋ ์ญ์ ๋ ๋,์์ ๋ ๋ ์๋ฆฌ๋ ๋ฐฉ๋ฒ๋ ์ฐ๊ธฐ๋ ํ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Cloud Pub/Sub์ Cloud Function๊ณผ ๋งค์ฐ ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ทธ๋์ ๋์ฑ๋ ํ์ฉ๋๊ฐ ๋๋ค.
์ฐ์ ์์ฃผ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์.
๊ตฌ๊ธ์ gcloud ์ปค๋งจ๋๋ผ์ธ์ ํ์ฉํ์ฌ ๋ณด์.
์ฐ์ pub/sub์ ํ๋์ ์ฃผ์ ( topic )์ ๋ง๋ค๊ณ ๊ทธ ์ฃผ์ ์๋ ๊ตฌ๋
( subscription ) ์ ๋ฑ๋กํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ฒ ๋๋ค.
์ฐ์ ์ ํ๋์ ์ฃผ์ ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
gcloud pubsub topics create newTopic
์์ ๋ช ๋ น์ด๋ newTopic ๋ผ๋ ์๋ก์ด ์ฃผ์ ๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
๊ทธ ๋ค์์๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ ์ ์์ฑํด์ผ ํ๋ค.
gcloud pubsub subscriptions create --topic newTopic mySubscription
์์ ๋ช ๋ น์ด๋ newTopic ์ด๋ผ๋ ์ฃผ์ ์๋์ mySubscription ์ด๋ผ๋ ์๋ก์ด ๊ตฌ๋ ์ ๋ฑ๋กํ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์์ผ๋ก newTopic ์ผ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ๋ฉ์ธ์ง๋ mySubscription ์์ ๋ฐ์ ์์๊ฒ ๋๋ค.
๊ทธ๋ผ ํ ์คํธ๋ฅผ ๊ฐ๋จํ ํด๋ณด์.
gcloud pubsub topics publish newTopic --message "hi"
์ด์ ๊ฐ์ด ํ๋ฉด newTopic ์ผ๋ก hi ๋ผ๋ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋๊ฒ ๋๋ค.
๊ทธ๋ผ ๋ฐ๋๊ฑธ ํ ์คํธ๋ ์ด๋ป๊ฒ ํ ๊น?
gcloud pubsub subscriptions pull --auto-ack mySubscription
์์ ๊ฐ์ด ํ๋ฉด ํด๋น ๋ฉ์์ง๋ฅผ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
์ ์ด๊ฑธ ์ด์ฉํ๊ณ , ์ด์ ํฌ์คํธ๋ฅผ ์ฐธ์กฐํด์ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ํ๋ค.
app.yaml ์ ์ญ์ ํ๋ค.
์ฌ๊ธฐ์๋ ์ ํ ํ์๊ฐ ์์ผ๋ฏ๋ก,
cloudbuild.yaml ์ ์์ ํ๋ค.
๋ฑ ๋๊ฐ์ง..๊ฐ๋จํ๋ค.
๋ฌผ๋ก ๋ท๋จ์ pub/sub์ ํ๊ฑฐ๋ ๋ฑ๋ฑ์ ํด์ผ ํ์ง๋ง... ๊ทธ๊ฑด ๋ ๋ค์ ๊ธฐํ์..
cloudbuild.yaml ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
์์ ์ฝ๋์์ ์์์ด ๊ฐ๋ฅํ๊ฒ ์ง๋ง,
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- pubsub
- topics
- publish
- newTopic
- --message=hi
์ด์ ๊ฐ์ด ์์ ์ ํ๋ค git push ๋ฅผ ํ๋ฉด ๋๋ค.