Java Spring Boot Cloud Native Uygulama — Microservice
Spring framework içersinde farkı java bileşenlerini bulunduran bir çatıdır. Java’nın open source olarak geliştirilmesi sebebi ile bir birinden ayrık bir çok tool, kütüphane ve araçlar türemiştir. Bunlardan biri de spring boot framework’dür.
Özellikle içinde bulundurduğu bileşenler sayesinde microservice yapılarında sıkça kullanılmaktadır.
Spring boot içinde bulunan ve sıkça kullanılan microservice bileşenlerinden bazıları şunlardır;
Config Server: Yazdığımız microservice’lerin config’lerini ortak bir yerden yönetmemizi sağlar.
Service Registry: Host ettiğimiz microservice’leri startup ‘da service registry’e kayıt ederek http akışlarını ve ayağa kaldırdığımız servislerin url ve port bilgilerini kullanarak daha rahat route etmemizi sağlayan yapıdır.
Api Gateway: Microservice mimari yapılarının olmazsa olmaz bileşenlerinden biridir. Microservice yapılarına gelen requestleri ilgili servislere route eden , auth kontrolü , loging v.s. kabiliyetleri sunan bir bileşendir.
Detaylı bilgiye resmi sitesinden ulaşlabilirsiniz: https://spring.io/microservices
Spring boot üzerinde örnek bir microservice oluşturmak için aşağıdaki siteye girelim.
Yeni bir spring blank projesi oluşturalım. Maven veya gradle paket yöneticilerinden birini seçerek proje group, artifact, name, description, package name bilgilerini girelim. Bir rest api projesi oluşturacağımız için dependencies bölümünden web paketini ekleyelim.
İndirdiğimiz zipin içinden çıkan maven projemizi Eclipse veya farklı bir ide açarak existing import edelim.
Ardından src/main/java folder altına iki tane paket ekleyelim com.demoaplication.Controller ve com.demoaplication.Model
Model paketimizin altına bir tane model tanımlayalım.
Ardından controller paketinin altında TicketController.java dosyası ekleyerek aşağıdaki kodu ekleyelim.
Bir tane ticket objesi oluşturarak return ediyoruz.
Evet uygulama bu kadar kısa şimdi projemizi çalıştırarak. http://localhost:8080/ticket adresine get isteği atalım ve aşağıdaki response çıktısını görelim.
{
"name": "Istanbul to Ankara",
"id": 1
}
Tabiki bu uygulamamızı çok basit bir şekilde kurguladık. Katmanlı mimariye uygun olarak controller, service, repostory, model, utils katmanlarını da araştırmanızı öneririm.
Bir sonraki yazımızda görüşmek dileğiyle. Hoşçakalın..
Repo: