Vagrant Nedir? #1

article featured image penguin computing

Vagrant

Sıkı durun, bu makale ile birlikte Vagrant hakkında bir yazı dizisi hazırlamaya başlıyoruz. Kaç seriden oluşur şu an için tahmin edemiyorum. Gittiği yere kadar artık. Eminim bu yazı dizisini tamamladığınızda programcılık hayatınıza yeni bir soluk gelecektir.

Vagrant Nedir? Ne için?

Vagrant'ın nasıl kullanılacağı yoğurdu yiyen kişiye göre değişiyor. Test uzmanları, yazılım uzmanları veya sunucu yöneticileri vb. kendi alanlarına uygun şekilde kullanabilirler. Tahmin edeceğiniz gibi biz mevzuya web geliştiriciler açısından bakacağız.

Şu diyaloğa hep denk gelmişizdir.

+ Oğlum ne yaptın işi?
- Hazır patron.
+ Hani? Hata veriyor?
- Yek yea lokalde çalışıyordu.

Bu arkadaşın durumuna düşmeyen varmı bilmiyorum. İşte Vagrant denen zımbırtı da tam bu noktada, bu duruma düşmemek için devreye giriyor ve ipleri eline alıyor. Geliştirme ve yayın ortamlarındaki yazılım ve donanım özelliklerini aynı hale getirip; uygulama local sunucuda nasıl çalışıyorsa, yayın ortamında da aynı şekilde çalışmasını sağlıyor. Nasıl? Güzel fikir dimi ?

Ayrıca hazırladığınız bu geliştirme ortamını başkalarıyla veya takımınızla paylaşarak tüm takımın aynı sahada top koşturmasını sağlayabilirsiniz.

Çok basit, teorik bir tanım yapacak olursak, VirtualBox veya Vmware yazılımlarını kullanarak her proje için ayrı sanal makine oluşturup, yazılım geliştirmenin bu ortamda yapılmasını sağlayan ve geliştirme bittiğinde bu local sunucuyu olduğu gibi ürün sunucusuna kopyalayan kullanışlı bir araç.

Şimdi hayal edelim. Diyelimki local sunucunuzda PHP ile bir yazılım geliştiriyorsunuz ve temelde PHP ile çalışan bu yazılım içerisinde;

  • Nginx | Apache
  • Elastic Search
  • MongoDB
  • Ffmpeg
  • Memcache
  • Redis ve bazı node.js modülleri kullandığınızı varsayalım.

Pek tabi olarak da kullandığınız bu teknolojilerin bazı özelleştirdiğiniz konfigurasyon dosyaları mevcut. (Apache de sites-avalabile, PHP de php.ini dosyaları gibi)

Bu kurulumları ve konfigürasyonları local sunucunuzda yaptığınız diyelim. Eee? Bide yayın ortamındaki sunucu için açıp tek tek bu yazılımlarımı kuracaksınız ? Hadi bi çılgınlık yapıp kurdunuz diyelim. Peki bu yazılımların konfigürasyon dosyaları? Onları da mı tek tek bulup düzenleyeceksiniz? Vagrant ın gözünü seveyim.

Siz bir dosyada, yayın sunucunuza vagrant'ın (aslında direkt vagrant değil) hangi yazılımları kuracağını ve hangi konfigürasyonları uygulayacağını söylüyorsunuz, o da yapıyor.

Web geliştiricilerin geneli Wamp, Lamp, MAMP Server, AppServ, Xampp gibi yazılımları kullanmıştır.Bu yazılımları kullanmanın zorluğunu çeken bilir. Özellikle Windows ortamında local sunucu oluşturmak maksadıyla bu yazılımları kullanıyorsanız aman aman, evlerden ırak.

Neden böyle söylüyorum, biraz açalım. Vakt-i zamanında Windows ortamında, Unix çekirdeği üzerinde geliştirilmiş yazılımlar üzerinde geliştirme yapmaya kalkmak gibi bir cahillikte bulunmuşluğum olmuştu.Bir boş bulunmuşluk diyelim. Wamp Server üzerine herhangi 3.parti bir yazılım kurmaya kaltığınız anda, işte ne üdüğü belirsiz bir siteden .dll dosyası bul, wamp server dizinine yapıştır, çalışıyormu diye dene (%85 çalışmaz), çalışsa bile yayın ortamındaki performansı ile local ortamdaki performansı tutarsız oluyor. Kısmetse bu yazı dizisi ile birlikte bu alışkanlıkları bırakıp Vagrant kullanmaya başlayalım.

Serinin Tüm Başlıkları