Photo by Simon Migaj on Unsplash

YAZILIM MİMARİSİ

AWS Serverless Servisleri ile Uygulama Geliştirmenin Avantajları

Onur Dayıbaşı
Cloud And Servers
Published in
4 min readJan 13, 2016

--

Bu yazıyı 2016'da yazmıştım. O tarihte genel yaklaşım EC2 üzerinde kendi sunucularını kurmak (Web Sunucusu, Email Sunucusu, Kuyruk Sunucusu vb..) ve bunları kendin yönetmek şeklindeydi. Bu şekilde devam eden bir çok firma olsada Bulut Sağlayıcıları artık olgunluğunu/başarısı kanıtlamış bir çok servis sunuyor ve birçok startup ve diğer büyük firmalar bu yapıları kullanarak işlerini kendi iş mantıklarına odaklanarak daha kısa , daha güvenilir şekilde sağlıyorlar.

Ölçeklenebilirlik konularında farklı kaynak ve kullanım ihtiyaçları uygulamanızı Servis Odaklı Mimari şeklinde bölmenizi gerektirebilir SOA sayesinde bu kısımları loose-coupled mimaride geliştirebilir ve uygulamanızın diğer kısımlarını bozmadan ölçeklendirebilirsiniz.

AWS bu konuda Application Seviyesinde SOA servisleri(Managed Servisler) sunarak sizin için bu işleri kolaylaştıyor.

Tekerleği Yeniden İcat Etmeye Gerek Yok

Email gönderme, Kuyruk sistemi, Media transcoding, Loglama, Makine Öğrenmesi ve yazılım ile ilgili genel ihtiyaçlar tüm projelerde benzerlik göstermektedir. Bu kısımdaki iş mantıklarını tekrar tekrar kodlamak veya sunucu kurup ayağa kaldırmaya gerek yoktur. High Available, Scalable ve Fault-Tolerant bir sistemi AWS App Service olarak sunmaktadır. Serve-less kısmında yer alan temel servislerden bahsedecek olursak.

Compute Layer (Hesaplama Katmanı)

Lambda: Sunucu olmadan farklı runtime kod çalıştırmayı sağlar. (Event ile tetiklenir)

APIGateway: REST API oluşturmanızı, Lambda ile Entegrasyonların yapılıp iş mantıklarının işletilmesini , Request/Response trafik yönetimi , yetkilendirme, görüntüleme , API versiyonlamayı kontrol edip yönetmenizi sağlar.

StepFunctions: Server-less akışı orkestra etmenizi sağlar, işletilmesinin çok uzun süren parça parça işlerin zincir şeklinde fonksiyonların çağrılması ve sistemin state ve koordinasyonunu sağlar

Data Layer (Veri Katmanı)

Data Layer

DynamoDB: Server-less uygulamalar için kalıcı Managed NoSQL veritabanı sağlar.

S3: Server-less Web uygulamaları için Object storage ve Web sayfayaları için key/value şeklinde objeleri tutabilme ve bu kaynaklara HTTP ile erişebilme imkanı sunar.

ElasticSearch: Log analitiği, full-text arama, görüntüleme(monitoring) sağlayacak arama motoru ve analitik araçlar sağlar.

AppSync: Managed GraphQL servisi sağlar. DynamoDB, ES, S3 üzerinden güvenli, gerçek zamanlı GraphQL çalıştırmayı sağlar.

Messaging and Stream Layer

SQS: Managed Kuyruk Servisi

SNS: Managed pub/sub mesaj servisi , async event notification, mobile push notifications

Kinesis: Real-time streaming verisini basit şekilde toplama, işleme ve analiz etmeyi sağlar. Amazon Kinesis Data Analytics, bu stream üzerinde SQL çalıştırmanısı sağlar.

Firehose: Verinin yakalanması, dönüştürülmesi, Kinesis Data Analiytics, S3, Redshift, ES gerçek zamanlı olarak yüklenmesini sağlar.

User Management And Identity Layer

Cognito: Basit bir şekilde kullanıcı girişi, üyelik, serverless uygulamalar ile veri senkronizasyonu sağlar. Ayrıca kullanıcı havuzları ile Facabook, Google, Amazon sistemleri ile giriş imkanı sunar.

Edge Layer

CloudFront: Web uygulama içerikleri ve verilerinin uç/istemci makinelere daha yakın olacak şekilde az gecikme ve hızlı veri transferi sağlayacak CDN hizmetidir.

System Monitoring And Development

CloudWatch: AWS Servisleri ile ilgili tüm sistem metriklerine , uygulama seviyesi log, kendi oluşturabileceğiniz KPI, metric , dashboard ve alarmlar oluşturmanızı sağlar.

X-Ray: Serverless ve microservis yapıların oluşturduğu distributed tracing ve service map görüntüleyip, problem oluşturan kısımları tespit etmenizi sağlar.

SAM: AWS Cloudformation Serverless uygulamaları deploy için özellemiş bir extension’ıdır. Bu sayede serverless uygulamalar CLI üzerinden daha basit ve otomatik olarak kurulabilir.

Senaryolar

1. Restfull Microservices

Restfull Microservices from Serverless Application Lens

2. Alexa Skills

Alexa Skills from Serverless Application Lens

3. Mobile Backend

Mobile Backend from Serverless Application Lens

4. Stream Processing

Stream Processing from Serverless Application Lens

5. Web Application

Web Application from Serverless Application Lens

Referanslar

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.

--

--