PostList

Software Development KPIs

Software Development KPIs

Yazılım geliştirme, modern dünyada bir organizasyonun başarısını şekillendiren kritik bir unsur haline gelmiştir. Ancak, bir yazılım geliştirme sürecinin ne kadar verimli veya başarılı olduğunu nasıl ölçeriz? İşte bu noktada Anahtar Performans Göstergeleri (KPI'lar) devreye girer. KPI'lar, organizasyonların hedeflerine ulaşmalarını sağlamak için performanslarını izlemelerine ve değerlendirmelerine yardımcı olan ölçütlerdir....

Read More
Domain Tasarımı | Domain Driven Design

Domain Tasarımı | Domain Driven Design

Domain Driven Design (DDD), karmaşık yazılım projelerinin tasarımında kullanılan bir yaklaşımdır. Bu yaklaşım, bir projenin merkezine iş alanını (domain) koyar ve yazılımın bu iş alanına yönelik ihtiyaçlarına odaklanır. Bu, daha anlaşılır, esnek ve sürdürülebilir bir kod tabanı oluşturmayı amaçlar. Domain Driven Design'da, domainin doğru bir şekilde tasarlanması, projenin başarısı için kritik öneme sahiptir. Peki, bu yaklaşımı kullanarak domaini nasıl tasarlayabiliriz?...

Read More
ACID Kavramı

ACID Kavramı

Günümüzde bilgi teknolojilerinin hızla gelişmesiyle birlikte, veritabanları ve veri yönetimi konuları büyük önem kazanmıştır. İşletmelerin verilerini düzenli bir şekilde depolaması ve işlemesi, operasyonel süreçleri daha etkili hale getirmelerine yardımcı olur. Ancak, bu veri işlemleri sırasında ortaya çıkabilecek hataları ve sorunları önlemek adına ACID teoremi devreye girer. ACID teoremi, veritabanı işlemlerini güvence altına alan temel prensipleri ifade eder ve Atomicity (Atomiklik), Consistency (Tutarlılık), Isolation (İzolasyon) ve Durability (Kalıcılık) olmak üzere dört ana ilkeyi içerir....

Read More
Over Engineering Hakkında

Over Engineering Hakkında

Yazılım geliştirme, hızla değişen teknolojik peyzajda karmaşıklığı yönetme çabası içinde olan dinamik bir alanı temsil eder. Geliştiriciler, projelerini etkili ve sürdürülebilir hale getirmek için çeşitli stratejiler kullanırken, bazen aşırı mühendislik (over engineering) terimiyle karşılaşırız. Bu kavram, bir yazılım projesinde gerekli olmayan, işlevselliği aşan, karmaşık ve gereksiz özelliklerin eklenmesini ifade eder. Bu blog yazısında, over engineering'in ne olduğunu, nasıl ortaya çıktığını ve bu durumun yazılım geliştirme süreçleri üzerindeki etkilerini inceleyeceğiz....

Read More
NetArchTest Kütüphanesi Kullanarak Architectural Policy'ler Tanımlama

NetArchTest Kütüphanesi Kullanarak Architectural Policy'ler Tanımlama

NetArchTest kütüphanesi, .NET uygulamalarında mimari kuralları tanımlamak ve bu kuralların uygulanıp uygulanmadığını test etmek için kullanılan bir kütüphanedir. Bu tür bir kütüphane, büyük ölçekli projelerde tutarlı bir kod mimarisini korumak ve geliştiricilerin belirli kurallara uymasını sağlamak için oldukça kullanışlıdır. Örneğin sürekli olarak yeni birilerinin dahil olup geliştirme yaptığı bir projede bazı kuralların aşılmamasını engellemek istersiniz ve bunu denetlemeniz gerekir mesela projedeki namespace ler şu şekilde olmalı veya projedeki public method lar şu formata uymalı gibi....

Read More
ChatGPT

ChatGPT

Günümüzde yapay zeka, giderek karmaşık ve çeşitli görevleri üstleniyor. Bu alandaki son gelişmelerden biri, metin tabanlı sohbet yapabilen yapay zeka modelleridir. OpenAI tarafından geliştirilen ChatGPT, bu alandaki önemli bir adımdır....

Read More
Circuit Breaker Nedir Ne İşe Yarar ?

Circuit Breaker Nedir Ne İşe Yarar ?

Circuit Breaker, yazılım sistemlerindeki hata durumlarını ele almak için kullanılan bir tasarım desenidir. Bir servisin istenen hizmeti sağlamaması durumunda devreyi kapatır ve belirli bir süre boyunca tekrar denemeyi engeller. Bu, hataların yayılmasını ve uygulama performansının düşmesini önler....

Read More
Entity Framework Core Audit Trail Nasıl Yapılır ?

Entity Framework Core Audit Trail Nasıl Yapılır ?

Data bizler için oldukça önemlidir ve sürekli olarak crud işlemleri yapılan bir projede insert update, delete gibi operasyonlar yapılırken bunların ne zaman kimler tarafından yapıldığıda oldukça önem arz-etmekte. Bunun yanı sıra geliştirdiğiniz projeler eğer bir denetime tabiyse örn. bir sertifikasyon denetimi (PCI dss gibi) denetleyen kişi bu veri üzerinden kimler ne zaman ne tür değişiklikler yaptı görmek isteyebilir. Bu kavrama audit log denir. Audit log kısaca; belirli bir işlemi hangi zamanda kimler tarafından oluşturulduğu veya güncellendiği gibi bilgileri historic olarak tutulmasıdır diyebiliriz. Bu yazımızda oldukça basit olan Entity Framework Core kullandığımız bir uygulamamızda audit log bilgisini kolayca nasıl implement ederiz buna değineceğiz...

Read More
gRPC Server Streaming RPC Client .Net Core'da Nasıl Oluşturulur ?

gRPC Server Streaming RPC Client .Net Core'da Nasıl Oluşturulur ?

Daha önceki yazılarımızda genel hatlarıyla gRPC nedir ve Unary RPC Tipinde Client nasıl oluşturulur konularına değinmiştik. Kısaca gRPC'yi tekrar tanımlayacak olursak;gRPC open source olarak google tarafından geliştirlen ve ilk olarak 2015 yılında tanıtılan bir remote-procedure-call(RPC) kütüphanesidir. Bu yazımızda ise Refund isteklerinden sonra müşteriyi notify etmek için kullanacağımız Server Streaming RPC Client türünde comm sağlayacak olan NotifyCustomer Client'ını oluşturacağız....

Read More
gRPC Client .Net Core'da Nasıl Oluşturulur ? Unary RPC Tipinde Client Uygulaması Oluşturma

gRPC Client .Net Core'da Nasıl Oluşturulur ? Unary RPC Tipinde Client Uygulaması Oluşturma

Bu yazımızda ise bir önceki yazımızda yapmış olduğumuz RefundService uygulamasının Refund metodu için bir client projesi oluşturup Unary RPC tipinde iki uygulamanın birbirleri arasında nasıl iletişim kurduklarını gözlemleyeceğiz. Unary RPC kısaca; client'ın tek bir request atıp karşılığında bir response aldığı server-client arası iletişim türlerinden biridir....

Read More
gRPC nedir ? .Net Core gRPC Service Oluşturma

gRPC nedir ? .Net Core gRPC Service Oluşturma

gRPC open source olarak google tarafından geliştirlen ve ilk olarak 2015 yılında tanıtılan bir remote-procedure-call(RPC) kütüphanesidir. Transport için HTTP/2 prokolünü kullanır ve yine google tarafından ilk olarak şirket içi projelerde kullanılmak üzere geliştirilen bir binary serialization protocol'ü olan Protocol Buffers(protobuf) kullanarak serialize/deserialize edilmiş binary-message exchange yapabilen bir altyapı sunmaktadır....

Read More
Netflix Eureka Kullanarak Service Discovery Nasıl Uygulanır ?

Netflix Eureka Kullanarak Service Discovery Nasıl Uygulanır ?

Eureka; netflix yazlım ekibinin java tabanlı geliştirdiği bir service discovery-management tool'u dur. Çalışma mantığı olarak microservice'ler ayağa kalkarken service registry'e gidip kendi config dosyalarındaki key'lerle register olurlar ve yine herhangi bir microservice networkComm kurmak istediği service'in adresini bilmeksizin registry'e key bilgisi ile query yaparak aldığı value'u kullanarak iletişim kurmaya başlar....

Read More
Asp.Net Core 2.2 to 3.1 Migration and Autofac Configuration

Asp.Net Core 2.2 to 3.1 Migration and Autofac Configuration

Asp .Net Core hayatımıza gireli epeyce bir süre oldu ve Microsoft hızlı ve emin adımlarla declare ettiği milestone'larını geliştirmeye devam etmekte. Öncelikle v1.x ardından v2.x sürümlerini kullanmıştık ve son olarak ise en güncel kararlı sürüm olan v3.x çıktı. Yakşalık 1.5 yıldır gerek kendi projelerimde gerekse iş yerinde geliştirdiğimiz bütün projelerde 3.0'dan önceki...

Read More
Smart Enum, Strongly Typed Enum Nedir ?

Smart Enum, Strongly Typed Enum Nedir ?

Smart enum; içerisinde read-only property'ler bulunan bir class tanımlayarak kendi type-safe enumeration'larını yaratabileceğimizi belirtmekte. Bize sağladığı en iyi çözüm içerisinde enum'ın özelliklerini barındıran istediğimiz kadar property tanımlayabilmemiz ve böylelikle attribute-reflection vs kullanmadan daha basit bir kullanım söz konusu olmakta....

Read More