6 puan yazan GN⁺ 2025-04-29 | 1 yorum | WhatsApp'ta paylaş
  • Kubernetes tabanlı mikroservis geliştirme için ücretsiz, açık kaynaklı geliştirme ortamı otomasyon aracı
  • Kod değişikliği → dosya izleme → imaj derleme → dağıtım güncelleme akışını otomatikleştirerek tilt up komutuyla tüm ortamı ayağa kaldırabilir
  • Kubernetes merkezli olsa da docker-compose ve yerel komut tabanlı iş akışlarını da destekler
  • 2022'de Docker tarafından satın alındı, ancak bağımsız bir açık kaynak proje olarak korunuyor ve gelişmeye devam ediyor
  • Mikroservis karmaşıklığını yönetmek için modern geliştirme ortamlarının birleşik yönetimini hedefler

Tilt nedir

  • Modern uygulamalar tek bir binary'den değil; HTTP üzerinden etkileşen birden çok servis, veritabanı ve frontend sunucusundan oluşur
  • Tilt, bu tür karmaşık bileşenleri tek seferde anlayıp yönetebilen bir mikroservis geliştirme ortamı aracıdır
  • Dosya düzenleme, imaj derleme ve sunucu güncelleme süreçlerinin tamamını otomatikleştirerek geliştirme hızını artırır

Tilt'i kullanacak ekipler

  • Mikroservis tabanlı uygulamalar geliştiren ekipler için uygundur
  • Çok sayıda terminal penceresi açıp sunucu loglarını yöneten ya da karmaşık shell script'lerle geliştirme ortamı kuran ekipler için özellikle faydalıdır
  • Herkes tilt up komutuyla aynı geliştirme ortamını kolayca kurabilir

Neden Kubernetes merkezde

  • Kubernetes; container, pod ve service gibi standartlaştırılmış sunucu çalıştırma blokları sağlar
  • Geliştirme ortamında da bu standardın kullanılması, production ve geliştirme ortamları arasındaki farkı azaltabilir
  • Tilt, Kubernetes dışında docker-compose ve yerel komutları da destekler; ancak uzun vadede Kubernetes merkezli bir yapıya yakınsamasının beklendiğini ifade eder

Tilt'in geliştirilmesi ve geleceği

  • Tilt başlangıçta bağımsız bir startup'tı, ancak 2022'de Docker tarafından satın alındı
  • Hâlâ açık kaynak olarak sürdürülüyor ve Docker Compose ile Docker Desktop gibi araçlarla entegrasyon içinde geliştiriliyor
  • Yeni projeler de geliştiriliyor; Tilt'in fikirlerini daha geniş geliştirici ekosistemine yaymak hedefleniyor

İsmin anlamı

  • "Tilt", Don Kişot'un yel değirmenlerine saldırdığı hikâyeden ilham alır
  • Demo uygulamasının adı Servantes olup, Don Kişot'un yazarı Cervantes'e göndermedir

1 yorum

 
GN⁺ 2025-04-29
Hacker News görüşleri
  • Bu konuyu burada görmek ilginç. Ben Tilt'i birkaç yıldır kullanıyorum ama Docker tarafından satın alındıktan sonra geliştirme hızının yavaşladığını düşünüyorum

    • Tilt yerel bir geliştirme ortamı kurarak servislerin prodüksiyon, test ve geliştirmede aynı şekilde çalışmasını sağlıyor
    • Servis kodu büyük ölçüde sadeleşti ve kalite arttı
    • Özellikle CRD'lerle ilgili kısımda iyileştirme gerekiyor (k8s_yaml'ın bir CRD'ye bağlı olduğunu belirtmenin bir yolu yok, bu yüzden tilt up çağrısı sık sık bozuluyor)
    • Yeni bir projeye başlarken yaptığım ilk şey tilt up'ı çalıştırmak oluyor
    • Test için kullandıklarım arasında güvenlik ve gözlemlenebilirlik için eBPF tabanlı toplayıcılar, veri pipeline'ları, Helm chart geliştirme ve Kubernetes controller'ları var
    • Oldukça esnek ve çok çeşitli geliştirme işleri için güçlü
  • Bu sunum bana biraz komik geliyor

    • Modern uygulamalar çok fazla servisten oluşuyor. Her yerdeler ve durmadan iletişim halindeler
    • Bu yüzden daha fazla servisi kolayca oluşturabilmek için bir araç yaptılar
  • Hız ve doğruluk arasında her zaman bir ödünleşim gerekiyor

    • Yerel bir entegrasyon ortamını korumaya çalışırsanız çok yavaş ve maliyetli hale geliyor
    • Sorun Kubernetes'in kendisi değil; bağımlılıklar arttıkça dünyayı yerelde kopyalamaya çalışmak giderek yavaşlıyor
    • Ben docker-compose benzeri şeylerle hızlı ve sade geliştirme ortamlarını seviyorum. Bunlar hızı korumak için bazı bağımlılıkları mock'layabiliyor. Yerel testler geçince diğer ortamlarda Kubernetes kullanılıyor
  • Bence "geliştirme ortamı" gerçekten testleri doğrudan dilin native araçlarıyla çalıştırabilmeli; örneğin cargo test, bundle exec rspec gibi

    • Kubernetes çalıştıran bir VM çalıştırıp, o VM'in testleri çalıştırmak için Docker container'ları başlatmasını sağlamak beni çok sinirlendirirdi
    • Bunu düzgün ve güvenilir şekilde yapmak hâlâ çok iş gerektiriyor. Amaç Docker kullanmamaksa daha da fazla iş gerekebilir (macOS'ta native çalıştırmak için bu kesinlikle gerekli)
    • Bu alanda çok fazla araç var gibi görünüyor. Keşke bunlara "geliştirme ortamı" araçları demeselerdi. Bunlar daha çok "uygulamayı yerel makineye deploy etme" araçlarına benziyor
  • nix-shell'den bahsetmeden geçemem: nix-shell bağlantısı

  • Tilt'i gerçekten çalışırken görmek istiyorsanız, Chroma açık kaynak deposunda geliştirme ve CI için veritabanının dağıtık sürümünü çalıştırmakta bunu kullanıyoruz. Gerçekten çok iyi - klonladıktan sonra tilt up çalıştırın, direkt çalışıyor

  • Yerel ortam kurulumu hiçbir zaman asıl sorun olmadı

    • Tek kümeli dağıtım çok kolay
    • Sorun, prodüksiyonda yönettiğimiz servislerin birden fazla bölgeye (veya k8s kümesine) dağıtılmış olması
    • Sorun, dağıtık uygulamaları debug etmek
  • Tilt, "skaffold dev" ile kıyaslandığında nasıl? Biz bu amaç için skaffold kullanıyoruz. Küme içinde geliştirme yapmak için kullanıyoruz

  • Kısa süre önce Tilt'i biraz denedim. Tilt, Garden ve muhtemelen birkaç başka şeyi de kullandım, sonunda DevSpace'te karar kıldım

    • Hatırladığım kadarıyla mevcut prodüksiyon altyapımıza en iyi uyan oydu. Her şeyi farklı bir şekilde yeniden yazmak gerekmedi
    • Yani mevcut kustomize+k8s kurulumuyla iyi çalıştı. Port forwarding ve çalışan container'lara hızlı dosya senkronizasyonu ekliyor. Benim gerçekten istediğim tek şey bu. Her değişiklikte imajı yeniden build etmekten hoşlanmıyorum
  • Bu aslında özünde bir geliştirme container'ı değil mi?