Ana Sayfa

  • Dirty Reads (On Sagas)

    Daha önce saga’nın ACID transactionlardaki I yani isolation’ı sağlamadığını not almıştım. Isolation olmaması belli problemlere (anomali) neden oluyor. Bunlar içinden dirty reads konusunu saga ekseninde inceleyelim. Burada dirty read’in oluşma senaryosunu konuşacağız. Bunun engellenmesi için gerekenler bir sonraki yazının konusu olacak. Tanım olarak şu söylenebilir: Bir saga’nın başka bir saga (local transaction dizisi) tarafından işlenmekte

    Tamamını Oku

  • ACID & SAGA

    Saga pattern üzerine okuma yaparken buraya ACID tanımını da eklemeyi düşündüm. Bir saga local transaction dizisini ifade eder. Bir siparişin kabülünden onaylanmasına kadar geçen sürede birden çok local transaction kullanılır. (Bkz: Microservices Patterns – Chapter 4 (Chris Richardson)) Burada saga’yı ACID transactionlardan ayıran önemli bir konu sagalar arasında isolation olmamasıdır. Sipariş parça parça işlenirken local

    Tamamını Oku

  • Pushing your folder to GitLab

    First, make sure you have an access token. If you don’t have a token, click on the user area in the top right corner within GitLab and select “edit profile”. From the left menu, choose “access tokens”. On the screen that appears, create an access token. Run the following commands to add your local folder

    Tamamını Oku

  • Chain of Responsibility Design Pattern

    Chain of responsibility is a behavioral design pattern. The aim of this design pattern is formally explained like this: “avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object

    Tamamını Oku

  • Loose Coupling

    There is a significant discussion regarding the right to repair electronic products. Consumers should have the right to repair products they purchase. However, manufecturers are implementing strategies to make repairs more difficult in order to increase sales. So, how does this commercial discussion relate to software development? The parts of an electronic device may be

    Tamamını Oku

  • Date/Time Handling in Elasticsearch

    In this article, sample codes are shown using flutter/dart. When adding data to an index in Elasticsearch, if you specify the data type of a particular field as “date”, Elasticsearch expects this field as a date/time string in ISO 8601 format. Create a new date format using iso 8601 like this: This formatted date information

    Tamamını Oku

  • Elasticsearch Query DSL

    Elasticsearch query DSL (Domain Specific Language) is a JSON based query language that defines queries in elasticsearch. When your data is indexed, you can create criteria for filtering and retrieving data. We can send http requests to elasticsearch using a REST client such as postman. Run a post command to insert some data to elasticsearch. Then

    Tamamını Oku

  • Zipkin

    Zipkin is a distributed tracing system which used to monitor in a microservice environment. This article assumes that you are currently developing microservices using Spring Boot 3 and Spring Cloud. Since Spring Cloud Sleuth cannot be used in Spring Boot 3 applications, I want to show how tracing can be done in Spring Boot 3

    Tamamını Oku

  • Object Oriented Programming (OOP)

    Nesne yönelimli programlamayı nasıl açıklayabiliriz? Bunu basit bir şekilde cevaplamak için chocolate analogy kavramından faydalanalım. OOP ile gerçek dünyadaki nesnelerin modellemesi yapılır. Nesne kavramı OOP’nin temelidir. Diyelim ki çikolata üretmek istiyoruz. Bunun için öncelikle bir çikolata kalıbına ihtiyacımız var. Öncelikle bu kalıp üretilir. Kalıbın belli özellikleri olacaktır. Boyut, şekil, çikolata tipi, ek malzemesi vb. Bu

    Tamamını Oku

  • Heap Space

    Java heap space, Java sanal makinesi çalışırken kullanılan alanı ifade eder. Yeni bir nesne oluşturulurken bu nesneye heap alanından yer ayrılır. Sıklıkla oluşturulan bir nesne heap space’i tüketebilir. Ya da bir batch işlem düşünelim. Elimizde 600000 eleman içeren bir liste olsun. Bunu bir for döngüsü içinde her biri 1000 elemanlık batchSize değerine sahip parçalar halinde

    Tamamını Oku