Контейнеры и микросервисы

Контейнеры и микросервисы #

Документ посвящён необходимым знаниям, относящимся к контейнерам и микросервисам.

Docker #

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

Преимущества и удобства:

  • Локальная разработка - развернуть копию проекта, запустить одной командой конкретную версию нужной базы данных
  • Деплой - единожды собранный образ работает одинаково и локально, и на удалённом сервисе

Что нужно знать:

  • Отличие контейнеров от виртуальных машин - https://www.youtube.com/watch?v=cjXI-yxqGTI
  • Базовые идеи и понятия - контейнеры, образы, Docker layers, volumes
  • Поиск образов нужных приложений на Docker Hub и их локальный запуск
  • Работа с Docker CLI - сборка образов, запуск контейнеров, доступ к терминалу контейнера и логам
  • Dockerfile - написание сценариев сборки образа
  • Docker Compose - запуск стека из нескольких взаимодействующих друг с другом контейнеров
  • Docker в контексте Spring Boot - Dockerfile для сборки и запуска приложения

Избранные курсы и учебные ресурсы #

Что дальше (уровень middle и выше):

  • Kubernetes
  • Облачные технологии

Микросервисы #

Микросервисы - актуальный подход к проектированию систем, основанный на разбиении системы на небольшие независимые сервисы, каждый из которых решает свою задачу. Идеи микросервисного подхода можно почерпнуть из первой главы книги “Building Microservices: Designing Fine-Grained Systems”.

На уровне Junior, как правило, не приходится заниматься проектированием, поэтому для начала важно сконцентрироваться на прикладных аспектах разработки микросервисов:

  • Подходы кросс-сервисного взаимодействия - REST, RPC, брокеры очередей
  • Docker Compose для локальной разработки стека из микросервисов
  • Организация микросервисных проектов, монорепозиторий (один репозиторий для всех сервисов) против отдельного репозитория для каждого сервиса - Mono vs Multi Repos - Pick Your Poison

Избранные курсы и учебные ресурсы #

  • Введение в тему - “O’Reilly - Software Architecture Patterns” - главы Event-driver Architecture, Microservices Architecture
  • “Building Microservices: Designing Fine-Grained Systems” by Sam Newman
  • Kafka:
  • Практика:
    • Проект #7 “Планировщик задач” - разработка проекта в миросервисном стиле (3 сервиса на Spring Boot и 1 сервис для фронтенда), кросс-сервисное общение через брокер сообщений Kafka

Что дальше (уровень middle и выше):

  • Проектирование микросервисных систем, микросервисные паттерны
  • Мониторинг
  • Отказоустойчивость и масштабирование
  • Нагрузочное тестирование