Online Microservices ve DDD Konferans Notları

Geçtiğimiz hafta sonu(20 Haziran Cumartesi günü) Devnot’un ilk online konferansı olan Microservices & DDD Konferansı düzenlendi. Internetten canlı olarak günboyu 3.200’den fazla kişinin de takip ettiği bu güzel etkinliğin çok keyifli ve bilgilendirici bir konferans olduğunu söyleyerek başlamak istiyorum. Başta Uğur Umutluoğlu olmak üzere Devnot ekibine ve sunum yapan herkese kendi adıma teşekkür ederim. Konferansı izleyememiş kişilere de mutlaka izlemelerini tavsiye ediyorum.

Sunumu Devnot’un Youtube kanalından izleyebilirsiniz. Etkinliğin sponsorlarından olan ve Devnot’un artık tüm etkinliklerini yayınladığı Kommunityyi de takip etmenizi öneririm. Yazılım dünyasından takip edebileceğiniz birçok etkinlik yer alıyor Kommunity’de.

Konferans gününde yapılan altı sunumla ilgili kısa bilgileri aşağıda sizler için özetledim. Başlıklara veya başlık sonundaki linklere tıklayarak ilgili sunumu Youtube’dan izleyebilirsiniz.

1. Designing Resilient Microservice Architecture

Konferansın ilk sunumu Protel’den Suat Köse tarafından yapıldı. Baştan şunu belirtmek istiyorum Suat Köse’nin github’da paylaştığı Microservice kitabını okumadıysanız aşağıdaki repo’dan göz atmanızı tavsiye ederim. Sunumun alt başlıklarına bakacak olursak.

  • What Is Resiliency & Fault Tolerance?
  • Resiliency In Microservice Architecture
  • How To Achieve a Resilient Architecture?

Resiliency dediğimizde ne anlıyoruz bu mimariyi nasıl oluştururuz nelere dikkat etmeliyiz konularına değindi. Ayrıca kaos mühendisliği, Reactive ve dağıtık uygulamalar gibi çeşitli konular hakkında bilgi verdi.
Sunumda bunların yanında Microservice tarafında kullanılan pattern’lere yer verdi.

  • Bulkhead Pattern
  • Retry Pattern
  • Circuit Breaker Pattern
  • Fallback Pattern
  • Rate Limiting
  • Timeout Pattern

Sunumu izlemek için tıklayınız.

2. Reconstructing Trendyol Order Management System Using DDD Approach

Konferansın 2. sunumunu Trendyol ekibinden Onur Destanoğlu yaptı.  Onur Destanoğlu sunumda Trendyol’da son bir yıldır yapmış oldukları DDD ‘ye geçiş sürecinden bahsetti.

  • Neden DDD ? Altın Kurallar
  • Ne Durumdaydık?
  • Mevcut Geliştirme Süreçleri ve İyileştirmeler
  • Zorluklar ve Kazanımlar
  • Ekip Motivasyonu
  • Replatforming

Bunların yanında ürün üzerine yapılan yeniliklerden söz etti. Domain model, kafka, NoSql, Golang / java 11, Outbox, Sadeleştirme, Domain Eventler ‘den bahsederek yaşanan zorluklardan ve kazanımlardan bahsetti.
Sunumda genel olarak Onur Destanoğlu, bu teknolojik geçişlerde ekip arkadaşları ile sahada yaşamış olduğu tecrübelerden ve deneyimlerden örnekler verdi. Özellikle bu kısımlarda katılımcılar için çok değerli bilgiler var.

Sunumu izlemek için tıklayınız.

3. Problems & Solutions of Distributed Systems & Microservices

Konferansın 3. sunumunu Titanium Soft CTO’su E.Faruk Pehlivanlı gerçekleştirdi. Sunumun alt başlıklarına baktığımızda aşağıdaki konuları dinledik.

  • Engineering
  • DevOps
  • Troubleshooting
  • Versioning
  • Training

E.Faruk Pehlivanlı ayrıca gerçek hayatta önümüze çıkacak ortalama bir microservice yapısından bahsederek karşımıza çıkacak sorunlardan bahsetti. Separation of Concerns konusundan bahsederek mimarinin faydalarından söz etti.

  • Technological Freedom
  • Increase Productivity
  • Maintainability & Agility
  • More Efficient

