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

Что такое микросервисы?

По мере того, как приложения увеличивались в размерах, а инструменты DevOps становились все более совершенными, появилась новая программная архитектура: микросервисы. В последнее время популяризированные крупными технологическими компаниями архитектуры на основе микросервисов разрушают более традиционное монолитное приложение, разбивая его на отдельные сервисы. Каждая отдельная служба выполняет определенную задачу или задачи. Затем эти независимые сервисы можно интегрировать в одно большое приложение. Используя эту архитектуру, приложение может масштабироваться горизонтально, предоставляя разработчикам возможность выполнять обслуживание при расширении независимых служб, не беспокоясь о нарушении работы другой службы в процессе.

Возьмем в качестве примера приложение для социальных сетей. Возможно, он имеет множество функций, таких как потоковое видео, обмен личными сообщениями, обмен фотографиями и многое другое. Чтобы сократить общее использование серверов, инженеры могли бы попытаться встроить эти функции в независимо развернутые службы, которые позже будут интегрированы в единое целое. Если потоковое видео более популярно в вечернее время, балансировщики нагрузки серверов могут увеличить количество конкретных служб, необходимых для управления этой функцией. Точно так же, когда потоковое видео больше не используется так интенсивно, использование сервера может быть уменьшено. Это демонстрирует, как приложение может горизонтально масштабироваться на стороне сервера в зависимости от потребностей клиентов в определенное время, тем самым уменьшая общее использование сервера.

Отличным примером из реальной жизни является Netflix. Их команда начала переходить на микросервисы в конце 2008 года, и к 2015 году Netflix использовала более 500 микросервисов, размещенных на AWS. (Источник) Масштабирование и увеличение пользовательской базы имеет важное значение для бизнеса, особенно если этот бизнес растет такими же темпами, как и Netflix.

У нас в восемь раз больше участников потокового вещания, чем в 2008 году, и они гораздо активнее: общее количество просмотров выросло на три порядка за восемь лет.

-Нетфликс 2016 г.

(Если вы хотите больше узнать о микросервисах, ознакомьтесь с замечательной статьей команды AWS)

Итак, должны ли все перейти на микросервисы?

Ну, может быть сложно понять, когда — и если это возможно — перевести свой монолит на настройку микросервиса. Возможно, ваш трафик достаточно стабилен, или, возможно, маршрутизация вашего приложения уже подвергается сбоям в одно и то же время. В этих случаях лучше придерживаться монолитной структуры приложения. Стоимость перехода вашей команды разработчиков на микросервисную архитектуру также может быть довольно высокой. Вот тут-то и появляется Гимбап.

Представляем, Гимбап

Gimbap — это инструмент для разработчиков, который предоставляет рекомендации по кластеризации микросервисов на основе данных, чтобы помочь инженерам оценить преимущества перехода их монолитного приложения на архитектуру микросервисов. Гимбап состоит из двух основных компонентов:

  1. Пакет NPM, который изменяет объект приложения Express, чтобы отслеживать и сохранять время вызова отдельных конечных точек.
  2. Клиентское приложение React, которое будет визуализировать эти данные для мониторинга отдельных маршрутов и предоставления рекомендаций по кластеризации на основе схожих ковариантных оценок.

Ниже представлено наше клиентское приложение, доступное в браузере или на выбранной вами платформе. Используя мощь библиотеки Visx/D3, созданной Airbnb, мы можем продемонстрировать дендрограмму, которая будет отображать результаты наших алгоритмов кластеризации из группировки конечных точек на основе схожих ковариантных оценок.

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

Начать

Наше приложение основано на платформе Express и может быть настроено в течение нескольких минут. Это так же просто, как установить наш пакет npm и загрузить наше клиентское приложение.

Посетите нас онлайн на gimbap.io или на GitHub, чтобы начать.

Двигаться вперед

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

Поддержка SQL

В настоящее время Gimbap поддерживает добавление вашей собственной платформы MongoDB. Однако мы знаем, что многие разработчики предпочитают SQL, и мы планируем включить эту возможность в ближайшем будущем.

Дополнительное тестирование

Наша текущая настройка включает тестирование с помощью Jest, Supertest и Enzyme, чтобы поддерживать и гарантировать, что Gimbap обеспечивает точные и эффективные результаты в различных приложениях. Мы хотели бы продолжить тестирование по мере того, как мы итерируем и добавляем дополнительные функции в Gimbap.

Поддержка за пределами Express

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

Проверка ввода для Visx Chip

Все метрики имеют базовый метод проверки ввода, чтобы гарантировать, что данные отображаются правильно, но мы знаем, что всегда есть шанс поймать результаты, которые могли быть введены неправильно, для построения наших графиков Visx/D3. Двигаясь вперед, наша команда продолжит проверять данные и работать с нашей системой тестирования, чтобы убедиться, что Gimbap всегда работает так, как ожидалось.

Заключение

У Gimbap большое будущее, и мы рады представить этот продукт разработчикам по всему миру, которые заинтересованы в оценке производительности своих серверов при переходе на микросервисную архитектуру.

gimbap.io

Команда Гимбап

Паркер Хатчесон | LinkedIn / GitHub

Мигель Эрнандес | LinkedIn / GitHub

Анджелинн Труонг | LinkedIn / GitHub

Хандкер Ислам | LinkedIn / GitHub

Себастьен Фок | LinkedIn / GitHub