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.
Kategori: Web Uygulamaları
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.

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}
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 teknoloji var. Bu teknoloji “Aggregate” ve “Projection” için çözüm sunmaktadır. Yani event‘leri kaydedebileceğimiz store’u sağlamakla birlikte “Query” veritabanlarına kayıt atabilmemiz için gerekli olan “Messaging” ve “Projection” hizmetini de sağlamaktadır.
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
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.

“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.
Ö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. CRUD işlemlerimizi “Command” servisleri ile, sorgulama işlemlerimizi “Query” servisleri ile yaptık. Ortaya aşağıdaki gibi iki ayrı servis çıktı.