AWS Elastic Beanstalk Üzerine Node.js Uygulaması Çalıştırma
http://twitstat.awsturkiye.com
2015'in Ağustos ayında Node.js Twitter Verilerini Gerçek Zamanlı Analiz Etme ve Görselleştirme ile ilgili bir yazı paylaşmıştım. Buradaki amacım böyle bir programı Node.js ile nasıl yazabileceğiniz üzerineydi.
O zaman bu zaman EC2 üzerinde çalıştırdığım Node.js uygulaması kapanmış Daha az bir bakım maliyeti ile daha production'a yönelik bir ortamı nasıl hazırlarım.
Burada devreye AWS'nin PaaS hizmeti Elastic Beanstalk devreye giriyor. Bu yazıda kısaca bunları anlatmaya çalışacağım.
Sunucuların Monitor Edilmesi: Örneğin uygulamanız çöktü veya performanı düştü nasıl yeni sunucular açacaksınız. Bu sunucuların nasıl ölçeklenebilirliğini sağlayacaksınız.
Deployment'ı ve Versiyonlamayı Nasıl Yapacaksınız: Uygulama üzerine yeni versiyonlar atmak istiyorsunuz bu işlemi nasıl yapacaksınız. Geçmiş versiyonlara nasıl geçeceksiniz ?
DNS Route53 yönlendirmesini nasıl gerçekleştireceksiniz ? EC2 adresi veya IP adresi yerine sizin kullandığınız bir subdomain'i nasıl bu WebApp yönlendireceksiniz.
Elastic Beanstalk aslında CloudFormation ile kurulan bir WebApp ortamı aslında bunuda Loglardaki resimlere baktığımız zaman bu ortamın arkaplanda nasıl kurulduğunu görebilirsiniz.
Elastic BeansTalk Ortamının Kurulması
Elastic Beanstalk üzerinde ilk önce Application'larınızı onun altındada Environment'larınızı oluşturursunuz. 1 App'in altında birden fazla envvironment olabilir.
Environment oluşturma sırasında size 2 tip seçenek sunulur.
WebServer Ortamı: HTTP Requestlerini cevap verebilecek ortamlar oluştururken
Worker Ortamı: SQS mesajlarını işleyebilecek cevap verebilecek ortamın oluşturulmasıdır.
Burada oluşturulan ortamın Node.js, PHP, Ruby, Go, Java, .NET gibi bir çok ortamı destekleyen SingleInstance veya LoadBalancing özellikli AutoScale bir ortam kurabilirsiniz.
Biz kendimize Node.js Ortamı Oluşturduğumuzda 64bitlik Linux t1.micro üzerine Node.js ortamını kurar..
Kurulan ortamın konfigurasyonunu Web Tier, Newtork Tier ve Data Tier altında görebiliriz. Burada konfigurasyonu değiştirebiliriz.
Logs, Health, Alarms, Event, Tags gibi ortam üzerinde ortam ile ilgili bir çok veriye erişebilirsiniz.
Monitoring altında hazır olarak Avarage Latency, Sum Request, CPU Utilization, Max Networn In/Out değerlerini görüntüleyebilirsiniz.
Peki Node.js uygulamamızı nasıl oluşturup deploy edeceğiz.
npm initile package json'u oluşturun.
npm install express --savevb ile package json içerisine dependency'lerin düzgun şekilde oluşturulduğunu görün.
var port = process.env.PORT || 8081node.js 80 dışardan içeriye 80 portundan erişsede önünde bir nginx reverse proxy bulunmakta bundan dolayı içerde hangi portu kullanacağını process.env.PORT bilgisinden erişebiliyoruz.
Source kodunuzun olduğu paketin içerisine girerek
node_modulespaketini silin ve source kodu zip haline getirin.
Aşağıdaki Application Version kısmına giderek buradan uygulama versiyonlarınıza yeni versiyon ekleyerek deploy işlemini gerçekleştirin.
DNS Kısmında Route53'den yönlendirme yapabilmemiz için CNAME içerisinde Alias ile Elastic Beanstalk
Uygulamayı geliştirdikçe yeni yazılar ekliyeceğim bu konu ile ilgili...