Mühendislik Hikâyesi · Mimari

Kar­ma­şık­lık eklemek yerine kal­dır­mak

Gömülü API bileşenleri monolitten ayrıştırılıp bağımsız hâle getirildi. Sonuç daha fazla işlev değil, daha az iç içe geçmişlikti. Çıkarmanın çoğu zaman eklemekten daha değerli olduğuna dair öğrenilmiş bir ders. Bir kahramanlık hikâyesi değil.

Bu nedir? · Mühendislik Hikâyesi

Edinilmiş bir tecrübe — bir hata, oluşma sebebi ve kazandırdığı ders. Gizli, müşteri bilgisi olmadan, dramasız. Hata bir kahraman değil, bir öğretmendir. Genel bakışa git

Yazar
Batunet Engineering
Okuma süresi
3 dk
Seviye
İleri düzey
Durum
Onaylandı
Bu sayfada

İlerleme çoğu zaman eklemekle bir tutulur: daha fazla işlev, daha fazla bileşen, daha fazla yetenek. Bu hikâye, çıkarmaktan oluşan bir ilerlemeyi anlatıyor. Bilinçli olarak genel tutuldu — sistem, katılımcılar ve zaman bilgisi olmadan.

Durum

Bir monolitin içinde harici API bileşenleri sıkıca gömülüydü — yabancı servislerle konuşan, sistemin geri kalan koduyla iç içe geçmiş parçalar. İşlerini görüyorlardı, ancak yalnızca bir bütün olarak hareket ettirilebilen büyük bir bütünün parçasıydılar. Her şey her şeye bağlıydı.

Başlangıç varsayımları

Gömülü yapı bir zamanlar en akla yatkın olandı: Harici bir servise erişimi, ihtiyaç duyulan yere, sistemin akışının tam ortasına yazarsınız. İlk ihtiyaç için bu hızlı ve doğrudur. Sessiz varsayım, birlikte yazılanın birbirine ait olduğuydu — kodda yakınlığın, işin özünde de yakınlık anlamına geldiği.

Sorun

Zamanla bu yakınlık bir yüke dönüştü. API bileşenleri monolitin içinde olduğu için onun kaderini paylaşıyorlardı: Ayrı işletilemiyor, ayrı ölçeklenemiyor, bütüne dokunmadan değiştirilemiyorlardı. Yük altında daha fazla kaynağa ihtiyaç duyacak bir bileşen, bunları ancak tüm sistem büyütülerek alabiliyordu. İç içe geçmişliğin bedeli, kod yazılırken kimsenin tahmin etmediği bir yerde ödendi: hareket kabiliyetinde.

Neden

Neden, koddaki yakınlığın aidiyetle karıştırılmış olmasıydı. API bileşenleri sistemin bir parçası gibi görünüyordu, çünkü onun içine yazılmışlardı — ama doğaları gereği bağımsızdılar: dışarıya karşı net bir sınırı olan, açıkça ayrılmış görevler. Monolite ait değillerdi; yalnızca orada yazılmışlardı.

Karar

Karar, eklemek yerine çıkarmaktı — gömülü bileşenleri monolitten ayrıştırıp bağımsız API'lere dönüştürmek. Yeni bir özellik yok, ek bir yetenek yok; yalnızca zaten var olan ama görünür kılınmamış bir yerde bir sınır çizildi.

Uygulama

Bileşenler doğal sınırları boyunca ayrıldı ve net bir arayüzün arkasında bağımsız servisler olarak yeniden kuruldu. Sistemin geri kalanı artık onları kendi içinde taşımak yerine bu sınır üzerinden çağırıyordu. Yeniden yapılandırma, sistemin daha önce yapamadığı hiçbir şey eklemedi — yalnızca zaten var olanı, gerçekten ayrılması gereken çizgiler boyunca düzenledi.

Trade-off'lar

Ayrıştırma bedava değildir: Bağımsız bir API, işletilmesi, izlenmesi ve versiyonlanması gereken kendine ait bir sınır getirir — daha az değil, daha fazla hareketli parça. Kazanç başka bir yerdedir: daha net bir mimari ve her bileşeni bağımsız olarak işletip ölçekleyebilme yeteneği. Bileşenler gerçekten çekirdekten ayrılamaz olsaydı farklı karar verirdik — o zaman ayrıştırma, birbirine ait olanı ayıran yapay bir sınır olurdu.

Ne öğrendik

Karmaşıklığı kaldırmak çoğu zaman işlev eklemekten daha değerlidir. Görünür ilerleme eklemekte, asıl ilerleme ise çoğu zaman çıkarmaktadır — hep orada olduğu için artık kimsenin fark etmediği bir iç içe geçmişliği çözmekte. Bir sistem daha fazlasını yapabildiği için değil, neyin neye ait olduğu netleştiği için daha iyi olur. “Ne ekleyebiliriz?” sorusu cazip olanıdır; “Aslında burada ne olmamalı?” sorusu daha değerli olanıdır.

Bu deneyim Batunet'i nasıl değiştirdi

O zamandan beri karmaşık bir sistemde, neyin eklenebileceğini düşünmeden önce neyin kaldırılabileceğini ya da ayrıştırılabileceğini inceliyoruz. Net bir sınırı, yeni bir yetenek getirmese bile bir kazanç olarak görüyoruz. En zarif yeniden yapılandırma çoğu zaman, sonrasında sistemin daha azını ama daha düzenli olanı içerdiği yeniden yapılandırmadır.

Devamı

Temel, Batunet Engineering Method'dur: yapıyı gerçek sınırlar boyunca kurmak, iç içe geçmişliği çözmek, çıkarmayı eklemek kadar ciddiye almak.


Her büyüme ilerleme değildir. Bazen en iyi adım, neyin nereye ait olduğu netleşsin diye bir şeyi bütünden ayırmaktır.

Referans verilen bileşenler

Bilgi grafiği

Mühen­dis­lik yol­cu­lu­ğu­nuza devam edin.

Bağlantılı kavramlar, stratejik kararlar, rehberler ve yaklaşımlar — bir link yığını olarak değil, tutarlı bir akış halinde.

Bu alanda somut bir projeniz mi var?

Referans rehberleri düşünce yapımızı yansıtır. Kendi sisteminiz için doğrudan yönetimle konuşun — teknik düzeyde, satış baskısı olmadan.