it Новости Введение в микросервисы с помощью Spring Boot и Docker
Введение в микросервисы с помощью Spring Boot и Docker

Введение в микросервисы с помощью Spring Boot и Docker

7 323
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<User, Long> {
}


Шаг 4: Создание контроллера пользователей

@RestController
@RequestMapping("/users")
public class UserController {
	@Autowired
	private UserRepository userRepository;

	@GetMapping
	public List<User> 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<Order, Long> {
}


Шаг 3: Создание контроллера заказов

@RestController
@RequestMapping("/orders")
public class OrderController {
	@Autowired
	private OrderRepository orderRepository;

	@GetMapping
	public List<Order> 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 упрощает процесс развертывания и управления. Начните использовать микросервисы в своих проектах, чтобы повысить их устойчивость и эффективность.

Больше интересных новостей

Комментарии (1)
Добавить комментарий

Dosymzhan 23 июня 2025 в 10:14

перед docker build надо сделать ./mvnw clean package возможно потом еще придется менять название jar файла, спасибо за тутор!
Ответить