Spring Cloud, Spring Boot ve Eureka Server Kullanarak Microservice Örneği
Spring Cloud, Spring Boot ve Eureka Server kullanarak microservice uygulaması geliştireceğiz.
Microservice kavramını, en basit şu şekilde tanımlayabiliriz; Bir uygulamanın atomik parçalara bölünüp küçük servislerin oluşturulduğu mimari bir yaklaşımdır. Bunun bir çok faydası vardır. Bu servisleri geliştirirken istediğimiz dili kullanabiliriz. Uygulamanın daha esnek ve ölçülebilir olması gibi bir çok fayda daha sayılabiliriz. Bunun karşıtı yaklaşım ise monolithic/layered mimarisidir.
Teorik anlatım üzerinde çok fazla durmayacağım. Basit bir uygulama yapacağım.
Service registration işlemi için Eureka Server’i kullanacağız. Eureka Server, Netflix tarafından geliştirilmiştir. Ayrıca açık kaynak kodlu bir projedir.
Uygulama üç projeden oluşacaktır. Bu projelerden birincisi Eureka Server, ikinci proje film listesi getiren movie server, son proje ise movie client olarak tasarlayacağız.
1- Eureka Server
Uygulamanın pom.xml dosyası aşağıdaki gibidir.
Server port bilgisini ve eureka server bilgilerini girmek için, application.yml veya application.properties dosyalarından biri tanımlanmalıdır.
Ben, üç projede de application.properties dosyasını kullanacağım.
Server çalıştırdıktan sonra http://localhost:9999 adresinden “Spring Eureka” bilgilendirme ekranını görüntüleyebilirsiniz. Kırmızı ile işaretlenmiş kısımda şu anda çalışmakta olan servisler görüntülenmektedir. Fakat çalışmakta olan bir servis olmadığından liste boştur.
2- Movie Server
Bu servisin amacı ise istek gönderdiğimizde bize iki filmden oluşan bir liste dönmesidir. Bu kısım sadece veri sağlayacak. Görüntüleme ile ilgili herhangi bir işlem yapılmayacaktır.
application.properties dosyasına port bilgisi girilmediğinde varsayılan port 8080 dir.
Server çalıştırdıktan sonra http://localhost:9999 adresine tekrar baktığımızda bootstrap.properties dosyasında uygulama adı (MOVIE_SERVICE) görüntülecektir.
3- Movie Client
Bu kısımda ise 2. kısımda yapmış olduğumuz Movie Server projesine istek göndereceğiz ve orada oluşturulmuş bilgi ekranda görüntülenecektir.
DiscoveryClient sınıfının getInstances metodu kullanılarak istediğimiz service ile veri alış verişi yapabiliriz.
Movie Client üzerinden istek gönderilerek elde ettiğimiz veriyi ekranda görüntülüyoruz.
http://localhost:9090/ şeklinde bir istek gönderdiğimizde MovieController altındaki handleRequest metodu çalışır. Bu metod içerisinde discoveryClient.getInstance kullanılarak Movie Server servisi bulunur ve http://localhost:8080/list adresine istek atılır, daha sonra alınan veri ekranda görüntülenir.
İlgili projelere aşağıdaki linklerden ulaşabilirsiniz.
Eureka Server: https://github.com/mtnaln/movie_eureka_server-
Movie Server: https://github.com/mtnaln/movie_server
Movie Client: https://github.com/mtnaln/movie_client
İyi günler,
Bol kodlamalar :)