Giter Club home page Giter Club logo

netology-11-microservices-03-approaches's Introduction

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

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

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

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

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

  • Облачная система;
  • Система контроля версий Git;
  • Репозиторий на каждый сервис;
  • Запуск сборки по событию из системы контроля версий;
  • Запуск сборки по кнопке с указанием параметров;
  • Возможность привязать настройки к каждой сборке;
  • Возможность создания шаблонов для различных конфигураций сборок;
  • Возможность безопасного хранения секретных данных: пароли, ключи доступа;
  • Несколько конфигураций для сборки из одного репозитория;
  • Кастомные шаги при сборке;
  • Собственные докер образы для сборки проектов;
  • Возможность развернуть агентов сборки на собственных серверах;
  • Возможность параллельного запуска нескольких сборок;
  • Возможность параллельного запуска тестов;

Ответ:
Я бы предложил использовать Gitlab, так как он удовлетворяет всем требованиям. Можно использовать в облаке, есть система версионирования, возможно использование репозиториев на каждый сервис, запуск сборки через пайплайн с параметрами; с использованием yml-файлов можно привязывать настройки к сборкам, создавать шаблоны для различных конфигураций, использовать несколько конфигураций для сборки из одного репозитория; через параметр parallel в job возможен параллельный запуск нескольких сборок и параллельный запуск тестов.
Возможно и использование Teamсity, но мне кажется, что использование Gitlab проще.

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

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

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

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

Ответ:
Я бы предложил использовать стек ELK + Filebeat.
Elasticsearch используется в качестве центрального хранилища, Filebeat осуществляют сбор логов, Logstash осуществляют доставку и фильтрацию данных, Kibana предоставляет графический интерфейс.

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

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

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

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

Ответ:
Мое предложение для решения данной задачи использовать Prometheus + Grafana.
Node exporter для сбора метрик, Prometheus для хранения данных, Grafana - пользовательский интерфейс, с возможностью создания и настройки разлчиных дашбордов

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.