Slide 1

Slide 1 text

Programlama dili ile bulut altyapısı oluşturma: AWS CDK

Slide 2

Slide 2 text

Moderator Bilgileri Serkan BİNGÖL Cloud Program Manager & AAI BilgeAdam Teknoloji [email protected] https:/ /www.linkedin.com/in/sbingol/ https:/ /github.com/serkanbingol https:/ /medium.com/@serkanbingoll

Slide 3

Slide 3 text

Demo için kullanılan AWS Hizmetleri  AWS CDK ( Cloud Development Kit )  Amazon S3 ( Simple Storage Service )  Amazon DynamoDB  AWS Lambda  AWS SNS ( Simple Notification Service )

Slide 4

Slide 4 text

Amazon S3 Simple Storage Service  AWS içinde veri erişilebilirliği ve performans özellikleri sunan bir nesne depolama hizmetidir.  Object-level storage : Obje tipinde saklama imkanı verir. Bir dosyanın üzerinde değişiklik yapılması gerekir ise değişiklik yapıldıktan sonra objenin tümünün tekrar yüklenmesi anlayışına dayanır.  Upload aşamasında tek dosya için maksimum 5 TB ‘ a kadar izin verir.  S3 hizmeti kendi içinde hizmet verdiği datacenterlar içinde otomatik yedekli olarak çalışmaktadır. Farklı regionlar içinde replikasyon seçeneği ile de genel bir yedekleme yapılabilmektedir.  Event Notifications : S3 hizmeti içinde event notificationlar default olarak gelmektedir. Bir bucket içine yüklenen , silinen veya güncellenen her olay için bir bildirim gönderebilir ya da başka bir servisi tetikleyebiliriz.  Versiyonlamayı desteklemektedir. Amazon S3

Slide 5

Slide 5 text

Amazon Dynamo DB  AWS servislerinden No-SQL veri tabanı hizmetidir. Her ölçekte milisaniye cinsinden tek basamaklı performans sunan bir anahtar-değer ve belge (non-relational) veritabanıdır.  İnternet ölçeğindeki uygulamalar için yerleşik güvenlik, yedekleme, geri yükleme ve bellek içi önbelleğe alma özelliklerine sahip, tam olarak yönetilen, çok bölgeli, çok ana hesaplı, dayanıklı bir veritabanıdır.  Schema barındırmaz. Her elamanın kendi içinde birçok attribute barındırma şansı vardır.  Basit ama yüksek hacimli veriler için kullanılır.  Ölçeklendirilmesi çok basit ve bir kaç tıklama ile gerçekleşebilir.  Karmaşık joinlere ihtiyaç duymaz  ACID prensibi ile transaction yönetimi gerçekleştirilir. (Atomicity, Consistency, Isolation, Durability) Amazon Dynamo DB

Slide 6

Slide 6 text

AWS Lambda  Sunucu tedariki gerekmeden veya yönetmeden kod çalıştırmamıza olanak tanır.  Stateless olarak çalışır.  Lambda, tüm ölçeklendirilebilirlik ve yüksek erişilebilirlik, loglama ve izleme konularını halleder.  Eventler tarafından tetiklenerek ya da zamanlanarak çalıştırılabilir.  Node.Js, Python, Ruby, Java, Go, C# dillerini destekler.  Kaynakları sadece istek yapıldığı zaman kullanır.  Request ve kullanılan bellek miktarına göre bir fiyatlandırması vardır. AWS Lambda

Slide 7

Slide 7 text

Amazon SNS  Dağıtılmış sistemleri ve sunucusuz uygulamaları birbirinden ayırmanıza imkan tanıyan yüksek oranda erişilebilir, sağlam, güvenli ve tam olarak yönetilen bir pub/sub mesajlaşma hizmetidir.  Uygulama ve sistem mesajları için kullanılabilir.  Push email ve text mesajları için kullanılabilir.  Mobil bildirimler için kullanılabilir. Amazon SNS Amazon SNS Subscription Tipleri :  Email : Kayıtlı adreslere email gönderimi sağlanabilir.  HTTP/HTTPS : Kayıtlı URL lere HTTP post isteği gönderim sağlanabilir.  SMS Clientları : Kayıtlı telefon numaralarına SMS gönderimi sağlanabilir.  Amazon SQS Kuyrukları : Amazon SQS üzerine bir bildirim event mesajı gönderilebilir.  AWS Lambda Functionları : AWS Lambda foksiyonu üzerine bir bildirim olarak gönderilebilir.

Slide 8

Slide 8 text

