it Новини Введення в мікросервіси за допомогою Spring Boot та Docker
Введення в мікросервіси за допомогою Spring Boot та Docker

Введення в мікросервіси за допомогою Spring Boot та Docker

7 200
22 травня 2024 в 18:30

Мікросервісна архітектура стала дуже популярною серед розробників програмного забезпечення завдяки своїм перевагам, таким як масштабованість, гнучкість та незалежність компонентів.

У цій статті ми розглянемо основні концепції мікросервісів та покажемо, як можна використовувати Spring Boot та Docker для створення та розгортання мікросервісів.


Що таке мікросервіси?

Мікросервіси - це архітектурний стиль, що структурує додаток як набір невеликих, незалежних сервісів, які взаємодіють один з одним через чітко визначені API. Кожен мікросервіс відповідає за виконання конкретної бізнес-логіки та може бути розроблений, розгорнутий та масштабований незалежно від інших сервісів.


Переваги мікросервісів:

  1. Кожен мікросервіс можна масштабувати окремо, що дозволяє ефективно використовувати ресурси.
  2. Легко впроваджувати нові технології та інструменти в окремі мікросервіси.
  3. Мікросервіси можна розгортати незалежно один від одного, що прискорює цикл розробки та розгортання.
  4. Збій одного мікросервісу не призводить до відмови всього додатку.


Spring Boot

Spring Boot - це проект на базі фреймворка Spring, який спрощує створення та налаштування додатків Spring. Він надає готові шаблони та налаштовані компоненти для швидкого старту розробки додатків. Spring Boot ідеально підходить для створення мікросервісів завдяки своїм можливостям і простоті використання.


Spring Boot автоматично налаштовує ваш додаток на основі залежностей, зазначених у проекті. Він має можливість запуску додатка з використанням вбудованого сервера (наприклад, Tomcat або Jetty), що спрощує процес розробки та тестування. Також у ньому є набори залежностей, які спрощують підключення необхідних бібліотек для проекту. Плюс у ньому є набір інструментів для моніторингу та управління додатком на базі Spring Boot.


Контейнеризація Docker

Docker - це платформа для розробки, розгортання та запуску додатків у контейнерах. Контейнери дозволяють ізолювати додаток та його залежності від хостової системи, що робить процес розгортання більш передбачуваним та повторюваним.


Основні функції Docker:

  1. Ізоляція додатків та їх залежностей у контейнерах.
  2. Шаблони, з яких створюються контейнери. Образи можна зберігати та поширювати через Docker Hub.
  3. Управління великою кількістю контейнерів за допомогою інструментів оркестрації, таких як Kubernetes та Docker Swarm.


Практична реалізація мікросервісів з використанням Spring Boot та Docker

Давайте створимо простий проект мікросервісів з використанням Spring Boot та Docker. Припустимо, у нас є два мікросервіси: сервіс користувачів і сервіс замовлень. Ми почнемо зі створення кожного мікросервісу окремо, а потім упакуємо їх у Docker-контейнери та запустимо.


Створення мікросервісу користувачів

Крок 1: Створення нового проекту Spring Boot

Створіть новий проект Spring Boot, використовуючи Spring Initializr, та додайте залежності 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 спрощує процес розгортання та управління. Почніть використовувати мікросервіси у своїх проектах, щоб підвищити їх стійкість та ефективність.

Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Більше цікавих новин

Коментарі
Додати коментар

Поки що коментарів немає