Geliştiricilerin kabusu olan karmaşık yerel ortam kurulumlarına veda edin! DDEV ve Lando, Docker tabanlı güçlü yönlendirme mekanizmalarıyla projelerinizi anında erişilebilir kılar. Bu makalede, bu araçların arkasındaki sihirli dünyayı, nasıl çalıştıklarını ve geliştirme süreçlerinizi nasıl hızlandırdıklarını keşfedin.
Modern yazılım geliştirme dünyasında, projenizi üretim ortamına benzer bir şekilde yerel makinenizde çalıştırmak, sorunsuz bir geliştirme süreci için hayati öneme sahiptir. Peki, bu neden bu kadar kritik? Cevap oldukça basit: “Benim makinemde çalışıyordu!” cümlesini duymak istemezsiniz. Geliştiriciler olarak, genellikle ekip üyelerinin farklı işletim sistemleri ve farklı yazılım versiyonları kullanması gibi durumlarla karşılaşırız. Bu uyumsuzluklar, projeyi bir makineden diğerine taşırken, hatta üretim ortamına dağıtırken ciddi baş ağrılarına yol açabilir. Bu noktada, yerel geliştirme ortamları devreye girer ve bize adeta bir can simidi uzatır.
Yerel geliştirme ortamları, projenizin tüm bağımlılıklarını (veritabanları, web sunucuları, programlama dili versiyonları vb.) tek bir izole ve tutarlı ortamda barındırma olanağı sunar. Böylece, her ekip üyesi aynı yapılandırma üzerinde çalışır, bu da hataları azaltır ve işbirliğini kolaylaştırır. Docker teknolojisi, bu tutarlılığı sağlamanın en popüler ve etkili yollarından biri haline gelmiştir. Docker konteynerleri sayesinde, uygulamanız ve tüm bağımlılıkları küçük, hafif ve taşınabilir paketler halinde izole edilebilir. Bu da geliştiricilere, projelerini farklı platformlarda (yerel makine, test sunucusu, üretim sunucusu) aynı şekilde çalıştırma gücü verir. Konteynerler, bir nevi minyatür sanal makineler gibidir, ancak çok daha hızlı başlar ve daha az kaynak tüketirler.
İşte tam bu noktada DDEV ve Lando gibi araçlar sahneye çıkıyor. Her ikisi de Docker’ın gücünü kullanarak, web geliştiricilerinin yerel ortam kurulumunu basitleştiren ve otomatikleştiren araçlardır. Amacı, geliştiricilerin saatlerce süren yapılandırma işlemleriyle uğraşmak yerine, doğrudan kod yazmaya odaklanmalarını sağlamaktır. Bu araçlar, projenize özel bir Docker ortamı oluşturur, gerekli tüm servisleri (Nginx, PHP-FPM, MySQL/PostgreSQL vb.) ayağa kaldırır ve en önemlisi, bu servisleri yerel makinenizdeki bir alan adı (domain) üzerinden erişilebilir hale getirir. Bu erişilebilirliği sağlayan mekanizma ise “routing” yani yönlendirme olarak adlandırılır. Yönlendirme, belirli bir URL’yi doğru Docker konteynerine ve doğru servise yönlendirerek, tarayıcınızdan projenize kolayca erişmenizi sağlar. Karmaşık port numaraları veya IP adresleri ezberlemek yerine, örneğin http://projeadi.ddev.site veya http://projeadi.lndo.site gibi anlaşılır adresler kullanabilirsiniz. Bu, geliştirme deneyimini büyük ölçüde iyileştirir ve projeler arasında geçiş yapmayı son derece pratik hale getirir.
DDEV’in Routing Mekanizması: Traefik ve DNS Çözümlemesi Nasıl İşler?
DDEV, yerel geliştirme ortamlarınızı oluştururken ve yönetirken, projelerinize otomatik olarak alan adları (domainler) atayarak erişilebilirliği sağlayan oldukça sofistike bir yönlendirme sistemine sahiptir. Bu sistemin kalbinde Traefik adında güçlü bir ters proxy ve dinamik yönlendirme aracı ile DDEV’in kendi yerel DNS çözümü yatar. DDEV, varsayılan olarak .ddev.site uzantılı yerel alan adları kullanır, örneğin bir Drupal projesi için http://drupalprojesi.ddev.site gibi bir adres otomatik olarak oluşturulur.
Peki, bu sihir nasıl gerçekleşiyor? İlk olarak, DDEV sisteminize özel bir yerel DNS servisi kurar (Windows ve macOS’ta dnsmasq veya kendi iç mekanizması, Linux’ta genellikle sistemin yerel DNS ayarları kullanılır). Bu servis, tüm *.ddev.site isteklerini yerel makinenizin IP adresine (genellikle 127.0.0.1) yönlendirir. Tarayıcınız bir .ddev.site adresine erişmeye çalıştığında, bu DNS servisi isteği yakalar ve DDEV’in çalıştığı yere gönderir. Aynı zamanda DDEV, yerel geliştirme ortamınız için otomatik ve güvenli SSL sertifikaları oluşturmak üzere mkcert aracını kullanır, böylece projelerinize https:// üzerinden de sorunsuzca erişebilirsiniz.
.ddev.site adresi üzerinden erişebilirsiniz. Bu, çoklu proje geliştirenler için muazzam bir kolaylıktır.
İkinci aşamada, DDEV, Docker konteynerleri arasında bir köprü görevi gören Traefik’i kullanır. Traefik, Docker soketini dinleyerek yeni konteynerler başlatıldığında veya durdurulduğunda otomatik olarak algılar. Bir DDEV projesi (örneğin bir Nginx web sunucusu konteyneri) başlatıldığında, DDEV bu konteynere belirli etiketler (labels) ekler. Bu etiketler, Traefik’e hangi gelen isteklerin hangi konteynere yönlendirilmesi gerektiğini bildirir. Örneğin, http://projeadi.ddev.site adresine gelen bir isteğin hangi Nginx konteynerine gitmesi gerektiğini Traefik bu etiketler aracılığıyla anlar. Traefik, bu etiketlere dayanarak dinamik olarak yönlendirme kuralları oluşturur ve gelen HTTP/HTTPS isteklerini ilgili projenin web sunucusu konteynerine (genellikle Nginx veya Apache) yönlendirir.
ddev start komutunu çalıştırdığınızda, DDEV arka planda şunları yapar:
- Projeniz için gerekli Docker konteynerlerini (web sunucusu, PHP, veritabanı vb.) oluşturur ve başlatır.
- Yerel DNS kaydını günceller veya doğrular.
- Traefik proxy’sini ve SSL sertifikalarını yönetir.
- Projenizin varsayılan URL’lerini (hem HTTP hem de HTTPS için) size bildirir.
Bu komutun çıktısında, projenizin erişilebilir olduğu URL’leri göreceksiniz. Örneğin:
$ ddev start
Starting ddev-router ... done
Starting projeadi ... done
Your project can be reached at https://projeadi.ddev.site or http://projeadi.ddev.site
Ayrıca, ddev describe komutu ile projenizin tüm detaylarını, URL'leri ve servis bilgilerini görüntüleyebilirsiniz. ddev router status ise Traefik yönlendiricisinin genel durumunu ve hangi projeleri yönlendirdiğini gösterir. Bu komutlar, yönlendirme sorunlarını gidermek için oldukça faydalıdır. DDEV'in bu entegre ve otomatik yönlendirme sistemi, geliştiricilerin karmaşık ağ yapılandırmalarıyla uğraşmadan anında kod yazmaya başlamasını sağlar, böylece üretkenliği artırır.
Bir DDEV Projesinde Özel Yönlendirme Kuralları Tanımlamak Mümkün mü?
DDEV'in otomatik yönlendirme mekanizması genellikle çoğu senaryo için yeterli olsa da, bazen projenizin özel ihtiyaçları doğrultusunda ek alan adları veya farklı yönlendirme kuralları tanımlamanız gerekebilir. DDEV, bu tür esnekliği sağlamak için çeşitli yapılandırma seçenekleri sunar.
En basit yöntemlerden biri, projenizin .ddev/config.yaml dosyasına additional_hostnames ve additional_urls eklemektir. additional_hostnames, .ddev.site uzantılı ek alan adları tanımlamanıza olanak tanırken, additional_urls ise farklı bir üst seviye alan adı (TLD) ile özel bir URL oluşturmanızı sağlar. Örneğin, bir projenin hem ana alan adı hem de bir "test" alt alan adı üzerinden erişilebilir olmasını istiyorsanız, config.yaml dosyanızı aşağıdaki gibi düzenleyebilirsiniz:
# .ddev/config.yaml
name: my-project
type: php
docroot: web
additional_hostnames:
- test.my-project
- staging.my-project
additional_urls:
- https://ozel-url.local
Bu yapılandırmayı uyguladıktan sonra ddev restart komutunu çalıştırdığınızda, DDEV bu yeni hostnameleri ve URL'leri Traefik'e ekleyerek projenize https://test.my-project.ddev.site veya https://ozel-url.local gibi adresler üzerinden erişebilmenizi sağlayacaktır. Bu, özellikle çoklu dil desteği olan uygulamalar veya API alt alan adları gerektiren projeler için kullanışlıdır.
Daha ileri düzey özelleştirmeler için, DDEV'in Nginx veya Apache web sunucusu yapılandırmalarını geçersiz kılabilirsiniz. Projenizin .ddev dizini altında nginx_full veya apache_full dizinleri oluşturarak, varsayılan yapılandırma dosyalarını (örneğin nginx-site.conf) kopyalayabilir ve üzerinde değişiklikler yapabilirsiniz. Bu yöntem, proxy yönlendirme kuralları, ek Nginx location blokları veya özel PHP-FPM havuzları gibi daha spesifik sunucu düzeyinde yönlendirme veya yapılandırma değişiklikleri gerektiğinde devreye girer. Örneğin, projenizin belirli bir alt dizinine (sub-directory) gelen istekleri farklı bir PHP uygulamasına yönlendirmek isteyebilirsiniz:
# .ddev/nginx_full/nginx-site.conf
server {
listen 80;
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/certs/host.crt;
ssl_certificate_key /etc/nginx/certs/host.key;
root /var/www/html/web;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# /api yolu altındaki istekleri farklı bir PHP dosyasına yönlendir
location ~ ^/api/(.*)$ {
try_files $uri $uri/ /api/index.php?$query_string;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/api/index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Bu örnekte, /api ile başlayan tüm istekler, kök dizindeki index.php yerine /api/index.php dosyasına yönlendirilir. Bu tür detaylı kontrol, özellikle mikroservis mimarileri veya karmaşık ön yüz/arka yüz ayırımları olan uygulamalar geliştirirken paha biçilmezdir. DDEV'in otomatik SSL sertifikası yönetimi sayesinde, özel alan adlarınız için bile güvenli HTTPS erişimine sahip olursunuz, bu da modern web geliştirme standartlarına tamamen uyum sağlar. Bu gelişmiş yapılandırmalar, DDEV'i sadece basit projeler için değil, aynı zamanda en karmaşık yerel geliştirme ortamı ihtiyaçlarını karşılayabilecek esnek bir araç haline getirir.
Lando'nun Esnek Yönlendirme Yaklaşımı: Proxy'ler ve Dinamik Domainler
Lando, DDEV gibi, yerel geliştirme ortamlarınızı Docker üzerinde kurmanıza olanak tanıyan bir başka popüler araçtır. Ancak, yönlendirme ve proje yapılandırmasına yaklaşımı biraz farklı bir felsefeye sahiptir, bu da ona kendine özgü bir esneklik kazandırır. Lando'nun routing mekanizmasının merkezinde, projenizin kök dizinindeki .lando.yml yapılandırma dosyası ve Lando'nun kendi yerel proxy servisi bulunur.
Lando, projelerinizi başlatırken yine kendi yerel DNS çözümünü kullanır. DDEV'de olduğu gibi, Lando da mkcert kullanarak projeleriniz için otomatik olarak SSL sertifikaları oluşturur ve .lndo.site uzantılı alan adları atar. Örneğin, bir Node.js projesi için http://nodejs-app.lndo.site gibi bir adres otomatik olarak oluşturulur. Lando, bu alan adlarını sisteminizin ana bilgisayar dosyasına veya kendi iç DNS servisine ekleyerek, tarayıcınızdan bu adreslere doğrudan erişim sağlar. Bu da, geliştiricinin her seferinde bir IP adresi veya port numarası hatırlamasına gerek kalmadan projelere rahatça geçiş yapmasını mümkün kılar.
.lndo.site alan adları, farklı projelerinizi aynı anda çalıştırırken çakışmaları önlemek için benzersizdir. Her projenin kendi izole ortamı ve kendi erişim noktası vardır.
Lando'nun yönlendirme mimarisi, DDEV'in Traefik yaklaşımından biraz farklıdır. Lando, her servis için ayrı ayrı proxy kuralları tanımlamanıza olanak tanıyan daha doğrudan bir proxy servisi kullanır. Bu proxy kuralları, .lando.yml dosyasındaki proxy anahtarı altında tanımlanır. Bir Lando projesi başlatıldığında (lando start komutu ile), Lando, Docker konteynerlerini oluşturur ve ardından bu proxy yapılandırmasını kullanarak gelen HTTP/HTTPS isteklerini doğru servise ve doğru porta yönlendiren bir proxy katmanı kurar.
Örneğin, bir projeniz hem bir web sunucusu (Nginx) hem de bir API servisi (Node.js) içeriyorsa, .lando.yml dosyanızda bunları ayrı ayrı yönlendirebilirsiniz:
# .lando.yml
name: my-multi-service-app
services:
appserver:
type: nginx
# ... diğer ayarlar ...
nodejs:
type: node:16
ports:
- 3000
# ... diğer ayarlar ...
proxy:
appserver:
- my-multi-service-app.lndo.site
- www.my-multi-service-app.lndo.site
nodejs:
- api.my-multi-service-app.lndo.site
- node.my-multi-service-app.lndo.site
Bu yapılandırma ile, my-multi-service-app.lndo.site adresine gelen istekler Nginx servisine yönlendirilirken, api.my-multi-service-app.lndo.site adresine gelen istekler Node.js servisine (içeride 3000 portunda çalışıyor olsa bile) yönlendirilecektir. Lando, bu karmaşık yönlendirme mantığını sizin için otomatik olarak yönetir. lando info komutu, projenizle ilişkili tüm servisleri, portları ve en önemlisi erişilebilir URL'leri size gösterir. Bu komutun çıktısı, özellikle çoklu servisli uygulamalarla çalışırken hangi URL'nin hangi servise karşılık geldiğini anlamak için hayati öneme sahiptir. Lando'nun bu esnek ve açık yapılandırma yaklaşımı, karmaşık mimarilere sahip projelerde geliştiricilere büyük kontrol ve şeffaflık sağlar. Bu, mikroservis tabanlı uygulamalar veya özel portlarda çalışan çeşitli arka uç servisleri entegre eden projeler için özellikle faydalıdır.
Lando ile Karmaşık Uygulama Topolojilerini Yönlendirme İpuçları Nelerdir?
Lando'nun .lando.yml dosyası, karmaşık uygulama topolojileri için yönlendirme kurallarını inanılmaz derecede esnek bir şekilde tanımlamanıza olanak tanır. Özellikle çoklu servislerin bir arada çalıştığı, farklı portlar kullanan veya harici servislerle entegrasyon gerektiren senaryolarda Lando'nun proxy yapılandırması size tam kontrol sağlar.
Bir uygulamanın farklı bileşenleri farklı portlarda çalışabilir. Örneğin, bir Frontend (React/Vue) geliştirme sunucusu 3000 portunda, bir Backend API (Node.js/Python) 8000 portunda çalışıyor olabilir. Lando'nun proxy ayarı ile bu servisleri farklı alt alan adlarına yönlendirebilirsiniz:
# .lando.yml
name: frontend-backend-app
services:
frontend:
type: node:16
command: "npm start" # Varsayılan olarak 3000 portunda çalışır
ports:
- 3000
backend:
type: node:16
command: "npm run start-api" # Varsayılan olarak 8000 portunda çalışır
ports:
- 8000
proxy:
frontend:
- frontend.frontend-backend-app.lndo.site
backend:
- api.frontend-backend-app.lndo.site
Bu yapılandırma ile frontend.frontend-backend-app.lndo.site adresinden ön yüz uygulamanıza, api.frontend-backend-app.lndo.site adresinden ise arka yüz API'nize erişebilirsiniz. Lando, iç proxy'leri kullanarak doğru portlara yönlendirme işlemini otomatik olarak yapar.
Bazen Lando ortamınızın dışındaki servislere erişmeniz gerekebilir (örneğin, yerel makinenizde çalışan özel bir servis veya uzak bir API). Lando'nun tooling ve events mekanizmaları ile bu tür entegrasyonları otomatikleştirebilirsiniz. Ancak doğrudan yönlendirme için, Docker'ın ağ özelliklerini veya Lando servislerini uygun şekilde yapılandırmanız gerekebilir. Örneğin, bir servisin başka bir servisle konuşabilmesi için Lando'nun sağladığı servis adlarını (örneğin backend servisi içerisinden frontend servisine http://frontend:3000 ile erişim) kullanmak esastır.
Karmaşık projelerde, Lando'nun router yapılandırması daha ince ayarlar yapmanıza olanak tanır. Örneğin, belirli bir URL desenini yakalayıp başka bir Lando servisine veya hatta harici bir URL'ye yönlendirebilirsiniz. Bu, özellikle eski bir sistemi yeni bir mikroservis ile entegre ederken veya farklı URL yapılandırmalarına sahip servisleri birleştirirken çok işe yarar. Lando'nun bu düzeydeki esnekliği, geliştiricilerin en karmaşık geliştirme ortamlarını bile kolayca kurup yönetmelerine olanak tanır, bu da daha hızlı geliştirme döngüleri ve daha az yapılandırma baş ağrısı anlamına gelir.
DDEV ve Lando Routing: Temel Farklar ve Ortak Yönler Nelerdir?
DDEV ve Lando, her ikisi de Docker tabanlı yerel geliştirme ortamı araçları olup, geliştiricilerin hayatını kolaylaştırmak için tasarlanmıştır. Ancak yönlendirme mekanizmaları, yapılandırma yaklaşımları ve genel felsefeleri açısından bazı önemli farklar barındırırlar. Bu farkları ve ortak yönleri anlamak, hangi aracın projenizin ve ekibinizin ihtiyaçlarına daha uygun olduğuna karar vermenize yardımcı olacaktır.
Yönlendirme Mekanizmalarındaki Farklılıklar:
-
DDEV (Traefik Odaklı): DDEV, dinamik bir ters proxy olan Traefik'i kullanır. Traefik, Docker soketini dinleyerek yeni DDEV projeleri başlatıldığında otomatik olarak yönlendirme kuralları oluşturur. Bu, DDEV'in "tak ve çalıştır" (plug-and-play) yaklaşımının temelidir. Projenizi başlattığınız anda,
.ddev.siteuzantılı bir URL ile ona erişebilirsiniz. Traefik, özellikle birden fazla DDEV projesini aynı anda çalıştıran ve bunlar arasında sorunsuz geçiş yapmak isteyen geliştiriciler için çok etkilidir. DDEV'in router'ı merkezi bir Traefik konteyneri olarak çalışır ve tüm DDEV projelerinden gelen trafiği yönetir. -
Lando (Özel Proxy ve Yapılandırma Odaklı): Lando, kendi iç proxy servisini kullanır ve bu proxy'nin kuralları
.lando.ymldosyasında açıkça tanımlanır. Bu, Lando'ya daha fazla yapılandırma esnekliği sağlar. Geliştiriciler, hangi servisin hangi URL üzerinden erişileceğini ayrıntılı olarak belirleyebilir. Bu yaklaşım, mikroservisler gibi birden fazla servisin farklı alt alan adları veya portlar üzerinden erişildiği karmaşık uygulama topolojileri için idealdir. Her projenin kendi proxy yapılandırması olduğu için, Lando daha "proje bazlı" bir yönlendirme kontrolü sunar.
Yapılandırma Yaklaşımları:
-
DDEV: Daha çok varsayılanlara dayalıdır ve minimum yapılandırma ile maksimum işlevsellik sunar.
config.yamldosyasında temel ayarlamalar (PHP versiyonu, veritabanı tipi vb.) yapılır. Yönlendirme içinadditional_hostnamesveadditional_urlsgibi basit seçenekler bulunur. Daha derinlemesine değişiklikler için Nginx/Apache override'ları kullanılır. Bu, "hızlı başlangıç" yapmak isteyen veya Drupal, WordPress gibi popüler CMS'lerle çalışan geliştiriciler için mükemmeldir. -
Lando: Daha "açık" ve deklaratif bir
.lando.ymldosyasına sahiptir. Tüm servisler, bağımlılıklar ve yönlendirme kuralları bu YAML dosyasında detaylı bir şekilde tanımlanır. Bu, Lando'ya daha yüksek düzeyde özelleştirme ve kontrol olanağı tanır. Karmaşık ve özel yazılım yığınları olan projelerde veya birden fazla servisi bir araya getiren uygulamalarda Lando'nun bu esnekliği öne çıkar.
Ortak Güçlü Yönler:
Her iki araç da Docker'ın sunduğu konteynerizasyonun faydalarını sonuna kadar kullanır. Bu ortak yönler şunları içerir:
- Tutarlılık: Geliştirme, test ve üretim ortamları arasında tutarlılığı sağlar.
- İzolasyon: Her proje kendi bağımsız ortamında çalışır, bağımlılık çakışmalarını önler.
- Otomatik SSL: Her ikisi de mkcert kullanarak yerel HTTPS sertifikalarını otomatik olarak oluşturur ve yönetir. Bu, modern web geliştirme için kritik öneme sahiptir.
-
Kullanım Kolaylığı: Karmaşık Docker komutlarını soyutlayarak basit CLI komutları (
ddev start,lando start) ile ortam yönetimini basitleştirir. - Topluluk Desteği: Her iki aracın da büyük ve aktif toplulukları vardır, bu da sorun giderme ve kaynak bulma konusunda yardımcı olur.
Sonuç olarak, DDEV genellikle daha "out-of-the-box" bir deneyim arayan, standart CMS projeleriyle çalışan veya birden fazla projeyi hızla yönetmesi gereken geliştiriciler için tercih edilirken; Lando, daha karmaşık, özel yığınlara sahip projeler veya mikroservis mimarileri üzerinde tam kontrol isteyen geliştiricilere hitap eder. Her ikisi de yerel yönlendirme konusunda geliştiricilere büyük kolaylıklar sunar, sadece projenizin ve iş akışınızın gereksinimlerine en uygun olanı seçmek kalır.
ddev share komutu gibi özelliklerini kullanabilirsiniz.
/* Örnek Mobil Uyumlu CSS İçin Media Query */
Gerçek Dünya Senaryolarında DDEV ve Lando Routing: Vaka Analizleri
Teorik bilgiler önemlidir, ancak DDEV ve Lando'nun yönlendirme yeteneklerinin gerçek dünya senaryolarında nasıl bir fark yarattığını görmek, bu araçların değerini daha iyi anlamamızı sağlar. İşte iki farklı vaka analizi, bu araçların karmaşık geliştirme ihtiyaçlarına nasıl çözüm sunduğunu gösteriyor.
Vaka 1: Mikroservis Tabanlı Bir Uygulama ile Lando'nun Proxy Esnekliği
Bir e-ticaret platformu geliştiren "InnovateTech" ekibi, projelerini mikroservis mimarisi üzerine kurmaya karar verdi. Uygulama, sipariş yönetimi, ürün kataloglama, kullanıcı kimlik doğrulaması ve bir ön yüz (Single Page Application - SPA) olmak üzere dört ana servisten oluşuyordu. Her servis farklı bir teknoloji yığını (Node.js, Python/Django, PHP/Laravel) kullanıyor ve kendi içinde farklı portlarda çalışıyordu. Geliştiriciler, her servisi ayrı ayrı başlatmak ve doğru portlar üzerinden erişmekte zorlanıyor, ayrıca ön yüz uygulamasının API servisleriyle konuşabilmesi için CORS (Cross-Origin Resource Sharing) sorunları yaşıyorlardı.
Sorun:
- Farklı teknolojilerde yazılmış ve farklı portlarda çalışan servislerin yönetimi.
- Her servise ayrı ayrı, anlamlı URL'ler üzerinden erişim ihtiyacı.
- Ön yüz uygulamasının arka yüz API'leriyle güvenli ve sorunsuz iletişimi.
- Birden fazla geliştiricinin aynı ortamda tutarlı bir şekilde çalışabilmesi.
Lando Çözümü: InnovateTech ekibi Lando'yu tercih etti. .lando.yml dosyası, her bir mikroservisi ayrı bir Lando servisi olarak tanımladı ve proxy anahtarını kullanarak her servise benzersiz bir alt alan adı atadı:
# .lando.yml kısaltılmış örnek
name: innovatetech-platform
services:
frontend:
type: node:16
ports: ['3000']
# ... frontend geliştirme sunucusu komutları ...
orders-api:
type: node:16
ports: ['3001']
# ... sipariş API komutları ...
catalog-api:
type: python:3.9
ports: ['8000']
# ... katalog API komutları ...
auth-api:
type: php:8.1-fpm
# ... auth API Nginx/PHP-FPM konfigürasyonu ...
proxy:
frontend:
- app.innovatetech.lndo.site
orders-api:
- orders.innovatetech.lndo.site
catalog-api:
- catalog.innovatetech.lndo.site
auth-api:
- auth.innovatetech.lndo.site
Bu yapılandırma sayesinde:
- Geliştiriciler
app.innovatetech.lndo.siteadresinden ön yüz uygulamasına,orders.innovatetech.lndo.siteadresinden sipariş API'sine vb. kolayca erişebildi. - Lando'nun dahili proxy'si, farklı portlarda çalışan servisler arasındaki yönlendirmeyi otomatik olarak halletti.
- Ön yüz uygulaması,
https://orders.innovatetech.lndo.site/api/v1/gibi tam URL'leri kullanarak arka yüz API'leriyle güvenli bir şekilde iletişim kurabildi, çünkü Lando tüm servisler için otomatik SSL sertifikası sağladı ve aynı "ana domain" altında çalışıyorlardı. - Herkes aynı
.lando.ymldosyası ile çalıştığı için ortam tutarlılığı sağlandı.
Sonuç: Lando'nun esnek proxy ve servis tanımlama yetenekleri sayesinde InnovateTech, karmaşık mikroservis mimarisini yerel olarak hızlı ve tutarlı bir şekilde çalıştırabildi. Bu, geliştirme süreçlerini hızlandırdı ve entegrasyon hatalarını minimize etti.
Vaka 2: Birden Fazla Proje Geliştiren Bir Takım ile DDEV'in Otomatik Domain Yönetimi
Bir web ajansı olan "WebCraft Solutions", aynı anda birden fazla Drupal ve WordPress projesi üzerinde çalışıyordu. Her projenin kendi veritabanı, PHP versiyonu ve web sunucusu ayarları vardı. Eski sistemlerinde, port çakışmaları, karmaşık Apache/Nginx VHost yapılandırmaları ve her yeni proje için manuel kurulumlar, geliştirme hızını düşürüyordu.
Sorun:
- Farklı PHP versiyonları ve veritabanı türleri gerektiren çok sayıda proje.
- Her projeye hızlı ve kolay erişim.
- Yeni proje kurulumlarının zaman alması ve karmaşık olması.
- Birden fazla projenin aynı anda çakışmadan çalışabilmesi.
DDEV Çözümü: WebCraft Solutions, DDEV'i kullanarak bu sorunları çözdü. Her yeni Drupal veya WordPress projesi için sadece birkaç komutla bir DDEV ortamı oluşturdular:
$ mkdir my-drupal-site && cd my-drupal-site
$ ddev config --docroot=web --project-type=drupal9
$ ddev start
DDEV, her proje için otomatik olarak my-drupal-site.ddev.site gibi benzersiz bir URL oluşturdu. Aynı şekilde bir WordPress projesi için de:
$ mkdir my-wordpress-site && cd my-wordpress-site
$ ddev config --docroot=wp-content --project-type=wordpress
$ ddev start
Bu, my-wordpress-site.ddev.site adresine erişim sağladı. DDEV'in Traefik tabanlı merkezi yönlendiricisi sayesinde:
- Tüm projeler (Drupal ve WordPress projeleri, farklı PHP versiyonlarıyla bile olsa) aynı anda sorunsuz bir şekilde çalışabildi.
- Her projeye otomatik olarak oluşturulan
.ddev.siteuzantılı URL'ler üzerinden kolayca erişildi. - Yeni proje kurulum süresi dakikalara indi, manuel yapılandırma ihtiyacı ortadan kalktı.
- DDEV, her proje için otomatik HTTPS sağladığından, SSL ile ilgili hiçbir sorun yaşanmadı.
Sonuç: DDEV'in hızlı kurulumu, otomatik domain yönetimi ve merkezi Traefik yönlendiricisi, WebCraft Solutions'ın geliştirme iş akışını büyük ölçüde iyileştirdi. Birden fazla projeyi aynı anda yönetmek artık bir kabus olmaktan çıktı ve ajansın üretkenliği gözle görülür şekilde arttı. Bu vaka analizleri, DDEV ve Lando'nun, farklı geliştirme senaryolarında nasıl değerli araçlar olduğunu ve geliştiricilere zaman kazandırarak onların daha önemli görevlere odaklanmasını sağladığını açıkça göstermektedir.
Sonuç: Geliştirme Süreçlerinizi Yönlendirme Sanatıyla Nasıl İyileştirirsiniz?
Gördüğümüz gibi, DDEV ve Lando gibi araçlar, modern web geliştiricilerinin yerel ortam kurulumu ve yönetimiyle ilgili karşılaştığı zorluklara devrim niteliğinde çözümler sunmaktadır. Her iki araç da Docker'ın konteynerizasyon gücünü kullanarak, projelerinize özel, izole ve tutarlı geliştirme ortamları yaratır. Ancak onların gerçek sihri, projelerinizi kolayca erişilebilir kılan akıllı yönlendirme mekanizmalarında yatmaktadır. DDEV'in Traefik tabanlı otomatik ve merkezi yönlendirme sistemi, özellikle çok sayıda projenin hızlıca kurulup yönetildiği senaryolarda öne çıkarken, Lando'nun .lando.yml tabanlı esnek proxy yapılandırması, karmaşık, çok servisli uygulamalar için benzersiz bir kontrol sağlar.
Bu araçları kullanarak, geliştirme süreçlerinizi önemli ölçüde hızlandırabilir, "benim makinemde çalışıyordu" gibi sorunları ortadan kaldırabilir ve ekibinizle daha verimli bir şekilde işbirliği yapabilirsiniz. Artık karmaşık Apache sanal ana bilgisayar dosyaları veya Nginx sunucu bloklarıyla uğraşmanıza gerek kalmaz. Otomatik SSL yönetimi, anında alan adı tahsisi ve kolay port yönlendirme gibi özellikler sayesinde, geliştiriciler ana odak noktaları olan kod yazmaya daha fazla zaman ayırabilirler. Bu, sadece geliştirme döngülerini kısaltmakla kalmaz, aynı zamanda daha yüksek kaliteli ve daha güvenilir yazılımların ortaya çıkmasına da katkıda bulunur. Kısacası, DDEV ve Lando, yerel geliştirme ortamlarınızı bir sanata dönüştüren, geleceğin web geliştirme araçlarıdır.
Sıkça Sorulan Sorular (SSS)
-
S: DDEV ve Lando'nun her ikisini de aynı anda kullanabilir miyim?
C: Evet, her iki araç da Docker konteynerlerini kullandığı için genellikle aynı anda çalışabilirler. Ancak, DDEV kendi merkezi yönlendiricisini (Traefik) kullanırken, Lando her proje için kendi proxy'sini kurar. Her iki aracın da sisteminizde DNS kayıtlarını yönetmesi nedeniyle nadiren küçük çakışmalar olabilir, ancak genellikle sorunsuz bir şekilde birlikte var olurlar. -
S: Hangi aracı seçmeliyim: DDEV mi, Lando mu?
C: Seçim projenizin ve kişisel tercihinizin gereksinimlerine bağlıdır. DDEV, Drupal, WordPress gibi popüler CMS'ler ve PHP tabanlı projeler için "tak ve çalıştır" deneyimi sunar ve daha az yapılandırma gerektirir. Lando ise Node.js, Python, Ruby gibi farklı teknoloji yığınlarını destekleyen ve mikroservis mimarileri gibi karmaşık projeler için daha fazla esneklik ve yapılandırma kontrolü sunar. -
S: Kendi özel alan adımı (örneğin
.devveya.local) DDEV veya Lando ile kullanabilir miyim?
C: Evet, hem DDEV hem de Lando bu tür özelleştirmelere izin verir. DDEV içinconfig.yamldosyasındakiadditional_urlsseçeneğini kullanabilirsiniz. Lando için ise.lando.ymldosyasınınproxybölümünde istediğiniz özel alan adlarını tanımlayabilirsiniz. -
S: DDEV veya Lando projelerime internet üzerinden erişebilir miyim?
C: Varsayılan olarak, DDEV ve Lando projeleri yerel makinenizde erişilebilirdir. Ancak, DDEV'inddev sharekomutu gibi özellikler veya ngrok gibi üçüncü taraf araçlar kullanarak projelerinizi geçici olarak internet üzerinden başkalarıyla paylaşabilirsiniz. Lando'da da benzer şekilde ngrok ile entegrasyon mümkündür. -
S: Performans açısından DDEV mi Lando mu daha iyi?
C: Performans, projenizin karmaşıklığına, sistem kaynaklarınıza ve yapılandırmanıza bağlı olarak değişebilir. Her iki araç da Docker'ın sağladığı verimliliği kullanır. Bazı kullanıcılar DDEV'in basit kurulumunu ve Traefik yönlendiricisinin hafifliğini daha performanslı bulurken, diğerleri Lando'nun özelleştirme seçenekleriyle daha ince ayar yapmanın performansı artırdığını düşünebilir. Genellikle, aralarındaki farklar çoğu geliştirme senaryosunda ihmal edilebilir düzeydedir.