İçeriğe geç

Kategori: Architectural

Event-Driven Architecture’larda Conditional Claim-Check Pattern’ı ile Event Boyut Sınırlarının Üstesinden Gelmek

Günümüz teknoloji çağında, geliştirdiğimiz uygulama çözümlerini olabildiğince ölçeklenebilir, dayanıklı ve esnek hale getirebilmek için genellikle event-driven architecture temelli yapılar üzerinde inşa ediyoruz. Event-driven architecture her ne kadar kulağa hoş gelse de beraberinde birçok karmaşıklık ve limitasyonlar da getirmektedir. Daha önceki makalelerim de dayanıklı ve esnek…

Dapr ve .NET Kullanarak Minimum Efor ile Microservice’ler Geliştirmek – 01

Bildiğimiz gibi her geçen gün teknoloji ve alışkanlıklarımız sürekli değişmekte. Özellikle pandemi sürecinden sonra dijitalleşmeye ve teknolojiye olan eğilim oldukça artmış durumda. Durum böyleyken bizlerde geliştiriciler olarak bu değişimlere ve isteklere adapte olabilmek adına, geliştirdiğimiz uygulamaların mümkün olabildiğince portable ve scalable yapıda olmalarına dikkat etmekteyiz.…

.NET 5 ve gRPC ile Servisler Arasında Yüksek Performanslı, Stream Tabanlı İletişim

Günümüz teknoloji çağının ihtiyaçları nedeniyle geliştirdiğimiz bir çok uygulamalarımızı, microservice mimarisi çatısı altında distributed olarak geliştirmeye çalışıyoruz. Ayrıca distributed servisler arasındaki iletişimi ise bir çok noktada REST  (HTTP JSON) yaklaşımıyla gerçekleştirmeye çalışıyoruz. Bu makale kapsamında ise gRPC kullanarak servisler arasında yüksek performanslı, stream tabanlı iletişimi…

Event’im Nasıl Olmalı? Event-Based Sistemler Hakkında Bazı Düşünceler

Bildiğimiz gibi yazılım geliştirme, özellikle günümüz ihtiyaçları karşısında kolay kolay bitmiyor. Yazılımı geliştirmenin yanı sıra, onun sürekli ayakta ve tutarlı bir şekilde çalışabilmesini sağlayabilmekte en büyük sorun ve sorumluluklarımızdan bir tanesi. Tahmin edebileceğimiz gibi bu gibi ihtiyaçlarda zamanla bizleri microservice mimarilerine, event-based sistemlere, distributed ortamlara…

.NET Microservice’lerinde Choreography-based Saga

Günümüz teknoloji çağında neredeyse hepimiz microservice’ler hakkında konuşuyor ve uygulamalar geliştirmeye çalışıyoruz. Yüzeysel baktığımızda her şey çok net ve uygulaması kolay gibi görünsede, özellikle söz konusu distributed transaction yönetimi olduğunda işler daha karmaşık bir hal almaya başlıyor. Çünkü business’ımızın sağlıklı bir şekilde ilerleyebilmesini sağlayabilmemiz ve…

Improving Repeated Access with Cache-Aside Pattern

Temiz bir kod yazabilmenin yanı sıra, sorumlu bir developer olarak uygulamamızın performanslı bir şekilde çalışabilmesini sağlamak da bir o kadar önemlidir. Bildiğimiz gibi kullanıcılara daha iyi bir deneyim sağlatabilmemiz için olabildiğince hızlı sonuçlar dönüyor olmalıyız. Tahmin edebileceğimiz gibi hızlıca uygulayabileceğimiz en temel performans iyileştirmelerinden bir…

Microservice İletişimini Istio ile Güvenli Bir Hale Getirme

Tahmin edebileceğimiz gibi günümüz ihtiyaçlarının hızla artmasıyla beraber, bir çok organizasyon bu ihtiyaçlara ayak uydurabilmek için teknolojisini hızla yenilemeye devam ediyor. Buradaki yaklaşım ise genellikle hem business’ı/organizasyonu hem de teknolojiyi scale edebilmek için microservice architecture’ı odaklı oluyor. Bildiğimiz gibi bu yenileme süreci içerisinde bir çok…

Production için Kubernetes: Bazı Yararlı Bilgiler

Bildiğimiz gibi son yıllarda container orchestration konusunda kubernetes, microservice mimarilerimiz için olmazsa olmaz bir standart haline gelmiş durumda. Kubernetes her ne kadar default ayarları ile de bir çok problemimizi çözüyor olsada, uygulamalarımızın daha stable, reliable ve secure olabilmesi için yapabileceğimiz/kullanabileceğimiz bazı best practice’ler ve uygulamalar…

