Spring Boot ile Mikroservis Mimarisi

Mikroservis Mimarisi Nedir?
Mikroservis mimarisi, büyük ve karmaşık uygulamaları küçük, bağımsız ve işlevsel hizmetlere (servis) bölerek geliştirme yaklaşımıdır. Her mikroservis, belirli bir işlevi yerine getirir ve diğer mikroservislerle haberleşir. Bu mimari, geliştirme, test, dağıtım ve bakım süreçlerini kolaylaştırır.
Spring Boot ile Mikroservisler Oluşturma
Spring Boot, mikroservis mimarisine uygun uygulamalar geliştirmek için idealdir. İşte bir mikroservis oluşturma adımları:
1. Proje Oluşturma
Spring Initializr’ı kullanarak mikroservis projesi oluşturun:
- Project: Maven Project
- Language: Java
- Spring Boot: 3.3.0 (veya en son sürüm)
- Dependencies: Spring Web, Spring Boot DevTools, Spring Data JPA, H2 Database (veya tercih ettiğiniz veritabanı)
2. Mikroservis Yapısı
Mikroservisler genellikle aşağıdaki yapıya sahiptir:
src/main/java/com/example/orderservice
|-- OrderServiceApplication.java
|-- controller
|-- OrderController.java
|-- service
|-- OrderService.java
|-- model
|-- Order.java
|-- repository
|-- OrderRepository.java
3. Model Sınıfı Oluşturma
src/main/java/com/example/orderservice/model/Order.java
dosyasını oluşturun:
package com.example.orderservice.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String product;
private int quantity;
private double price;
// Getters and Setters
}
4. Repository Arayüzü
src/main/java/com/example/orderservice/repository/OrderRepository.java
dosyasını oluşturun:
package com.example.orderservice.repository;
import com.example.orderservice.model.Order;
import org.springframework.data.jpa.repository.JpaRepository;
public interface OrderRepository extends JpaRepository<Order, Long> {
}
5. Servis Katmanı
src/main/java/com/example/orderservice/service/OrderService.java
dosyasını oluşturun:
package com.example.orderservice.service;
import com.example.orderservice.model.Order;
import com.example.orderservice.repository.OrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
public List<Order> getAllOrders() {
return orderRepository.findAll();
}
public Order getOrderById(Long id) {
return orderRepository.findById(id).orElse(null);
}
public Order saveOrder(Order order) {
return orderRepository.save(order);
}
public void deleteOrder(Long id) {
orderRepository.deleteById(id);
}
}
6. Controller Katmanı
src/main/java/com/example/orderservice/controller/OrderController.java
dosyasını oluşturun:
package com.example.orderservice.controller;
import com.example.orderservice.model.Order;
import com.example.orderservice.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/orders")
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping
public List<Order> getAllOrders() {
return orderService.getAllOrders();
}
@GetMapping("/{id}")
public Order getOrderById(@PathVariable Long id) {
return orderService.getOrderById(id);
}
@PostMapping
public Order createOrder(@RequestBody Order order) {
return orderService.saveOrder(order);
}
@DeleteMapping("/{id}")
public void deleteOrder(@PathVariable Long id) {
orderService.deleteOrder(id);
}
}
7. Ana Uygulama Sınıfı
src/main/java/com/example/orderservice/OrderServiceApplication.java
dosyasını oluşturun:
package com.example.orderservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
8. Uygulamayı Çalıştırma
Projeyi çalıştırarak veya terminalden mvn spring-boot:run
komutunu kullanarak mikroservis uygulamanızı başlatın. Tarayıcınızı açın ve http://localhost:8080/orders
adresine giderek mikroservis endpoint'lerinizi test edin.
Sonuç
Bu makalede, Spring Boot kullanarak basit bir mikroservis nasıl oluşturulacağını öğrendiniz. Mikroservislerinizi Docker ile konteynerleştirerek, Kubernetes ile orkestrasyon yaparak ve çeşitli izleme araçları ile gözlemleyerek daha da ileri seviyeye taşıyabilirsiniz. Bir sonraki yazımızda bu konuları inceleyeceğiz.