Skip to content

Latest commit

 

History

History
executable file
·
130 lines (79 loc) · 17 KB

11-microservices-03-approaches.md

File metadata and controls

executable file
·
130 lines (79 loc) · 17 KB

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

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

Задача 1: Обеспечить разработку

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

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

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

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

Ответ:

Для обеспечения процесса разработки с учетом указанных требований, предлагается использовать инструменты и сервисы, предоставляемые GitLab CI/CD - это часть GitLab, облачной системы управления исходным кодом и CI/CD, который позволяет автоматизировать процессы разработки, тестирования и развертывания.

Почему GitLab CI/CD:

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

  • Поддержка Git и множество репозиториев: GitLab поддерживает систему контроля версий Git и позволяет создавать неограниченное количество репозиториев, что соответствует требованию иметь репозиторий для каждого сервиса.

  • Автоматические сборки и тестирование: GitLab CI/CD позволяет настроить автоматические сборки для каждого изменения в репозитории (CI), а также тестирование и развертывание (CD). Сборки могут быть запущены по событию из системы контроля версий (например, новый коммит) или по кнопке с указанием параметров (мануальный запуск).

  • Конфигурация и настройки сборок: GitLab CI/CD позволяет создавать настраиваемые пайплайны для сборок. Вы можете привязывать настройки к каждой сборке и создавать шаблоны для различных конфигураций сборок.

  • Безопасное хранение секретных данных: GitLab CI/CD предоставляет возможность хранить секретные данные (пароли, ключи доступа) в зашифрованных переменных среды. Эти переменные могут быть использованы в настройках сборок без их отображения в явном виде.

  • Пользовательские и кастомные шаги: GitLab CI/CD позволяет создавать пользовательские шаги для сборок, что позволяет настроить пайплайн в соответствии с конкретными потребностями проекта.

  • Docker и контейнеры: GitLab CI/CD легко интегрируется с Docker, что позволяет создавать собственные Docker-образы для сборки проектов и их развертывания.

  • Развертывание агентов сборки: GitLab CI/CD поддерживает возможность развертывания агентов сборки (runners) на собственных серверах, что обеспечивает более гибкую настройку и управление средой выполнения сборок.

  • Параллельные сборки и тестирование: GitLab CI/CD позволяет запускать сборки и тестирование параллельно, что обеспечивает оптимизацию времени выполнения процесса CI/CD.

Итак, GitLab CI/CD предоставляет все необходимые инструменты для обеспечения непрерывной интеграции и непрерывной поставки, а также удовлетворяет требованиям облачной системы, системы контроля версий Git, автоматических сборок, кастомных настроек и безопасного хранения секретных данных.

Задача 2: Логи

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

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

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

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

Ответ:

Для обеспечения сбора и анализа логов сервисов в микросервисной архитектуре рекомендуется использовать Elastic Stack (ранее известный как ELK Stack), который включает в себя следующие компоненты:

  • Elasticsearch: Центральное хранилище данных и мощный поисковой и аналитический движок. Elasticsearch может хранить и индексировать большие объемы данных и обеспечивает эффективный поиск и фильтрацию логов.

  • Logstash: Инструмент для сбора, обработки и отправки логов и других данных в Elasticsearch. Logstash поддерживает сбор логов из различных источников, включая stdout, и обеспечивает структурирование данных перед их отправкой в Elasticsearch.

  • Kibana: Веб-интерфейс для визуализации и анализа данных, хранящихся в Elasticsearch. Kibana предоставляет гибкие инструменты для поиска, фильтрации, визуализации и анализа логов. Разработчики могут использовать Kibana для создания пользовательских дашбордов и запросов к данным.

Теперь рассмотрим, как это решение соответствует нашим требованиям:

  • Сбор логов в центральное хранилище: Logstash собирает логи со всех хостов и направляет их в Elasticsearch для хранения и анализа.

  • Минимальные требования к приложениям: Сбор логов из stdout поддерживается, что делает его удобным для микросервисов, которые обычно логируют в stdout.

  • Гарантированная доставка логов: Elasticsearch обеспечивает надежное и устойчивое хранение данных, а Logstash имеет механизмы обработки ошибок и повторной отправки данных для гарантированной доставки логов.

  • Поиск и фильтрация по записям логов: Elasticsearch обладает мощным языком запросов, позволяющим проводить сложные поиски и фильтрации по логам.

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

  • Сохранение и обмен поисками: Kibana позволяет сохранять запросы и визуализации, предоставляя возможность генерировать ссылки на сохраненные поиски и дашборды.

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

Задача 3: Мониторинг

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

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

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

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

Ответ:

Для обеспечения сбора и анализа состояния хостов и сервисов в микросервисной архитектуре рекомендуется использовать Prometheus для сбора метрик и Grafana для визуализации и анализа данных.

Почему Prometheus и Grafana:

  1. Prometheus:
  • Сбор метрик со всех хостов и сервисов: Prometheus является системой мониторинга и сбора метрик, которая может быть настроена для сбора метрик из различных источников, включая хосты и микросервисы.
  • Сбор метрик состояния ресурсов хостов и сервисов: Prometheus может собирать метрики о ресурсах хостов (CPU, RAM, HDD, Network) и сервисов, что обеспечивает полное представление о состоянии системы.
  • Сбор специфичных метрик: Prometheus легко расширяем и позволяет разработчикам определять свои собственные метрики для каждого сервиса в зависимости от их уникальных требований.
  • Пользовательский интерфейс: Prometheus предоставляет простой веб-интерфейс для запросов к данным и мониторинга состояния системы.
  1. Grafana:
  • Визуализация и анализ данных: Grafana является мощным инструментом для визуализации данных и создания графиков, диаграмм и дашбордов на основе метрик, собранных Prometheus. Она предоставляет гибкие возможности агрегирования и представления данных.
  • Пользовательские запросы и агрегация: Grafana обладает интерактивным пользовательским интерфейсом, который позволяет делать сложные запросы к данным и агрегировать информацию для создания информативных дашбордов.
  • Настраиваемые панели: Разработчики могут создавать различные панели на дашбордах, настраивая их для отслеживания состояния системы, включая метрики ресурсов и специфичные метрики каждого сервиса.

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