Yazılımcılar İçin Hafta Sonu Okumaları - Sayı #77 / Sezon #4(Domain Driven Design, Eşzamanlılık, Uygulamalarda Veri Tutarlılığı ve daha fazlası)
Merhaba aziz okuyucularım.
Bir kez daha karşınızdayım. Her zamanki gibi tıka basa dolu bir sayı oldu. Ve muhtemelen bu yüzden emaili açtığınızda yazının tamamını(yani sondaki karikatüre kadar) göremeyeceksiniz. Tamamını görüntülemek için hemen başlığın altındaki "View Online" butonuna tıklayabilirsiniz.
Keyifli okumalar.
Domain Driven Design
Son yıllarda popülaritesi oldukça artan bir yaklaşım Domain Driven Design. Özellikle iş kurallarının kompleks hale geldiği uygulamalarda çözüm sunabiliyor. Tabi başta veritabanı odaklı düşünmeyi bırakıp domain ve iş kuralları odaklı düşünceyi benimsemek gerekiyor.
Ceyhun Cem Susal, Domain Driven Design yaklaşımını uygulamadan önce domain odaklı düşünmenin öneminden bahsetmiş.
Emre Altun, Domain Driven Design yaklaşımının ve Event Sourcing yönteminin avantajlarından bahsetmiş.(İng)
Eşzamanlılık
Mehmet Can Taş, Go'da eşzamanlı programalamayı(concurrency) anlattığı serinin 2. yazısında Go Scheduler ve Goroutine'lerin nasıl çalıştığını anlatmış.
Ali GÖREN, eşzamanlılık(concurrency) kavramından ve Go'da concurrent uygulama geliştirmekten bahsetmiş.
Hasan Kadir Demircan, Java'da eşzamanlı programalamayı(concurrency) anlattığı serinin 2. yazısında Executer, Callable ve Scheduled Executer Service yapılarını anlatmış.
Göç Hikayeleri
Gerçek tecrübelere ait, yaşanmışlıklar içeren vaka çalışmalarını severek okuyorum ve elbette severek sizlere aktarıyorum. Okuyalım o halde:
Ali Yetkin, ElasticSearch kullandıkları arama motorunu ölçeklendirebilmek için Kubernetes'e taşıma süreçlerini hazırlık ve araç seçiminden başlayıp yaşadıkları zorluklarla birlikte adım adım anlatmış.(İng)
Sevcan Doğramacı, ilişkisel veitabanından Couchbase'e verileri denormalize edip taşımayı anlatmış.(İng)
Beytullah Gürpınar, MySQL'den MongoDB'ye gerçekleştirdikleri veritabanı göçünün hikayesini, bu süreçteki kazanımlarını ve çıkardıkları dersleri anlatmış.(İng) Diğer bir yazısında ise SaaS ürün geliştirenler için tavsiyelerini paylaşmış.
Taylan Kasap, yenilemek istedikleri legacy web uygulaması için seçtikleri yöntemi ve seçim nedenlerini yazmış.(İng)
Emre Tanrıverdi, bir uygulamanın yeni versiyonunu kullanıcılara peyderpey açmayı sağlayan Blue-Green ve Canary deployment yöntemlerini ve ikisini bir arada nasıl kullandıklarını anlatmış.(İng)
Yeni Başlayanlara Tavsiyeler
Elif Hilal Umucu, Smart Contract developer olma yolculuğundan bahsetmiş.
Onur Dayıbaşı, frontend alanında ilerlemek isteyenler için kendi ürettiği içerikler üzerinden bir roadmap hazırlamış. Ayrıca "full stack web framework" Remix'i anlattığı bir seriye başlamış.
Erencan Ertem, frontend öğrenirken faydalandığı genellikle proje geliştirme içerikli kaynakları paylaşmış.(İng)
Feyza Dayan, yazılım test mühendisi olmayı düşünenler için kariyer yolculuğundan bahsetmiş.(İng)
Anıl Yelken, siber güvenlik alanında çalışmayı düşünenler için tavsiye ettiği yol haritasını ve kaynakları paylaşmış.
Bulutta Yazılım
Mehmet Ozkaya, AWS Lambda fonksiyonlarını monolitik yahut mikroservis uygulamalarda veya tek amaçlı fonksiyon olarak kullanım senaryolarından bahsetmiş.(İng)
Elif Apaydın, AWS Lambda fonksiyonları HTTP isteğiyle tetiklemek için yeni -ve daha ekonomik olarak- duyurulan Function URL yönteminden bahsetmiş.
Anil Oztürk, bulutta çalışan uygulamalar için güvenlikten, risklerden ve bunlara karşı doğru uygulamalardan(best practice) bahsetmiş.
Burak Tahtacıoğlu, Azure'da uygulama konuşlandırırken yardımcı olabilecek ağ yapısı ve işleyişi ile ilgili konuları anlatmış.(İng)
Nedim AKAR, Cloud Native uygulamalardan ve geliştirilmesinde dikkat edilmesi gereken konulardan bahsetmiş.(İng)
Uygulamalarda Veri Tutarlılığı
Nil Seri, mikroservis mimarilerde transaction yönetimi için kullanılan tasarım desenlerinden bahsetmiş. Diğer bir yazısında ise Java dünyasında popülerleşen sanal makine(VM) çözümü GraalVM'i anlatmış. (İng)
Rohat Şahin, Outbox tasarım desenini ve Couchbase ile uygulamasını anlatmış.(İng)
Alper Baysal, programlama esnasında veriye erişimin ve veri güncellemelerinin kontrolü için kullanılan kilit(lock) mekanizmalarından bahsetmiş.(İng)
Popüler GitHub Repoları(Sponsorlu)
Firmalara yazılımcıdan ziyade yazılımcılara(kendi belirlediğiniz kriterlerde) firma bulan nevi şahsına münhasır startup TalentGrid(dilerseniz şuradan benim selamımla gidip profilinizi oluşturabilirsiniz) blogunda yayımlanan yazıda bazı popüler GitHub repoları derlenmiş.
Test ve Kalite
Didem TEMEL, Rest Assured kütüphanesi ile API testleri yapmayı anlatmış.(İng)
Berkay Selim, tek başına çalışan test kalite(QA) mühendisleri için bazı ipuçları paylaşmış.(İng)
Berkay Yalçın, arayüz test kütüphanesi Cypress'in kullanımını anlatmış.(İng)
Feyza Dayan, farklı uygulamaları bünyesinde toplayan Super App'te test için karşılaşılabilecek zorluklardan bahsetmiş.(İng)
Malik Masis, açık kaynak projedeki bir örnek üzerinden birim testlerin nasıl somut fayda sağladığını anlatmış.
Yusuf Tayman, Webhook'ları doğrulama ve test etme için bir yöntemden bahsetmiş.(İng)
Seydi Alkan, "Clean Code" serisinin 2. yazısında anlamlı isimlendirmeden bahsetmiş.(İng)
Can Kayı, metodlara parametre geçilmesiyle alakalı kötü kokan durumlardan ve bunların refactoring yöntemlerinden bahsetmiş.(İng)
Dolu Dolu Seriler
Ali Osman Menekşe, gün geçtikçe daha kompleks hale gelen frontend uygulamaları için mimari tasarım yapmayı anlattığı bir seriye başlamış.
Şuayb Şimşek, Spring Boot ve Hyperledger Fabric kullanarak Kubernetes üzerinde çalışan bir Blockchain uygulaması yazmayı anlattığı -an itibariyle 6 yazıya ulaşan- bir seri kaleme almış.(İng)
Onur Kiris, Unity'de gelişme yaparken kullanılan tasarım desenlerini anlattığı bir seri kaleme almış. Serinin 5. yazısında sonlu durum makinelerini(finite state machine) anlatmış.(İng)
Can Bayar, "Algorithms in Context" başlıklı önemli serisinin 10. yazısında birbiriyle bağlantısı olmayan veri ağaçlarını(tree) ifade eden ayrık küme(disjoint) veri yapılarını ve ağaçları birleştirmek için kullanılan algoritmalardan bahsetmiş.(İng)
Muhammet Nusret Özateş, Python'da iyi yazılım tasarımı pratikleri hakkında bir seri kaleme almış. Tasarım prensiplerinden, defansif programlamadan ve Design by Contract yaklaşımından bahsetmiş. (İng)
Mert Toptas, native Android arayüzleri oluşturmayı sağlayan Jetpack Compose aracını anlattığı bir seri kaleme almış.
Selin Yazıcıoğlu, Python anlattığı bir seriye başlamış.(İng)
Kısa Kısa
Pınar Koçak, MVC, MVP, MVI, MVVM ve VIPER gibi mimari tasarım desenlerinden bahsetmiş. Diğer bir yazsında ise bu desenlerden VIPER'ı iOS uygulaması örneği üzerinden daha detaylı anlatmış.(İng)
Gürkan Bulca, MVC(model-view-controller) deseninden, genişletilmiş versiyonu AMMVC(application-monitoring-model-view-controller) deseninden ve bunların Unity oyun projelerinde uygulanışından bahsetmiş.(İng)
Bora Kaşmer, Redis'te liste barındırma ve güncelleme işlemleri için kullanılabilecek yöntemlerden bahsetmiş. Diğer bir yazısında ise .Net 6'da Bitwise implementasyonu anlatmış.(İng)
İrem Ateş, JavaScript'te callback, promise ve async-await kavramlarını, bunların kullanımlarını anlatmış.(İng) Diğer bir yazısında ise farklı metodolojiler ve yaklaşımlar ile bakımı daha rahat yapılabilen CSS yazmayı anlatmış.
Süleyman Can, Trendyol'da sayısı 500 milyona ulaşan kuponların üretimini ve yönetimini yaptıkları servislerin işleyişinden bahsetmiş.(İng)
Mustafa Aktaş, ödeme sistemlerinde yapay zeka ve derin öğrenme kullanılan bazı senaryolardan bahsetmiş.
Begüm Özkısaoğlu, Python ve XGBoost algoritmasını kullanarak araçların yakıtı tüketimini tahmin eden bir makine öğrenmesi projesi geliştirmeyi anlatmış.
Fethi Tekyaygil, veri ön işlemesi ve analizi için kullanılan Pandas ile Polars kütüphanelerini kıyaslamış.
Osman Gençoğlu, şirketlerde verinin toplanmasını ve işlenmesini sistematik hale getirerek kolaylaştıran veri yönetişimi kavramından bahsetmiş.
Yusuf Talha Arabacı, R dilinin temellerini genişçe anlatmış.
Büşra Atmaca, .Net Core uygulamasında Ocelot ile API Gateway oluşturmayı anlatmış.(İng)
Yildiray Gemuk, .Net 6'nın .Net 5'ten farklı başlıca özelliklerini yazmış.(İng)
Furkan Güngör, .Net'te SpecFlow örneği üzerinden kabul testlerini anlatmış.
Mehmed Emre Akdin, ASP.NET Core'da dependency injection için constructor'a onlarca parametre geçmeyi ifade eden Constuctor Injection Hell kavramını ve çözüm için bir yöntemi anlatmış.
Tamer TÜRKSOY, hem ASP.NET Core 6.0'ın Minimal API özelliği ile hem de Node.js ile API oluşturarak bu süreci karşılaştırmış.
Betul İnce, açık kaynak Apache Solr aracına yaptığı katkıyı anlatmış.(İng)
Burak Ergören, web sayfasındaki kırık linkleri programatik olarak tespit etme yöntemlerinden bahsetmiş.(İng)
Uğur Suicmez, RESTful API özelliklerini ve doğru kullanımlarını anlatmış.(İng)
Yusuf Yılmaz, kuşbakışı RabbitMQ'nun çalışmasını ve kullanımını anlatmış.
Nazelin Özalp, Cassandra'nın yapısını, bileşenlerini ve işleyişini anlatmış.(İng)
Altuğ Bilgin Altıntaş, teknik borçla mücadele için kullanılabilecek süreçsel yöntemlerden bahsetmiş.(İng)
Mert Susur, yazılım projelerinin planlamasında belirsizliklerle nasıl mücadele edilebileceğinden bahsetmiş.
Selçuk Usta, Formula 1 yarışlarındaki pit stop anından hareketle hızlı bir şekilde sorun çözen ekipler oluşturmaktan bahsetmiş.
Cihat Solak, uygulamaları versiyonlama yöntemlerinden anlamsal(semantik) versiyonlamayı anlatmış.
Can Oguz, Go'da nesne tabanlı programlama yaklaşımının uygulamasından bahsetmiş.(İng)
Serhat Karabulut, Go'da gRPC server oluşturmayı ve test etmeyi anlatmış.(İng)
Edis Nezir, .Net 6 ve Angular kullandığı bir proje ile gRPC-Web kullanımını anlatmış.(İng)
Mustafa TÜRKMEN, backendini Altogic ile geliştirdiği bir Flutter uygulaması geliştirmeyi anlatmış.
Cahit Barkin Ozer, Java geliştirici mülakatlarında çok sorulan 80 soruyu derlemiş.(İng)
Uğur Taş, Java'daki Record veri yapısının immutable olup olmadığını incelemiş.(İng)
Çiğdem Kadakoğlu, KubeCon etkinliğinde konteynerları nelerin şişmanlattığı(boyutunu büyüttüğü) ile alakalı bir sunumdan notlarını paylaşmış.
Deniz TÜRKMEN, Kubernetes'te kimlik doğrulama(authentication) ve yetkilendirme(authorization) için kullanılan yapıları anlatmış.
Hüseyin Can Taşdemir, kimlik doğrulama(authentication) işleminde oluşabilecek zafiyetleri ve bu konuda alınabilecek önlemleri yazmış.
Fethi ŞEN, farklı uygulamaları entegre etmeyi sağlayan Apache Camel aracını anlatmış.(İng)
Hüseyin Mert, Jack Dorsey'in Web5 açıklamasını değerlendirmiş.
Emre MERT, "kurtarıcı" olarak işe başlayıp "hain" olarak istifa eden yazılımcılardan bahsetmiş.
Ulaş Kılıç, mikroservis uygulamalarda kullandıkları loglama yöntemlerinden bahsetmiş.(İng)
Bitirirken
Bir sayının daha daha sonuna geldik. Beğendiyseniz paylaşmayı; eleştirileriniz, önerileriniz varsa iletmeyi unutmayın.
Faydalı olması ümidiyle. Sağlıklı günler dilerim.
Zâtınıza çook iyi davranın.
Çay, kahve ısmarlamak için: Patreon