Archive of posts with category 'yazılım'

Kubernetes Cloud Native CI/CD: Tekton ile Yeni Bir Dönem

Yazılım dünyasında otomasyon denince akla Jenkins pipeline, GitLab’ın CI/CD (Continuous Integration/Continuous Deployment- Sürekli Entegrasyon/Sürekli Teslimat) ve arada kaybolan bash script'lerinin garip labirentleri gelirdi.

Kod Kalite Metrikleri

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 ile Kod Kalitesini Artırma

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.

Micrometer ile Modern Uygulamalarda Metrik Yönetimi

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.

Kafka Streams'e Giriş

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.

OpenAPI ve Spring Boot ile API Dokümantasyonu

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.

Kontrat Testi ve Spring Cloud Contract ile Kafka Kontrat Testleri

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.

Liquibase ile Veri Tabanı Şema Değişiklik Yönetimi

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

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...

Yazılım Geliştirme Sürecinde Verimli Birim Testi Yazımı

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.

Java 17 ve Öncesi Garbage Collector (Çöp Toplayıcı)

Çö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...

Temiz ve Anlaşılır Kod Yazma Sanatı

Temiz kod geliştirme süreçlerini içeren blog serisinin ikinci kısmı.

Spring Batch Mimarisi ve Veri İşleme Stratejileri

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.

BPMN 2.0 Teknolojileri

Bu blog serisinde BPMN 2.0 standartını ve bu standartı kullanan bazı teknolojileri ele alacağız.

Artırılmış Gerçeklik (Augmented Reality)

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...

Mikroservis Mimarisi 3: Eş Zamansız İletişim Detaylı İnceleme

Blog serisinin 3. kısmında mikroservis mimarisinde eş zamansız iletişimin detaylı olarak örneklerle inceleyeceğiz.

ArchUnit

Temel Kavramları ile ArchUnit nedir?

CockroachDB: Modern Çağın Dağıtık Veri Tabanı Çözümü

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.

Temiz ve Anlaşılır Kod Yazma Sanatına Giriş

Bu blog serisinde, Robert C. Martin'in yazmış olduğu Clean Code kitabını okuyarak bölüm çıktıları paylaşılacaktır.

Java 21'de Gelen Yenilikler - Virtual Threads - Spring Framework'te Kullanımı

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.

Mikroservis Mimarisi 2: Eş Zamanlı İletişim Detaylı İnceleme

Blog serisinin 2. kısmında mikroservis mimarisinde eş zamanlı iletişimin detaylı olarak örneklerle inceleyeceğiz.

Mikroservis Mimarisi 1: İletişime Giriş

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.

Spring ile Kafka: Mesaj alma ve Verme

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 ve Axure Arayüz Tasarım Araçları İncelemesi

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.

Çevik Projeler için Kurumsal Gereklilikler

Çevik projeler için kurumsal değişim ve organizasyon kültüründe ne gibi değişiklikliğe gidilmelidir?

Yapay Zeka İle Yeniden Şekillenen Yazılım Dünyası

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: Ne, Neden, Nasıl?

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....

Rest API ve gRPC Mimari Stillerinin Karşılaştırılması

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.

Spring Framework

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...

Prometheus İzleme Aracı

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...

Kimlik Doğrulama Altyapılarının Kullanımı

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...

Mikro Önyüz Mimarisi

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...

CI/CD Süreç Yönetimi

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: Postgres için Kolay API Server

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.

Jekyll ile Statik Web Sayfaları

Jekyll Ruby dilinde geliştirilmiş oldukça popüler ve kullanımı kolay statik web sayfaları oluşturmaya yarayan bir araçtır.

Stream API

Stream API, Java 8 ile eklenmiş bir yeniliktir. Stream akıntı anlamına gelir ve çalışma mantığı olarak da bir akıntı üzerine gelen verileri sırayla ya da paralel işleyen metotlar olarak düşünülebilir. Stream sayesinde loop kullanan imperative metotlar, fonksiyonel programlamaya uygun şekilde değiştirilebilmektedir.

Java'da Fonksiyonel Programlama

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...

Teknoloji Birlikleri Sunumları

Teknoloji Birlikleri Günündeki Sunumlar

Java 17: Text-Blocks & String Methods

Text-Blocks Javada çok satırlı Stringleri kullanmamıza yarar. Çoğu programlama dilinde olan bu özellik, java 13 sürümü ile javaya da eklenmiştir. Bir diğer yeni özellik ise satır içi çok satırlı stringleri daha okunabilir hale getirme özelliğidir.

Java 17: Switch Expression

Switch-case tanımı, if-else ile benzer bir şekilde bir variable’ın değerine göre farklı kod bloklarının çalışmasını sağlar. Java 7’ye kadar switch-case tanımlamalarında sadece integer değerde bir variable’ın koşulları kullanılabiliyorken, Java 8’de String ve Enum type’lar için de kullanılabilir hale geldi.

Java 17: Local-Variable Type Inference

Local-Variable Type Inference özelliği Java 10 ile birlikte gelmiştir. JavaScript dilindeki gibi variable tanımlaması yaparken local type inference için kullanılan ve variable’ı istediğiniz tipte tanımlamanızı sağlayan bir Java anahtar kelimesidir.

Java 17: Lambda Expression

Lambda Expressionları, fonksiyonel programlamayı kullanmamızı sağlar. Okunabilir ve kısa kodlar yazmamızı sağlar. Daha kolay ve kullanışlı APIlar ve kütüphaneler yazmamıza yardımcı olur. Pararel işleme için destek sunar.

Java 17: Collections

Java Collections, nesneleri tutmak ve manipüle etmek için tasarlanan bir frameworktür. Veri üzerinde arama, sıralama, ekleme, değiştirme, silme gibi işlemleri gerçekleştirir. Collections, birçok interface (Set, List, Queue, Deque), sınıflar (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet) ve algoritmalar içerir.

Java 17: Interfaces

Java 8 ile birlikte interfacelerde default ve statik metotlar tanımlanabilir. Daha önce interfaceleri implemente eden sınıfları değiştirmeden interface’e yeni bir metot eklemek mümkün değildi, artık interfacelerde metotlar implemente edilebilir hale...

Java 17: Date and Time API

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...

Çevik Yaklaşımlara Genel Bakış

Ç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.

Agile Test

Hataları veya açıkları bulmak, gereksinimlerin sağlandığına emin olmak gibi amaçların yerine; Ekibimizin başarıya ulaşmasına nasıl katkı sağlayabileceğimizi ya da ortaya çıkabilecek hataları ilk aşamada nasıl ortadan kaldırabileceğimizi düşünmeliyiz. Amacımızın sadece kodlamak ve hataları bulup düzeltmek olmadığını; Test edilebilir kod yazmanın veya oluşturulan yazılımın başarılı bir...