Webhooks İle Development Zamanını 0' a İndirme! #1

Thanks for this funny image :) https://medium.com/hootsuite-engineering/a-scalable-reliable-webhook-dispatcher-powered-by-kafka-2dc3d677f16b

Merhabalar,

Geçtiğimiz günlerde bir haber projesi yapmaya başlamıştım, proje aktif olarak GitHub üzerinde geliştirilmeye devam ediyor. Bir yandan ise bu proje için tech stack olarak hangi seçimleri yaptım, tercih etme nedenlerim neler ve kullanılan teknolojiler projede ne gibi avantajlar sağlıyor gibi konuları paylaşmak amacıyla yazmaya başladım. İlk önce webhooks nedir ona göz atalım.

WEBHOOKS NEDİR ?

Proje geliştirme sürecinin büyük bir parçası olan entegrasyonlar, zamanımızın önemli kısmını alıyor. Eğer büyük bir sisteme sahipseniz ve sürekli projenize yeni entegrasyonlar eklemeniz gerekiyor ise gereksiz geliştirme/test maliyeti yerine webhooks çözümü geliştirmek size kolaylık sağlayacaktır. Bu sayede karşı tarafın sizin belirlediğiniz bir payloada sahip endpoint sağlaması yeterli olacaktır.

Proje Konusu

Bir API tarafından toplanan haberlerin ilgili haber ajansına dağıtılması.

Proje Amacı

İlgili haberin dağıtılacağı yeni haber ajansının hiçbir geliştirme yapmadan entegre olmasını sağlamak.

Use Case

1- Kullanıcı/Sistem, Report API’ ye haber verilerini göndererek etkinliği başlatır.

2- Report API verileri DB’ye kaydeder ve kuyruğa veri üretir.

3- Webhook (ReportConsumer) kuyruktan veri tüketir, ilgili ajans bilgilerini cache veya db’den alır ve ajansa veri gönderir.

4- Yeni eklenmesi gereken ajans için kod geliştirilmesi yapılmaz. Entegrasyon tablosuna ajans bilgileri eklenir, data akışı sağlanır.

Proje Mimarisi

Tech Stack

.Net Core 3.1 -> API ve Consumer
MongoDB -> NoSQL Database
RabbitMQ with MassTransit Framework -> Message Queue
MediatR
Memory Cache
Docker Container -> MongoDB, Elastic Search, APM Server, Kibana, RabbitMQ
Domain Driven Design

Logging framework Serilog
Elastic Search APM
Kibana

Bu yazımda webhooks ve proje hakkında genel bir bilgi vermiş oldum.

Senaryoyu anlatmak ve bilgi vermek amacıyla iki adet eğitim videosu oluşturdum, aşağıdaki linklerden izleyebilirsiniz. İyi Çalışmalar :)

1- https://www.youtube.com/watch?v=T9q_oJK_QrE

2- https://www.youtube.com/watch?v=TfS4EDrewF4

SUNUM

Devnot kanalında gerçekleştirdiğim webhooks sunumuna aşağıdaki linkten ulaşabilirsiniz.

https://www.youtube.com/watch?v=eKr6DcTpV6o

Software Engineer @hepsiburada

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store