Bu yazıda Vagrant teknolojisinin ne işe yaradığını ve ne için kullanmamız gerektiğini işleyeceğiz.
Yazılım projelerinin bağımlılıkları ve karmaşıklıkları her geçen gün artıyor. Bu durum çeşitli problemleri de beraberinde getiriyor. Problemlerin en önemlisi de geliştirme ortamı (work environment).
Problem 1: Yeni başlayan geliştirici
Ekibe yeni dahil olan geliştirici arkadaş için geliştirme ortamlarının kurulması tam bir işkence. Örneğin, daha önce çalıştığım kurumsal bir firmada geliştirme ortamının kurulumu yaklaşık 2 gün sürmüştü (!). Zaman/kaynak ve motivasyon israfı.
Uygulama kurulumu için bir setup script ya da bir dokümantasyon oluşturabilirsiniz. Fakat bu dosyaların sürekli güncel tutulması gerekir ki bu da bir yazılımcı için gerçekten çok can sıkıcı bir durumdur.
Problem 2: Yeni teknoloji
Her gün onlarca teknoloji araçları ortaya çıkıyor. Yazılımcı bazı durumlarda bu yeni teknolojiyi bilgisayarında test etmek ya da çalıştırmak ister. Fakat yeni deneyeceğimiz bu teknoloji bizim düzgün çalışan geliştirme ortamımızı olumsuz etkileyebilir. Nahoş bir durum.
Problem 3: Çoklu proje
Geliştirdiğimiz birden fazla uygulamayı birbirinden tamamen izole edilmiş bir şekilde ayağa kaldırıp birbiriyle haberleştirmek isteyebiliriz. İzole edilmiş diyorum çünkü uygulamaların local makinada kullandıkları kaynaklar çakışabilir.
Problem 4: … ama lokalimde çalışıyor
Çoğu yazılımcının meslek hayatında çok kere sarfettiği cümle. Yazılımcı olarak bir problemi çözmüş ve proda kodu göndermiş olalım. Bir süre sonra geliştirdiğimiz çözüm prod ortamında çalışmayabilir. Bunun sebebi ortamların farklılıkları. Prod ile geliştirme ortamları çoğu durumda farklıdır. Ortamlar arasındaki farklılık, problemi doğru bir şekilde gözlemleyip uygun çözüm üretmemize engel olur çoğunlukla.
Yukarıdaki ortamlar üzerine bir kaç problemden bahsettik. Tüm bu problemleri Vagrant ile kolaylıkla çözebiliriz.
Vagrant ; taşınabilir, tek kullanımlık, yeniden üretilebilir ortamlar oluşturmamızı sağlayan,bunun için sanallaştırma (Virtualbox,VMWare vs..) teknolojisinden faydalanan bir sanal makina yöneticisidir.Kolaylıkla yapılandırma teknolojileriyle (Chef,Ansible) konfigure edilebilir.
Uygulamayı bir kere Vagrant’a geçirdikten sonra istediğimiz an, istediğimiz makinada geliştirme ortamımızı çok hızlı bir şekilde oluşturabiliriz. Ortam bağımlılıklarını izole eder. Her yazılımcı klonlanmış prod ortamında kod yazıyor gibi olacak 🙂
Bir sonraki yazıda Vagrant kurulumu ve Vagrant ile basit bir geliştirme ortamının nasıl kurulacağını göreceğiz.
EOF
Kaynakça :
Geri bildirim: Ansible Nedir 2 | fütursuz bilgi