Structured Logging'e Geçiş Neden Acı Veriyor: Gerçek Sebepler
Structured logging, backend dünyasında bir tür dinsel inanç haline geldi. Herkesten önce yapması gereken şey, sonra da hiçbir zaman tam yapamadığı şey. Ama neden bu kadar ağır geliyor?
Structured logging basit bir fikir: string loglar yerine JSON yapısında key-value çiftleri. Böylece parsing, filtering, aggregation kolay. Elasticsearch, Datadog, CloudWatch, hepsi structured logları severek yalar.
Ama şu gerçek var: mevcut uygulamanızda binlerce `logger.info("User {} logged in", userId)` satırı var. Bunları `logger.info("login", {"user_id": userId, "timestamp": now})` haline çevirmek sadece yazı değiştirmek değil. Context'i yeniden tasarlamak, field isimlendirmesinde ekip konsensüsü sağlamak, eski loglarla yeni logları eşleştirmek gerekiyor.
Bir proje başladığında structured logging "şimdi uygularız" diye notlar alınır. Ama deadline yaklaştığında, logging stratejisi her zaman son sıraya kaymış olur. Çünkü müşteri, "Log'lar JSON olsun mu?" sorusuna cevap vermez. Müşteri feature istiyor.
Structured logging başarılı olması için tüm ekibin aynı standardı tutması gerekir. Bir developer `{"user_id": 123}` yazarken, diğeri `{"userId": 123}` yazıyorsa, arama sorguları bozulur. Hata ayıklama süresi iki katına çıkar.
Bu yüzden birçok ekip hybrid yaklaşım seçer: kritik path'te structured, geri kalanda string. Ama bu da garip bir canavarı beslemek gibi. İki sistem paralel çalışır, ikisinden de tam fayda alamazsınız.
Structured logging için infrastructure yükseltme gerekir. Elasticsearch cluster, log aggregation tool, training. Küçük bir startup için bu, bir full-time engineer maliyetine denk. Büyük şirketler bunu yapabilir ama ROI'yi hesaplamak zor.
Öte yandan, simple string logging + grep, tail -f ile çalışan birçok backend hala vardır. Ve onlar da işlerini görmektedir.
Ama şu da doğru: production'da 50+ microservice çalıştırıyorsanız, structured logging olmadan debug etmek cehenneme dönüşür. Correlation ID'ler, distributed tracing, anomaly detection, bunlar structured log olmadan imkansız.
Yani soru şu: Gerçekten ihtiyacınız var mı? Eğer varsa, kademeli geçiş yapın. Tüm sistemi birden değiştirmeyin. Yeni servislerden başlayın, critical path'i sonra uyarın.
Structured logging ağır geldi çünkü hep "tüm sistem" olarak satıldı. Halbuki doğru yaklaşım, ihtiyaca göre, yavaş yavaş, disiplin içinde ilerlemek. Bunu başarabilen ekipler, sonunda observability'de rakiplerini geride bırakır. Kalanlar ise string loglarıyla grep'lemekle meşgul kalır.
0 yorum