Uygulamayı kontrol ettiğimiz bir sunucuya koyuyoruz; geri alınabilir yayınlama, doğrulanmış yedekler ve bir şey çöktüğünde bunun görülebildiği bir yer ile.
Web uygulamaları ve veritabanı tabanlı platformlar için barındırma, devreye alma, izleme ve süreklilik. Müşterinin sahiplenebileceği altyapı üzerinde çalışıyoruz: Avrupa sağlayıcılarında sanal makineler, nginx, gözetim altındaki süreçler, konteynerler, kendi kendine barındırılan veritabanı. Bu, “verilerim fiilen nerede duruyor” sorusunun yanıtını da içerir.
Zaten kurduklarımızOperăm în acest fel mai multe sisteme proprii, iar configurațiile sunt în depozite, nu doar pe servere. Site-ul acesta rulează pe nginx cu Next.js 16 sub PM2, la OVHcloud București. Platforma de asistenți rulează pe Microsoft Azure, Poland Central, cu MySQL, Redis și RabbitMQ în containere legate la interfața locală. O platformă civică proprie folosește unități systemd cu publicare prin comutare atomică de legătură simbolică, copie de siguranță zilnică verificată și o sarcină separată de retenție care rulează numai dacă acea copie a reușit. Un board intern se publică prin runner propriu, cu acțiuni GitHub fixate pe amprentă completă și cu revenire automată la versiunea anterioară dacă verificarea de sănătate cade după publicare. Rezerva care trebuie spusă: gradul de automatizare diferă de la sistem la sistem. Publicarea acestui site se face încă manual, iar migrările de bază de date sunt aplicate cu mâna, deliberat. Nu vindem un lanț automat pe care nu îl avem peste tot.
Dizüstü bilgisayarda çalışan bir uygulama ile üretimde çalışan bir uygulama, arayüzde görünmeyen şeylerle ayrılır: süreç gece üçte öldüğünde ne olur, bir yayınlama kötü gittiğinde ne olur, günlükler nereye gider, önce kimin bir şeyin çöktüğünü öğrenir ve disk kaybolursa veritabanı nereden kurtarılır. Bu hizmet tam da o kısmı ele alır.
Önerdiğimiz temel tercih, müşterinin sahiplenebileceği altyapıdır: bir Avrupa sağlayıcıda sanal makine, önde nginx, bir gözetmen altında süreçler, anlamlı olduğu yerde konteynerler, bağımsızlığın kolaylıktan daha önemli olduğu yerde kendi barındırılan veritabanı. Yönetilen platformlar kötü olduğu için değil — bir gün her şeyi alıp gitmek istediğiniz için; ve bu baştan düşünülmediyse, bunu sonradan ucuzca yapmak mümkün olmadığı için.
Veri egemenliği sorusunun tek dürüst cevabı vardır: doğrulanmış olan. Konum, sağlayıcının pazarlama sayfasını okuyarak değil, sanal makinenin metadata hizmetini ve adres kayıt defterini sorgulayarak doğrulanır. Fark teorik değildir — Avrupa Ekonomik Alanı içindeki bir transfer için, 195/2024 sayılı Kanun'daki transferler bölümü basitçe uygulanmaz. Bizim yaptığımız bir geçiş, tam da bu nedenle, bir platformu Amerika Birleşik Devletleri'nde barındırılan bir veritabanından Avrupa Birliği'nde kendi barındırdığımız bir yığına taşıdı.
Neyi vaat etmiyoruz: her şeyin otomatik olduğu. Şema migrasyonlarını bilerek elle uyguluyoruz, çünkü tablo içindekini bilmeyen bir zincir tarafından üretimde otomatik uygulanan bir migrasyon, veri kaybetmenin olağan yoludur. Kodun yayını otomatikleştirilir; veritabanı yapısının değişimi ise, arkasında taze bir yedekle, insan kararı olarak kalır.
Neleri kapsıyor
Çalışma, bileşenlerine ayrılmış hâliyle
Geri döndürülebilir yayın, yalnızca önce değil, sonrasında da doğrulama ile
Yayın, dosyalar sunucuya ulaştığında değil, gerçek bir istek yeni sürümün gerçekten sunulduğunu kanıtladığında tamamlanır. Uygulamalardan birinde betik dizini senkronize eder, önceki sürümü yanında tutar, ardından teslim edilen sayfadan paket adını çıkarır ve kamu adresinde tam olarak o dosyanın sunulup sunulmadığını doğrular; değilse, otomatik olarak önceki sürüme döner. Teorik değildir: mekanizma, runner dizininde eski kalmış bir paketi yakaladı ve aksi halde başarılı görünecek bir yayını iptal etti.
systemd altında süreçle atomik sürüm değişimi
„Durdur, üzerine kopyala, başlat” alternatifı, sürümler dizini ve tek bir işlemle değiştirilen sembolik bağlantıdır. systemd birimi her zaman sabit yola işaret eder; geri dönüş ise bağlantıyı geri değiştirmek demektir. Birimde kısa duraklamalı hata sonrası yeniden başlatma politikası, maksimum durma süresi ve sistem kısıtları vardır: ayrıcalık yükseltmesi yok, korunan dosya sistemi, erişilemeyen kişisel dizinler, ve yazmaya izin verilen yolların açık bir listesi.
Önde nginx, gerçek durum için yazılmış sınırlarla
Otomatik sertifika yenilemeli TLS sonlandırma, bir yıllık süre ve alt alan adlarının dahil edilmesiyle HSTS, asgari boyut eşiğiyle sıkıştırma, uzun süreli sonlanma ve değişmez işaretlemesi olan statik kaynaklar ve uygulamanın yerel arayüze bağlanması, böylece doğrudan internetten erişilememesi. Hız sınırları trafik türüne göre belirlenir, genel olarak değil. Ödenmiş bir ders olarak şunu söylemek gerekir: HTTP/2 altında bağlantı sınırı akışları sayar, bağlantıları değil — düşük bir değerde, tek bir sayfa yüklemesi fontlarını ve betiklerini 429 ile kendi kendine reddeder.
Yalnızca çalışan değil, doğrulanan yedek kopya
Makinanın o saatte kapalı olması halinde bir sonraki önyüklemede başlayan ve her şeyin aynı saniyede başlamaması için rastgele gecikmeli günlük planlı görev. Veritabanı dışa aktarımı sıkıştırılır ve ortaya çıkan dosya boşsa yürütme hata sayılır — „başarılı” tamamlanan ve sıfır bayt üreten bir dışa aktarım, altı ay sonra yedeğin olmadığının keşfedilmesinin olağan yoludur. Nesne deposundaki dosyalar ayrı senkronize edilir. %100 yerel bir kopya diskin kaybından sağ çıkmaz; bu yüzden kopya makinenin dışına da, coğrafi yedeklilik, sürümleme, geri döndürülebilir silme ve otomatik sonlanma olan Avrupa Birliği içindeki bir depolama hesabına gider — yönetilen kimlik üzerinden erişimle, böylece дисkte hiçbir depolama anahtarı olmaz.
Planlı silme yalnızca başarılı bir kopyadan sonra çalışır
Tutma görevi açıkça kopya görevine bağlıdır ve ondan sonra başlar. Taze kopya olmadan yapılan temizlik, geri dönüşü olmayan tek silme biçimidir. Kopyalamanın aksine, silme kaçırılan çalıştırmaları geri kazanmaz: makine kapalıysa, ertesi gün iki kez silmez. Her çalıştırma bir yürütmeler tablosuna bir satır yazar ve ilk gerçek etkinleştirmeden önce görev en az bir hafta boş çalışır ve günlük okunur.
Yalan söylemeyen ve spam yapmayan alarmlar
200 dönen planlı bir görev, çalışan bir görev anlamına gelmez. Yürütme sarmalımız yanıt gövdesini okur ve içinde kısmi hataları arar, ardından hız sınırlı uyarı gönderir; böylece tüm gün çökmüş bir hizmet doksan altı aynı mesajı üretmez. Bunun nedeni şudur: günlük bir rapor on bir gün üst üste ölüydü ve tek iz, kimsenin bakmadığı bir tabloda boş bir kayıttı. Planlı görev bu on birinin hepsinde tetiklenmişti.
Yukarı akıştan ele geçirilemeyen yayın zinciri
Entegrasyon akışındaki eylemler etikete değil, commitin tam amprentasına sabitlenir. Mart 2026'da popüler bir eylem `v1`…`v45` etiketlerinden kötü amaçlı koda yönlendirildi ve 24 saatte 23.000'den fazla depoya ulaştı; bir amprenta yer değiştirmez. Akış, çalışma kopyasında kimlik bilgisi tutmaz ve yayın bir token üzerinden geçmez: hedef makinede, kendi runner'ı üzerinden ve noktasal olarak verilmiş yetkilerle geçer. Böylece sunucu erişim anahtarlarından hiçbiri kod platformunda durmaz.
Sınırlı, sağlık kontrolleri olan ve diski doldurmayan günlükler ile контейynerler
Her hizmetin yeniden başlatma politikası, kendi sağlık kontrolü (veritabanı hazırlığı, uygulama durum noktası), yük gerektirdiğinde işlemci ve bellek sınırları ve kapsayıcı motoru düzeyinde günlük döndürme, maksimum boyut ve dosya sayısı vardır. Veritabanı portları yerel arayüze bağlanır, asla genel olmaz. Zorunlu değişkenler, kapsayıcı eksik olduklarında varsayılan tehlikeli bir değerle başlamak yerine başlamayı reddedecek şekilde tanımlanır.
Öz barındırılan veritabanı, bağımsızlık önemli olduğunda
Kapsayıcılarda tam yığın — veritabanı, kimlik doğrulama, REST arayüzü, gerçek zamanlı kanal, dosya depolama, erişim kapısı — uzantılar açıkça etkinleştirilmiş ve bellek ile bağlantı parametreleri makineye uygun, varsayılanlarda bırakılmamış. Göçler depoda sürümlenmiş dosyalardır ve şema bellekte tutan bileşenin yeniden başlatılmasıyla elle uygulanır. Bu seçimin nedeni basittir: Avrupa Birliği dışından yönetilen bir platform teknik olarak mükemmel olabilir, yine de hukuken uygun olmayabilir.
Nasıl görünüyor
Süreç, adım adım.
01
Mevcut olanı ve neyin kaybolabileceğini envanterliyoruz
Makinede fiilen ne çalışıyor, hangi gözetmen altında, hangi sürümlerle, hangi portlar açık; hangi yedekler var ve bunlardan herhangi biri hiç geri yüklendi mi; hangi sırlar depolara girdi; depodaki yapılandırma ile sunucudaki dosya arasındaki fark nedir. Son madde neredeyse her zaman sürpriz çıkarır — bizim de belgelenmiş bir vakamız var; sunucudaki dosya doğrudan, depo dışında düzenlenmişti ve yanında zaman damgalı bir yedek bırakmıştı. Envanteri ve tek hata noktaları listesini teslim ediyoruz.
Varsayılan olarak girişleri reddeden ve yalnızca gerekli olanı açan firewall, yinelenen kimlik doğrulama denemelerine karşı koruma, boyutlandırılmış swap alanı, TLS ve otomatik yenileme ile nginx, yerel arayüze bağlı uygulama, önyüklemede başlamak üzere yapılandırılmış süreç gözetmeni. Yapılandırmaları yalnızca makinede değil, depoda da teslim ediyoruz; böylece bir sonraki kişi bunları hafızasından yeniden kurmak zorunda kalmaz.
03
Yayınlamayı tekrarlanabilir ve geri döndürülebilir hale getiriyoruz
Önceki sürümün korunduğu bir yayınlama betiği, yayınlamadan sonra sağlık kontrolü ve arızada otomatik geri dönüş. Ekip ve sürekli entegrasyon varsa, hedef makinede kendi runner’ı eklenir; eylemler fingerprint’e sabitlenir ve çalışma kopyasında kimlik bilgisi bulunmaz. Yazılı prosedürü ve müşteri önünde yapılmış bir geri dönüşü teslim ediyoruz — test edilmemiş bir geri dönüş, geri dönüş değildir.
04
Yedekleri, saklamayı ve alarmları kuruyoruz
Dosyanın boş olmadığını doğrulayan günlük yedek, makineden uzakta Avrupa Birliği içindeki bir bölgede yedek, yalnızca başarılı bir yedekten sonra çalışan ve iz bırakan saklama görevi, ayrıca yalnızca durum kodunu değil yanıt içeriğini de okuyan, frekans sınırlamalı alarmlar. Fiilen yapılmış bir test geri yüklemesini ve günlüğünü teslim ediyoruz.
05
Anahtarları devrediyoruz ve neyin yapılmadığını yazıyoruz
Kendi hesabınızda erişim, işletim dokümantasyonu, zamanlanmış görevler listesi ve — zorunlu olarak — otomatikleştirilmemiş şeylerin dürüst listesi ile nedenleri. Bizde bunlardan ikisi neredeyse her zaman listede kalır: şema migrasyonları, bilinçli olarak elle uygulanır, ve bu sitenin yayınlanması, ki hâlâ manueldir.
Straturile unei instalări, de jos în sus: mașina virtuală într-o regiune europeană confirmată, motorul de containere cu rotația jurnalelor, baza de date cu copia zilnică verificată și copia din afara mașinii, procesele sub supraveghetor cu repornire la eșec, nginx cu TLS și limite de rată — iar lateral, lanțul de publicare cu versiunea anterioară păstrată și revenirea automată.
Veriler
Neye dokunuyoruz, nerede duruyorlar ve ne kadar kalıyorlar
Veri koruma sorumlusu olan herkesin soracağı sorular — o sormadan önce burada sorulmuş hâliyle.
Verilerin fiilen nerede durduğu ve nasıl doğrulandığı
Konum belgelere göre değil, makineden doğrulanır: sağlayıcının metadata hizmeti gerçek bölgeyi söyler, adres kaydı ise ülkeyi söyler. Sistemlerimiz OVHcloud, București, România ve Microsoft Azure, Poland Central üzerinde çalışır — ikisi de Avrupa Ekonomik Alanı içindedir. Sivil platformun yedekleri, Birlik’in kuzeydeki bir bölgesinde durur; ayrıca yine Birlik’ten ikinci bir bölgede replikasyon vardır. Bu satırlar, doğrulayamadığımız daha uzun bir konum listesinin yerine geçti.
Çalışma sırasında biz ne görüyoruz
Yapılandırma, günlükler, veritabanı şeması ve süreçlerin durumu. Kişisel verilerin içeriği çalışmanın bir parçası değildir; ancak bir hata ayıklama yine de örnek gerektirirse, bunun için oluşturulmuş bir vaka kullanılır. Yönetim erişimi müdahale süresince, isimlendirilerek verilir ve sonunda kaldırılır — ayrıca kaldırma doğrulanır, varsayılmaz.
Günlükler ve ne kadar yaşadıkları
Bu sitenin web günlükleri günlük olarak döndürülür, on dört örnek saklanır ve okuma izinleri yönetim grubuyla sınırlandırılır. Konteyner düzeyinde döndürme, konteyner motoru tarafından yapılır; boyut ve dosya sayısı sabittir, böylece konuşkan bir hizmet diski doldurup veritabanını durdurmasın — bir üretimin çökmesinin en sıradan yolu budur.
Sırlar depoda durmaz
Hassas değerler, sistem birimi tarafından okunan, birime yazılmayan kısıtlı yetkili ortam dosyalarından alınır — çünkü bir birimin tanımı ve sistem günlüğü, düşünüldüğünden daha fazla kişi tarafından okunabilir. Yayın zincirinde, üretim ortamı dosyası kod platformundan geçmez: yerel olarak makineye kopyalanır ve derlemeden hemen sonra silinir. Mevcut bir altyapıyı devraldığımızda, ilk adım her zaman depolara ulaşmış sırların envanteri ve bir döndürme planıdır.
Süreklilik: ayrıldığımızda ne olur
Devretme, altyapı sağlayıcısında kendi hesabınızla erişim, tüm sunucu yapılandırmalarının bulunduğu depo, yayın ve geri dönüş prosedürü, yedek geri yükleme prosedürü — yazılmış olması değil, test edilmiş olması gerekir — ve her birinin ne yaptığını gösteren zamanlanmış görevler listesini ifade eder. Yanlışlıkla silmeye karşı kilit, en baştan üretim kaynak grubuna uygulanır.
Bir vaka
On bir gündür çalışmayan günlük bir rapor, her şeyin 200 döndüğü bir sistemde
Durum
Dahili, kendi iç platformda, birkaç otomatik rutin günlük raporlar üretir ve verileri temizler. Görevler, uygulamanın içinden, süreç içi sayaçlarla başlatılıyordu. Hiçbir şey bir sorun olduğuna işaret etmiyordu: hizmet çalışıyordu, adres yanıt veriyordu, günlüklerde hata yoktu.
Ne kurduk
Günlük rapor on bir gündür eksikti ve geriye kalan tek iz, kimsenin bakmadığı bir tabloda boş bir alandı. İki ayrı kusur ortaya çıktı. Birincisi: uygulamanın içinde başlatılan bir sayaç, hizmet her yeniden başlatıldığında sıfırlanır; dolayısıyla yayınlar arasındaki aralıktan daha uzun aralıklı bir rutin hiçbir zaman tetiklenmez. İkincisi, daha sinsi olanı: rutin on bir kez de doğru şekilde tetiklenmiş ve her seferinde 200 kodu döndürmüştü — ancak yanıt gövdesi, kimsenin okumadığı kısmi hatalar içeriyordu.
Ne çıktı
Zamanlama, yeniden başlatmalardan etkilenmeyen bir sistem planlayıcısına uygulamanın dışına taşındı. Çalıştırma, her yürütme için bir günlük satırı yazan, yanıt gövdesini hata anahtarları üzerinden tarayan ve bir mesajlaşma kanalına uyarı gönderen bir betikle sarıldı — frekans sınırlamasıyla, böylece tüm gün çökmüş bir bağımlılık doksan altı aynı mesaj üretmesin. İç hataları olan bir 200 yanıtı artık başarıdan ayrı, kendine ait bir duruma sahip.
Vakanın söylemedikleri
Bunun hiçbiri klasik anlamda bir altyapı sorunu değildi: sunucu çalışıyordu, diskte yer vardı, süreç canlıydı. Tam da bu yüzden on bir gün sürdü. İşletimdeki en pahalı kusurlar çöküşler değildir — onlar görünür — ama hiçbir şey yapmadan başarı bildiren şeylerdir. Önemli olan sağlık kontrolü, "çalışıyor musun?" diye sormaz; "gerekli olanı, gerekli olduğu kadar yaptın mı?" diye sorar.
Sorular
İnsanların aramadan önce bize sordukları
Verilerimiz fiilen nerede duracak?
Siz nereye seçerseniz, biz gerçekten orada olup olmadığını doğrularız. Sistemlerimiz OVHcloud, București ve Microsoft Azure, Poland Central üzerinde duruyor; ikisi de Avrupa Ekonomik Alanı içinde ve konum, sanal makinenin metadata hizmeti ile adres kayıt defteri sorgulanarak doğrulandı — sağlayıcı belgeleri okunarak değil. Doğrulama önemlidir: Avrupa Ekonomik Alanı içi bir aktarım için, Legea 195/2024'ün aktarım bölümüne ilişkin hükmü uygulanmaz ve özel izinler gerekmez. Bunun dışında, bir güvence dosyası ortaya çıkar.
Neden yönetilen bir platform değil de kendi sunucunuz?
Her zaman değil. Ekip küçük olduğunda, trafik düzensiz olduğunda ve yığın içinde hiçbir şeyin ikamet gereksinimi olmadığında yönetilen bir platform doğru seçimdir. Kendi sunucusu üç durumda daha iyi bir argüman olur: verilerin belirli bir yargı alanında kalması gerektiğinde, ölçek büyüdükçe maliyet öngörülemez hale geldiğinde ve her şeyi alıp gidebilmek istediğinizde. Kendi sistemimiz için tersine geçiş de yaptık: Amerika Birleşik Devletleri'nde barındırılan bir veritabanından, Avrupa Birliği'nde kendi kendine barındırılan bir yığına; sekiz kapsayıcıyla — veritabanı, kimlik doğrulama, REST arayüzü, gerçek zaman, depolama, meta veriler, panel ve erişim gate'i.
Bir yayın kötü çıkarsa ne olur?
Geri dönülür, tercihen de kendi kendine. Önceki sürüm, yenisinin yanında disk üzerinde kalır ve yayın sonrası bir kontrol gerçek sayfayı ister ve sunulan dosyanın yeni derlenmiş olan olduğunu doğrular; değilse, betik otomatik olarak geri döner. Sembolik bağlantının atomik değiştirmesini kullandığımız yerlerde, geri dönüş tek bir işlemdir. Bu bir broşür açıklaması değil — mekanizma, yürütücünün çalışma dizininde kalan eski bir paketle yapılmış bir yayını zaten yakaladı ve iptal etti.
Yedek alıyor musunuz? Ne sıklıkta ve test ediyor musunuz?
Onu kurduğumuz yerde günlük — ve bunu özellikle vurguluyoruz, çünkü otomatik bir kopya, bir uygulamayı bir sunucuya taşıdığınızda kendiliğinden ortaya çıkmaz. Kopya tam saatte çalışır, makine kapalıysa bir sonraki açılışta geri alınır ve dışa aktarma boş çıkarsa yürütme başarısız sayılır. Kopya ayrıca makineden dışarı, Avrupa Birliği'nde bir bölgeye, replikasyon, sürümleme, geri alınabilir silme ve otomatik süre sonu ile gider. Geri yükleme testi teslimatın bir parçasıdır: hiç geri yüklenmemiş bir kopya bir varsayımdır, kopya değil.
Bir şey çöktüğünde bunu ilk kim öğrenir?
Ne inşa ettiğimize bağlıdır ve bunu süsleme yapmadan söylemek gerekir. Konteyner düzeyinde sağlık kontrolleri ve uygulamaların durum uç noktaları vardır; mesajlaşma kanalına frekans sınırlamalı alarm, onu kurduğumuz yerlerde vardır. Kimsenin sorgulamadığı bir durum kontrol noktası izleme değildir — sayfadır. Gerçek izleme istiyorsanız, bu ayrı bir aşamadır; periyodik sorgulayan harici bir gözlemci ve uyandırılmasına izin verilen bir alarm alıcısı ile.
Veritabanı migrasyonları her yayınlamada otomatik uygulanır mı?
Hayır, ve bu bilinçli bir karardır, bir atlama değil. Yayınlama zinciri kodu derler ve kopyalar; yalnızca bu. Şema değişiklikleri depo içindeki sürümlenmiş dosyalardır, manuel uygulanır, arkada taze bir yedekle birlikte ve şemalarını bellekte tutan bileşenler bundan sonra yeniden başlatılır. Tabloda ne olduğunu bilmeyen bir süreç tarafından üretimde otomatik uygulanan bir migrasyon, geri döndürülemez veri kaybının olağan yoludur.
Yayınlama zincirinizin bir saldırı yolu hâline gelmesini nasıl önlüyorsunuz?
Üç kural ile. Dış eylemler etikete değil, commitin tam parmak izine sabitlenir — Mart 2026'da yaygın kullanılan bir eylem etiketlerinden kötü amaçlı koda yönlendirildi ve 24 saat içinde 23.000'den fazla depoya ulaştı. Çalışma kopyası kimlik bilgisi saklamaz. Yayınlama, kod platformunda saklanan bir erişim anahtarıyla değil, hedef makinede çalışan kendi yürütücümüz aracılığıyla, noktasal olarak verilen yetkilerle yapılır. Eski projelerimizin hepsinin henüz bu üçünü de tam olarak karşılamadığını kabul ediyoruz; bunların taşınması başlı başına bir iştir.
Başka biri tarafından yapılmış bir altyapıyı devralıyor musunuz?
Evet ve ilk geçiş her zaman bir değişiklik değil, bir envanterdir. Gerçekte ne çalışıyor, hangi denetleyici altında, hangi sürümlerle, hangi portlar açık, hangi yedekler var, bunlardan biri hiç geri yüklenmiş mi, hangi sırlar depolara sızmış ve depodaki yapılandırma sunucudaki dosyayla ne ölçüde benziyor. Son kontrol neredeyse her zaman bir şey çıkarır: kendi projemizde, üretimde doğrudan düzenlenmiş ve yanında zaman damgalı bir yedek kopya bırakmış bir yapılandırma dosyasını belgeledik.
Başka biriyle çalışmak istersek ne olur?
Tamamen ayrılırsınız. Altyapı en baştan sağlayıcıdaki kendi hesaplarınızda durur ve teslimat, tüm sunucu yapılandırmalarıyla birlikte depoyu, yayınlama ve geri dönüş prosedürünü, test edilmiş geri yükleme prosedürünü ve her birinin ne yaptığını gösteren zamanlanmış görevler listesini içerir. Üretim kaynak grubunun yanlışlıkla silinmesine karşı kilit kurulumdan itibaren konur. Bir sağlayıcı ayrılmanızı altyapıyı yeniden yazma koşuluna bağlıyorsa, sorun teknoloji değil, kendisiydi.
Bunlardan 29 tanesi depolarımızdaki kod ve dosyalardır. Adlarını ya da satırlarını yayımlamıyoruz: hepsi bir arada, tek bir sayfada, yalnızca bize ait olmayan sistemlerin nasıl kurulduğunu fazla net anlatırdı. İstek üzerine, depoda sizinle birlikte gözden geçiriyoruz — doğrulama hâlâ mümkün, sadece bir görüşme içinde yapılıyor.