Inglizce Doküman için: README.md
Bu depo, modern Platform Engineering pratikleriyle üretim seviyesinde, ölçeklenebilir ve gözlemlenebilir bir Kafka platformu sunar. Altyapı otomasyonu, güvenli Kafka küme kurulumu, gözlemlenebilirlik, REST API yönetimi ve dağıtık Kafka Connect işlemleri uçtan uca otomatikleştirilmiştir. Tüm bileşenler güvenilirlik, sürdürülebilirlik ve self-servis yönetim için tasarlanmıştır.
Üretim ortamına uygun, yüksek erişilebilirlik ve gözlemlenebilirlik sağlayan, otomasyona ve yeniden üretilebilirliğe odaklanan bir Kafka altyapısı tasarlamanız ve yönetmeniz beklenmektedir. Tüm operasyonlar, testler ve senaryolar tek bir merkezi Kafka kümesi üzerinde gerçekleştirilir.
Süre: 7 gün
Senaryo:
- Tüm platformun temelini oluşturacak tek bir Kafka kümesi kurulur.
- Tüm kodlar üretim kalitesinde, dokümante ve versiyon kontrollü olmalıdır.
- Altyapı otomasyonu, konteynerleştirme ve izleme en iyi pratikleri uygulanır.
Aşağıdaki diyagram, Trendyol Kafka Platform mimarisinin tüm bileşenlerini göstermektedir:
graph TB
subgraph AUTO["Automation"]
GHA[GitHub Actions]
TF[Terraform]
ANS[Ansible]
end
subgraph CLUSTER["Kafka Cluster"]
subgraph BROKERS["Brokers (4 nodes)"]
B1[Broker 1 - AZ1]
B2[Broker 2 - AZ1]
B3[Broker 3 - AZ2]
B4[Broker 4 - AZ2]
end
subgraph CONTROLLERS["Controllers (3 nodes)"]
C1[Controller 1 - AZ1]
C2[Controller 2 - AZ2]
C3[Controller 3 - AZ3]
end
SSL[SSL/TLS + SASL/SCRAM]
SSL -.secure.-> BROKERS
SSL -.secure.-> CONTROLLERS
BROKERS <-.cluster.-> CONTROLLERS
end
subgraph SERVICES["Services"]
CN1[Kafka Connect 1<br/>AZ1]
CN2[Kafka Connect 2<br/>AZ1]
API[REST API<br/>JWT Protected]
MON[Monitoring<br/>Prometheus + Grafana]
end
GHA --> TF
GHA --> ANS
TF --> CLUSTER
TF --> SERVICES
ANS --> CLUSTER
ANS --> SERVICES
CN1 --> SSL --> BROKERS
CN2 --> SSL
API --> SSL
MON -.metrics.-> CLUSTER
style BROKERS fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
style CONTROLLERS fill:#F3E5F5,stroke:#7B1FA2,stroke-width:3px
style B1 fill:#4A90E2,stroke:#333,stroke-width:2px
style B2 fill:#4A90E2,stroke:#333,stroke-width:2px
style B3 fill:#4A90E2,stroke:#333,stroke-width:2px
style B4 fill:#4A90E2,stroke:#333,stroke-width:2px
style C1 fill:#7B68EE,stroke:#333,stroke-width:2px
style C2 fill:#7B68EE,stroke:#333,stroke-width:2px
style C3 fill:#7B68EE,stroke:#333,stroke-width:2px
style CN1 fill:#FF8C42,stroke:#333,stroke-width:2px
style CN2 fill:#FF8C42,stroke:#333,stroke-width:2px
style API fill:#F39C12,stroke:#333,stroke-width:2px
style MON fill:#50C878,stroke:#333,stroke-width:2px
style SSL fill:#C0392B,stroke:#333,stroke-width:3px
style TF fill:#7B42BC,stroke:#333,stroke-width:2px
style ANS fill:#E74C3C,stroke:#333,stroke-width:2px
style GHA fill:#2C3E50,stroke:#333,stroke-width:2px
- Modüler, tekrar kullanılabilir ve ölçeklenebilir AWS altyapısı.
- Modüller: network, compute, security.
- Kaynaklar:
- Kafka Broker: 4 node (2 AZ1, 2 AZ2)
- Kafka Controller: 3 node (1 AZ1, 1 AZ2, 1 AZ3)
- Kafka Connect Cluster: 2 node (her ikisi AZ1)
- Observability Node: 1 node (AZ1)
- Confluent Platform Ansible Collection ile otomatik Kafka broker ve controller kurulumu.
- Üretim seviyesinde güvenlik: SSL/TLS şifreleme, SASL/SCRAM kimlik doğrulama.
- Rack awareness (fiziksel veya mantıksal olarak farklı veri merkezlerine/availability zone'lara dağıtım yaparak yüksek erişilebilirlik ve veri kaybına karşı dayanıklılık sağlar) ve çoklu AZ dağılımı.
- İzleme için JMX metrikleri aktif.
- Prometheus: Tüm Kafka ve Connect node’larından (JMX ve node_exporter) metrik toplar.
- Alertmanager: Altyapı ve Kafka olayları için merkezi alarm yönetimi.
- Grafana: Kafka Broker, Controller ve Connect için hazır dashboard’lar.
- Node Exporter: Tüm node’larda sistem metrikleri için kurulu.
- Tüm gözlemlenebilirlik bileşenleri Ansible ile otomatik kurulur ve yönetilir.
- FastAPI tabanlı, AdminClient kullanan Kafka yönetim REST API’si.
- Broker, topic, consumer group yönetimi ve topic konfigürasyonu için uç noktalar.
- Tüm API işlemleri JWT ile korunur.
- Docker ile paketlenmiş, Observability node üzerinde çalışır.
- Docker Compose ile dağıtık Kafka Connect cluster kurulumu.
- Ana Kafka cluster ile güvenli entegrasyon.
- HTTP Source Connector, REST API’den veri çekip Kafka topic’lerine aktarır.
- Tüm connector yaşam döngüsü Kafka Connect REST API ile yönetilir.
- Tek Cluster Mimarisi: Tüm modüller aynı Kafka cluster’ı üzerinde çalışır.
- Kod ile Altyapı: Tüm altyapı Terraform ile yönetilir.
- Otomatik Dağıtım: Ansible ve GitHub Actions ile tüm kurulum ve konfigürasyon adımları otomatikleştirilmiştir.
- Üretim Seviyesinde Güvenlik: Uçtan uca şifreleme, güçlü kimlik doğrulama ve en iyi pratikler.
- Kapsamlı Gözlemlenebilirlik: Tüm kritik bileşenler için metrik, dashboard ve alarm.
- Self-servis Platform: Kolay yönetim ve genişletilebilirlik için REST API ve otomasyon scriptleri.
- terraform/ — Altyapı kodu ve modülleri
- ansible_kafka_cluster/ — Kafka cluster için Ansible playbook ve envanter scriptleri
- kafka_connect/ — Kafka Connect cluster kurulumu ve connector yönetim scriptleri
- kafka_rest_api/ — Kafka yönetimi için FastAPI tabanlı REST API
- observability/ — Prometheus, Alertmanager, Grafana ve izleme otomasyonu
- GitHub Secrets yapılandırın:
- Proje otomasyonunun (CI/CD, Terraform, Ansible vb.) sorunsuz çalışabilmesi için gerekli tüm gizli anahtarları ve kimlik bilgilerini GitHub Secrets bölümüne ekleyin.
- Örnek olarak:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY, varsa özel SSH anahtarları, DockerHub tokenları vb. gereklidir. - Secrets eklemek için: GitHub repo > Settings > Secrets and variables > Actions > New repository secret adımlarını izleyin.
- Eksik veya hatalı secret, otomatik dağıtım ve silme işlemlerinin başarısız olmasına neden olur.

- Altyapıyı Kurun:
- AWS kimlik bilgilerinizi ayarlayın ve terraform/ dizinindeki modülleri çalıştırın.
- Kafka Cluster’ı Dağıtın:
- ansible_kafka_cluster/ içindeki playbook’larla broker ve controller’ları kurun.
- Gözlemlenebilirliği Kurun:
- observability/ scriptleriyle Prometheus, Alertmanager ve Grafana’yı devreye alın.
- REST API’yi Dağıtın:
- kafka_rest_api/ dizininde FastAPI servisini Docker ile çalıştırın.
- Kafka Connect’i Dağıtın:
- kafka_connect/ dizininde Docker Compose ile Connect cluster’ı başlatın ve connector’ları yönetin.
- Tüm altyapı ve uygulama bileşenlerini tek komutla kurmak için deploy-all.yaml (veya projenizdeki ilgili deploy-all.yaml) kullanılabilir. Bu dosya, hiçbir manuel değişiklik yapmadan tam otomatik dağıtım sağlar. Tüm modüller sıralı ve bağımlılıklarına uygun şekilde devreye alınır.

- Cluster’ı ve tüm kaynakları güvenli şekilde kapatmak/silmek için destroy.yaml veya ilgili destroy workflow’u kullanılır. Bu işlem, Kafka cluster’ı ve bağlı tüm altyapıyı güvenli şekilde sonlandırır.

- https://github.com/AhmetFurkanDEMIR/Trendyol-Data-Streaming-Case-Study/actions
Not: Bu işlemler sırasında herhangi bir dosya veya konfigürasyon üzerinde manuel değişiklik yapmanıza gerek yoktur. Tüm süreç otomatik ve idempotent şekilde çalışır.
Amazon CloudWatch, AWS üzerindeki kaynakların izlenmesi (monitoring), logların toplanması, alarmların üretilmesi ve otomatik aksiyonların alınması için kullanılan merkezi bir gözlemlenebilirlik (observability) servisidir.
Bu projede Amazon CloudWatch kullanılarak /var/log dizini altında yer alan sistem ve Kafka logları merkezi olarak toplanmış, güvenli bir şekilde saklanmış ve toplu arama ile analiz edilebilir hale getirilmiştir.
Bu süreç, Terraform adımında makineler init edilirken CloudWatch Agent’ın otomatik olarak kurulmasıyla gerçekleştirilmiştir. Agent, yapılandırma dosyası üzerinden /var/log altındaki logları dinleyecek şekilde konfigüre edilmiştir.
-
Her modülün kendi README dosyası:
- Terraform Modülü README.md
- Ansible Kafka Cluster Modülü README.md
- Kafka Connect Modülü README.md
- Kafka REST API Modülü README.md
- Observability Modülü README.md
dosyasında kurulum, konfigürasyon ve sorun giderme adımlarını içerir.
-
Tüm tasarım kararları, operasyonel prosedürler ve varsayımlar ilgili dizinlerde açıklanmıştır.


