Tahmini okuma süresi: 8 dakika
Yazar: Barış Furkan Koyuncu, ROM (Reklam On The Move) kurucusu
Gecede 40 web sitesi üreten bir hat nasıl kurulur — ve neden asıl mesele üretim değil
Bu yazı iki parçadan oluşuyor. İlk parçada gece boyunca kendi kendine çalışan bir web sitesi üretim hattının nasıl kurulduğunu anlatıyorum. İkinci parçada o hattın bize öğrettiği, üretimle hiç ilgisi olmayan dersi.
İkinci parça daha değerli. Onu okumak için gelin.
Hat nasıl çalışıyor?
Zamanlama sabit. Her gece aynı sırayla, insan müdahalesi olmadan.
| Saat | Adım | Ne yapar |
|---|---|---|
| 22:45 | Görsel hazırlık | Ertesi turda kullanılacak görseller indirilir, boyutlandırılır, önbelleğe yazılır |
| 23:00 | Üretim turu | Kuyruktaki projeler işlenir, gecede en fazla 40 proje |
| 05:00 | Pencere kapanır | Bu saatten sonra hiçbir iş yayına çıkmaz |
| 06:10 | Doğrulama turu | Gece üretilen her şey bağımsız olarak kontrol edilir |
| Her 15 dk | Öz denetim | 12 ayrı kontrol, gün boyu |
Tasarımın üç kararı var, üçü de sonradan kendini ödedi.
Görsel hazırlığı üretimden ayırmak. Görsel indirme ağ bağımlı ve yavaş. Üretim turunun içine gömerseniz tek bir yavaş sunucu bütün turu tıkar. 15 dakika önceden ayrı bir adım olarak koştuğunuzda üretim turu yalnızca yerel dosyalarla çalışır ve süresi öngörülebilir hale gelir.
Gecede 40 sınırı. Bu sayı keyfi değil, makinenin gece penceresinde rahatça bitirebildiği iş miktarı. Sınırı kaldırırsanız kuyruk şiştiği gece hat sabaha yetişemez ve yarım işler ortada kalır. Sınır koymak, kuyruğu yavaşlatır ama sistemi öngörülebilir tutar. Öngörülebilirlik hızdan değerlidir.
05:00 kapanma penceresi. En sevdiğim kısım. Saat 05:00'te ne bitmişse biter, bitmeyen iş yayına çıkmaz, bir sonraki gecenin kuyruğuna döner. Yarım bir site, hiç olmayan siteden kötüdür — çünkü hiç olmayan siteyi kimse görmez, yarım olan siteyi müşteri görür.
Bu üçü birleşince hat, gece boyunca kendi başına çalışan ve sabah elinizde bilinen bir durum bırakan bir şeye dönüşüyor. Kâğıt üzerinde.
Peki "çalıştı" nasıl anlaşılıyor?
Burada işler ilginçleşiyor.
Bir zamanlanmış görevi kurduğunuzda size dönen ilk sinyal çıkış kodu olur. Sıfırsa "çalıştı". Log dosyasına bakarsınız, satırlar akmış, hata yok. Rahatlarsınız.
O rahatlama yanlış.
Çıkış kodu, betiğin çöküp çökmediğini söyler. İşin yapılıp yapılmadığını söylemez. Log satırı, kodun o satıra geldiğini söyler. O satırdaki niyetin gerçekleştiğini söylemez. Bir betik pekâlâ baştan sona koşup, hiç hata vermeden, hiçbir iş üretmeyebilir.
Kural olarak şöyle formüle ettik:
Bir işin yapıldığının kanıtı, beklenen çıktının canlıda gerçekten var olduğudur — ve bunu işi yapan sistemin kontrol etmediği bir kaynaktan doğrulamak gerekir.
İkinci yarısı kritik. Üretim hattı kendi ürettiği dosyaya bakıp "evet üretmişim" diyorsa hiçbir şey doğrulamış olmaz. Doğrulama, üretimin dokunamadığı bir yerden yapılmalı: canlı adrese dışarıdan istek atmak, dönen içeriğin beklenen imzayı taşıdığını görmek gibi.
Bunu neden bu kadar keskin yazdığımı anlatayım.
10.998 site, bir gece, on iki saat sessizlik
Bir gece hat normal koştu. Üretim adımı 10.998 sitenin çıktısını doğru şekilde oluşturdu. Dosyalar diskte, içerikleri doğru, hepsi tamam.
Yayın adımı başarısız oldu. Sessizce. Hata fırlatmadan, çıkış kodunu bozmadan.
Sabah 06:10'da doğrulama turu koştu. Canlı adreslere gitti, HTTP 200 aldı, içeriği okudu, beklenen yapıyı gördü, "geçti" dedi.
Doğrulama turunun ölçtüğü şey bir önceki günün sürümüydü. Adres ayaktaydı, çünkü eski sürüm hâlâ yayındaydı. Sayfa doğru görünüyordu, çünkü eski sürüm de doğru bir sayfaydı. Bütün göstergeler yeşildi.
Arıza 12 saat boyunca kimseye görünmedi.
Bunu fark ettiğimizde ilk tepki "doğrulamayı güçlendirelim" oldu. Yanlış tepki. Doğrulama zaten çalışıyordu; sorun doğrulamanın yanlış şeye bakıyor olmasıydı. Ayakta olmayı taze olmakla karıştırıyordu.
Doğru düzeltme, doğrulamanın ölçtüğü şeyi değiştirmek oldu: artık sayfanın var olup olmadığına değil, sayfanın o geceki üretime ait imzayı taşıyıp taşımadığına bakıyor. Sürüm damgası eşleşmiyorsa 200 dönmesinin hiçbir anlamı yok.
Yalancı yeşil yasak
Bu olaydan çıkan kural, sistemin geri kalanını da değiştirdi.
Klasik izleme sistemlerinde iki durum vardır: geçti ve kaldı. Bu ikili yetmiyor. Çünkü gerçek hayatta üçüncü bir durum var: ölçemedim.
Ölçemediğiniz bir kontrolü "geçti" saymak, kaldı saymaktan daha tehlikelidir. Kaldı derseniz gidip bakarsınız. Geçti derseniz hiç bakmazsınız — ve bakmadığınız süre boyunca arıza büyür.
Kural şu: ölçülemeyen kontrol "geçti" sayılmaz. Ayrı bir durum olarak işaretlenir ve ayrı bir uyarı üretir.
Pratikte bu şu anlama geliyor: bir kontrol zaman aşımına uğradıysa, bağlantı kurulamadıysa, dönen veri beklenen biçimde değilse, kontrol kendi kendine "veri yok" dediyse — hiçbiri başarı değildir. Bunların hepsi ayrı bir kovaya düşer ve o kova boş kalmak zorundadır.
Aynı madalyonun diğer yüzü de var, onu da yaşadık: yalancı kırmızı. Bir kontrol, üretimde gerçek bir sorun olmadığı halde alarm veriyorsa, o alarm birkaç kez tekrarlandıktan sonra insanlar alarmlara güvenmeyi bırakır. Sonra gerçek alarm geldiğinde kimse bakmaz. O yüzden her kontrolü iki yönlü test ediyoruz: bilerek bozup kırmızı yandığını, sonra düzeltip yeşile döndüğünü görmek. Yalnızca yeşil yandığını görmek yeterli değil; kapının kilitlendiğini görmek gerekiyor, kapalı durduğunu değil.
Öz denetim katmanı
Bugün hattın üzerinde 12 kontrollü bir öz denetim katmanı var ve her 15 dakikada bir koşuyor. Kontroller ayrı ayrı şu tarz sorular soruyor:
- Gece turu beklenen sayıda çıktı üretti mi, yoksa sıfır mı çekti?
- Canlıdaki sürüm damgası, en son üretim turunun damgasıyla eşleşiyor mu?
- Kuyruk büyüyor mu, yoksa eriyor mu?
- Bir önceki turdan kalan yarım iş var mı?
- Kontrolün kendisi veri alabildi mi?
Son madde en önemlisi. Denetim katmanının kendi sağlığını da ölçmesi gerekiyor, yoksa denetimi kim denetleyecek sorusu havada kalır.
Maliyet tarafı
Mühendislik yazılarında en çok atlanan kısım bu, halbuki mimari kararların yarısını maliyet belirliyor.
Bir web sitesini üretip bir yıl boyunca ayakta tutmanın maliyetini ölçtük.
| Kalem | Yıllık maliyet (TL) | Pay |
|---|---|---|
| Alan adı (.com.tr) | 89,90 | %99,94 |
| Barındırma payı | 0,045 | %0,05 |
| Elektrik payı | 0,01 | %0,01 |
| Yapay zekâ payı | 0,00 | %0 |
| Toplam | 89,95 |
Elektrik payı ölçümle çıktı: üretim sırasında işlemci 29,8 W, ekran kartı 6,6 W çekiyor. Toplam 36,4 W. Bu, bir masa lambasından az.
Yapay zekâ satırının sıfır olması bir muhasebe numarası değil. Hat, yerel çalışan ve ücretsiz sağlayıcılar üzerinden gelen modellerle kuruldu. Sağlayıcı adı vermeyeceğim, çünkü mesele hangisi olduğu değil, mimarinin tek bir sağlayıcıya kilitlenmemiş olması. Sağlayıcı değişebilir, hat değişmez.
Tablodaki asıl bulgu şu: maliyetin %99,94'ü alan adı. Yani üretimi optimize etmenin toplam maliyete etkisi yok denecek kadar az. Bir mühendisin işlemci saatini kısaltmak için harcayacağı bir hafta, bu tabloda kuruşun onda birini kurtarır.
Bu, "üretim ucuz" demenin başka bir yolu. Ve tam da bu yüzden asıl sorun üretim değil.
Dürüst kapanış: darboğaz üretimde değil
Bugüne kadar bu hat 177 bin site üretti.
Bu cümleyi yazarken gurur duymamı beklerdiniz. Duymuyorum, çünkü rakamın kendisi bir başarı ölçüsü değil. Üretilen bir sitenin değeri, doğru kişiye ulaştığı anda başlıyor. Ulaşmadıysa disk üzerinde duran bir klasör.
Üretimi çözdük. Dağıtımı çözemedik.
Bunu itiraf etmek, yazının başındaki mimariyi anlatmaktan daha faydalı. Çünkü otomasyonla uğraşan çoğu insan aynı tuzağa düşüyor: ölçülebilir, kontrol edilebilir, mühendislikle çözülebilir olan kısma odaklanıyor. Üretim hattı bu tanıma birebir uyuyor. Log veriyor, sayı veriyor, iyileştirdikçe grafiği yükseliyor. Tatmin edici.
Dağıtım öyle değil. Orada insan var, güven var, zamanlama var, doğru kişiye doğru anda ulaşma sorunu var. Hiçbiri temiz bir metriğe oturmuyor. O yüzden erteleniyor, o yüzden "önce üretimi bitirelim" deniyor, o yüzden 177 bin çıktı birikiyor.
Otonom bir sistem kuruyorsanız kendinize erken sorun: bu hattın çıktısını kim, nasıl alacak? Cevabınız yoksa, kurduğunuz şey bir üretim hattı değil, çok verimli bir birikim makinesi.
Biz bu soruyu geç sorduk. Siz erken sorun.
Barış Furkan Koyuncu
ROM (Reklam On The Move) kurucusu
reklamonthemove.com · 0545 920 38 27
Bu yazıdaki zamanlama, maliyet ve olay kayıtları ROM'un çalışan üretim hattından alınmıştır. Güç ölçümleri donanım üzerinden yapılmıştır.
Top comments (0)