in

Yazılım geliştirme blogu

SAP, kurumsal uygulama geliştirme, entegrasyon ve dijitalleşme üzerine Puncharsoft ekibinin saha notları.

Merkezde domain, çevresinde port ve adaptörler bulunan hexagonal mimari şeması

Hexagonal Mimari: Spring Boot'ta Ports & Adapters Uygulaması

Katmanlı mimaride iş kuralı JPA'ya ve HTTP'ye bağımlıdır; hexagonal mimari bu bağımlılığı tersine çevirir. Spring Boot'ta port ve adaptör yapısını, paket düzenini, ArchUnit ile korunan bağımlılık kuralını, domain–JPA ayrımının bedelini ve bu mimarinin hangi projede değer ürettiğini kod örnekleriyle anlatıyoruz.

İş kaydı ve outbox satırının aynı transaction'da yazılıp relay ile Kafka'ya taşındığını gösteren şema

Outbox Pattern ile Güvenilir Olay Yayınlama (Spring, Kafka)

Veritabanına yazıp Kafka'ya mesaj atmak iki ayrı işlemdir ve ikisi arasında bir çökme, sistemleri tutarsız bırakır. Outbox pattern bu dual-write problemini tek transaction'la çözer. Spring Boot'ta polling relay, Debezium ile CDC, sıralama ve idempotency garantileri ve operasyon pratiğini kod örnekleriyle anlatıyoruz.

Kurumsal uygulama, LLM gateway ve model arasındaki RAG ve tool calling akışını gösteren şema

LLM Entegrasyonu: Kurumsal Yazılımda 4 Güvenli Desen

LLM'i bir sohbet ekranından iş sürecine taşımak dört deseni bilmekle başlar: şemaya bağlı yapılandırılmış çıktı, şirket verisiyle RAG, sınırları çizilmiş tool calling ve girdi-çıktı guardrail'leri. Spring AI örnekleri, LLM gateway mimarisi, KVKK açısından model seçimi ve değerlendirme setiyle ölçmeyi anlatıyoruz.

Yazılım şartnamesinin on bölümünü gösteren şablon

Yazılım Şartnamesi Nasıl Hazırlanır? 10 Bölümlü Şablon

Şartname olmadan alınan teklifler karşılaştırılamaz ve kapsam tartışması projeyi bitirene kadar sürer. Kurumsal yazılım şartnamesinin 10 bölümünü, test edilebilir gereksinim yazma kurallarını, kabul kriteri örneğini ve teklife çıkmadan önceki kontrol listesini paylaşıyoruz.

Az sayıda taşıyıcı thread üzerinde çalışan çok sayıda sanal thread'i gösteren şema

Java 21 Virtual Threads: Spring Boot'ta Gerçek Kazanım Nerede?

Sanal thread'ler CPU'yu hızlandırmaz; bekleyen isteklerin thread tüketmesini bitirir. Spring Boot'ta tek satırla nasıl açıldığını, I/O ağırlıklı hangi senaryolarda ölçülebilir kazanım verdiğini ve pinning, bağlantı havuzu darboğazı, ThreadLocal şişmesi gibi tuzakları anlatıyoruz.

Uygulama ile ERP arasında senkron, asenkron ve toplu veri akışlarını gösteren entegrasyon şeması

ERP Entegrasyonu Mimarisi: Senkron, Asenkron ve Olay Tabanlı

ERP entegrasyonu çoğu kurumsal projenin asıl işidir ve en sık burada başarısız olur. Senkron API, asenkron mesaj ve toplu aktarım desenlerini ne zaman seçeceğinizi, anti-corruption layer ile ERP modelini uygulamanızdan nasıl ayıracağınızı ve outbox, idempotency, mutabakat gibi güvenilirlik desenlerini anlatıyoruz.

Spring @Transactional proxy'sinin metot çağrılarını nasıl sardığını gösteren şema

Spring @Transactional Tuzakları: 8 Yaygın Hata ve Çözümü

@Transactional bir anotasyon değil, bir proxy'dir; hataların çoğu bunu unutmaktan çıkar. Self-invocation, checked exception'da rollback olmaması, REQUIRES_NEW'un bağlantı havuzunu tüketmesi, readOnly'nin gerçek etkisi ve testlerde yanıltan transaction davranışını kod örnekleriyle anlatıyoruz.

Kurumsal yazılım maliyetini belirleyen faktörlerin ağırlıklarını gösteren grafik

Kurumsal Yazılım Maliyeti: Fiyatı Belirleyen 9 Faktör

"Ne kadar tutar?" sorusunun dürüst cevabı kapsama bağlıdır; ama kapsamı belirleyen faktörler bilinir. Fiyatı etkileyen dokuz faktörü, adam-gün mantığını, sabit fiyat ile zaman-malzeme modellerinin farkını ve tekliflerde görünmeyen kalemleri anlatıyoruz.

Spring Modulith ile modül sınırları zorlanan modüler monolit yapısı şeması

Modüler Monolit: Spring Modulith ile Modül Sınırları

Modüler monolit ancak sınırlar derleme zamanında zorlanırsa modüler kalır. Spring Modulith ile modül kurallarını, doğrulama testini, olay tabanlı iletişimi ve publication registry'yi, modül bazlı testleri ve otomatik dokümantasyonu kod örnekleriyle anlatıyoruz.