Skip to content

GaliFrey/microservices-hw-04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Домашнее задание к занятию «Микросервисы: масштабирование»

Вы работаете в крупной компании, которая строит систему на основе микросервисной архитектуры. Вам как DevOps-специалисту необходимо выдвинуть предложение по организации инфраструктуры для разработки и эксплуатации.

Задача 1: Кластеризация

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

Решение должно соответствовать следующим требованиям:

  • поддержка контейнеров;
  • обеспечивать обнаружение сервисов и маршрутизацию запросов;
  • обеспечивать возможность горизонтального масштабирования;
  • обеспечивать возможность автоматического масштабирования;
  • обеспечивать явное разделение ресурсов, доступных извне и внутри системы;
  • обеспечивать возможность конфигурировать приложения с помощью переменных среды, в том числе с возможностью безопасного хранения чувствительных данных таких как пароли, ключи доступа, ключи шифрования и т. п.

Обоснуйте свой выбор.

Ответ

Для развёртывания и управления микросервисами я предлагаю использовать Kubernetes.

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

Как будет работать решение

Каждый микросервис упаковывается в контейнер и запускается в Kubernetes-кластере.

Внутри кластера сервисы могут находить друг друга и обмениваться запросами. Для пользователей извне открываются только нужные точки входа, например frontend или API. Остальные сервисы остаются доступными только внутри системы.

Если нагрузка на приложение увеличивается, Kubernetes может запустить дополнительные экземпляры сервиса. Это называется горизонтальным масштабированием.

Также можно настроить автоматическое масштабирование, чтобы количество запущенных контейнеров менялось в зависимости от нагрузки.

Конфигурацию приложений можно передавать через переменные окружения. Обычные настройки хранятся отдельно от приложения, а чувствительные данные, например пароли, токены и ключи, хранятся в защищённом виде.

Соответствие требованиям

Требование Как выполняется Пример технологий
Поддержка контейнеров Приложения запускаются в контейнерах внутри Kubernetes Docker, Kubernetes
Обнаружение сервисов и маршрутизация Сервисы могут находить друг друга внутри кластера и обмениваться запросами Kubernetes Service, CoreDNS
Горизонтальное масштабирование Можно запускать несколько экземпляров одного сервиса Kubernetes Deployment
Автоматическое масштабирование Система автоматически меняет количество экземпляров в зависимости от нагрузки Horizontal Pod Autoscaler (HPA)
Разделение внешних и внутренних ресурсов Публичные сервисы доступны извне, внутренние — только внутри кластера Ingress, Kubernetes Service
Конфигурация через переменные среды Настройки передаются приложению без изменения контейнерного образа ConfigMap
Безопасное хранение чувствительных данных Пароли, токены и ключи хранятся отдельно от приложения Kubernetes Secret, HashiCorp Vault

Обоснование выбора

Я выбрал Kubernetes, потому что это распространённое решение для микросервисной архитектуры. Оно позволяет централизованно управлять контейнерами, запускать несколько экземпляров сервисов, настраивать взаимодействие между ними и масштабировать систему.

Такой подход подходит для крупной компании, потому что при увеличении количества микросервисов ими становится проще управлять из одного места.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors