My Profile Photo

Deniz G


Bilingual Blog: Turkish and English on Software and Life.


DevOpsDays Turkey & AWS Community Day Turkey [TR]

Geçen 1 ay içerisinde online olarak 2 farklı etkinlik düzenlendi.

Etkinliklerde aldığım notları, belki birilerine faydası olur diye burada paylaşıyorum. Kimse bakmasa bile en azından kendime not bırakmış olur, ileride hatırlamak amaçlı göz gezdiririm düşüncesindeyim.

DevOpsDays

Öncelikle keynote içeriği oldukça basit ve giriş niteliğindeydi, DevOps’tan ziyade programlama üzerinden ilerledi, en son da DevOps’a bağlamak amacıyla 5 dk Azure üzerinde deployment’a girişildi. Fakat, benim gibi C#, .NET hakkında herhangi bir bilgisi olmayanlar için yararlı olduğunu belirtmeliyim.

Windows CLI nasıl daha güzel ve etkili kullanılabilir hakkında bir blog yazısı

How to make a pretty prompt in Windows Terminal with Powerline, Nerd Fonts, Cascadia Code, WSL, and oh-my-posh

start . -> cmd’de o an bulunan yerin klasörünü açar.

.NET = .NET Framework + .NET Core + Xamarin

  • Framework for Windows Applications
  • Core for Cross-Platfrom Services
  • Xamarin for Mobile Applications

.NET 6 ile bunların hepsi birleştiriliyor, yani artık .NET, hepsini içeren tek bir şey. her yıl major release gelecek, her çift numaralı release’de de LTS(Long Term Support) olacak.

  • dotnet new -> yapılabilecek uygulama listesini verir.
  • dotnet run -> mvn clean install gibi. delete, build and run demek. bin altınad dll(dynamic link library) ve exe yaratır. exe’nin boyutu dll’e göre çok büyük. technical olarak exe’ye gerek yok, tek başına dll ile de program çalıştırılabilir.
  • dotnet publish -> öyle dosyalar olusturuyor ki artık çalıştırmak icin bilgisayarda dotnet yüklü olması gerekmiyor.

Cloud Native dünyada CI/CD

Cloud Native nedir? CNCF tarafından tanımlanan tanımı, kendisi dinlemekten her zaman zevk aldığım Fatih Arslan’ın anlatımıyla şöyle iliştireyim. Cloud Native, aşağıdakileri sağlayan uygulamalara deniyor.

  • Open-Source: Tamamen open-source yazılımlar kullanılacak.
  • Microservices: Uygulamalar mikroservis mimarisinde olacak.
  • Containers: Paketleme container’lar ile olacak.
  • Orchestrators: Container’lar Orchestrator’lar ile dinamik yönetilecek.
  • Optimum Kaynak Tüketimi

S2S = Service to Service Communications

LocalStack: AWS servislerini local’de, Open Source araçlarla simüle ederek kullanmaya izin verir. Mesela S3’ü gerçekten de AWS’de denemek istemediğim durumda iş görür.

Containerlar ile process’lerin birbirine bulaşmadığına, dosya sistemlerini paylaşmadığına emin oluyoruz.

DevOps ile, deployment aşamasında acaba şunu update ettik mi vb süreçleri insanlara bırakmadan otomatize ediyoruz.

From Sasha Rosenbaum on Microsoft DevOps Journey

  • Meaure Results, Not Activity

  • Horizontal Reposibility yerine Vertical. Yani Developer, SRE, DevOps takımları yok. Her title’ı içinde bulunduran takımlar var, Self Forming Teams.

Sürekli Test Ortamlarında Test Güvenilirliğini Sağlamak?

MLOps: Machine Learning Ops. makine öğrenmesi desteği

Smell= Zayıflık. İleride başımızın belası olabilir, sorun durumunda anlaması saatlerimizi alabilir. Feature çalışıyor ama beklendiğinden farklı path’de calışıyor, göremiyoruz ama calışıyor görünüyor. Test Smells’ler kaldırılmalı.

  • Flaky Tests: Bir çalışır bir çalışmaz.
  • Fragile Tests: Çalışıyorsa dokunmayacaksın, dokunursan biter.

False alarm: Status of feature -> Pass, Execution results -> Fail.

Cleanup ile ardışık testler arasındaki çalışmalarda güvenlik yaratabilir. Spring’deki @DirtiesContext mesela.

Müşteri her zaman beklemeyeni deneyecektir, senin gibi ortama alışık degil. Neyi nasıl yağacağını bilmiyor ve ilk defa deniyor.

code-review

Code Review :D

SRE, bir yazılımcıdan operasyon yapmasını istemeniz.

