2017 yılında Kotlin ilk çıktığı zamanlar herkes gibi ben de sadece Android odaklı bir programlama dili ortaya çıktığını düşünüyordum. Zaman içinde ise backend ile kullanıldığını duymaya başladım ve merakımı cezbetti, araştırıp ilgilenmeye başladım. Server tarafında kullanımı popülerleşti ve şimdi ise inanılmaz bir ivme yakalamış durumda, bende kişisel ve enterprise uygulamalar geliştirmede yoğun olarak Kotlin kullanmaktayım.

Kotlin ile backend

Bir süredir profesyonel olarak backend geliştirmede kullandığım Kotlin ilk tercihim haline geldi. Bunu söyleyebilirim ki Kotlin yazmak gerçekten keyifli, çoğu geliştirmeyi oldukça kolaylaştırıyor ve dolayısıyla hızlandırıyor. …


gRPC; Google’ın geliştirdiği Remote Procedure Call, yani başka bir servis ya da uzak sunucudaki bir metodu sanki kendi servisimizin metoduymuş gibi kullanabilmemizi sağlayan, client-server ilişkisindeki iletişimi kolay ve hızlıca sunan bir framworktür.

RPC aslında eskiden beri varolan bir yöntemdir. Yani yeni bir konsept değildir ancak HTTP 2.0 ile birlikte Google iş birliği çerçevesinde oldukça kullanılabilir ve servisler arası iletişimde fayda sağlar hale gelmiştir. RPC: Client’ın direkt olarak servisteki bir fonksiyonu/metodu çalıştırması olarak genellenebilir. gRPC açık kaynak ve ücretsiz olarak Google’ın geliştirdiğin bir frameworktür ve Cloud Native Computing Foundation (CNCF) ekosisteminin bir parçasıdır.

High level olarak baktığımızda metotlar ve yöntemler gRPC…


Microservice mimarisi dağıtık servisler bütününü ifade ettiği için bu servisler arasındaki iletişim yapısı yavaşlık oluşturmayacak ve birbirinden olabildiğince bağımsız olacak şekilde konumlandırılmalıdır.

Microserviceden microservice iletişim

Her zaman microservice mimarisindeki servisler olabildiğince bağımsız olmalı tezi üzerinde durmuştuk. Bu tez her zaman geçerli ancak microservice mimarisinde bağımsızlıktan kasıt hiçbir microservice diğerinden “bilgi talep etmeden ya da bilgi almadan hayatına devam etmelidir” anlamına gelmiyor ve bunun pratikte karşılığı yok. Ancak bu bilgi alışverişinde microservicelerin birbirine olan bağımlılığının olabildiğince az tutulması servisler arası iletişimin senkron yapıdan olabildiğince asenkron yapıya evrilmesi de oldukça önemlidir.

Bu yazıda uygulamamıza kullanıcılar tarafından gelen istekleri değil microservicelerin kendi aralarındaki iletişimi çözümleyeceğiz. Microservice…


Circuit Breaker Pattern, bir yazılımda hataları tespit ederek hatanın tekrar etmemesini sağlar. Böylece sistemde hataların tekrar etmesi sonucu oluşacak bloklanma, hizmet kesintileri, aşırı kaynak kullanımı gibi sorunlarla karşılaşılmasını önleyerek, sistemin sağlıklı çalışmasını amaçlar.

Yazılım sistemlerinde farklı servis veya sistemlere istekte bulunmak/çağrı yapmak oldukça sık kullandığımız bir yöntemdir. Microservice mimarisindeki servisler arası senkron iletişim de buna dahil edilebilir. Özellikle çoğu kurumsal yazılım sisteminde Saas, CRM, SAP gibi birçok sisteme entegre olma çoğu yazılımın kaderi haline geliyor. Böyle bir yapıda hizmet aldığımız servis ya da sistem üzerinde oluşabilecek farklı sorunlarla karşı karşıya kalabiliyoruz.

  • Oluşturulan isteklerin başarısız olması,
  • İstek atılan servis ya da…

Microservice mimarisini düşündüğümüzde çözülmesi gereken en önemli problemlerden biri güvenliktir. Authentication ve Authorization ise güvenliğin en önemli noktalarını oluşturmaktadır.

Microservice mimarisinde birden fazla servisimiz dağıtılmış bir şekilde konumlanır ve bu nedenle en önemli konulardan biri de Authentication yapısının nasıl kurulacağıdır. Geleneksel monolitik mimaride bu iş çok daha kolay bir şekilde çözümlenebiliyor. Tek bir uygulamanın gelen her isteği doğrulaması tek bir mekanizmayla halledilebilirken, durum microservice mimarisinde oldukça karmaşık bir hale geliyor. Hatta öyle ki benim “en iyi nasıl yaparız” diye kafa patlatıp araştırıp en iyi yöntem budur diye, kesin bir sonuca uzunca bir süre varamadığım bir sorunsal haline gelmiştir.

Kavram kargaşasını…


