YAZILIM MİMARİSİ

AWS Well-Architected Framework Nedir ?

AWS Sistemleri üzerinde güvenlikli, esnek, yüksek performanslı ve verimli uygulamaları geliştirebilecekleri altyapıları nasıl oluştabileceklerini tarif eden Çerçeve Mimari Tanımı oluşturulmuştur. Bu yazıda bu Mimari çerçeveyi ve bunun bileşenleri, farklı sektörlerdeki karşılıklarını irdeleceğim.

--

Are You Well-Architected ? (İyi Bir Mimariye Sahip misiniz)

soruna cevap arıyor Well Architected Framework, hem bu çerçeveyi tanımlıyor, hemde AWS üzerinde uygulama geliştiren ekiplerin bu çerçeveye ne kadar uzaklıkta olduklarını uymaları için neleri yapmaları gerektiğini belirtiyor. Bu sayede AWS üzerinde daha çok başarı hikayeleri, ortaklıkları oluşturabilirler.

Well-Architected bulut mimarlarına, AWS üzerindeki uygulamalarını

  • güvenlikli,
  • yüksek performanslı,
  • esnek ve verimli altyapılar

üzerinde geliştirebilmesi için yardımcı bir tarif ve tanım yapar.

Dipnot: Ben burda AWS konusunda deneyimli olduğum için konuyu AWS üzerinden anlatıyorum ama benzer durum Microsoft Azure (Well Archicted Framework) ve Google (Architecture Framework)

Terminoloji

Workload bir grup kaynak ve kodun business(iş) değeri üretmesi için sunulması, bu kullanıcı arayüzüne sahip bir uygulamada olabilir, arkaplanda çalışan bir serviste olabilir.

Geliştirdiğiniz mimariyi ne kadar best practice (en doğru yaklaşım) uygun yaptığınızı Well-Architected Framework ne kadar uyduğunuz konusunda değerlendirmeler ve gözden geçirmeleri sağlayarak yüksek riskli alanların tespiti ve nasıl düzelteceğiniz konusunda önerilerde bulunacak birde Well-Architected Tool geliştirmiştir.

Well Architected Lenses ortak benzerlikteki workload (sektörler) için Well Architected Framework temellerinde yer alan sorular özelleştirilerek IOT, Serverless, Analitik, Makine Öğrenme vb.. alanlarına uyarlanmış ve bunlara verilen cevaplar ile best practice ortaya çıkarıldığı dökümanlar oluşturulmuştur.

AWS Well-Architected Neler İçerir ?

AWS Well Architected 3 parçadan oluşur;

  • Pillars (Bileşenler)
  • Design Principles (Tasarım Prensipleri)
  • Questions (Sorular)

Neden AWS Well-Architected Framework Uygulayalım ?

Uzun yıllardır AWS içerisinde oluşan uygulama geliştirme, ayakta tutma, problemleri çözme deneyimini müşterileri ile paylaşarak kendi altyapılarını kullanılarak geliştirilen uygulamaların kalitesini arttırma çabasıdır. Bu açıdan buradaki bilgi ve deneyimler çok değerlidir. Bu bilgiler

  • Uygulamaların daha hızlı build ve deploy edilmesi sağlar. Bu denemek istediğimiz fikirleri veya müşteri yorumlarını anında uygulamaya yansıtmamızı sağlar ve hızlı karar alıp, uygulayabilme sizin çevik olmanızı sağlayacaktır.
  • Riskli bilmediğiniz alanlarda önceden öğrenilmiş deneyimlerin kullanılması, yüksek risklerin hafifletilmesini, ciddi ve yıkıcı tuzaklara düşülmesini engeller.
  • İçerisinde örneklediği best practice (En iyi pratikler) sayesinde bilinçli kararlar verirsiniz.

AWS Well-Architected Nasıl İşleteceğiz ?

  1. Öğrenme Evresi: Well-Architected Framework ve içerisinde anlatılan en iyi pratikleri öğreneceğiz
  2. Ölçümleme Evresi: Geliştirdiğiniz mimari üzerindeki uygulamanızın workload ölçümlersiniz.
  3. Geliştirme Evresi: Ölçümleme sonucunda

Pillars (Bileşenler):

1 Operational Excellence (Operasyonel Mükemmellik):

Operasyonel mükemmellik bileşeni, iş değeri sunmak amacıyla sistemlerin çalıştırılması ve izlenmesinin yanı sıra süreç ve prosedürlerin sürekli olarak iyileştirilmesine odaklanır. Temel konular arasında değişikliklerin otomatikleştirilmesi, olaylara yanıt verilmesi ve günlük operasyonları yönetmek için standartların tanımlanması yer alır. (bu bilgi AWS sitesinden alıntı)

2 Security (Güvenlik)

