Her ekibin o bir tane mimari diyagramı vardır. Biri onu yaptığı gün harikaydı, yaklaşık bir hafta sonra da yanlıştı. Bir servis taşındı, bir önbellek belirdi, bir kuyruk eklendi ve kimse çizim aracını açıp kutuları yeniden itip kakmak istemedi.
Böylece diyagram sessizce çürür ve yeni mühendisler sistemi YAML okuyarak öğrenir. İyi haber şu: aynı YAML, resmi senin yerine çizmek için fazlasıyla yeterli. LetDraw Compose ya da Kubernetes dosyanı okur ve mimariyi yerleştirir; böylece diyagram doğruluk kaynağından uzaklaşmak yerine doğrudan ondan gelir.
Docker Compose'u görselleştir: on saniyelik versiyon
Koddan Oluştur penceresini aç, dosyanı yapıştır ve gerçek, düzenlenebilir şekillerden oluşan, yerleşimi yapılmış bir diyagram al. Kutu sürüklemek yok, okları elle bağlamak yok. İşte çoğu kişinin tanıyacağı bir Compose dosyası:
services: web: image: nginx depends_on: [api] api: image: app:latest depends_on: [db, redis] db: image: postgres:16 redis: image: redis:7
Bunu yapıştır, LetDraw onu şuna dönüştürsün:
Veritabanı bir silindire dönüştü, önbellek kendi ikonunu aldı ve depends_on bağlantıları kutularının içinden değil, etrafından dolaşan oklara dönüştü. Bu bir yapılandırmanın ekran görüntüsü değil, bir diyagram.
Aslında ne yapıyor
Pencere, altını çizmeye değer üç şey yapıyor:
- Formatı otomatik algılar. Bir menüden "Compose" ya da "Kubernetes" seçmezsin. Yapıştırırsın, LetDraw ne olduğunu tanır.
- İlişkili parçaları kümeler. Kubernetes manifest'leri gruplanır; böylece yerleşim düz bir düğüm çorbası değil, namespace'lerinin aynası olur.
- Doğru ikonları basar. Servisler, veritabanları ve kuyruklar tanınır ürün ikonları alır; böylece diyagram bir bakışta okunur.
Diyagram artık doğruluk kaynağından geliyor; yani disiplinle değil, yapısı gereği doğru.
YAML'dan mimari diyagram: yalnızca Compose değil
Aynı pencere tek bir formattan çok daha fazlasını kabul eder; işin özü de bu. Altyapıyı ya da bir sistemi anlatıyorsa büyük ihtimalle çizer:
- Namespace'e göre gruplanmış Kubernetes manifest'leri
- Altyapı ve sürümler için Terraform ve Helm
- Graphviz DOT, SQL DDL, bir OpenAPI spesifikasyonu, hatta bir git log
- Diyagramları zaten kod olarak tutuyorsan Mermaid ve D2
Sonra onu kendine göre şekillendir
Otomatik yerleşim seni yolun yüzde 90'ına götürür; değer ise son yüzde 10'dadır. Sonuç gerçek şekillerden oluştuğu için şunları yapabilirsin:
- Bir kutuyu itebilir, bir not ekleyebilir ya da riskli yolu vurgulayabilirsin
- Bir ekibe ya da bir bounded context'e ait parçaları gruplayabilirsin
- Bir doküman için PNG, SVG ya da PDF olarak dışa aktarabilir veya doğrudan panoya kopyalayabilirsin
- Yeniden koda ihtiyaç duyduğunda çizimi Mermaid ya da D2'ye geri çevirebilirsin
O resmin dokümanlarında yaşamasını istiyorsan bir README'ye ya da wiki'ye bir embed kodu bırak; canlı, salt okunur bir görünüm olarak kalır. Birinin yeniden dışa aktarmayı hatırlaması gereken eskimiş PNG'ler artık yok.
Bu DevOps için neden önemli
Mimari diyagramların ortak bir zihinsel model olması beklenir. Gerçeğin gerisinde kaldıkları anda bir tuzağa dönüşürler: yeni insanlara yanlış şeyi öğretir ve inceleyicilere sahte bir güven verirler. Onları zaten bakımını yaptığın dosyalardan oluşturmak bu boşluğu kapatır. Diyagramı yapmak ucuzdur, dolayısıyla güncel tutmak da ucuzdur ve sahip olmaya değer tek diyagram güncel olanıdır.
docker-compose.yml dosyanı yapıştır ve yığınının kendini çizişini izle. Bu cümleyi okumak kadar sürer.