Yeni Nesil Geliştirme Mottosu: Geliştirdim, Paketledim, Gördüm

Yol Haritası

Bunlar da neyin nesi?

Yukarıda kalın harflerle yazılı teknoloji ve ürünlere yabancı olan ve bu satırlara kadar zahmet edip gelen arkadaşlara, kendilerini kısaca tanıtmak istiyorum.

Python — Tornado Web Server

Python tabanlı; Friendfeed ekibi tarafından geliştirilen, FriendFeed’in Facebook’a katılmasından sonra Facebook geliştirme ekibine devredilen ve yaşamına devam eden bir web kütüphanesinden bahsediyoruz.

Travis CI

Daha önceki bir yazımda bahsettiğim, favori CI aracım. Github üzerinde tuttuğunuz repolar ile senkron bir şekilde çalışan bu araç ile Python, Ruby, .Net, PHP gibi favori dillerde kodlanmış yazılımların bir takım süreçlerden (test betiklerinin çalıştırılması, uygulamaların paketlenmesi, sunuculara deploy edilmesi, vs…) otomatik bir şekilde geçirilmesini sağlıyor.

AWS — Elastic Beanstalk

AWS’nin bir bulut hizmeti olarak karşımıza çıkan bu servis, geliştirdiğiniz uygulamaların çok hızlı bir şekilde deploy edilmesini ve oldukça kolay bir arayüz üzerinden yönetilmesini sağlıyor.

  • Sistem altyapısı ile ilgili hemen hemen tüm endişeleri çözen bir olgunluğa sahip. Kendini otomatik olarak ölçeklendirebiliyor (auto-scaling), yükün balans edilmesini sağlıyor (load-balancing), uygulamanın herhangi bir anında oluşan ya da sunucu tarafından gerçekleşen sorunları takip edip görüntüleyebiliyor (monitoring).
  • Uygulamanızın sağlıklı bir şekilde hayatına devam edebilmesini sağlıyor. T anında uygulamanın cevap veremez hale gelmesi durumunda, uygulamayı tekrar başlatıp hayatına devam etmesini sağlıyor.
  • EC2 instance’ını ayrı, S3 storage’ını ayrı, load-balance uygulamasını ayrı yönetmenize gerek kalmıyor. Tek bir pakette tamamı size sunulmuş durumda ve konfigürasyon ekranından bunları tek tek yönetebiliyorsunuz.
  • Docker desteği var. Container’larınızı direkt olarak servis üzerinden yayınlayabiliyorsunuz.
  • Yukarıda saydığım popüler dillerin tamamını servis edebilme yeteneğine sahip.
  • Servisin tekil olarak bir ücretlendirme durumu yok. Oluşturduğu servislerin (EC2 instance, S3 Storage, vs…) ücretlendirme politikası üzerinden kümülatif bir fatura çıkartıyor. Free-tier olarak kullanmaya başladığınızı söylemeden geçmek doğru olmayacaktır.

Hadi başlayalım

Uygulamaya bu adresteki Github reposundan ulaşabilirsiniz.

Uygulamadaki klasör hiyerarşisi
  • /scripts/create-aws-profile.sh: Bu dosyayı Travis üzerinde çalıştıracağız. Amacımız, Travis’teki deploy makinemizde bir AWS konfigürasyon dosyası oluşturmak. Bu dosya içerisinde ise Elastic Beanstalk’a bağlanmak için gerekli kullanıcı bilgilerini tutacağız. Dosyayı oluşturup işledikten sonra ise src klasörü altındaki uygulamamızı bu bilgiler ile servise deploy edeceğiz.
  • /src/.ebextensions/python.config: src klasörü içerisinde uygulamamızın kaynak kodları bulunuyor. Bu dosyanın ise normal bir Tornado projesinde yer alması gerekmiyor. Dosya içerisindeki konfigürasyon, Elastic Beanstalk tarafından kullanılacak ve uygulamanın çalıştırılacak ana dosyasını üzerinde taşıyacak.
  • .travis.yml: Bu dosya ise Travis tarafından süreci yönetmek amaçlı kullanılıyor. Önemli kısmı ise install adımında belirtilen komut(lar). Bu komutlara göre Travis deploy makinesine “awsebcli” paketi kurulacak. Bu paket, komut satırı üzerinden Elastic Beanstalk’a deploy yapmamıza olanak sağlıyor. Kurulum sonrası ise PATH ortam değişkeni düzenleniyor. Bunun sebebi ise “eb” komutunu çalıştırabilmemize olanak sağlamak.

AWS Elastic Beanstalk Adımı

Öncelikle Elastic Beanstalk’a programatik olarak erişecek kullanıcımızı oluşturalım. Bunun için IAM servisine gidiyoruz, soldaki menüden “Users” menüsünü seçiyor ve açılan pencereden “Add User” butonuna tıklıyoruz.

Sonuç

Elastic Beanstalk servisinin kurcalanması gereken bir çok detayı var. Biz bu örnekte en basit haliyle, 15 dakikada, hayal ettiğimiz uygulamayı Almanya’daki arkadaşımıza göstermek istedik. Ayrıca Travis üzerinden de süreçleri detaylandırabiliriz. Tabii ki diğer dilleri ve dillere bağlı kütüphaneleri kullanarak uygulamalarımızı çeşitlendirebiliriz.

--

--

Engineering Manager (at) Hepsiburada. Former trainer & consultant. Tweets are mostly about tech and coding. https://superpeer.com/selcukusta

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Selçuk Usta

Selçuk Usta

Engineering Manager (at) Hepsiburada. Former trainer & consultant. Tweets are mostly about tech and coding. https://superpeer.com/selcukusta