Category
Microservices
Building an AI Agent in .NET: Deterministic Routing and Intelligent Search with Microsoft Agent Framework
Nowadays wherever I look, everyone talks about AI coding agents, agentic systems or LLM powered applications and so on. It has been almost a year that I have been working on different domains where we integrate LLMs into our applications, as well as getting my hands dirtier by integrating AI assisted coding practices into our […]
Read MoreEvent-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 bir microservice altyapısı inşaa edebilmek için ne gibi best practice’leri […]
Read MoreContainerized Uygulamaların Supply Chain’ini Güvence Altına Alarak Güvenlik Risklerini Azaltma (OPA Gatekeeper ve Ratify ile Otomatikleştirilmiş Politika Uygulanması) – Bölüm 2
Makalenin ilk bölümünde, Software Supply Chain güvenliğinin öneminden ve containerized uygulamaların güvenlik risklerini azaltabilmek için SDLC süreçleri boyunca alınabilecek önlemlerden bahsetmiştik. Bu kapsamda, shifting-left yaklaşımının öneminden, yani çeşitli güvenlik unsurlarının mümkün olduğunca SDLC süreçlerinin erken aşamalarına entegre edilmesinin faydalarından ve software supply chain içerisinde güvenilirlik, bütünlük ve güvenlik sağlamak amacıyla alabileceğimiz önlemlerden bahsetmiştik. Eğer makalenin ilk […]
Read MoreContainerized Uygulamaların Supply Chain’ini Güvence Altına Alarak Güvenlik Risklerini Azaltma (Güvenlik Taraması, SBOM’lar, Artifact’lerin İmzalanması ve Doğrulanması) – Bölüm 1
Bildiğimiz gibi modern yazılım geliştirme ortamında containerization’ın benimsenmesi, uygulamaların oluşturulma ve dağıtılma şekillerini oldukça değiştirdi. Container’ların lightweight ve self-contained birimler olması, uygulamalarımızı farklı ortamlar arasında consistent bir şekilde kolayca taşıyabilme ve hızlı bir şekilde scale edebilme gibi bir çok farklı anlamda avantajlar ve esneklikler sağlamaktadır. Ayrıca container’lar scalable microservice architecture’ları için de, en önemli building […]
Read More.NET Microservice’lerinde Outbox Pattern’ı ile Eventual Consistency için Atomicity Sağlama
Bildiğimiz gibi microservice architecture’ına adapte olmanın bir çok artı noktası olduğu gibi, maalesef getirdiği bazı zorlayıcı noktaları da bulunmakta. Özellikle data consistency tarafında. Örneğin, monolithic dünyada birden fazla işlemi consistent bir şekilde kolayca gerçekleştirebilmek için, ACID database transaction’larından yararlanabilmekteyiz. Fakat microservice dünyasında işlemlerin farklı service’ler tarafından distributed olarak ele alınması gerektiği için, maalesef işler monolithic dünyası […]
Read MoreDapr ve .NET Kullanarak Minimum Efor ile Microservice’ler Geliştirmek – 02 (Azure Container Apps)
Bir önceki makale serisinde Dapr projesinden ve faydalarından bahsedip, local ortamda self-hosted mode olarak .NET 6 ile iki adet örnek microservice geliştirmiştik. (Eğer ilk seriyi okumadı iseniz, buradan ulaşabilirsiniz.) Bu makale kapsamında ise bir önceki makalede geliştirmiş olduğumuz örnek ShoppingCart ve Recommendation microservice’lerinin default olan Dapr component’lerini Azure resource’ları ile değiştirerek, Azure Container Apps üzerine […]
Read MoreDapr 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. Maalesef uygulamalarımızı geliştirirken sadece business fonksiyonalitelerine odaklanabilmemizin yanı sıra, uygulamalarımızın […]
Read More.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 nasıl gerçekleştirebiliriz ve gRPC kullanarak ne gibi faydalar elde edebiliriz […]
Read MoreEvent’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 doğru yöneltmektedir. Makaleye başlamadan önce şunu unutmamalıyız ki her ne […]
Read More.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 nihai business outcome’ına ulaşabilmemiz için, data’nın tutarlılığını sağlayabilmemiz gerekmektedir. Bu […]
Read MoreWindows Container’lar için Yararlı Bilgiler
Tahmin edebileceğimiz gibi genellikle zaman ve maliyet sebeplerinden dolayı mevcut uygulamaları lift & shift yaklaşımıyla cloud ortamına migrate etmeye çalışmak, bazen sandığımız kadar kolay bir şekilde gerçekleşmeyebiliyor. Özellikle .NET Framework ile geliştirmiş olduğumuz mevcut uygulamalarımızı containerize edilmiş olarak kubernetes gibi ortamlarda host etmek istiyorsak. Ayrıca çoğu zaman tahmin edemeyeceğimiz farklı challenge’ları da handle etmemiz gerekebiliyor. […]
Read MoreMicroservice İ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 dokunmamız gereken konular/alanlar mevcut. Bana göre en kritik konulardan birisi, […]
Read MoreProduction 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 da mevcut. 2017 yılından bu yana kubernetes ortamında çalışıyorum. Özellikle […]
Read MoreASP.NET Core Serisi 06: Health Checks ve Azure Application Insights’ı Kullanarak Uygulamalarınızın Sağlığını Monitor Edin
Sanırım “uygulamalarımızın sağlığı” konusu, mimari yaklaşım farketmeksizin hepimiz için her zaman önemli ve ortak bir endişe noktası olmuştur. Bildiğimiz gibi uygulamalarımızın sağlıklı olup olmadığını görünür bir hale getirebilmek veya kolay bir yoldan öğrenebilmek, bir çok durum karşısında uygulamanın riskini en aza indirgemektedir. Özellikle uygulamalarımız bir load-balancer arkasında multi instance olarak çalışıyorsa, trafiğin yönlendirilme işlemi veya […]
Read MoreSOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar İçin
Bu makale kapsamında bahsetmek istediğim konu SOLID prensipleri ama bu sefer cloud-native uygulamalar’lar için. Bildiğimiz gibi SOLID prensipleri, object-oriented yazılım geliştirmede kuşkusuz en önemli prensip setlerinden birisidir. Bir çoğumuz uygulama geliştireceğimiz zaman kodumuzu SOLID prensipleri doğrultusunda geliştirmeye çalışıyoruz, çünkü: Geliştirilen uygulamanın well-designed olabilmesi için kod standartı sağlalamaktadır. Ayrıca kolay maintenance sağlamaktadır. Extendability ve Reusability de […]
Read More















