2017’nin sonunda back-end geliştirici ve sistem yöneticisi olarak çalışmaya başladığım ve hala çalıştığım firmada proje yönetimine dair pek bir mekanizma yoktu zira benden önce bir sistem yöneticileri de yoktu. Eldeki projeler uzun süreçli, ağır ve neredeyse bitmekte olan projelerdi bu yüzden bu projelerin geliştirme süreçlerini yeni bir düzene oturtmak fazlasıyla verimsizdi. Bu projeleri acı içinde bitirdikten sonra yeni projelere başlarken bu süreci mutlaka toparlamalıydık ve gayet tabii ilk hedefimiz Docker tabanlı çalışmaktı. Elimde olsa daima bare-metal sunucu üzerinden çalışmak isteyen şahsımın Docker’a aşinalığı pek yoktu, hala daha ısınabilmiş değilim ancak 1-2 hafta süren araştırmalar sonucu projelerimizi Drupal üstünde geliştirdiğimiz ve bu noktada fazlasıyla yardımcı olduğu için Lando‘da karar kıldık.
Dağıtık Drupal geliştirme
Drupal 8 projeleri geliştirirken proje özelinde yazdığınız biraz kod dışında genelde Drupal topluluğu tarafından geliştirilmiş modüller ile Drupal tarafından sağlanan ‘block’lar ve ‘view’lar arasında kaybolursunuz; bu yüzden bir Drupal uygulamasını dağıtık geliştirmek oldukça zor bir iş. Geliştirmenin çok büyük bir kısmı aslında ön yüzde yapılan içerik ve yapı ayarları ile tamamlanıyor, değişiklikler veritabanında saklanıyor dolayısıyla geliştiricilerin yerel geliştirme ortamlarından belli veritabanı farklarını ayıklayıp firmanın geliştirme ortamında birleştirmek yetmiyor çünkü geliştirici olmayıp işi gereği uzak sunucudaki Drupal üstünde değişiklik yapan ekibin de yaptığı değişiklikleri takip edip hiçbirini kaybetmemeniz gerekiyor. Anlatırken biraz daha basit geliyor, en büyük sorun yapılan ayar, block/view içeriğindeki değişiklikte çakışmadan kaçılamıyor olması; elbette yapıyı sağlamak imkansız değil, bir müşterimiz için geliştirdiğimiz projede yazdığım birkaç sayfa betik yardımıyla bu yapıyı korumuştuk. Ancak sürekli kullanmak için biraz hantal ve gereksiz bir yapı, biz de bunu kabullenip yerel geliştirme ortamını sadece modül, tema vb. kod geliştirme için kullanıp gerisini ortak geliştirme ortamında hallediyoruz.
Lando nedir?
Lando, Tandem ekibi tarafından geliştirilen, Docker üzerine kurulmuş yardımcı bir araç. Lando’nun en büyük kolaylıklarından biri önceden hazırlanmış olan ‘recipe’ler; recipe’ler sayesinde önceden hazırlanmış web uygulamalarını, geliştirme dilini içeren bir container’ı veya direkt olarak bir serivisi ayağa kaldırabiliyorsunuz. Lando da benzeri araçlar gibi YAML formatını kullanıyor. Projenin ana dizinindeki .lando.yml
dosyası aracılığıyla projenizi Lando ile çalıştırabiliyorsunuz. Örnek olarak, Lando ile yürüttüğümüz Drupal projelerimizde kullandığımız .lando.yml
dosyası aşağıdaki gibiydi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
name: $PROJECT_NAME recipe: drupal8 config: php: '7.0' via: nginx webroot: www drush: composer conf: server: conf/nginx.conf services: database: type: postgres:9.5 portforward: $DB_PORTFORWARD creds: user: $DB_USER password: "$DB_PASSWORD" database: $DB_NAME proxy: nginx: - $PROJECT_URL - localhost |
Yukarıdaki .lando.yml
içeriği sayesinde, dosyanın bulunduğu dizinde lando start
komutu vererek ./www/
dizinini yayınlayan, yanında drush ve composer araçları da yüklü Drupal 8 projenizi çalıştırmak işten bile değil.
Web projelerinizi Docker ile hızlıca çalıştırmak istiyor ama Docker Hub’dan bulduğunuz tek imaj ile ihtiyacınızı karşılayamıyorsanız Lando’nun ‘recipe’lerini incelemenizi öneririm.