Yazılımcılar İçin Hafta Sonu Okumaları - Sayı #75 / Sezon #4 (CQRS, Sistem Tasarımı, Test ve Otomasyon ve daha fazlası)
Merhaba aziz okuyucularım.
Bültenin 75. sayısıyla huzurlarınızdayım. Yine okumakla bitmeyen ama okuduğunuza değecek, seçmece yazılarla karşınızdayım.
Keyifli okumalar.
Dağıtık Uygulamalar
Faruk Terzioğlu, bir servisten birden fazla instance oluşturup bunu yönetmek için kullandığı service discovery ve API Gateway uygulamasından bahsetmiş. Servis olarak bir Bitcoin node'u(bitcoind) ayağa kaldırdığı örnekte yönetim için KrakenD ve etcd'yi kullanmış.
Mert Öngengil, MongoDB'de Replica Cluster'larını yeni node'lara nasıl taşıdıklarını anlatmış.(İng)
Malik Masis, dağıtık yapılarda eşzamanlı veritabanı okuma yazma işlemleri için kullanılan lock mekanizmalarını anlatmış.
CQRS
Engin UNAL, kullanımı, artıları-eksileri ile CQRS tasarım kalıbını anlatmış.
Emre Odabas, CQRS desenini kullandıkları ve yazma için Couchbase, okuma için ise ElasticSearch kullandıkları projede bu 2 veritabanı arasında oluşan senkronizasyon problemini ve bu problemi nasıl aştıklarını anlatmış.(İng)
Mehmet Sezer, özellikle CQRS desenini uygulayan mimarilerde kullandıkları ve açık kaynak olarak paylaştıkları Command Bus çözümü kediatR'ı anlatmış.(İng)
Ali Furkan Dadali, .Net 6'da CQRS deseni ile bir uygulama geliştirmeyi anlatmış.(İng)
Mesaj Kuyruğu Yapıları
Mert Aktaş, RabbitMQ kullandığı bir örnek üzerinden Enterprise Service Bus çözümü MassTransit'i ve kullanımını anlatmış.(İng)
Hüseyin Dursun, asenkron iş akışı tasarlamadan ve RabbitMQ'daki exchange tiplerinden bahsetmiş.(İng)
Emir Ayhan, Message Queue ve Message Bus arasındaki farkları yazmış. (İng)
Sistem Tasarımı
Señorita Developer, sistem tasarım mülakatları(system design interview) hakkında tükettiği farklı kaynaklardan aldığı notları paylaştığı bir seriye başlamış.(İng)
Engincan Veske, System Design Interview kitabından paylaştığı notlara Rate Limiter konusuyla devam etmiş.
Mikroservisler
Adem Olguner, MassTransit, Azure Service Bus ve ASP.NET Core 5.0 kullanarak bir mikroservis uygulaması oluşturmayı detaylıca anlatmış.
Hande Ebrar Güneşdoğdu, Ocelot ile API Gateway oluşturmayı anlatmış.
Mesut Yakut, monolit mimariden mikroservis mimarisine geçiş sürecinde teknik olmayan ama gerekli dönüşümleri yazmış.(İng)
Blockchain
Orientus Prime, kuşbakışı(ama geniş çerçeveden) Blockchain teknolojilerini anlatmış.
Mithrandir, Blockchain teknolojisindeki ölçekleme problemlerine karşın kullandığı parçalama(sharding) algoritmalarıyla çözüm vaat eden Near projesini anlatmış.
Eray Usta, Solidity'ye giriş için oldukça geniş kapsamlı bir yazı kaleme almış.
Uygulama Güvenliği
Anil Öztürk, National Security Agency(bildiğimiz NSA) tarafından hazırlanan konteyner mimarisinde güvenlik konusunda hazırlanan Kubernetes Hardening rehberini çevirip seri olarak paylaşmış.
Çağdaş Alagöz, geçtiğimiz aylarda Java geliştiricilerin başını çok ağrıtan log4j'de ortaya çıkan zafiyeti ve çözümünü anlatmış.(İng)
Bir Tutam Go
Özge Büyükaşık, Go'da veri tiplerini anlattığı bir seriye başlamış.(1, 2)(İng)
Büşra Nur Güner, Go'da gRPC Gateway oluşturmayı anlatmış.(İng)
Mustafa Akseli, Go hakkında notlarını içeren kısa yazılardan oluşan -şu ana kadar 9 yazıya ulaşan- bir seri kaleme almış.
Uzaktan Çalışma Sürecinde Verimlilik(Sponsorlu)
Firmalara yazılımcı değil yazılımcılara firma bulan nevi şahsına münhasır startup TalentGrid(dilerseniz şuradan benim selamımla gidip profilinizi oluşturabilirsiniz), paylaştığı blog yazısında uzaktan çalışma sürecinde verimlilik için bazı ipuçlarına yer vermiş.
Makine Öğrenmesi
Fethi Tekyaygil, Makine Öğrenmesinde sınıflandırma problemlerinin çözümü için neden Lineer Regresyon yönteminin tercih edilmediğini anlatmış. Diğer bir yazısında ise modelleri eğitirken insan yanlılığı ve devreye giren önyargılar nedeniyle modelin performansını düşüren durumlardan bahsetmiş.
Barış Hasdemir, Trendyol'da yoğun talep gelen Slack kanallarına gelen mesajları makine öğrenmesi ile analiz edip doğru birime/kanala yönlendiren bir Slack botu nasıl yazdıklarını anlatmış.(İng)
Test ve Otomasyon
Tarık Kılıç, birim testlerin sağlıklı olmasını ve gerçekten kodları kapsamasını teşvik eden mutasyon testlerini Spring Boot'ta bir örnek üzerinden anlatmış.(İng)
Hakan Karabulut, .Net'te bir örnek üzerinden mutasyon testleri eklemeyi anlatmış.
Engin Üstün, deployment ve test süreçlerinde feature brach'leri merge edip test ederken yaşadıkları problemlerden ve bunu nasıl çözdüklerinden bahsetmiş.(İng)
Zafer Ayan, React uygulamalarında ağ isteklerinin nasıl test edilebileceğini anlatmış.(İng)
Sezer Dönmez, web uygulamalarında görsel regresyon testleri yapmayı anlatmış.(İng)
Hüseyin Nurbaki, NestJS uygulamasını Dockerize edip Kubernetes üzerinden deployment oluşturduğu 4 yazılık bir seri kaleme almış.(İng)
Emre Savcı, Kubernetes'te pod'ların node'larda belirlenen koşullara göre nasıl schedule edilebileceğini anlatmış.
Barış Can Yılmaz, Github Actions'ta aksiyon oluşturmayı push'lanan koddaki hassas verileri yerleştirdiği bir örnek üzerinden anlatmış.
Deniz TÜRKMEN, Gitlab'de CI-CD(Continuous Integration-Continuous Delivery) hattı oluşturmayı anlatmış.
İbrahim Hızlıoğlu, AWS ECS'te(Elastic Container Service) yayımlanan uygulamalar için Gitlab'de CI-CD(Continuous Integration-Continuous Delivery) hattı oluşturmayı anlatmış.
Gökhan Gökalp, Azure hizmetlerini(Azure Functions, Logic Apps, Azure Computer Vision API) kullanarak bir OCR(görselden metin okuma) akışı oluşturmayı anlatmış.
Kısa Kısa
Mertcan Arguç, Node.js uygulamalarının performansını artırabilecek çözümlerden bahsetmiş.(İng)
Beykan Şen, legacy projeleri daha geliştirlebilir ve bakımı yapılabilir hale getirmek için bazı yöntemlerden bahsetmiş.(İng)
Onur Dayıbaşı, bu kez React'in temellerini ve çalışma prensibini anlattığı geniş bir seri kaleme almış.
Ecesu Olgun, ElasticSearch temellerini anlattığı bir seriye başlamış.(1, 2)(İng)
Ayşe Nur Bakırcı, iOS'te eşzamanlılığı(Concurrency), bu konuda yaşanabilecek problemleri ve Thread Safety konusunu anlatmış.
Ümit Samimi, Java'da eşzamanlılığı(concurrency) anlatmış. Ayrıca Java'da thread yapısını anlattığı serinin 3. yazısını yayımlamış.
İbrahim Halil Altun, Apache Ignite'ta Garbage Collector üzerinde optimizasyon yapmayı anlatmış.
Burak Selim Şenyurt, Rust ile Wordle oyunu geliştirmeyi anlatmış.
Recep İnanç, InnoDb üzerinden transaction yönetimi, veri tutarlılığı ve kilit(locking) mekanizmalarını anlatmış.(İng)
Mehmet Ersan Uzun, Microfrontends yaklaşımında mikro uygulamaların script dosyalarını versiyon değiştikçe nasıl dağıttıklarını anlatmış.(İng)
Hüseyin Kutluca, yazılım mimarisini dokümante edip repository'de saklayarak mimariyi kodla birlikte yönetme yöntemlerini anlatmış.
Emre MERT, işe yeni başlayan bir yazılımcının adaptasyon sürecinde yaşadıklarından bahsetmiş. Diğer bir yazısında ise ülkemiz şartlarında MVP ürün çıkarma sürecinde yaşananlardan bahsetmiş.
Uğur Çelebi, geçmişten günümüze sanallaştırma teknolojisinin evrimini ve farklı bu süreçte kullanılan farklı tekniklerin artılarını-eksilerini yazmış.(İng)
Abdullah Asım KILIÇ, Java 8'le gelen ve fonksiyonel programlama için fonksiyonlar sunan Stream API'dan bahsetmiş.(İng)
Faruk Toptaş, sürdürülebilir bir yazılım ürünü ortaya çıkarmak için dikkat edilmesi gereken konuları yazmış.
Turgay Çelik, çevik felsefenin temel değerlerini anlatmış.
Umut Akyol, "yazılımcılar için hayatta kalma rehberi" başlıklı ilgi çekici bir yazı yazmış.
Yiğit Şener, Pandas kütüphanesini kullanarak nasıl İngilizce kelime öğrenme oyunu geliştirdiğini anlatmış.
Selin Yazıcıoğlu, Friends dizisi karakterlerini kullanarak hazırladığı keyifli örneklerle Python'da veri yapılarını anlatmış.(İng)
Burak Acar, Clean Code serisinin ikinci yazısında tasarım prensiplerinden bahsetmiş.(İng)
Beyza Celep, Clean Architecture'a detaylı bir giriş yapmış.(İng)
Fatma Kiraz, CSS Cascade Layers kavramını detaylıca anlatan bir yazıyı Türkçeye çevirmiş.
Tahir Kardak, React kullanarak Chrome uzantısı(extension) yazmayı anlatmış.
Sabire Işık, Trendyol'da veri merkezindeki makineleri ve varlıkları nasıl görselleştirip takip ettiklerini anlatmış.(İng)
Emir Ayhan, eklenen özellikleri açıp kapatabileceğimiz şekilde canlıya almayı sağlayan Feature Flag Driven Development yaklaşımını anlatmış.(İng)
Nisanur Karatepe, SOLID prensiplerini anlattığı bir seri kaleme almış.(İng)
Berna Şimsek, Gözlemci(Observer) tasarım desenini anlatmış. (İng)
Berke Soysal, bir örnek üzerinden Strateji tasarım desenini, artılarını-eksilerini anlatmış.(İng)
Hüsnü Tapan, Node.js'te dependency injection deseninin uygulanmasını anlatmış.(İng)
Bora Kaşmer, .Net 6'da doğrulama işlemleri için Validation Factory oluşturmayı anlattığı kısa bir seri kaleme almış(1, 2)
Emre Kızıldaş, Entity Framework Core'un değerleri manipüle etmeyi sağlayan ValueConverter özelliğini anlatmış.
Nevra Aydın, monorepo yaklaşımından ve kurumsal web uygulamalarında kullanımından bahsetmiş.(İng)
Ali Elmalı, fiziki olarak katıldığı Mobil Dünya Kongres(MWC) 2022'den notlarını paylaşmış.
Betul İnce, Linux komutlarını anlattığı bir seriye başlamış.(İng)
Çağatay Atabay, ELK(ElasticSearch-Logstash-Kibana) Stack, Kafka ve Kubernetes ile merkezi log yapısı oluşturmayı anlatmış.(İng)
Barış Ayten, Python Flask framework'ü ve MongoDB ile bir TODO CRUD Api geliştirmeyi anlatmış.
Musa Kökçen, iOS'te OneSignal push notification entegrasyonunu ve simulatör üzerinde testini anlatmış.(İng)
Serkan SAKINMAZ, Apache Spark Scala sınavı için bzı örnek soruları ve çözümlerini paylaşmış.(İng)
Elif Akyıldırım, tepeden Trendyol'daki teknolojik altyapıyı izlemek için geliştirdikleri şirket içi üründen bahsetmiş.(İng)
Bitirirken
Bu sayının da sonuna geldik. Beğendiyseniz paylaşmayı; eleştirileriniz, önerileriniz varsa iletmeyi unutmayın.
Faydalı olması ümidiyle.
Kendini mümin hisseden herkese hayırlı Ramazanlar, cümlenize sağlıklı günler dilerim.
Zâtınıza çook iyi davranın.
Çay, kahve ısmarlamak için: Patreon