Введення в мікросервіси за допомогою Spring Boot та Docker
Мікросервісна архітектура стала дуже популярною серед розробників програмного забезпечення завдяки своїм перевагам, таким як масштабованість, гнучкість та незалежність компонентів.
У цій статті ми розглянемо основні концепції мікросервісів та покажемо, як можна використовувати Spring Boot та Docker для створення та розгортання мікросервісів.
Що таке мікросервіси?
Мікросервіси - це архітектурний стиль, що структурує додаток як набір невеликих, незалежних сервісів, які взаємодіють один з одним через чітко визначені API. Кожен мікросервіс відповідає за виконання конкретної бізнес-логіки та може бути розроблений, розгорнутий та масштабований незалежно від інших сервісів.
Переваги мікросервісів:
- Кожен мікросервіс можна масштабувати окремо, що дозволяє ефективно використовувати ресурси.
- Легко впроваджувати нові технології та інструменти в окремі мікросервіси.
- Мікросервіси можна розгортати незалежно один від одного, що прискорює цикл розробки та розгортання.
- Збій одного мікросервісу не призводить до відмови всього додатку.
Spring Boot - це проект на базі фреймворка Spring, який спрощує створення та налаштування додатків Spring. Він надає готові шаблони та налаштовані компоненти для швидкого старту розробки додатків. Spring Boot ідеально підходить для створення мікросервісів завдяки своїм можливостям і простоті використання.
Spring Boot автоматично налаштовує ваш додаток на основі залежностей, зазначених у проекті. Він має можливість запуску додатка з використанням вбудованого сервера (наприклад, Tomcat або Jetty), що спрощує процес розробки та тестування. Також у ньому є набори залежностей, які спрощують підключення необхідних бібліотек для проекту. Плюс у ньому є набір інструментів для моніторингу та управління додатком на базі Spring Boot.
Docker - це платформа для розробки, розгортання та запуску додатків у контейнерах. Контейнери дозволяють ізолювати додаток та його залежності від хостової системи, що робить процес розгортання більш передбачуваним та повторюваним.
Основні функції Docker:
- Ізоляція додатків та їх залежностей у контейнерах.
- Шаблони, з яких створюються контейнери. Образи можна зберігати та поширювати через Docker Hub.
- Управління великою кількістю контейнерів за допомогою інструментів оркестрації, таких як Kubernetes та Docker Swarm.
Практична реалізація мікросервісів з використанням Spring Boot та Docker
Давайте створимо простий проект мікросервісів з використанням Spring Boot та Docker. Припустимо, у нас є два мікросервіси: сервіс користувачів і сервіс замовлень. Ми почнемо зі створення кожного мікросервісу окремо, а потім упакуємо їх у Docker-контейнери та запустимо.
Створення мікросервісу користувачів
Крок 1: Створення нового проекту Spring Boot
Створіть новий проект Spring Boot, використовуючи , та додайте залежності Spring Web і Spring Data JPA.
Крок 2: Визначення сутності користувача
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Геттери та сеттери
}Крок 3: Створення репозиторію користувачів
public interface UserRepository extends JpaRepository {
}Крок 4: Створення контролера користувачів
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public List getAllUsers() {
return userRepository.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
}Крок 5: Конфігурація бази даних
Додайте конфігурацію бази даних у файл application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/users
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=updateСтворення Dockerfile для мікросервісу користувачів
Створіть файл Dockerfile у корені проекту:
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY target/user-service.jar user-service.jar
ENTRYPOINT ["java","-jar","/user-service.jar"]
Створіть образ Docker:
docker build -t user-service .Створення мікросервісу замовлень
Процес створення мікросервісу замовлень аналогічний створенню мікросервісу користувачів. Створіть новий проект Spring Boot та додайте необхідні залежності.
Крок 1: Визначення сутності замовлення
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private String product;
private int quantity;
// Геттери та сеттери
}Крок 2: Створення репозиторію замовлень
public interface OrderRepository extends JpaRepository {
}Крок 3: Створення контролера замовлень
@RestController
@RequestMapping("/orders")
public class OrderController {
@Autowired
private OrderRepository orderRepository;
@GetMapping
public List getAllOrders() {
return orderRepository.findAll();
}
@PostMapping
public Order createOrder(@RequestBody Order order) {
return orderRepository.save(order);
}
}Крок 4: Конфігурація бази даних
Додайте конфігурацію бази даних у файл application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/orders
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=updateСтворення Dockerfile для мікросервісу замовлень
Створіть файл Dockerfile у корені проекту:
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY target/order-service.jar order-service.jar
ENTRYPOINT ["java","-jar","/order-service.jar"]
Створіть образ Docker:
docker build -t order-service .Запуск мікросервісів з використанням Docker Compose
Для спрощення розгортання мікросервісів ми будемо використовувати Docker Compose. Створіть файл docker-compose.yml:
version: '3'
services:
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: yourpassword
MYSQL_DATABASE: users
MYSQL_DATABASE: orders
ports:
- "3306:3306"
user-service:
image: user-service
ports:
- "8081:8080"
depends_on:
- mysql
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/users
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: yourpassword
order-service:
image: order-service
ports:
- "8082:8080"
depends_on:
- mysql
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/orders
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: yourpasswordЗапустіть Docker Compose:
docker-compose up
Висновок
Ми розглянули основні концепції мікросервісів та показали, як можна використовувати Spring Boot та Docker для створення та розгортання мікросервісів. Мікросервісна архітектура дозволяє створювати масштабовані та гнучкі додатки, а використання Docker спрощує процес розгортання та управління. Почніть використовувати мікросервіси у своїх проектах, щоб підвищити їх стійкість та ефективність.
Більше цікавих новин
Фронтенд: головні тренди 2024 року
7 девушек айтишниц из фильмов и сериалов
JavaScript фреймворки / Какой учить в 2018 году?
ТОП-5 Кращих Фреймворків CSS