Webhook ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ๊ฐ๋ฐ. ๋น์ฌ๋ ๋ณด์ฅ๋ ์ ๋ฌ, ์ ์ ํ ์์ ์ง์ ๋ฐ ํฌ๊ด์ ์ธ ๋ชจ๋ํฐ๋ง์ ํตํด ์ ๋ขฐํ ์ ์๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค.
์์ํ๊ธฐ
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ์์คํ ์ ๋ถ๋ฆฌํ๊ณ ํ์ฅ์ฑ์ ๊ฐ์ ํ๋ฉฐ ๋น์ฆ๋์ค ์ด๋ฒคํธ์ ๋ํ ์ค์๊ฐ ๋ฐ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํ์ง๋ง ์์ ์ง์ , idempotency, dead letters, observability์ ๊ฐ์ ๋ณต์ก์ฑ์ ์๋ฐํฉ๋๋ค. ๋น์ฌ๋ ์๋ฐฑ๋ง ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ๋ณด์ฅ๋ ์ฒ๋ฆฌ๋ก ๋ค๋ฃจ๋ฉด์ ์ ๋ขฐํ ์ ์๊ณ , ๊ด์ฐฐ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ง ๋ณด์ ๊ฐ๋ฅํ ์ด๋ฒคํธ ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค.
๋น์ฌ๋ ์ด๋ฒคํธ ๋ฒ์ค๋ฅผ ์ํด Apache Kafka, RabbitMQ ๋๋ Redis Streams๋ฅผ, job queue๋ฅผ ์ํด BullMQ๋ฅผ, ๊ทธ๋ฆฌ๊ณ ์ ๋ฌ ์ถ์ ์ ์ํด PostgreSQL์ ์ฌ์ฉํ๋ ๋ง์ถคํ webhook ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํฉ๋๋ค. ์ด๋ฒคํธ schema๋ JSON Schema ๋๋ Avro๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ๋ชจ๋ ์์คํ ์ Grafana๋ฅผ ์ฌ์ฉํ ํฌ๊ด์ ์ธ ๋ชจ๋ํฐ๋ง์ ํฌํจํฉ๋๋ค.
์ธ๋ถ ์๋น์ค(webhooks)์ ์ด๋ฒคํธ์ ๋ฐ์ํด์ผ ํ๊ฑฐ๋, ๋ด๋ถ ์์คํ ํต์ ์ ๋ถ๋ฆฌํ๊ฑฐ๋, ์ค์๊ฐ ์๋ฆผ ์์คํ ์ ๊ตฌ์ถํด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค. ์ ๋ขฐํ ์ ์๋ webhook ์ฒ๋ฆฌ ๋๋ ์์ ํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๊ฐ ํ์ํ๋ , ๋น์ฌ๋ ๋๊ท๋ชจ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
๋น์ฆ๋์ค ์ด๋ฒคํธ๋ฅผ ๋งคํํ๊ณ , ์คํค๋ง๋ฅผ ์ ์ํ๋ฉฐ, ์์ฐ์ ๋ฐ ์๋น์๋ฅผ ์๋ณํ๊ณ , ์์ ์๊ตฌ ์ฌํญ์ ๊ณํํฉ๋๋ค.
์ด๋ฒคํธ ๋ฒ์ค ํ ํด๋ก์ง, ์ ๋ฌ ๋ณด์ฅ, ์๋น์ ํจํด ๋ฐ ๋ชจ๋ํฐ๋ง ์ ๋ต์ ์ค๊ณํฉ๋๋ค.
์ด๋ฒคํธ ์์ฐ์, ์๋น์, Webhook ์ธํ๋ผ ๋ฐ Dead Letter ์ฒ๋ฆฌ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
์ ๋ฌ ๋ณด์ฅ, ๋ฉฑ๋ฑ์ฑ, ์์, ์คํจ ์๋๋ฆฌ์ค ๋ฐ ๋ณต๊ตฌ ๋์์ ํ ์คํธํฉ๋๋ค.
์ด๋ฒคํธ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋๋ฅผ ๋ฐฐํฌํ๊ณ , ์๋ฆผ์ ๊ตฌ์ฑํ๋ฉฐ, ์ด์ ์ ์ฐจ๋ฅผ ๋ฌธ์ํํฉ๋๋ค.
์์คํ ์ ๋ถ๋ฆฌํ๊ณ ์ด๋ฒคํธ๋ฅผ ๋๊ท๋ชจ๋ก ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์ด๋ฒคํธ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํด ๋ด ์๋ค.
Webhooks๋ ์๋น์ค ๊ฐ ์๋ฆผ์ ์ํ HTTP ์ฝ๋ฐฑ์ธ ๋ฐ๋ฉด, event-driven architecture๋ ๋น๋๊ธฐ์ ์ด๊ณ ๋ถ๋ฆฌ๋ ํต์ ์ ์ํด Kafka ๋๋ RabbitMQ์ ๊ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ์ฌ์ฉํฉ๋๋ค. MicrocosmWorks๋ ๊ณ ๊ฐ์ ์์ ์ฑ ๋ฐ ํ์ฅ์ฑ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ํจํด์ ๋ชจ๋ ๊ตฌํํฉ๋๋ค.
MicrocosmWorks์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ์ ์๊ฐ๋น $25-$50๋ก ์ ๊ณต๋๋ฉฐ, ์ํคํ ์ฒ ์ค๊ณ, ๋ฉ์์ง ๋ธ๋ก์ปค ์ค์ , ์ด๋ฒคํธ ์คํค๋ง ์ค๊ณ ๋ฐ ์ปจ์๋จธ ๊ตฌํ์ ํฌํจํฉ๋๋ค.
์ ํฌ๋ ๋ฉฑ๋ฑ(idempotent) ์นํ ํธ๋ค๋ฌ, ์ง์ ๋ฐฑ์คํ(exponential backoff)๋ฅผ ์ฌ์ฉํ ์๋ ์ฌ์๋, ์คํจํ ์ ์ก์ ์ํ ๋ฐ๋ ๋ ํฐ ํ(dead letter queues), ๋ณด์์ ์ํ ์๋ช ๊ฒ์ฆ(signature verification), ๊ทธ๋ฆฌ๊ณ ์๋ ์ฌ์คํ(manual replay) ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ์ก ์ํ ์ถ์ ์ ๊ตฌํํฉ๋๋ค.
๋ค, ์ ํฌ๋ event ์คํ ์ด, projection ๋น๋, ๊ทธ๋ฆฌ๊ณ CQRS ํจํด์ ๊ฐ์ถ event sourcing ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ์ฌ, ์๋ฒฝํ ๊ฐ์ฌ ์ถ์ , ์๊ฐ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์์ ์์๋ ์ํ๋ฅผ ์ฌ๊ตฌ์ถํ ์ ์๋ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
์ ํฌ๋ ํ์ ๋ฐ ์์ ํธํ์ฑ ๊ฒ์ฌ๋ฅผ ํฌํจํ๋ ์คํค๋ง ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ตฌํํ๊ณ , ์ด๋ฒคํธ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํ๋ฉฐ, ์ค๋๋ ์ด๋ฒคํธ์ ๋ํด upcasting์ ์ฌ์ฉํ๊ณ , ๋ฐฐํฌ ์ค breaking changes๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ ์๋ ํ๋๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ๋๋ก ์ปจ์๋จธ๋ฅผ ์ค๊ณํฉ๋๋ค.