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


В общем, работа с IT-инфраструктурой приложения отнимает кучу времени специалистов. Нас это не радовало, и мы придумали свою платформу, которая сложные операции сводит к паре кликов мыши.



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


Ближайший по похожести к нам сервис, наверное, Heroku. Однако назвать нас аналогами трудно: мы хоть и решаем одинаковые задачи, но совсем неодинаковым способом. В частности, у нас фокус на работе через веб интерфейс, также можно использовать собственные сервера или сервера облачных провайдеров.



Чтобы привязать свой хост понадобится выполнить команду на сервере. Так же сервер должен соответствовать требованиям



Чтобы привязать облачного провайдера, достаточно указать API токен или Access ID с Secret Key, если это Amazon.


Маленькая ремарка
В общем-то, мы и не стремились сделать «чуть улучшенный свой» аналог Heroku. Просто делали проект, в котором была куча рутины по администрированию собственных серверов и хостов в «облаке», а количество рук в команде и финансовых возможностей было строго ограниченное количество. По обозначенным причинам большинство решений нам никак не подходило, и мы сделали своё, а потом доработали его до PaaS сервиса.

Какие задачи решает D2C и что умеет


В основном D2C помогает решать 7 основных задач, связанных с управлением IT-инфраструктурой:


1. Поднимать рабочую среду для работы приложения
Например, приложение — сайт. Требуется поднять веб-сервер и базу данных. В D2C для этого достаточно выбрать нужные сервисы, задать хосты и указать зависимости. В примере ниже используются хосты на Амазоне, но можно использовать других облачных провайдеров или собственные сервера.



На иллюстрации пользователь добавляет NGINX в качестве фронтенда и «привязывает» его к NodeJS. В качестве базы используется MongoDB.




2. Разворачивать и обновлять приложение из исходников
Например, можно развернуть приложение прямо из исходников в Git репозитории. Достаточно один раз настроить и останется только обновлять при изменениях.



В данном случае приложение разворачивается из Гитлаба через SSH, но можно указать FTP/HTTP ссылку на исходники или загрузить через Upload.




3. Конфигурировать систему
Наши настройки по-умолчанию будут работать в большинстве случаев, но их можно оптимизировать под конкретную архитектуру и нагрузки.



На скриншоте конфигурация NGINX для работы с PHP в режиме редактирования




4. Масштабировать инфраструктуру
В D2C можно масштабировать приложение как вертикально, так и горизонтально. В первом случае, платформа умеет добавлять ресурсы у облачных провайдеров. Для горизонтального масштабирования достаточно нажать «Scale» и платформа поднимет контейнеры на новых хостах, после чего можно будет добавить балансировщик нагрузки. При апдейтах приложение будет разворачиваться на всех задействованных хостах.



Демонстрация горизонтального масштабирования с добавлением балансировщика нагрузки




5. Мигрировать конфигурацию
Например, потребовалось перенести базу целиком со всеми репликами и настройками с хостов Амазона на Диджитал Оушен. В нашей платформе это делается быстро:





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





7. Быстро разворачивать типовую среду с помощью готовых стеков.
Для создания среды с типовой конфигурацией можно создать стек в формате yaml. Таким образом для частых задач не придется каждый раз с нуля настраивать сервисы. Достаточно импортировать файл и с минимумом действий поднять готовую среду для приложения.


Также мы регулярно пополняем наш Stackhub готовыми решениями. Ими тоже можно пользоваться.



Пример разворачивания типовой среды




С чего начать


Первое, с чего вы можете начать знакомство с D2C — это регистрация в сервисе. Она бесплатная, можно протестировать сервис своими руками.


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


Сходить в документацию и узнать в технических подробностях, что можно и нельзя делать в D2C.


Почитать нашу базу знаний с готовыми рецептами по строительству IT-инфраструктуры. Сейчас статей не очень много, но они будут постоянно добавляться. Что-то будем публиковать на Хабре, но не всё.


В качестве постскриптума: если D2C чего-то еще не умеет


D2C пока умеет не всё, но в скором времени научится. Чтобы было удобно следить за нашими планами, мы сделали дорожную карту. Если у вас появятся предложения, опишите их в нашем Trello. Возможно, мы это добавим, но это не точно.

Комментарии (4)


  1. Ordinatus
    22.11.2017 12:14

    Больше походит на Rancher, который всё это делает через docker driver для различных облаков. Умеет работать с k8s и другими оркестраторами. Имеет собственную библиотеку приложений с возможностью добавлять свои.
    Какие у вас есть преиущества с их бесплатной версией?


    1. mastappl
      22.11.2017 13:03

      В целом — ниже порог входа. В Rancher требуется достаточно много ручной работы. Большинство задач, которые чаще всего требуется делать вручную — мы автоматизируем. Это относится, например, к масштабированию баз данных, балансировки, настройки NGINX, получении бесплатных TLS сертификатов, создании бэкапов.


  1. yvm
    22.11.2017 12:35

    Неплохо, используется ли swarm mode за сценой?


    1. mastappl
      22.11.2017 13:07

      Спасибо!
      Нет, swarm не используется. У нас немного другой, свой подход.