Cloud (Bulut) Teknolojilerinin Avantajları

AWS Servisleri

AWS Servislerini Neden Kullanmalıyım?

Neden Kendi Sunucularımız Değil’de AWS Üzerinde Uygulama Geliştirelim ?

--

Bu soru bana sıklıkla sorulan bir soru.

  • Bizim bir uygulamamız var zaten web üzerinden kendi sunucularımızda sunuyoruz AWS üzerine taşıyınca cloud(bulut) ortamında çalışıyor diyebilir miyiz ?
  • Ne zaman AWS üzerine uygulamamızı taşımalıyız ?

AWS IaaS(Infrastructure As A Service) olarak kullanıyor iseniz AWS’nin size sağladıkları sadece aşağıdakiler olacaktır.

  • High Scalability (Ölçeklendirebilirlik)
  • High Availability
  • vb..

Ama AWS bunun ötesinde size yazılım bilgisini, deneyimini sizden soyutlayarak size servis olarak sunar. Sonuçta siz AWS’ye bağımlı bir geliştirme yapmış olursunuz ama ilgili kısmın çalışmamasından, problem oluşturmasından korkmazsınız. Çünkü sizin açık kaynaklı uygulama ve sunucularla yaptığınız bu işlemi AWS kendi alanlarında uzman kişilerle yaptığı ve üzerinde bir çok uygulama barındırdığı için bu servislerde uzmanlaşmışlardır.

Aşağıdaki örneklerden sonra konu daha iyi anlaşılacaktır.

REST API

Örneğin bir Rest API yazmak istiyorsunuz. Bir EC2 instance açarız. Java’dan yola çıkalım. Üzerine Spring ve Tomcat Rest API mizi geliştirip bu EC2 instance üzerinde çalıştırabiliriz.

Yatay Ölçekleklendirme Problemi: EC2 önüne ELB koyup AutoScale grubu tanımlayabilir ve bunu CloudWatch ile entegre edebilirsin.

Tomcat Bakımı ile İlgili Problemler: AWS Beanstalk kullanarak Tomcat sorumluluğumuzu üzerimizden atarız. Direk AWS PaaS platformunu kullanarak hazır Tomcat’ler üzerine war paketlerini deploy edebiliriz.

Geliştirdiğimiz Yazılım ile İlgili Problemler: API Gateway kullanırsak bu problemden de kurtulmuş oluruz. RESTfull apimizi konfigure ederek direk kullanmaya başlarız. SSL tanımlama, Monitor etme, Scale etme, Hata çıkma vb.. bütün işleri AWS’nin deneyimli mühendislerine bırakırız. Biz hızlıca uygulamamızı geliştirmeye odaklanırız.

ePosta Sunucusu

Eposta alıp, göndermek için bir sunucu kurmak istiyorsunuz. Örneğin sizde Apache JAMES sunucusunu indirdiniz ve kurdunuz. MX ayarlarını yaptınız. Elastic Load Balancer arkasında mail sunucularınızı çokladınız ve aynı veri tabanına bakması için JAMES konfigüre ettiniz. Yine ayakta kalması, çökmemesi, yatay ölçeklendirilmesi için bir sürü ayarlamalar yapmanız gerekiyor.

Bunun yerine AWS’nin SES(Simple Email Servisi) kullanılarak ePosta ile ilgili işlemlerinizi daha güvenilir bir şekilde yapabilirsiniz.

Veritabanı Sunucusu

MySQL, MSSQL vb.. bir sunucu kurmak istiyor olabilirsiniz. Bir EC2 instance alıp üzerine MySQL kurdunuz fakat replikasyonu, backup, vb ekstra veritabanı işlemlerini kim yapacak ?

Halbuki RDS servisi sayesinde Multi-AZ seçimi ile anında veritabanı sunucunuzu replike edilir hale getirebilirsiniz.

Otomatik health check kontrolü, Bir problem olduğunda DNS’in replikaya otomatik yönelmesini sağlar.

