Etiket : ASP.NET Core (11)

Test Driven Development

01.07.2022

TDD Cycle

TDD, önce test case'in yazılmasını sonrasında kodun yazılmasını söyler.

TDD döngüsel bir süreçtir ve RED, GREEN, REAFTOR olmak üzere üç aşamayı içerir. RED aşamasında test case yazılır ve çalıştırılır. Test başarısız olur. GREEN aşamasında test case'in geçmesi için ilk kod yazılır. Kodun clean olmasına ihtiyaç yoktur. Asıl amaç test case'in geçmesi için en basit kodu yazmaktır. Test case tekrar çalıştırılır. Test başarılı olduysa REFACTOR aşamasına geçilir. Bu aşamada ise kod refactor edilebiliyorsa edilir. Test case tekrar çalıştırılır. Eğer test case başarısız olursa kod tekrar düzenlenir. Bu döngü kod istenen hale gelene kadar devam ettirilir.

Devamını oku

Modular Monolith Nedir?

29.03.2022

Traditional Monolith

Öncelikle Traditional Monolith yaklaşımından bahsedelim. Bu yaklaşım katmanlara odaklanır. UI, Business ve Data olmak üzere üç katman içerir. Bir projedeki tüm özellikler dikey olarak bu katmanlara ayrılır. Bu üç katman arasında Business katmanı, tüm modüllerin business logic'ini içeren katmandır. Her bir modül, diğer modüllerin business logic'ini bilir ki buna tightly coupled diyebiliriz.

Traditional Monolith
Devamını oku

ASP.NET Core Time Limited Protection

29.03.2022

ASP.NET Core'da verilerimiz için belirli bir süreliğine koruma sağlayabiliriz. Örneğin şifrelediğimiz bir verinin çözülmesi için bir dakikalık bir süre tanımlayabiliriz. Yani bu bir dakikalık süre aşılırsa şifreli verinin çözülemeyeceği anlamına gelir. Bunun için DataProtectionAPI kullanılıyor.

Devamını oku

ASP.NET Core Feature Management

26.03.2022

Feature Management, .NET Core uygulamalarında özellik yönetimi sağlar. Uygulamaya ait özelliklerin aktiflik/pasiflik durumunun yönetilmesine ve sorgulanmasına imkan verir. Örneğin yeni geliştirdiğiniz bir özelliğin belirli tarih aralığında aktif olmasını sağlayabilirsiniz. Başka bir örnek vermek gerekirse geliştirdiğiniz bir özelliğin belirli yüzdelik oranla aktif olmasını sağlayabilirsiniz. A/B testi gibi.

Devamını oku

ASP.NET Core ile Event Sourcing - 02 Messaging

26.03.2022

1. Giriş

Bu yazı aşağıdaki yazının devamı niteliğinde olduğu için aşağıdaki yazıyı okuyup uygulamanızı öneririm. Aşağıdaki yazıdaki örnek proje üzerinden devam edeceğiz.

ASP.NET Core ile Event Sourcing - 01 Store
1. Giriş Bu örneği uygulamadan önce aşağıdaki yazıyı okumanızı öneririm. Yukarıda belirttiğim yazıda aşağıdaki gibi cümle kurmuştum. Event Sourcing için .NET dünyasında Event Store adında…

Bir önceki yazıda Kanban Board örneği yapmıştık. RESTful API oluşturarak create, assign, move ve complete endpoint'lerini yazmıştık. Bu endpoint'lere gelen istekleri birer event olarak Event Store'a kaydetmiştik. Yani Event Store'un store kısmı ile ilgilenmiştik. Bu yazıda ise messaging kısmı ile ilgileneceğiz.

RESTful API endpoint'lerimize aşağıdaki endpoint'i de dahil edeceğiz.

[GET] api/tasks/{id}

Devamını oku

ASP.NET Core ile Event Sourcing - 01 Store

26.03.2022

1. Giriş

Bu örneği uygulamadan önce aşağıdaki yazıyı okumanızı öneririm.

Event Sourcing Neydi?
Önceden servislerimiz aşağıdaki gibi olurdu. Bu servisimiz yüzlerce satır koddan oluşurdu. Bu karmaşadan kurtulmak için CQRS ile servislerimizi “Command” ve “Query” olmak üzere ikiye böldük.…

Yukarıda belirttiğim yazıda aşağıdaki gibi cümle kurmuştum.

Bu yazıda Event Store'un store kısmı ile ilgileneceğiz. Yani event'leri kaydedebileceğimiz veritabanı özelliği ile ilgileneceğiz. Sonraki yazımda ise messaging kısmı ile ilgileneceğiz.

Örnek uygulama olarak klasik Kanban Board örneğini seçtim.

RESTful API endpoint’lerimiz aşağıdaki gibi olacak.

