Hər mikroservisin öz xüsusi bazası olur. Heç bir servis digərinin bazasına birbaşa daxil ola bilməz — yalnız API vasitəsilə.
Servislərin bir-birindən asılı olmaması (Loose Coupling) üçün. Bir servisin baza sxemini dəyişməsi digərinə mane olmamalıdır.
Hər servis özünə uyğun baza seçə bilər: User → PostgreSQL, Catalog → MongoDB, Search → Elasticsearch.
Kubernetes-də hər servisin öz DB pod-u olur. Schema migration-lar müstəqil aparılır (Flyway/Liquibase).
# Hər servisin öz database konfiqurasiyası
spring:
datasource:
url: jdbc:postgresql://user-db:5432/userdb
username: user_svc
password: ${DB_PASSWORD}
jpa:
hibernate:
ddl-auto: validate
flyway:
enabled: true # Schema migration — müstəqil
@Service
public class OrderService {
private final UserClient userClient; // Feign Client
public OrderResponse createOrder(OrderRequest req) {
// ❌ YANLIŞ: userRepository.findById() — Bazasına birbaşa girə bilməz!
// ✅ DOĞRU: API vasitəsilə alır
UserDto user = userClient.getUser(req.getUserId());
// ... sifarişi yarat
}
}