# Template Engine을 활용한 Programmable Webhook System 개발

> Clean Markdown view of GeekNews topic #7301. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=7301](https://news.hada.io/topic?id=7301)
- GeekNews Markdown: [https://news.hada.io/topic/7301.md](https://news.hada.io/topic/7301.md)
- Type: news
- Author: [toughrogrammer](https://news.hada.io/@toughrogrammer)
- Published: 2022-08-31T16:09:17+09:00
- Updated: 2022-08-31T16:09:17+09:00
- Original source: [engineering.ab180.co](https://engineering.ab180.co/stories/programmable-realtime-webhook-system)
- Points: 7
- Comments: 0

## Topic Body

- Postback이란?: 광고 매체에게 성과 발생에 대한 signal을 보내주는 것. 매체에서는 이 signal을 받아서 캠페인 최적화에 사용함.  
- Airbridge에서 Postback의 역할: 광고 매체에게 signal을 보내주는 것 뿐만 아니라 third party 서비스들에게 데이터를 보내주는 기능도 함께 하고 있음. 개념적으로는 webhook이라는 동일한 기술이기 때문.  
- 해결해야할 문제: 앞으로 몇 천 개 이상의 서비스들과 연동을 더 쉽게 할 수 있어야 함. 그러려면 연동이 매우 쉬워야 함.  
- 연동 시스템에서 제공해야할 기능:  
  - 수집된 이벤트 중 필요한 이벤트만 전송할 수 있어야 함  
  - 수신 서버의 API Spec에 맞게 HTTP payload를 구성할 수 있어야 함  
- 기존 시스템의 문제점: 어느 정도 template에 따라 작동하는 시스템을 만들어두긴 했지만 추가 구현이 필요한 것들이 생길 때마다 유지보수 비용이 들었음  
- 핵심 기술  
  - Template Engine: filter, transform 등을 template engine으로 해결할 수 있음  
  - API 호출 서버 분리: 매우 많은 webhook을 보내야 하므로 저렴한 비용으로 API 호출을 할 수 있도록 Go로 구현하여 서버 분리  
- 전체 시스템 아키텍처  
  - 서버간의 통신은 kafka 활용  
  - 비즈니스 로직이 있는 webhook 구성 서버는 Python으로 구현  
  - API 호출 서버는 Go로 구현  
  - API 호출 log는 다시 kafka에 저장하고, kakfa에 저장된 데이터는 S3에도 저장하여 나중에 다시 데이터를 읽을 수 있음  
- 앞으로 더 개선하고 싶은 부분들  
  - Graviton Instance 적용: 비용 절감 목적  
  - 새로운 언어로 migration: 마찬가지로 비용 절감 목적

## Comments



_No public comments on this page._