Bir java geliştiricinin büyük bir projede PHP ile olan serüvenini, karşılaştığı zorlukları ve güzellikleri anlattığı mini bir yazıdır.

Öncelikle bu yazının bir dil karşılaştırması olmadığını belirtmem gerekiyor. Dört yıllık profesyonel java geliştiriciliği deneyimimin ardından karşıma PHP geliştirme yolu çıktı. Her şeyin, her farklı tecrübenin insana birçok şey kattığını düşünenlerdenim. Ben de denedim, deneyimledim.

Yaklaşık 10–11 aylık bir süreçte onlarca özellik geliştirmesi, yüzlerce bug-fix yapma fırsatım oldu. Çok da iyi yazılımcılarla çalışma fırsatı buldum. PHP sürekli yenilenmesi ve hızıyla önceden beridir oluşan ön yargıları kırmak üzere oldukça güzel iyileştirmeler ve ek özellikler barındırmaya başladı. Ayrıca OOP için birçok yeni geliştirme ve…


Whatsapp sadece bir mesajlaşma uygulaması olmaktan çıktı. Şirketlerin/işletmelerin müşterilerine destek sunabilmeleri ve satış kanalı olarak kullanabilmeleri için WhatsApp Business modelini bizlere sundu. Whatsapp Business modeli iki tipten oluşuyor. Birincisi WhatsApp Business App daha çok küçük işletmeler için şirket kimliklerini yansıtabilecekleri iş profillerini oluşturma, otomatik cevap verme gibi birçok özelliğe sahiptir. İkincisi ve bizim üzerine daha çok değineceğimiz model ise WhatsApp Business API’dir.

WhatsApp Business API ile şirket profili oluşturabilir, mesaj gönderebilir ve istediğiniz entegrasyon ile API’ları kullanarak mesajları alabilirsiniz ve özelleştirip gönderebilirsiniz. Ayrıca mesaj şablonları oluşturup kullanabilirsiniz, API ve webhook’lar sayesinde sisteminize entegre edebilirsiniz. …


Dependency injection kaba tabir ile bir sınıfın/nesnenin bağımlılıklardan kurtulmasını amaçlayan ve o nesneyi olabildiğince bağımsızlaştıran bir programlama tekniği/prensibidir.

Dependency Injection: Yazılım bağımlılığı sevmez.

Dependency Injection uygulayarak; bir sınıfının bağımlı olduğu nesneden bağımsız hareket edebilmesini sağlayabilir ve kod üzerinde olası geliştirmelere karşın değişiklik yapma ihtiyacını ortadan kaldırabilirsiniz.


‘Bir microservice mimarisinin tasarımı nasıl olmalıdır, hangi yapılardan oluşuyor, olmazsa olmazları nelerdir’ sorularını cevaplayalım.

Microservice Mimarisi makale serisinin önceki yazılarından, microservice mimarisi hakkında temel edinebilirsiniz. Bu makalede, microservice mimarisinin backend özelinde derinliğine inerek gerçek bir uygulamadaki halini öğrenebilirsiniz.

Microserviceleri kullanarak bir uygulama oluşturmadan önce, uygulamanızın kapsamı ve işlevlerinin iyi belirlenmiş olması gerekmektedir. Bu, tüm özellikleri ön görmeniz gerekiyor anlamına gelmez. Uygulamanın şu anki isterlerini ve yapılacak işleri bilmeniz anlamına gelmektedir ve bunları geliştirirken microservice mimarisi gerekirse yeni özellikler eklenebilmesini kolaylaştıracaktır.

Bir microservice nasıl olmalıdır sorusunun cevabını daha önceki yazılarda özetlemiştik, ancak bir kez daha üstünden geçmekte yarar var.

  • Her servis…

Spring Boot üzerinde configurasyon dosyaları içerisindeki gizli kalmasını istediğimiz password, database url gibi kısımları jasypt kütüphanesini kullanarak şifreleyebiliriz.

Configurasyon(yaml) dosyamdaki pw alanını şifrelemek istiyorum. (application.yml)

secret:
pw: bunu sifreliyorum

İlk olarak şifreleme işlemini yapabilmek amacıyla http://www.jasypt.org/ üzerinden en son sürümün jasypt-dist kısmını indirebilirsiniz. Bölyece yapacağımız işlemler için çalışan sh/bat dosyalarını elde etmiş olacağız. Dosyaya eriştiğimizde; jasypt-1.9.3/bin içerisinde aşağıdaki dosyalar bulunmalıdır.

  • decrypt.bat
  • digest.sh
  • listAlgorithms.bat
  • decrypt.sh
  • encrypt.bat
  • listAlgorithms.sh
  • digest.bat encrypt.sh

encrypt.sh’ı kullanarak şifreleme işlemimizi gerçekleştirebiliriz.

./encrypt.sh input=’bunu sifreliyorum’ password=’sifrelemeparalom’

ve çıktısı;

 — — ENVIRONMENT — — — — — — — — -Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.201-b09

Gökhan Ayrancıoğlu

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store