SRE Prensipleri

  • SLI/SLO: Service-Level Indicator. Canlıda yayında olan servisin nasıl ve ne şekilde calıstıgıyla ilgili bilgiler veren ölçülebilir metricler. Service-Level Objective. SLI ile toplanan metriclere koyulan hedefler. Mesela erişebilirlik SLI’yi için /user api’si kaç ms’de cevap veriyor? SLO, bu adrese gelen %99 isteğin 50ms altında olması gibi bir heref. Böylece ne kadar başarılıyız raporlayabiliriz. Çünkü şu an herşey data.
  • Hata Bütçesi: Hedeflerin dışında kaldığımız süre ne kadar olabilir? Yani SLO ihlalleri. Bu sistemde hata olabilir demek, bunun sonunca ihlal neredeyse orada iyileştirme yapmamız gerektiğini söyler.
  • Otomasyon: Yarını bugünden daha iyi hale getiren şeyleri makineye yaptırmak.
  • Monitoring: Yayına alınan servislerin içeriden ve dışarıdan metric’lerle sürekli gözlenmesi.

SRE’in bir diğer yaptıgı iş, felaket senaryolarında sistemi nasıl ayakta tutacak?

%50-%50 zamanı nasıl kontrol ediliyor? %50’yi geçince ne oluyor? Bu olay, Twitter’da insanların kendi kontrolünde, herkes kendini buna göre ayarlıyor. (%50 mevzusunu bir önceki yazımda yazdım.)

DevOps Aktiviteleri

  • Dev ve Ops gruplaşmasının önüne geçmek, çatışma yerine grup olarak çalışarak istenilen hedefe ulaşmak.
  • Sistemde oluşacak hataları normal kabul etmek. Hata bütçeleriyle belirli seviyede kabul edilebilir. Ama amaç, bütçenin olabildiğince altında oldurması.
  • Değişilikleri ufak parçalar halinde (canary release gibi tekniklerle) yayına almak.
  • Otomasyondan yararlanmak.
  • Herşeyi ölçmek. SRE’de realibility üzerine ölçümler olurken burada herşey olabilir.

kitap önerisi: “The DevOps Handbook”

AWS Community Day

Bootstapped company: kendi kaynaklarıyla kurulan ve daha sonra yarattığı gelirlerle ayakta olan şirketler.

Startuplarda hızlı hareket edebilmek gerekiyor, aynı anda birçok şey denemek gerekiyor. İşler değişiyor, adapte olup hızlı şekilde teknoloji geliştirip piyasaya gidememek büyük faktör, bu yüzden bir an önce cloud’a geçip etkili şekilde kullanmak zorundalar.

metadata: data about data

US East - North Virginia. Amazon’un en eski region’ı ve tüm yeni özellikler burada release edilir.

Amazon Forecast: Machine Learning kullanarak tahminler yapan AWS servisi.

RDS, veritabanı değil veritabanlarını yöneten bir servistir.

Tuning: performans ayarlama

S3 tiered storage; Standart, IA (infrequently accessed), Glacier vb.

CloudTrail: Audit loglar. Servislere, hangi IP’den, hangi kullanıcılardan, hangi istekler geldi.

AWS-Managed key’ler sadece symmetric key’leri desteklerken, Customer-Managed key’ler hem symmetric hem de asymmetric olabilir.

Amazon EKS (Elastic Kubernetes Service): full-managed kubernetes servisi. böylece ölçeklenebilir ve erişilebilir container yönetimi.

AWS Fargate: Serverless Container, yani EC2 gibi VM ihtiyacı duymadan anında container deployment’ı.

EKS ve Fargate, ekstra ayar yapmadan birlikte kullanılabilir.

Amazon ECR (Elastic Container Registry)’den Fargate’e “image pull” and “then run”.

AWS CDK (Cloud Development Kit): Yeni nesil IaC (Infrastructure as Code) oluşturma. Hali hazırda CloudFormation bu işi zaten yapıyordu. CDK, altında yine CloudFormation’ı kullanıyor fakat bu IaC, bildiğimiz yollardan, tıpkı yazılım geliştiriyormuşuz gibi (desteklenen diller: typescript, python, java, .net) ile oluyor. CloudFormation öğrenmeye gerek kalmadan olusturmayı sağlıyor. En sonda bu oluşturulan şeyler, CloudFormation’a derleniyor ve AWS’de CloudFormation engine’e gönderiliyor.

EC2 instance giderleri, spot instance (datacenterda bulunan ve kullanımda olmayan instacelar) kullanılarak (instance tipine göre farklı ve anlık değişen indirimler) %90’a kadar azaltılabilir.

“spot instance’ların kapatılma sıklığı oranları”

“https://github.com/awslabs”

SNS Fanout: bir mesajın, ona abone olan birçok yere gönderilmesi.

Event-Driven Architecture Patterns

  • Event Notifications: bir sistemdeki değişikliği diğer sistemlere aktarma.
  • Event-Carried State Transfer: önceki state’im bu, şimdiki state’im bu bilgilerinin ikisini birlikte aktarma.
  • Event Sourcing: event logları üzerinden uygulamanın o andaki state’ini elde etme.
  • CQRS: Event sourcing üzerinde sistem büyüdükçe yönetimi kolaylaştırmak için query ve command işlemlerini ayırma.