- 625 Terraform workspace ve 38 AWS hesabı üzerinde 165.000'den fazla bulut kaynağı yönetiliyor
- 170 mühendisin 40'ı altyapı uzmanı
- Her gün 225 altyapı sürümü (
terraform apply) ve 723 plan (terraform plan) çalıştırılıyor
- Bunun için Terraform Cloud devreye alınarak altyapı sürüm süreci otomatikleştirildi ve geliştiricilerin manuel işleri ile hataları azaltıldı
Terraform Cloud devreye alınmadan önceki sorunlar
- Yüksek AWS erişim yetkisi gereksinimi: Altyapı ekibinin yüksek seviyede AWS erişim yetkisine sahip olması gerekiyordu
- Zaman alıcı işler: Her dizinde
terraform apply çalıştırmak, inceleme ve onayı tekrar tekrar yapmak gerekiyordu; tek bir değişiklik 120'den fazla workspace'i etkileyebiliyordu
- Infrastructure drift oluşması: Beklenmeyen değişiklikler birikiyor, uygulama sırasında ek inceleme ve müdahale gerektiriyordu
Terraform Cloud'un devreye alınması ve etkileri
- Drift'in ortadan kaldırılması → Infrastructure drift ortadan kaldırılarak risk ve geliştirici yükü azaltıldı
- Geliştirici zamanından tasarruf → Yıllık yaklaşık 8.000 saat geliştirici zamanı tasarrufu sağlandı (4 geliştiricinin iş yüküne eşdeğer)
- Değişikliklerin izlenebilir olması → Denetim günlükleri sayesinde değişiklikler izlenebiliyor ve hata ayıklama kolaylaşıyor
- Speculative plan desteği → Değişiklikler otomatik olarak test ediliyor ve sonuçlar doğrudan GitHub CI içinde görülebiliyor
Terraform Cloud'un şu anki işletim şekli
- Self-hosted: Terraform Cloud for Business şirket içinde kuruldu ve AWS hesabı içindeki ECS kümesinde TFC agent'ları çalıştırılıyor
- Agent pool yapısı: 120 agent, geliştirme ortamı (40) ve prodüksiyon ortamı (80) olarak bölünerek yüksek eşzamanlılık sağlanıyor
Özellikle izlenen metrikler
- Agent tükenmesi ve eşzamanlılık sınırı → Agent yetersiz kaldığında nöbetçi mühendise bildirim gidiyor
- Plan süresi → Geliştirme ortamında plan süresi 4 dakikayı aşarsa ekibe bildirim gidiyor
- Infrastructure drift → Şu anda ölçülmüyor (drift neredeyse hiç oluşmuyor)
Kaliteyi artırmak için yapılan optimizasyonlar
- TFC CLI geliştirilmesi: Birden fazla workspace'teki değişikliklerin CLI üzerinden otomatik incelenip onaylanabilmesi sağlandı
- Bildirim sistemi kurulması: Terraform apply işlemlerinin atlanmaması için Slack bildirimleriyle otomasyon kuruldu
- Workspace'lerin otomatik yönetimi: Terraform kullanılarak 625 workspace yönetiliyor ve etiketler uygulanarak sahip ekipler ayrıştırılıyor
- Terraform Cloud kullanım analizi: TFC API kullanılarak state version verileri toplanıyor, kaynak kullanımı ve büyüme eğilimleri izleniyor
- Terraform State yedekleme: State dosyaları otomatik olarak S3 bucket'a yedeklenerek arıza durumunda geri yükleme mümkün hale getirildi
- Workspace bağımlılık yönetimi: Modül bağımlılık ağacı oluşturularak workspace'lerin izlemesi gereken dizinler otomatik ayarlanıyor
- Provider upgrade otomasyonu: Dependabot kullanılarak provider'lar aylık periyotlarla yükseltiliyor ve otomasyon sayesinde yönetim yükü azaltılıyor
Gelecekteki iyileştirmeler
- Aşamalı rollout:
main branch tabanlı sürüm modelinden çok aşamalı dağıtıma (geliştirme → staging → prodüksiyon) geçilecek
- Büyük workspace'lerin bölünmesi: Mevcut 625 workspace'in 1500'ün üzerine çıkarılacak şekilde parçalanmasıyla plan ve apply sürelerinin kısaltılması ve değişiklik etki alanının küçültülmesi hedefleniyor
- Bildirim özelliklerinin geliştirilmesi: Slack bildirimlerine yeniden atama özelliği eklenecek ve
tfc review komutunu otomatik üretme özelliği getirilecek
- Agent auto-scaling: EKS tabanlı bir otomatik ölçeklendirme sistemi devreye alınarak değişken iş yüklerinin verimli şekilde işlenmesi planlanıyor
- Şirket içinde geliştirilen araçların open source yapılması: Dahili olarak geliştirilen çeşitli araçlar açık kaynak olarak yayımlanacak, böylece diğer ekipler de kullanabilecek
Henüz yorum yok.