İçeriğe geç

Kategori: Azure

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…

DevEx Series 03: Laying the Azure Focused Platform Foundation for an IDP with ASO and KRO

In the first two parts of this DevEx series, I tried to show how golden paths in Backstage can enable developer self‑service without chaos and how extending the catalog into copilots with MCP servers transforms discoverability into a conversational experience. Both of these steps were…

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…

Containerized 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…

Containerized 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.…

Identity & Access Management İşlemlerini Azure AD B2C ile .NET Ortamında Gerçekleştirmek

Bildiğimiz gibi bir ürün geliştirirken olabildiğince farklı cloud çözümlerinden faydalanmak, harcanacak zaman ve karmaşıklığın yanı sıra, bizlerin farklı yönetimsel masraflardan da olabildiğince kaçınabilmesini sağlamaktadır. Günümüzde bir çoğumuz cloud-native uygulamalar geliştiriyor veya cloud’a migration’lar gerçekleştiriyor. Bu süreçlerde ise çeşitli masrafları minimize edebilmek için cloud sağlayıcıların farklı…

Azure Service Bus Kullanarak Microservice’lerde Event’ler Nasıl Sıralanır (FIFO Consumers)

Bazen bazı senaryolar vardır karmaşıklığını veya eksi yanlarını bildiğimiz halde implemente etmekten kaçamadığımız veya implemente etme zorunda kaldığımız. Distributed ortamlarda birbirlerine bağlı bazı event’leri/message’ları belirli bir sıra (publish edildikleri) içerisinde işleyebilmek de bence bunlardan birisi. Örneğin batch processing yapıyor ve her bir item’ı belirli bir…

Dapr 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 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 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…

Azure Function, Logic Apps ve Computer Vision API Kullanarak Azure Üzerinde OCR Worflow’u Oluşturma

Sanırım hepimiz günümüzde dijital dönüşümün öneminin ve dijitalleşme ile elde edebileceğimiz faydaların farkındayızdır. Bildiğimiz üzere bu kapsamda bir çok kuruluş da dijital dönüşüm yolunda farklı atılımlar gerçekleştirmektedirler. Fakat bazen bu dönüşüm süreçleri içerisinde de farklı zorluklarla karşılaşabilmekteyiz. Örneğin data‘nın dijitalleştirilmesi süreçlerinde insan gücü gerektiren bazı…

Azure Kubernetes Service üzerinde Azure Files Kullanarak Persistent Volume’ler ile Çalışmak

Cloud-native olarak geliştirdiğimiz uygulamalarımızın zaman zaman bir storage üzerinde bir takım data’lara erişebilmeleri, paylaşabilmeleri veya depolayabilmeleri gibi farklı ihtiyaçları olabilmektedir. Bildiğimiz gibi containerize olarak Kubernetes üzerinde host ettiğimiz uygulamalarımız, doğası gereği ephemeral(kısa ömürlü) ve stateless‘dır. Yani persistent bir storage çözümü kullanmadan container içerisinde depolayacağımız herhangi…

.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…

Kubernetes 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,…

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…

Windows 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…