Category
.NET Core
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 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 More.NET 7 ile Gelen Bazı Harika Yenilikler
Bildiğimiz gibi .NET Conf 2022, 8-10 kasım arasında gerçekleşti. Konferans sırasında ise .NET 7 ve C# 11 çevresinde gelen heyecan verici yeniliklerden ve performans iyileştirmelerinden bahsedildi. Bu release de özellikle biz developer’ların daha “hızlı”, “lightweight” ve daha kolay “cloud-native” application’lar geliştirebilmesi gibi harika konulara odaklanılmış. Bu makale kapsamında ise beğendiğim bazı yeniliklere değinmeye çalışacağım. NOT: […]
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 Uygulamalarının Kubernetes (Windows&Linux Containers) İçerisinden Memory Dump’larını Almak
Bildiğimiz gibi memory leak’lerden veya bilinmeyen sebeplerden dolayı crash veya hang olan uygulamalarımızı debug edebilmenin en iyi yolu, dump dosyalarını incelemekten geçmektedir. En azından benim tecrübelerim genelde bu yönde oldu. Bizler ise developer’lar olarak, en azından uygulamalarımızın neden beklenmedik şekilde davrandıklarını anlayabilecek kadar dump analizlerini yapabiliyor olmamız gerekmektedir. Daha önce benzer konular üzerinde farklı makaleler […]
Read More.NET Uygulamalarında Code Coverage Metriklerini Hesaplama ve CI Süreçlerine Dahil Etmek
Code coverage metriği, projemizin sağlıklı ve güvenilir olduğu ve ayrıca değişimlere karşı ne derece hızlı ayak uydurabileceğimizin önemli bir göstergesidir. Code coverage temelinde, yazmış olduğumuz kod satırlarının ne kadarının test yazılarak doğrulandığını belirlemektedir. Tabii ki burada sadece code coverage metriğini arttırabilmek için yazabileceğimiz happy-path test senaryolarından bahsetmiyoruz. Çünkü code coverage metriğinin %100 olması, tüm edge […]
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 MoreKubernetes Job Kullanarak SQL Migration İşlemlerini Gerçekleştirmek
Teknolojinin sürekli geliştiği ve değiştiği gibi, içerisinde çalıştığımız uygulamanın database schema’sı da her yeni implemente ettiğimiz özellik ile değişebilmekte. Dolayısıyla domain model’lerinde gerçekleştirilecek olan değişikliklerin, database schema’sı üzerinde de uygulanabilmesi için bir migration stratejisi izlememiz gerekmektedir. Bu makale kapsamında ise uygulamalarımızı kubernetes ortamına deploy ederken, migration işlemlerini kubernetes jobs kullanarak nasıl gerçekleştirebileceğimizi göstermeye çalışacağım. Gereksinimler […]
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 MoreImproving 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 tanesi, tekrarlanan erişimler için bir cache implementasyonu. Her ne kadar […]
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 MoreGizli 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 bir pattern değil. Son dönemlerde ise bu pattern hakkında farklı […]
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 MoreASP.NET Core Serisi 05: Kod’unu bloklama, reactive ol
Eskiden sadece belirli bir kesime hitap eden uygulamalar geliştirirken, günümüz teknoloji çağının ilerlemesiyle ve global marketten de bir pay alabilmek için, artık daha büyük bir kesime hitap eden uygulamalar geliştirmemiz gerekiyor. Geliştirdiğimiz uygulamaların 7/24 kesintisiz hizmet verebiliyor olması ve response süreleri düşük olan, kullanıcı deneyimi sorunsuz ve yüksek olan uygulamalar olması da oldukça önem arz […]
Read More