[POST] api/tasks/{id}/create
[PATCH] api/tasks/{id}/assign
[PATCH] api/tasks/{id}/move
[PATCH] api/tasks/{id}/complete

Devamını oku

ASP.NET Core ile Couchbase GeoSearch

26.03.2022

Bu yazının konusu Couchbase kullanarak "GeoSearch" işleminin nasıl yapılacağı olacak.

1. Couchbase Kurulumu

Bunun için aşağıdaki komutu çalıştırarak docker ile Couchbase ayağa kaldırıyoruz.

    docker run -d --name couchbase -p 8091-8094:8091-8094 -p 11210:11210 couchbase

Couchbase ayağa kalktığında aşağıdaki adresten yayın yapmaya başlayacaktır.

http://localhost:8091/

"Setup New Cluster" butonuna tıklayarak cluster oluşturuyoruz. Parolayı "123456" tanımlıyoruz.

Create New Cluster
Create New Cluster

"Configure Disk, Memory, Services" butonuna tıklayarak cluster konfigürasyonuna geçiyoruz. Couchbase için memory ayırmamız gerekli. Mevcut memory durumunuza göre ayarlama yapabilirsiniz. "Analytics"i kapatabilirsiniz. "Save & Finish" butonuna tıklayarak cluster kurulumunu tamamlıyoruz.

Devamını oku

Docker Image'ı GCP'de Serverless Olarak Yayına Alma

26.03.2022

1. Giriş

Serverless yaklaşımı ile birlikte yazılım geliştiricinin sunucuyu düşünme derdi ortadan kalktı. Artık kodumuzu yazıyoruz ve sağlayıcıya bunu çalıştır diyoruz. Sunucu konfigürasyonları, ölçeklendirmeleri vs. ile uğraşmıyoruz. Bir de üstüne kullandığın kadar öde. Bu büyük bir nimet.

AWS'in Lambda, GCP'in Cloud Function, Azure'un Azure Function vs. servisleri bize bu hizmeti sağlıyor. Fakat bu sefer de şöyle bir sorun ortaya çıkıyor. Bu servisler tüm dilleri desteklemiyor. İstediğimiz dili desteklese bile istediğimiz versiyonu desteklemeyebiliyor. Mesela AWS Lambda henüz .NET Core 2.1'in üstünü desteklemiyor. Bu bir problem. Kimse bizi kısıtlayamaz :)

Google'ın Knative üzerine inşa ettiği Cloud Run servisi bu sorunu tamamen ortadan kaldırıyor. Cloud Run'a docker image'ı veriyoruz ve Cloud Run bu image'dan serverless servisimizi ayağa kaldırıyor. Dolayısıyla ister PHP'de geliştirelim ister .NET Core'da geliştirelim farketmez. Dockerize edebildiğimiz müddetçe sınır yok. Bu müthiş bir şey.

Devamını oku

AWS Serverless Kuyruklama Sistemi Geliştirme

26.03.2022
1. Giriş

Bu yazı konusu, serverless yaklaşımı ile kuyruklama sistemi nasıl geliştirilir olacak. Bulut sağlayıcısı olarak AWS’yi kullanacağız. Dil olarak .NET Core'u tercih edeceğiz.

Bu bölümde senaryoyu ortaya koyacağım ve çıktının ne olacağı konusunda ön bilgilendirme yapacağım.

RESTful API endpoint’lerimiz aşağıdaki gibi olacak.

[POST] api/comments
[GET] api/comments

Aşağıdaki AWS hizmetlerini kullanacağız.

Devamını oku

ASP.NET Core Uygulamasını GCP Kubernetes'de Yayınlama

26.03.2022

1. Giriş

Bu yazı serisinin konusu, ASP.NET Core ile geliştirdiğimiz API'mizi kubernetes'de nasıl yayınlayacağımız olacak. Bulut sağlayıcısı olarak GCP'yi(Google Cloud Platform) kullanacağız.

Bu bölümde senaryoyu ortaya koyacağım ve çıktının ne olacağı konusunda ön bilgilendirme yapacağım. Ayrıca kubernetes'deki bazı kavramlara kısaca değineceğim.

Tek endpoint'li bir API geliştireceğiz.
Bu API'yi dockerize edeceğiz. Bunun için dockerfile oluşturacağız.
Bu dockerfile ile oluşturacağımız image'ı GCR'ye(Google Cloud Container Registry) göndereceğiz.
Bu image'dan üç tane container ayağa kaldıracağız.
Uygulamaya gelen istekleri container'lara dağıtacak "LoadBalancer" servisini oluşturacağız.

Kubernetes'deki beş tane kavramdan kısaca bahsetmek istiyorum.

Devamını oku
Muhabbetle ASP.NET Core ile geliştirildi.