Güvenlik bileşeni, bilgi ve sistemlerin korunmasına odaklanır. Temel konular arasında verilerin gizliliği ve bütünlüğü, ayrıcalık yönetimiyle kimin ne yapabileceğinin tanımlanıp yönetilmesi, sistemlerin korunması ve güvenlik olaylarını algılamak için denetimler oluşturulması yer alır. (bu bilgi AWS sitesinden alıntı)

3 Reliability (Güvenilirlik)

Güvenilirlik bileşeni, bir iş yükünün, amaçlanan işlevinin beklendiği zamanda, doğru ve tutarlı bir şekilde yerine getirmesini sağlamaya odaklanır. Dayanıklı bir iş yükü, işletmenin ve müşteri talebini karşılamadaki hatalardan hızla kurtulur. Temel konular arasında, dağıtık sistem tasarımı, kurtarma planlaması ve değişikliğin nasıl yönetileceği yer almaktadır.(bu bilgi AWS sitesinden alıntı)

4 Efficiency (Performans Verimliliği)

Performans verimliliği bileşeni, BT ve bilişim kaynaklarının verimli şekilde kullanılmasına odaklanır. Temel konular arasında iş yükü gereksinimlerine göre doğru kaynak tiplerinin ve boyutlarının seçilmesi, performansın izlenmesi ve iş gereksinimleri değişip geliştikçe verimliliği korumak için bilinçli kararlar alınması yer alır. (bu bilgi AWS sitesinden alıntı)

5 Cost Optimization. (Maliyet Optimizasyonu)

Maliyet optimizasyonu bileşeni, gereksiz maliyetlerden kaçınmaya odaklanır. Temel konular arasında paranın nerelere harcandığının anlaşılması ve denetlenmesi, en uygun ve doğru sayıda kaynak tipinin seçilmesi, zaman içindeki harcamanın analiz edilmesi ve aşırı harcama olmadan iş gereksinimlerini karşılamak için ölçeklendirme yapılması yer alır. (bu bilgi AWS sitesinden alıntı)

Design Principles (Tasarım Prensipleri)

Genel Tasarım Prensipleri ve 5 Bileşen Özel Tasarım Prensipleri olarak ikiye ayrılıyor

1 Genel Tasarım Prensipleri :

  • Kapasite İhtiyaçlarını tahminlemeyi bırak
  • Sisteminizi (Test vs ortamlarınızda) production büyüklüğünde ve gerçekliğinde yakın testler gerçekleştirin
  • AWS Ortamındaki her servise ve altyapıya API üzerinden erişebilirsiniz. Bu sizim tüm bu yapıyı Otomasyon ile otomatikleştirmenizi tüm build , deployment ve altyapınızın otomatik olarak oluşmasını sağlar
  • Evrimsel şekilde gelişecek şekilde mimarinisi oluşturun. AWS servislerinde mimari yapıya araya bir kuyruk, işlemci vb şeyler olabildikçe basit olduğu için çok ilerisini büyük ölçeği düşünmeden mimarinizi süreç içinde geliştirin.
  • Veri üzerinden elde ettiğiniz bilgiler üzerinden mimari kararlarınızı alın, doğru karar alabilmeniz için sisteminiz ile ilgili bir çok bilgiye Amazon CloudWatch üzerinden erişebilirsiniz .
  • Game Day (Oyun Günleri) yoluyla mimarinizi geliştirmeye çalışın. Oyun günleri production ortamın bir kopya ortamında hata durumları, istisnai durumlar, yük durumu , güvenlik açıkları ile well-architected yapınızı test edilmesine yönelik simülasyonlar yaptığınız günlerdir. Sadece sistem değil ekiplerinde bu durumlara nasıl karşılık vereceğide denenmiş olur.

2 Operational Excellence (Operasyonel Mükemmellik) Tasarım Prensipleri

  • Operasyonel işlemlerinizi kod ile gerçekleştirin (IaC → Infrastructure as Code)
  • Kodunuda yaptığınız her küçük değişiklik ve bunların release ilgili değişiklik nedenini Annotated Documentation (Açıklamalı dokümantasyon) olarak ilgili değişikliğe ekleyin. Örneğin Github release notlarına sizin GitHub commit mesajlarından otomatik olarak oluşturulup eklenmesi gibi.
  • Operasyonel işlem geliştirmelerinizi ufak değişiklikler ile ilerletin. Riski azaltın, hata durumlarda geriye dönebilecek altyapıya sahip olun.
  • Operasyonel işlemlerinizi sürekli sadeleştirip en basit şekilde olacak şekilde tutmasını sağlayın
  • Olası hataları önceden tahmin ederek bu konuda gerekli önlemleri alın (chaos engineering)
  • Tüm operasyonel hatalarınızdan ders çıkartın