Otomatik backuplar alınması sizin veritabanı ile ilgili işlemlerini oldukça kolaylaştırır.

NoSQL DB içinde DynomoDB kullanarak istediğiniz şekilde ölçeklenebilir bilgi tutabilirsiniz.

Mesaj Kuyruk Yapıları

Yine EC2 instanceları üzerinde kendi ActiveMQ, RabbitMQ, Kafka, IronMQ vb kuyruk yapılarını kendiniz kurup yönetebilirsiniz. Master/Slave yapılarını failover durumlarını hep sizin yönetmeniz gerekmektedir.

Bunun yerine SQS(Simple Queue Service) kullanarak bu sunucuların bakımı, ayakta kalması ve ölçeklendirilmesi konusunda uğraşmanıza gerek kalmaz.

In-Memory Cache

Redis, Memcache vb istediğiniz bir cache EC2 instance kurabilirsiniz ama yine Replikasyon ve Healt Check problemi ile karşılaşacaksınız.

Bu problemin çözümü için Elastic Cache üzerinden Multi-AZ seçeneğini aktif hale getirerek EC2'lar üzerinde sunucuları yönetmeye çalışmak yerine direk

Background Process/Job

Yine bu işler için Spring ile arkaplan da Mesaj Kuyruğundan işleri alıp çalıştıran EC2 üzerine veya ECS üzerine servisler geliştirebilirsiniz.

Veya tamamen bu iş için özelleşmiş AWS Lambda servisini kullanabilirsiniz. Sunucusuz fonksiyon çalıştırma özelliği sayesinde istediğiniz gibi ölçeklenebilir ve sadece iş kurallarını düşünerek geliştirmenize odaklanabilirsiniz.

Push Notification

Yine bir EC2 instance alıp Sertifika ve Key’leri bu sistem üzerine kuracaksınız bunun High Available olması için sistemler ve konfigurasyonlar yapacaksınız vesaire vesaire..

Bunun yerine AWS SNS(Simple Notification Servisi) kullanarak Push Notification’larınızı scale edebilecek şekilde gönderebilirsiniz.

Ayrıca Push Notification’ları Topic altyapısı sizin ile kullanıcılarınız arasında iş kurallarına göre farklı kanallar oluşturabilecek altyapıları sunar.

Dosya Saklama

Dosya saklamak ve bu dosyaya her yerden erişmek erişmek istiyorsunuz. Bunun için S3 (Object Storage) kullanmanız yeterli. İstediğiniz büyüklükteki dosyalarınızın (1 byte -5 TB) arasında , AWS depolama alanı kadar büyük bir alanda High Availability ve High Durability olarak saklama ve yönetme imkanı veriyor.

Not

Bu örnekleri iOT, ML, ElasticSearch, Kinesis gibi birçok servis için çoğaltabiliriz aslında, burada bulut servisleri sizlerden problemleri soyutlayarak ihtiyaçlarınıza göre konfigure edebilme imkanı sunuyor.

Dezavantajı ise Bulut Sağlayıcısına bağımlı olmak.Yine’de kısa sürede ve az deneyimle kaliteli ve problemsiz uygulamalar ortaya çıkarmak istiyorsanız AWS’nin servislerini kullanmanızı öneririm.

Uzun süredir farklı sektörlerde (Askeri, Telekomünikasyon, Devlet, Bankacılık, Sigortacılık, Tübitak, SaaS) yazılımlar geliştiriyorum. Bu süreçte Havelsan, Milsoft, T2, Cybersoft ve Thundra firmalarında yönetici ve yazılım mühendisi olarak çalıştım. Deneyimlerimi ve teknolojik bilgi birikimi mi olabildiğince OnurDayibasi.com adresinde toplamaya çalışıyorum. Tüm yazılarıma ve daha fazlasını bu site üzerinden erişebilirsiniz.

--

--