AWS IaC Infrastructure as Code  AWS içinde IaC Infrastructure as Code yapısı için 3 bileşenden söz edebilmekteyiz.  AWS SDK  CloudFormation  AWS CDK IaC Infrastructure as Code  AWS SDK geliştiriciler için tutarlı ve tanıdık bir dizi kitaplık sağlayarak AWS Hizmetlerinin kullanımını basitleştirir. Tüm AWS SDK'ları; kimlik bilgisi yönetimi, yeniden denemeler, verileri sıraya koyma ve serileştirme gibi API yaşam döngüsüyle ilgili dikkate alınması gereken unsurları destekler.  AWS CloudFormation basit bir metin dosyasını kullanarak tüm bölgelerdeki ve hesaplardaki uygulamalarımız için gerekli kaynakların tamamını otomatik ve güvenli bir şekilde modellememize ve tedarik etmemize imkan tanır  AWS CDK ise AWS kaynaklarını yazılım geliştirmekte olduğumuz dili kulllanarak kolayca oluşturmamıza olanak tanıyan bir yazılım geliştirme platformudur. En yalın şekilde kodladığımız tüm kaynakları AWS Cloudformation şablonlarına çevirerek CloudFormation’ın tüm avantajlarından faydalanmamıza olanak tanır .

Slide 9

Slide 9 text

AWS CloudFormation Bulut ortamınızdaki tüm altyapı kaynaklarını açıklamamız ve tedarik etmemiz için ortak bir dil sağlar. CloudFormation, programlama dillerini veya basit bir metin dosyasını kullanarak tüm bölgelerdeki ve hesaplardaki uygulamalarımız için gerekli kaynakların tamamını otomatik ve güvenli bir şekilde modellememize ve tedarik etmemize imkan tanır. Bu durum bize, AWS kaynaklarımız için tek bir doğru bilgi kaynağı sağlar. AWS CloudFormation AWS kaynaklarımızı oluşturulması için ortak bir dil sağlar. Tanımlı kaynakların oluşturulması için otomasyon oluşturur.

Slide 10

Slide 10 text

AWS CloudFormation  AWS kaynaklarımızı oluştururken JSON/YAML formatında hazırladığımız ve tüm bileşenlerin bir sistem yığını oluşturduğu şablonlardır.  Bir kod parçacığı gibi düşünülmelidir. Versiyonlama sistemleri (SVN , Git vb..) içinden yönetilebilmektedir.  Sistem içinde kullanacağımız tüm kaynaklar, çalıştırma zamanı parametreleri (EC2 size, EC2 key pair vb..) bu şablon içinde tanımlanabilmektedir.  AWS CloudFormation, hazırladığımız şablonlarını işleyen bir engine olarak çalışmaktadır. AWS CloudFormation Architecture Template Architecture Stack AWS CloudFormation Engine

Slide 11

Slide 11 text

AWS CDK Cloud Development Kit  AWS Cloud Development Kit (AWS CDK), bulut uygulaması kaynaklarınızı tanıdık programlama dilleri kullanarak modelleyip tedarik etmenize yönelik açık kaynak bir yazılım geliştirme framework’udur..  AWS CDK temelinde TypeScript, Python, Java ve .NET dillerinde destek sunmaktadır. Kullandığımız geliştirme dili sözdizimi kurallarını kullanarak kodladığımız tüm kaynakları AWS Cloudformation şablonlarına çevirerek CloudFormation’ın tüm avantajlarından faydalanmamıza olanak tanır  AWS CDK temelde 5 adet cli komutu üzerinden işlemini gerçekleştirmektedir.  cdk init : Seçtiğimiz dilde yeni bir varsayılan uygulama başlatır.  cdk synth : AWS CDK uygulamamızı bir AWS CloudFormation şablonunda derler.  cdk diff : Local AWS CDK kodumuz ile AWS’deki çalışan uygulama arasındaki farka bakar.  cdk deploy : AWS CDK uygulamamızı AWS CloudFormation aracılığıyla dağıtır. AWS kaynaklarını AWS hesabımız üzerinde oluşturur.  cdk destroy : Cloudformation kullanarak oluşturduğumuz yığını (stack) AWS hesabımızdan kaldırır. AWS CDK

Slide 12

Slide 12 text

AWS CDK Cloud Development Kit

Slide 13

Slide 13 text

Demo inventory dosyası Amazon S3 bucket AWS Lambda function S3 içindeki inventory dosyasını okuyup içindeki kayıtları DynamoDB üzerinde oluşturacak. Amazon DynamoDB table Amazon SNS Mail Bildirimi AWS Lambda function DynamoDB üzerindeki güncellemeleri algılayarak Amazon SNS üzerinde bir mesaj oluşturacak

Slide 14

Slide 14 text

Kullanılan Kaynaklar Sunum için kaynaklar https:/ /github.com/serkanbingol/aws-webinars/cloud-and-serverless-turkey-cdk