3 Security (Güvenlik) Tasarım Prensipleri

  • Güçlü bir kimlik yönetim temeli oluşturun. (Görevlerin ayrılması, en az yetki ile işlevlerin yerine getirilmesi, merkezi yönetim, kısa süreli kimlik bilgilerinin kullanımı ve bilgilerin başka ortamlara taşınmaması.)
  • İzlenebilirliği aktif hale getirin.(log sistemleri ile entegrasyon, izleme, gerçek zamanlı denetim, alarm sistemi)
  • Tüm katmanlarda güvenliği uygulayın. (Edge Network, VPC, subnet, load balancer, bütün EC2 , İşletim Sistemleri ve uygulamalar)
  • Güvenlik ile ilgili en iyi pratikleri otomatikleştirin.
  • Giden/Gelen, Saklanan verinin güvenliğini sağlayın.
  • Veriyi kişilerden uzak tutun.
  • Gerekli güvenlik olaylarını oluşturacak yapılar oluşturun

4 Reliability (Güvenilirlik) Tasarım Prensipleri

  • Recovery prosedürlerini test edin. AWS gerçek ortamı simülasyonunu gerçekleştirecek ortamları oluşturabilmek on-premise ortamlara göre oldukça kolaydır.
  • Hata durumlarında kendi kendini düzelten otomatik kendini kurtarma (recovery) mekanizmaları oluşturun.
  • Sistemin kullanılabilirliğini/sürekliliği arttırmak için sistemi dikey ölçeklenmeye değil , yatay büyüyecek şekilde tasarlayın.

Dipnot: Dikey ölçeklenme sistem kaynaklarının aynı makinede Örneğin EC2 Bellek, CPU arttırılması şeklinde gerçekleştirilir. Yatay ölçeklenme ise sistem kaynaklarına yeni ek EC2 lar katılmasını sağlayarak yükün dağıtılması yöntemidir.

  • Sistemin kullanılabilirliğini/sürekliliği arttırmak için sistemi dikey ölçeklenmeye değil , yatay büyüyecek şekilde tasarlayın.
  • Kapasite tahminlemeyi bırakın.
  • Tüm değişiklikler için otomasyon yapın.

5 Efficiency (Performans Verimliliği) Tasarım Prensipleri

  • AWS altyapılarında yer alan Streaming Servislere, NoSQL veritabanlarına, Doküman veritabanlarını, Media Servisleri, Makine Öğrenmesi servislerini hızlı bir şekilde kullanmayı sağlar. Buda sizin ihtiyaçlarınız doğrultusunda ileri teknolojilerden çok hızlı ve basit şekilde faydalanmanızı sağlar.
  • Global’e yani dünya seviyesinde servisler oluşturabilmeyi dakikalar içerisinde gerçekleştirebilirsiniz. Bunun için Region, CloudFront vb altyapısal yapıları kullanarak hizmet performansınızı arttırabilirsiniz.
  • Serverless(Sunucusuz) Mimariler kullanarak işin yönetimsel anlamda tamamiyle AWS bırakıldığı sistemler tasarlanarak performans sağlanabilir.
  • Yazılım ve Donanım (AWS Infrastructure) harmoni içerisinde çalışması için Mekanik Sempati ( Mechanical Sympathy) oluştur

5 Cost Optimization. (Maliyet Optimizasyonu) Tasarım Prensipleri

  • Tüketim modeli oluştur. (Çalıştırdığın/Kullandığın kadar öde)
  • Bunun için sistem verimliliği ve sürekliliğini ölçerek buna göre sistemleri otomatik ölçeklendirecek şekilde tasarlamak.
  • Veri merkezi operasyonları için para harcamayı bırak (Fiziksel güvenlik, ortam kiralama, enerji kesinti önlemleri vs… vs.. )
  • Hangi kaynak tüketimlerinizin ne kadar maliyete sahip olduğunu analiz ederek bu kaynaklara nitelik kazandır.
  • Managed Servisleri kullanarak bakım maliyetlerini düşür (patching, replication, vb… ) işleri AWS’ye bırak.

Questions (Sorular)

Konusunu AWS Well-Architected Tool konusuyla birlikte işleyeceğim.

AWS Lenses (Mercekleri)

Lenses, AWS Well-Architected’ın Framework kapsamının

  • Makine öğrenimi,
  • Analitik,
  • Sunucusuz (Serverless),
  • Yüksek performanslı bilişim (HPC)
  • Nesnelerin İnterneti (IoT)
  • Finansal hizmetler

gibi belirli sektör üzerine odaklanarak özelleştirilmesi ve genişletilmesi ile özel sorular , best practices ve kullanım senaryolarının çıkarıldığı dokümanlardır. Bu konuyada ilerleyen yazılarımda daha detaylı bahsediyor olacağım.

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--