CloudEvents(cloudevents.io)๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ์ค๋ช ํ ์ ์๋ ์ฌ์์ ๋๋ค. ์ด ์ฌ์์ CNCF(Cloud Native Computing Foundation)์ ์ํ๋ฉฐ CNCF์ ์๋ฒ๋ฆฌ์ค ์์ ๊ทธ๋ฃน๋ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Eventarc๋ HTTP ์์ฒญ์ ํตํด CloudEvents ํ์์ผ๋ก ์ด๋ฒคํธ ์์ ์์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
HTTP ์์ฒญ ํค๋
ํ๊ฒ ์๋น์ค๋ ์ด๋ฒคํธ ๋ผ์ฐํฐ์ ์ด๋ฒคํธ๋ฅผ CloudEvents ๋ฒ์ 1.0 HTTP ํ๋กํ ์ฝ ๋ฐ์ธ๋ฉ ์ฌ์์ผ๋ก ํ์์ด ์ง์ ๋ HTTP POST ์์ฒญ์ผ๋ก ์์ ํฉ๋๋ค. ๊ฐ HTTP ์์ฒญ์๋ ์ด๋ฒคํธ๋ณ ํค๋์ ๋ณธ๋ฌธ์ด ํฌํจ๋๋ฉฐ ์ด๋ฌํ ์์ฒญ์ ์๋น์ค์ ๊ธฐ์ค URL ๊ฒฝ๋ก(/
)๋ก ์ ์ก๋ฉ๋๋ค.
๋ค๋ฅธ HTTP ํค๋ ์ธ์๋ ๋ชจ๋ ์ด๋ฒคํธ์ ๋ค์๊ณผ ๊ฐ์ CloudEvents HTTP ํค๋๊ฐ ํฌํจ๋ฉ๋๋ค.
ํค๋ | ์ค๋ช | ์ |
---|---|---|
ce-id | ์ด๋ฒคํธ์ ๊ณ ์ ์๋ณ์์ ๋๋ค. | 1096434104173400 |
ce-source | ์ด๋ฒคํธ์ ์์ค๋ฅผ ์๋ณํฉ๋๋ค. | //pubsub.googleapis.com/projects/my-project/topics/my-topic |
ce-specversion | ์ด ์ด๋ฒคํธ์ ์ฌ์ฉ๋๋ CloudEvents ์ฌ์ ๋ฒ์ ์ ๋๋ค. | 1.0 |
ce-type | ์ด๋ฒคํธ ๋ฐ์ดํฐ์ ์ ํ์ ๋๋ค. | google.cloud.pubsub.topic.v1.messagePublished |
ce-time | RFC 3339 ํ์์ ์ด๋ฒคํธ ์์ฑ ์๊ฐ์ ๋๋ค(์ ํ์ฌํญ). | 2020-12-20T13:37:33.647Z |
HTTP ํ์ด๋ก๋ ํ์
Cloud ๊ฐ์ฌ ๋ก๊ทธ
google.cloud.audit.log.v1.written
์ ํ์ ์ด๋ฒคํธ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํค๋
ce-specversion: 1.0 ce-type: google.cloud.audit.log.v1.written ce-source: //SERVICE_NAME/projects/PROJECT_ID ce-id: MESSAGE_ID ce-time: PUBLISH_TIME Content-Type: application/json; charset=utf-8 Content-Length: CONTENT_LENGTH
SERVICE_NAME
: ์ด๋ฒคํธ๋ฅผ ์คํํ๋ ์๋น์ค์ Google API URI์ ๋๋ค(์: BigQuery์ ์ด๋ฒคํธ์ ๋ํbigquery.googleapis.com
).PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.MESSAGE_ID
,PUBLISH_TIME
,CONTENT_LENGTH
: ์์คํ ์์ ์์ฑํ๋ ๊ฐ์ ๋๋ค.
๋ณธ๋ฌธ
ํ์ด๋ก๋๋ Cloud ๊ฐ์ฌ ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์์ธํ ์ค๋ช
ํ๋ JSON ๊ฐ์ฒด์
๋๋ค. protoPayload
์์ resourceName
, serviceName
, methodName
๊ฐ์ ์ฐพ์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud ๊ฐ์ฌ ๋ก๊ทธ์ ์ด๋ฒคํธ ํํฐ ํ์ธ์ ์ฐธ์กฐํ์ธ์.
Pub/Sub
google.cloud.pubsub.topic.v1.messagePublished
์ ํ์ ์ด๋ฒคํธ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํค๋
ce-specversion: 1.0 ce-type: google.cloud.pubsub.topic.v1.messagePublished ce-source: //pubsub.googleapis.com/TOPIC ce-id: MESSAGE_ID ce-time: PUBLISH_TIME Content-Type: application/json; charset=utf-8 Content-Length: CONTENT_LENGTH
TOPIC
: ์ด๋ฒคํธ๊ฐ ๊ฒ์๋ Pub/Sub ์ฃผ์ ์ ๋๋ค.MESSAGE_ID
,PUBLISH_TIME
,CONTENT_LENGTH
: ์์คํ ์์ ์์ฑํ๋ ๊ฐ์ ๋๋ค.
๋ณธ๋ฌธ
ํ์ด๋ก๋๋ Pub/Sub ํธ์ ๋ฉ์์ง์
๋๋ค. data
ํ๋์์ ๋ฉ์์ง๋ฅผ Base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด๋ก ์ฐพ์ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์คํ์์ค ์ ์ฅ์
๋ชจ๋ ์ด๋ฒคํธ์ HTTP ๋ณธ๋ฌธ ๊ตฌ์กฐ๋ CloudEvents GitHub ์ ์ฅ์์์ ์ ๊ณตํฉ๋๋ค.
์ด ์ ์ฅ์์๋ ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ์ด ํฌํจ๋์ด ์์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก CloudEvents ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- CloudEvents ๋ฐ์ดํฐ ํ์ด๋ก๋์ฉ Google ํ๋กํ ์ฝ ๋ฒํผ
- ์์ฑ๋ JSON ์คํค๋ง
- ๊ณต๊ฐ JSON ์คํค๋ง ์นดํ๋ก๊ทธ
ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ๋ ํฌํจ๋ฉ๋๋ค.
์ผ๋ฐ ์ด๋ฒคํธ
ํ๋กํ ์ฝ ๋ฒํผ(๋๋ protobuf)๋ Eventarc์์ ์์ฑ๋๋ ์ด๋ฒคํธ ๋ด์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ ๋๋ค. CloudEvents์ ํ๋กํ ์ฝ ๋ฒํผ๋ ๋จธ์ ํ๋ ๊ฐ๋ฅ ์คํค๋ง๋ก ์ ๊ณต๋๋ฉฐ, ๋ฐ์ดํฐ ์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ด๋ฒคํธ๋ฅผ ๋ ์ฝ๊ฒ ์๋นํ ์ ์๊ฒ ํด์ค๋๋ค.
๋ชจ๋ ํน์ CloudEvent ์ ํ์๋ 2๊ฐ์ protobuf ๋ฉ์์ง๊ฐ ๊ด๋ จ๋์ด ์์ต๋๋ค.
- ํ๋๋ ํ์ฅ ์์ฑ์ ํฌํจํ์ฌ ์ ์ฒด CloudEvent๋ฅผ ๋ํ๋ด๋ ๋ดํฌ ๋ฉ์์ง์
๋๋ค(์:
AuditLogWrittenEvent
). - data ๋ฉ์์ง์
๋๋ค(์:
LogEntryData
๋๋StorageObjectData
).
StorageObjectData
๋ฅผ ๋ฐ์ดํฐ ๋ฉ์์ง๋ก ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๋ดํฌ ๋ฉ์์ง๋ proto ์ฃผ์์ ํตํด ์ฐ๊ฒฐ๋ CloudEvent ์ ํ์ ์ง์ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ protobuf ๋ฉ์์ง์ CloudEvent ์ ํ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์ ํ์์๋ ์ผ๋ถ ์ผ๋ฐ ์ด๋ฒคํธ์ ๊ตฌ์ฑ์์๋ฅผ ์์ธํ ์ค๋ช ํฉ๋๋ค.
Cloud ๊ฐ์ฌ ๋ก๊ทธ
Proto ํ์ผ | google/events/cloud/audit/v1/events.proto google/events/cloud/audit/v1/data.proto |
๋ดํฌ ๋ฉ์์ง | google.events.cloud.audit.v1.AuditLogWrittenEvent |
๋ฐ์ดํฐ ๋ฉ์์ง | google.events.cloud.audit.v1.LogEntryData |
์ด๋ฒคํธ ์ ํ (๊ฐ์ฌ ๋ก๊ทธ ํญ๋ชฉ์ด ์์ฑ๋ ๋) |
google.cloud.audit.log.v1.written |
์ด๋ฒคํธ ํ์ฅ |
|
์์ |
Pub/Sub ๊ฐ์ฌ ๋ก๊ทธ BigQuery ๊ฐ์ฌ ๋ก๊ทธ |
์ถ๊ฐ ์ ๋ณด |
Cloud ๊ฐ์ฌ ๋ก๊ทธ ์ด๋ฒคํธ์ Eventarc ํธ๋ฆฌ๊ฑฐ ๋ง๋ค๊ธฐ Cloud ๊ฐ์ฌ ๋ก๊ทธ์ ์ด๋ฒคํธ ํํฐ ํ์ธ ๊ฐ์ฌ ๋ก๊ทธ๊ฐ ์๋Google Cloud ์๋น์ค |
Cloud Storage
Proto ํ์ผ |
google/events/cloud/storage/v1/events.proto google/events/cloud/storage/v1/data.proto |
๋ดํฌ ๋ฉ์์ง | google.events.cloud.storage.v1.ObjectFinalizedEvent google.events.cloud.storage.v1.ObjectArchivedEvent google.events.cloud.storage.v1.ObjectDeletedEvent google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent |
๋ฐ์ดํฐ ๋ฉ์์ง | google.events.cloud.storage.v1.StorageObjectData |
๋ฆฌ์์ค |
Objects |
์ด๋ฒคํธ ์ ํ |
์ง์ ์ด๋ฒคํธ ์ ํ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์. |
์์ |
๋จ์ ๋ณต์ก |
์ถ๊ฐ ์ ๋ณด |
Cloud Storage ์ด๋ฒคํธ์ Eventarc ํธ๋ฆฌ๊ฑฐ ๋ง๋ค๊ธฐ Cloud Run ์๋น์ค์ Cloud Storage์์ ์ด๋ฒคํธ ์์ |
Firestore
Proto ํ์ผ |
google/events/cloud/firestore/v1/events.proto google/events/cloud/firestore/v1/data.proto |
๋ดํฌ ๋ฉ์์ง | google.events.cloud.firestore.v1.DocumentCreatedEvent google.events.cloud.firestore.v1.DocumentUpdatedEvent google.events.cloud.firestore.v1.DocumentDeletedEvent google.events.cloud.firestore.v1.DocumentWrittenEvent |
๋ฐ์ดํฐ ๋ฉ์์ง | google.events.cloud.firestore.v1.DocumentEventData |
๋ฆฌ์์ค |
Document
|
์ด๋ฒคํธ ์ ํ | ์ง์ ์ด๋ฒคํธ ์ ํ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์. |
์์ |
๋จ์ ๋ณต์ก |
์ถ๊ฐ ์ ๋ณด |
Firestore ์ด๋ฒคํธ์ Eventarc ํธ๋ฆฌ๊ฑฐ ๋ง๋ค๊ธฐ Eventarc ๋ฐ Firestore๋ก ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ ๋ง๋ค๊ธฐ Cloud Run ํจ์๋ก ํ์ฅํ์ฌ Firestore์ ๋ณ๊ฒฝ์ ํตํด ํธ๋ฆฌ๊ฑฐ๋๋ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๊ธฐ |
Pub/Sub
Proto ํ์ผ |
google/events/cloud/pubsub/v1/events.proto google/events/cloud/pubsub/v1/data.proto |
๋ดํฌ ๋ฉ์์ง | google.events.cloud.pubsub.v1.MessagePublishedEvent |
๋ฐ์ดํฐ ๋ฉ์์ง | google.events.cloud.pubsub.v1.MessagePublishedData |
๋ฆฌ์์ค |
PubsubMessage
|
์ด๋ฒคํธ ์ ํ (Pub/Sub ๋ฉ์์ง๊ฐ ๊ฒ์๋ ๋) |
google.cloud.pubsub.topic.v1.messagePublished |
์ | ํ ์คํธ |
์ถ๊ฐ ์ ๋ณด |
Pub/Sub ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค์์ ์ด๋ฒคํธ ์์ Pub/Sub ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ํธ๋ฆฌ๊ฑฐ |
๋ค์ ๋จ๊ณ
์ด๋ฒคํธ ๊ฒฝ๋ก์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