Kod kalitesi, yazılım geliştirme süreçlerinde başarıya götüren önemli etkenlerden biridir. Bu blog yazımızda, kod kalitesinin neden bu kadar kritik olduğunu ve projelerinizin başarısını artırmak için hangi kod kalite metriklerini kullanmanız gerektiğini tüm detaylarıyla ele alıyoruz.
Detekt kotlin tabanlı projelerde statik kod analizini gerçekleştiren araçlardan biridir. Kotlin için özel olarak yapılandırılmış olması, bu aracı özellikle Kotlin projelerinde vazgeçilmez kılar.Bu blog yazımızda Detek ve kullanım alanlarını inceliyor olacağız.
Bu blog yazısında, uygulama performansı ve sağlığının izlenmesi için Spring Boot ve Micrometer kullanılarak oluşturulabilecek metrik toplama stratejileri, özelleştirilmiş metrik tanımlamaları, izleme araçlarıyla entegrasyon süreçleri, eşik değer ve uyarı yönetimi ile bu alandaki en iyi uygulamalar detaylı olarak ele alınacaktır.
Bu blog serisinde, `Cilium`'dan bahsedeceğim. Öncesinde, CNI nedir ve neden ihtiyaç duyarız, kısaca açıklayacağım. Teorik bilgiyle yetinmek istemeyenler için de pratik yapacağız; 🔗[Isovalent'in](https://isovalent.com/resource-library/labs/) hazırladığı lab'lar üzerinde Cilium'u deneyimleyeceğiz. Bu pratiklerde, `Cilium L7 network policy`, `L7 load-balancing` ve `Envoy` gibi konulara odaklanacağız.
Kafka Streams, Kafka platformunun üzerine inşa edilmiş bir akış işleme kütüphanesi olup, günümüzde birçok sistemin ihtiyaç duyduğu gerçek zamanlı veri işleme ve analiz gereksinimlerini karşılamak amacıyla geliştirilmiştir.
Bu blog yazısında, SCRUM çerçevesinin, diğer yöntemler gibi her soruna spesifik bir çözüm sunmadığına, bunun yerine yazılımcılara rehberlik eden bir değerler bütünü sunduğuna odaklanılmaktadır. Bu değerler bütünü, yazılımcıların karşılaştıkları zorluklar karşısında karar almalarına ve uygun çözümler geliştirmelerine yol gösterici bir pusula niteliği taşır.
Bu blog yazısında, Prometheus ve Alertmanager kullanılarak sistemlerdeki kritik olayların etkin bir şekilde izlenmesi ve uyarıların ilgili ekiplere ulaştırılması süreci ele alınmaktadır.
Bu blog yazısında, OpenAPI ve Spring Boot kullanarak API dokümantasyonunun oluşturulması, bu dokümanın bağımsız olarak dışa aktarılması, sürüm kontrolü, doküman güvenliğinin sağlanması ve en iyi uygulama pratikleri ele alınacaktır.
Bu yazıda kontrat testin ne olduğuna, neden ihtiyaç duyulduğuna ve genel yapısına değinilmiştir. Kafka'da üretici ve tüketici rolündeki iki mikroservis için bir senaryo üzerinden Kafka kontrat testlerini Spring Cloud Contract ile nasıl gerçekleştirebileceğimiz kod örnekleriyle anlatılmıştır.
Redis, son yaptığı güncelleme ile lisanslama politikasını değiştirdi. Bu değişikliğe göre Versiyon 7.4'ten itibaren Redis RSALv2 ve SSPLv1 lisansları kapsamındadır. Peki bu değişiklik ne anlama geliyor? Hâlihazırda altyapısında Redis kullanan uygulamalar bu lisans değişikliğinden etkilenecek mi? Blog yazımızın amacı bu gibi sorulara çeşitli kaynaklardan derlediğimiz...
Bu blog yazısında, Liquibase'in ne olduğundan, ne için kullanıldığından, veri tabanı şema değişikliklerini yönetmek için Liquibase'in Spring Boot uygulamasında nasıl kullanılabileceğinden, Liquibase komutlarının Gradle ile nasıl çalıştırılabileceğinden ve Liquibase kullanırken dikkat edilmesi gereken en iyi uygulamalardan bahsedilecektir.
Birim Testleri Kılavuzu, yazılım geliştirme süreçlerinde kaliteli ve güvenilir kod üretiminin temel taşlarından biri olan birim testlerini ele alır. Bu yazıda, birim testlerinin ne olduğunu, neden önemli olduklarını ve nasıl doğru bir şekilde uygulanması gerektiğini adım adım açıklıyoruz. Ayrıca, çeşitli test senaryoları ve örneklerle, birim...
Birim testleri, yazılım geliştirme süreçlerinde kaliteli ve güvenilir kod üretiminin temel taşlarından biridir; bu yazıda, birim testlerinin ne olduğu, neden bu kadar önemli olduğu ve nasıl etkili bir şekilde uygulanacağı, test yapılandırma yöntemleri, iyi pratikler ve sektördeki birim test alışkanlıkları ele alınmaktadır.
Çöp Toplama (Garbage Collection), program çalışırken kullanılmayan bloklarını tespit edip serbest bırakarak heap (dinamik bellek) yönetimini kolaylaştıran bir mekanizmadır. Çöp toplama bazı dillerde manuel olarak yönetilirken bazılarında otomatiktir. Örneğin C++' da manuel olarak yönetilirken, Java'da böyle bir maliyet söz konusu değildir. Bu çalışmada çöp toplama...
Bu yazıda ürünleştirmeye giriş yapılarak; ürün ve ürünleştirme kavramları, hangi alanlarda ürünleştirme yapılabilir, ürünleştirme yol haritası, avantaj ve dezavantajları gibi konu başlıklarına yer verilmektedir. Sadece yazılım ve teknoloji özelinde değil farklı sektörler de göz önünde bulundurularak genel hatlarıyla ürünleştirmeden bahsedilmektedir.
Dapr, dağıtık uygulamaları geliştirmek ve yönetmek için tasarlanmış bir açık kaynaklı platformdur. Bu platform, modern uygulama geliştirme senaryolarına uyum sağlamak amacıyla geliştirilmiştir. Bu nedenle, farklı ortamlarda kullanılabilirlik sunar. Bunlar arasında bulut tabanlı altyapılar, kenar hesaplama (edge computing) cihazları ve yerel geliştirme makineleri gibi çeşitli seçenekler...
Spring Batch, büyük veri setleri üzerinde toplu işlemleri kolayca yönetmek için kullanılan Java tabanlı bir yazılım çerçevesidir.
Bu yazımızda, Spring Batch'in mimarisi, çalışma prensibi ve kullanım alanlarını örnek kodlarıyla birlikte inceleyeceğiz.
Bu yazımızda sizi Artırılmış Gerçeklik (AR), Sanal Gerçeklik (VR) ve Karma Gerçeklik (MR) dünyasına etkileyici bir yolculuğa çıkarıyoruz. Bu son teknoloji çözümler, dijital ve fiziksel dünyalarla etkileşimde bulunma şeklimizi kökten değiştiriyor. Artırılmış Gerçeklik, çevremize dijital bilgileri sorunsuz bir şekilde entegre ederek gerçekliğimizi zenginleştirirken, Sanal Gerçeklik...
Kubernetes operatörleri, karmaşık uygulamaların yönetimini otomatikleştirmeye, iş yüklerinin dağıtımı, ölçeklendirilmesi ve bakımına yönelik bir çözüm olarak ortaya çıkmıştır. Bu kapsamlı kılavuzda, PostgreSQL dağıtımları için en uygun Kubernetes Operatörünü seçmeye yönelik hususları ve kriterleri ayrıntılı olarak ele alacağız.
CockroachDB modern uygulamaların ihtiyaçlarını karşılamak için tasarlanmış, yüksek erişilebilirlik ve ölçeklenebilirlik sağlayan, dağıtık mimarili bir veri tabanıdır. Bu yazımızda, CockroachDB’nin yapısı, özellikleri ve PostgreSQL’den CockroachDB’ye nasıl geçiş yapılabileceği gibi konuları ele alacağız.
Bir yazılım projesinde takım içerisinde farklı rollerde birçok kişi bulunmaktadır. Bu yazıda iş analisti ve ürün sahibinin rollerinden, ortak ve farklı olan özelliklerinden bahsedilecek olup iş analisti ve ürün sahibinin bir yazılım projesinin başarısına nasıl katkıda bulunacağı değerlendirilmektedir.
Bu yazıda Java 21 ile gelen yenilikleri inceleyeceğiz. Virtual threadlerin artılarından, eksilerinden bahsedip Spring Boot tabanlı uygulamalarda kullanımına değineceğiz.
Teknolojinin ve ihtiyaçların hızlı bir şekilde evrim sürecinde bulunmasıyla, talepleri ve cevap verme şekilleri ile birlikte KOBİ’leri de kapsayan eşi görülmemiş bir değişim dönemi başladı. KOBİ’ler için ise bu dijital değişim Endüstri 4.0 ve Toplum 5.0 ile daha da odaklanılmış bir yolculuk haline geldi. Bu...
Bu blog serisinde, mikroservis mimarisinde iletişimin önemini ele alıyoruz. Eş zamanlı ve eş zamansız iletişim türlerini karşılaştırarak, hangi senaryolarda hangisinin daha uygun olduğunu tartışıyoruz. Ayrıca, gerçek hayatta karşılaşılan problemler ve bu problemlere uygulanabilecek çözümler de yer alıyor.
Kafka, öğrenmesi ve ustalaşması çok zor olan bir mesaj kuyruğudur. Fakat spring, bize kafkanın karmaşıklığı ile uğraşmak için güzel yöntemler vermekte. Serimizin ilk yazısında, spring ile kafka temel ayarlarını yapmayı, ve mesaj alıp vermeyi göreceğiz.
Balsamiq, kullanıcı arayüzü tasarlamak amacıyla wireframe (mockup veya düşük kaliteli prototipler olarak da bilinir) oluşturmaya yönelik bir tasarım aracıdır.
AirSim (Ve daha doğrusu Unreal Engine’ın önceki sürümleri) Apple Silicon’un ARM ortamına uygun olmadığı için kurulum biraz daha zorlu hale gelmiştir. Bu yazıda amaç bu kurulum sürecini eksiksiz ve hatasız şekilde Türkçe olarak sunmaktır.
Yapay zeka, yazılım geliştirme süreçlerimizi yeniden şekillendiriyor ve daha verimli hale getiriyor. Bu sunumda, AI araçlarının yazılım geliştirme alanındaki etkilerini ve katkılarını derinlemesine inceleyeceğiz. Çeşitli AI araçlarından - ChatGPT'den, CoPilot'a ve Bard'a - nasıl faydalanabileceğimizi ve bu araçların hangi sorunları çözdüğünü ve hangi fırsatları yarattığını...
Graphql’in kısa tanımı şöyle: “Query language for your API”. GraphQL, sunucudan veri çekerken istemcilere tam olarak istediklerini vermeyi önceliklendiren bir sorgu dilidir. İstemciler, sunucuya bir şema üzerinden hangi alanları istediklerine göre bir sorgu oluşturur. Sunucu, bu sorguyu işler ve yalnızca istenilen verileri yanıt olarak gönderir....
gRPC ve REST API, modern uygulama geliştirme süreçlerinde yaygın olarak kullanılan
iki farklı mimari stildir. Google tarafından geliştirilen gRPC, performans ve
verimlilik odaklı bir yapı sunarken, REST API daha genel, kullanılabilirlik ve basitlik üzerine kurulmuştur.
Son zamanlarda, yazılım geliştirme sektörü yavaş ama gerçek bir dönüşümden geçmektedir. Yazılımlar
giderek her şeyin bir parçası haline gelirken yazılım geliştiriciler, artan bu taleple daha fazla otomasyon
yoluyla başa çıkmaya çalışmaktadır...
Günümüzün karmaşık ve dinamik sistemlerinde, işletmelerin hızla büyüyen altyapılarını izlemek ve yönetmek hayati öneme sahiptir. Bu noktada, Prometheus monitoring gibi güçlü bir araç devreye giriyor. Prometheus, modern bir açık kaynak tabanlı izleme ve alarm sistemi olarak, karmaşık sistemlerin performansını, kaynak kullanımını ve hataları etkin bir...
Bu çalışma kapsamında açık kaynak olmaları, kapsamları ve
ihtiyaçlara göre genişletilebilirlikleri açısından öne çıkan
web tabanlı uygulamalara güvenli tekil oturum açma (Single
Sign On / SSO) hizmetine sahip Apereo CAS ve Keycloak
teknolojileri incelenecektir...
Dünyanın giderek dijitalleştiği, her şeyin sanal ortama aktarıldığı bir dönemde yaşıyoruz. Eskiden
sadece bilgisayarlara programlar yükleyerek yapılabilen birçok işlem, artık farklı platformlar üzerinden
onlarca değişik cihaz yardımı ile kolayca yapılır hale geldi...
Son zamanlarda, yazılım geliştirme sektörü yavaş ama gerçek bir dönüşümden geçmektedir. Yazılımlar
giderek her şeyin bir parçası haline gelirken yazılım geliştiriciler, artan bu taleple daha fazla otomasyon
yoluyla başa çıkmaya çalışmaktadır...
RapidRows, PostgreSQL üzerinde sorgular çalıştırmak, scheduled job'lar gerçekleştirmek ve PostgreSQL bildirimlerini websocket'lara iletmek gibi kullanım durumlarına göre yapılandırılabilen açık kaynak kodlu tek dosya olarak çalışan bir API sunucusudur.
Fonksiyonel programlama, fonksiyonlar kullanarak program tasarlama modelidir. Obje Tabanlı Programlama modeline göre güçlü ve zayıf olduğu yönler bulunur. Sektörde oldukça popüler ve aslında obje tabanlı olan Java programlama diline; Java 8 sürümüyle birlikte, fonksiyonel programlama konseptlerini uygulamamıza imkân tanıyan yenilikler eklenmiştir. Bu sayede hem obje...
İmposter sendromu, ilk olarak 1978 yılında Clance ve Imes tarafından “kişinin bir alandaki tüm başarılarına rağmen o alanda insanların sandığı kadar yetkin olmadığını düşünmesi, dolayısıyla bir sahtekâr gibi hissetmesi” olarak tanımlanmıştır.
Havada insansız ve uçabilen tüm araçlara drone olarak adlandırabiliriz (İHA-UAV). Dronlar, uzaktan kumanda ile kontrol edilebilen (Yada tamamen otonom veya bir arayüz ile kontrol edilen), komut verilebilen, video ve görüntü kaydı yapabilen insansız hava araçlarıdır.
Devops, yazılım geliştirme (dev) ve bilişim teknolojileri operasyonlarını (ops) birleştiren iyi pratikler kümesidir. Yıllar boyunca olması gerektiği şekilde, yeni teknoloji ve keşfedilen iyi pratiklerle kendini güncelleyerek buralara gelmiştir. Agile Prensipleri etrafında, Agile prensiplerini uygulamaya dönüştürmek için ortaya çıkmıştır. Bir kuruluşun uygulamaları ve hizmetleri yüksek hızda...
Java 8 öncesinde kadar zaman bilgisi için Date ve Time API kullanılıyordu fakat bu API içerik olarak çok fazla detaya sahipti. Java 8 ile birlikte Date ve Time API’larında radikal değişiklikler yapıldı. Bu değişikler ile geliştiricilerin sadece 6 farklı sınıfın detaylarını bilerek tarih bilgisini geliştirdikleri...
State yönetimi, herhangi bir yeni, eski, monolith veya microservice uygulamasının en yaygın ihtiyaçlarından biridir. Farklı veritabanı kütüphaneleri ile uğraşmak ve bunları test etmek ve hataları handle etmek hem zor hem de zaman alıcı olabilir. Bir uygulamanın save, get ve delete statelerini yönetmek için key/value state...
Günlük Scrum toplantılarının amacından sapması, sprintlerin belirsiz sürelerinin olması, planlama yaparken aşırı düşünme, sahip olunan scrum rolü en iyi nasıl uygulanır gibi bir çok noktaya değinilmiştir.
Mikroservis tabanlı uygulamalarda, birden çok servisin birbiri ile haberleşmesine ihtiyaç vardır. Bu iletişim gereksinimi de beraberinde aşağıdaki sorunları getirmektedir.
Çevik yaklaşım, Çevik Manifestosu'nun birleştirdiği değerler ve ilkeler bütünü olarak o yıl başlayan bir harekettir; bununla birlikte "kalite" ve "tasarım odaklı düşünce" gibi daha erken tarihli pek çok öncülü bulunmaktadır.
Bu çalışmada kurum projelerinde halihazırda kullanmakta olduğumuz mikroservis mimarisinin avantajlarını keşfetmek, bu avantajları serverless anlayışı ile birleştirerek daha da bağımsız ve güvenilir bir yapı elde edebilmenin yöntemlerini aradık. Mikroservis mimarisi ile birlikte servislerin birbirinden bağımsızlığını sağlarken, serverless ile de iş mantığı ile altyapı arasındaki ilişkiyi...
Kod kalitesi, yazılım geliştirme süreçlerinde başarıya götüren önemli etkenlerden biridir. Bu blog yazımızda, kod kalitesinin neden bu kadar kritik olduğunu ve projelerinizin başarısını artırmak için hangi kod kalite metriklerini kullanmanız gerektiğini tüm detaylarıyla ele alıyoruz.
Detekt kotlin tabanlı projelerde statik kod analizini gerçekleştiren araçlardan biridir. Kotlin için özel olarak yapılandırılmış olması, bu aracı özellikle Kotlin projelerinde vazgeçilmez kılar.Bu blog yazımızda Detek ve kullanım alanlarını inceliyor olacağız.
Bu blog yazısında, uygulama performansı ve sağlığının izlenmesi için Spring Boot ve Micrometer kullanılarak oluşturulabilecek metrik toplama stratejileri, özelleştirilmiş metrik tanımlamaları, izleme araçlarıyla entegrasyon süreçleri, eşik değer ve uyarı yönetimi ile bu alandaki en iyi uygulamalar detaylı olarak ele alınacaktır.
Bu blog serisinde, `Cilium`'dan bahsedeceğim. Öncesinde, CNI nedir ve neden ihtiyaç duyarız, kısaca açıklayacağım. Teorik bilgiyle yetinmek istemeyenler için de pratik yapacağız; 🔗[Isovalent'in](https://isovalent.com/resource-library/labs/) hazırladığı lab'lar üzerinde Cilium'u deneyimleyeceğiz. Bu pratiklerde, `Cilium L7 network policy`, `L7 load-balancing` ve `Envoy` gibi konulara odaklanacağız.
Kafka Streams, Kafka platformunun üzerine inşa edilmiş bir akış işleme kütüphanesi olup, günümüzde birçok sistemin ihtiyaç duyduğu gerçek zamanlı veri işleme ve analiz gereksinimlerini karşılamak amacıyla geliştirilmiştir.