Sunumda Deployment seneryoları, monitoring, configuration, security konularında da dolu dolu bilgiler bulabilirsiniz.

Sunumu izlemek için tıklayınız.

4. Modular Software Architecture for Pragmatic Developers

Konferansın 4. sunumunu Craftbase kurucu ortaklarından Lemi Orhan Ergin yaptı. Sunumda Lemi Orhan Ergin çok katmanlı bir uygulama geliştirmeye çalışırken çoğunlukla yaptığımız yanlışlardan ve yaşadığımız sorunlardan bahsederek bilgiler paylaştı. Bunun yanında aşağıdaki başlıklara değinerek faydalı bilgiler sundu.

  • Layered Architecture (Isolation)
  • Screaming Architecture
  • Spaghetti Code

Bu sunumda en çok ilgimi çeken yer katmanları bir çok makarna ve yemek (lasagna, baklava, spaghetti, ravioli v.s.) türüne benzeterek sunmasıydı. Separation of Concerns hakkında detaylı bilgiler vererek yaptığı araştırmalardan bahsetti. Coupling ve Cohesion kavramlarından bahsederek detaylı bilgiler paylaştı. Modüler programlama ile ilgili doyurucu bilgileri bu sunumda bulabilirsiniz.

  • Information Hiding
  • Inversion Of Control
  • Dependency Injection

Sunumu izlemek için tıklayınız.

5. Microservices at Scale

Konferansın 5. sunumunu Trendyol CTO’su Cenk Çivici gerçekleştirdi. Sunumda Trendyol çatısı altında yaşanan teknolojik dönüşümlerden bahsederek kafalarda oluşan bir çok soruya cevap verdi. Bu sorulardan bazıları aşağıdaki gibidir.

  • Trendyol Legacy?
  • Is Trendyol a complex business?
  • What are Microservice?
  • How do you discovery microservices ?
  • Project Team ve Domain Team

Yine bunların yanında event event storming yaklaşımdan bahsederek DDD olmadan microservice olup olamayacağından söz etti. Monolitik kötüdür algısının yanlış olduğunu ve özellikle business’i iyi bilmiyorsanız monolitik bir uygulama ile başlamanın daha daha doğru olacağından bahsederek çeşitli örnekler sundu. Business modelin her developer için önemli olduğunu ve iyi bilinmesi gerektiğini belirtti. Cenk Çivici Trendyol ekiplerinin kullandığı ve deneyimlediği teknoloji stack’lerinden bahsederek bu stack’lere teknoloji ekiplerinin karar verdiğini belirtti.

Sunumu izlemek için tıklayınız.

6. Implementing Domain Driven Design

Günün son sunumunu ise Volosoft’un kurucu ortaklarından Halil İbrahim Kalkan yaptı. Sunumda Halil İbrahim Kalkan aşağıdaki konulardan bahsetti.

  • Architecture & Layers
  • Execution Flow
  • Building Blocks
  • Common Principles

Özellikle basit kod yazmanın ne kadar önemli olduğunu vurgulayarak DDD konusunda detaylı bilgiler paylaştı. Complex domainler için uygun olacağını daha küçük uygulamalar için gerek olmadığını belirtti. DDD katmanlarından bahsederek clean architecture hakkında bilgiler verdi.

  • Domain Layer
  • Application Layer
  • Presentation Layer

Domain Layer

  • Entity
  • Value Object
  • Aggregate & Aggregate Root
  • Repository
  • Domain Service
  • Specification

Application Layer

  • Application Service
  • Data transfer Object
  • Unit of Work

Bir solution üzerinde kod paylaşarak kendi benimsedikleri best practice’lerden bahsetti. Ayrıca Unit test ve Integration test’lerden söz etti. Halil İbrahim Kalkan yıllardır üzerinde çalıştıkları ABP framework’den bahsederek abp framework hakkında bilgiler paylaştı.

Sunumu izlemek için tıklayınız.

Kaynak: https://devnot.com/2020/online-microservices-ddd-konferans-notlari/