Gizli Silah: Specification Pattern

Sanırım specification pattern‘ı en son bir buçuk yıl önce implemente etme ihtiyacım olmuştu. Amacım ise ilgili business domain’ini çok fazla kompleks bir hale getirmeden ve domain bilgilerini duplicate etmeden, domain kurallarını encapsulate ederek tekrar kullanılabilir bir hale getirebilmekti. Bir çoğumuzun bildiği gibi specification pattern, yeni…

Azure Front Door Service ile Web App’lerin Performansını ve Erişilebilirliğini Arttırmak

Cloud üzerinde global(çok bölgeli) düzeyde bir web uygulaması geliştiriyorsak ve ayrıca uygulamanın performanslı, scalable ve highly available olmasını istiyorsak, iyi bir uygulama giriş noktasına ihtiyacımız var demektir. Bu kapsamda, Microsoft‘un uzun zamandır scalability ve security gibi konular için kendi hizmetleri içerisinde de kullanıyor olduğu bir…

Getting Started with Clean Architecture using ASP.NET Core – 02

Henüz makalenin ilk bölümünü okumadıysanız, konuyu daha iyi anlayabilmek adına buradan ulaşabilirsiniz. Makalenin bu ikinci bölümünde ise, clean architecture konsept’inin .NET Core ile minimal düzeyde implementasyon işleminden bahsedeceğim. Örnek olarak, içerisinde film ekleyebileceğimiz ve listeleyebileceğimiz basit bir API geliştireceğiz. Application Domain’in Implementasyonu İlk önce architecture’ın…

Getting Started with Clean Architecture using ASP.NET Core – 01

Biliyoruz ki maintenance işlemi, uygulamanın kendisini yazmaktan her zaman daha maliyetli bir operasyondur. Her ne yaparsak yapalım, değişmeyen tek gerçek maintenance maliyetidir, değil mi? Bu maliyeti etkileyen en önemli etkenlerden birisi de, uygulamanın architecture’ının seçimidir. Edindiğim geçmiş tecrübelerim doğrultusunda iki farklı makale serisi olarak, “iyi…

Playing with Service Mesh – Linkerd ve Azure Kubernetes Service

Bildiğimiz gibi Microsoft, bu yıl Barcelona KubeCon‘da bir çok yeniliklerini duyurdu. Bence bunlardan önemli bir tanesi ise SMI(Service Mesh Interface) idi. İncelediğim kadarıyla SMI‘ın tanımı için kısaca, tıpkı AMQP‘de olduğu gibi “interoperability” konusunu service mesh’ler arasında sağlayabilmek diyebilirim. Özünde service mesh’ler için Kubernetes üzerinde standart…

Kubernetes-based Event Driven Autoscaling with KEDA, RabbitMQ and .NET Core

Bildiğiniz gibi Microsoft, son dönemlerde open-source dünyası için çok fazla atılım ve yatırım yapmaktadır. Bu atılımlardan birtanesi ise Red Hat partnership’liği ile birlikte geliştirdikleri Kubernetes-based Event Driven Autoscaling yapabilmemizi sağlayan KEDA adında bir component. KEDA‘nın duyurulmasından bu yana hemen kendi ortamlarımızda test etmeye ve kurcalamaya…

Kubernetes Üzerindeki .NET Core Uygulamalarının OpenTracing API ile Distributed Tracing İşlemleri

Distributed tracing, microservice architecture’ı olarak tasarladığımız sistem içerisindeki uygulamalarımızın, nerede performans problemi yaşadığını belirleyebilmemiz ve monitor edebilmemiz için harika bir method. Bir başka değişle, hangi request nereye gidiyor, uçtan uca bir request ne kadar zaman harcıyor gibi sorulara cevap alabilmemiz için implemente etmemiz gereken bir…

Microservice Mimarisinde Resiliency Pattern’ları

Merhaba arkadaşlar. Açıkçası bir süredir bu konu hakkında bir makale yazmayı planlıyordum. Yaşamış olduğum son blackfriday tecrübesinden sonra, bu konu hakkında bir şeyler yazmanın sırasının geldiğini anladım. Evet, konumuz microservice yapılarında resilience ve fault tolerance‘ın önemi ve bunu nasıl sağlayabileceğimiz. Hikaye Daha önceki makalelerim içerisinde, bir…