Всем привет! У нас знаменательное событие — Dockhost отмечает первый день рождения! Год назад мы запустили в продакшн нашу платформу для запуска приложений в Docker контейнерах Dockhost.ru. Вроде год выглядит как совсем не большой срок, но для нашей команды это был яркий период, маленькая жизнь с кучей побед, факапов, достижений и драйва. Меня зовут Евгений Бабий, я один из основателей платформы Dockhost. И в этой статье я хочу оглянуться назад и рассказать про наш путь в построении платформы: что мы задумывали, что в итоге получилось и к чему мы стремимся в будущем. Dockhost — облачная платформа для хостинга приложений на основе Docker‑контейнеров (боты, сайты, базы данных и т. д.), которая позволяет запускать и масштабировать как простые проекты, так и сложные микросервисные приложения без необходимости настраивать и контролировать инфраструктуру. dockhost.ru Идея платформы родилась в декабре 2022 года. На тот момент у нас уже был бэкграунд развертывания кластеров Kubernetes под различные задачи и, поскольку все свои проекты мы разрабатывали и запускали в Docker‑контейнерах, хотелось просто запустить готовый контейнер, без танцев с бубном по настройке и поддержке инфраструктуры. Идея показалась настолько интересной, что в итоге мы решили попробовать создать свою платформу, которая позволит разработчикам легко запускать свои Docker контейнеры. На разработку и тестирование первой версии платформы ушло чуть больше года. Проведя огромное количество исследований и интервью с командами разработки, мы сформулировали базовые требования к MVP нашей платформы: Простота запуска. У меня есть приложение в контейнере, я просто его запускаю в несколько кликов.Запуск от 1 контейнера. Не важно сколько контейнеров я запускаю, 1 или 100, мне не нужно покупать целый кластер для этого.Приватность и безопасность. Каждый контейнер запускается в изолированной среде.Простое масштабирование. Мое приложение должно расти вместе с ростом масштаба и нагрузки. В любой момент я могу нарастить количество реплик для контейнера или изменить выделенный для него объём ресурсов (горизонтально или вертикально масштабировать приложение).Я должен платить только за вычислительные ресурсы, которые фактически потребляет мое приложение. Никаких фиксированных тарифов.Интуитивно понятная панель управления. Мне нужна возможность управлять всеми запущенными проектами в едином интерфейсе и контролировать нагрузку и потребление ресурсов с помощью понятных метрик.Свобода в разработке и интеграции. Мне нужна возможность управлять своими контейнерами на платформе через консольную утилиту. Мы уверены, что на рынке выживает только тот, кто несет реальную пользу клиентам. Поэтому параллельно с концептом MVP мы определили базовые принципы, что именно мы делаем и для кого, нашу миссию. Мы строим платформу, которая позволит разработчикам полностью сфокусироваться на творческом процессе разработки и продукте, не отвлекаясь на вопросы настройки и поддержки инфраструктуры. В мае 2023 года появилась архитектура будущей платформы, написаны первые сервисы и уже к декабрю 2023 года основной функционал платформы был написан. К февралю 2024 был готов MVP, и для запуска корабля в тестовое плавание не хватало только имени. И вот, после нескольких дней мозговых штурмов и нескольких десятков чашек кофе появился наш бренд — Dockhost. И вот наступил июнь 2024 года, мы завершили бета тестирование и открыли доступ пользователей к платформе! Итак, приоткроем капот и кратко посмотрим на основные блоки и их техническую реализацию. Платформа построена на базе микросервисной архитектуры. Мы изначально заложили разделение на ядро и пользовательские кластера. Под капотом пользовательского кластера у нас Kubernetes, запущенный на физических серверах, который физически отделен от ядра. Кластер управляется ядром посредством специального агента, который подключен к ядру через WebSocket. Помимо агента в пользовательском кластере запущены дополнительные сервисы для подключения к кластеру и настройки окружения пользовательских проектов. А в качестве файловой системы, после долгого тестирования различных вариантов, мы выбрали Ceph. Итак, платформа начала развиваться, появились первые пользователи, начала собираться обратная связь по продукту. Один из основных инсайтов, который мы получили, был настолько очевиден, что изначально мы его конечно упустили) Пользователям недостаточно возможности просто запустить готовый контейнер с кодом. Им нужна возможность простого деплоя кода из Git репозитория. Мы поняли, что можно сделать процесс еще проще для пользователя. В августе 2024 года вышел релиз функционала Push‑to‑Deploy, для автоматического деплоя кода пользователя из Git репозитория на платформу Dockhost.С помощью нового функционала мы переключили на себя всю рутину по сборке контейнеров и их запуску на платформе. Пользователю достаточно лишь подключить репозиторий с кодом к своему проекту в панели управления, и дальше все сделает Dockhost: соберет контейнеры с приложениемпроизведет запуск на платформепри обновлении кода в репозитории, Dockhost автоматически пересоберет контейнер с обновлением.проблемы после обновления и приложение не работает? Не проблема, вы всегда можете откатиться на любую рабочую версию из прошлых релизов. После запуска функционала Push‑to‑Deploy, помимо позитивной реакции текущих клиентов, мы за месяц смогли удвоить количество новых пользователей платформы. Это был большой шаг вперед, который подтвердил основную идею: клиенты голосуют за реальную пользу и качество продукта. Чем больше проблем и рутины пользователей мы забираем на себя, тем больше клиентов у нас становится. Отличная мысль, подумали мы, и пошли праздновать… разрабатывать новый функционал. Развивая Dockhost мы постоянно задавали себе вопрос: что еще может помочь пользователям в запуске и разработке их проектов? Большинство разработчиков используют в своих проектах готовые приложения: базы данных, брокеры сообщений и прочие инструменты. Тогда мы решили сделать каталог готовых к установке приложений, которые пользователь может установить в несколько кликов в нашем облаке и использовать в своих проектах. Так в октябре 2024 появился следующий большой блок в функционале платформы — Каталог приложений. Сейчас каталог насчитывает более 20 различных приложений разной направленности и постоянно развивается. Вы можете найти в нем популярные базы данных (Redis, Mongo, PostrgreSQL, MySQL и т. д.), брокеры сообщений (Kafka, RabbitMQ), low code инструменты (N8N, Flowise), и другие полезные приложения (Directus, Grafana, Uptime Kuma, MinIO и т.д.). Каталог стал одним из основных блоков нашей платформы, в котором мы видим серьезный потенциал для будущего развития. Мы развиваем Dockhost как платформу для запуска и управления любыми приложениями. Даем универсальный инструмент, с помощью которого пользователь может как конструктор собрать необходимый ему проект. Именно поэтому мы сознательно не пошли в развитие приложений managed сервисов, т.к. хотим предоставить нашим пользователям максимальную свободу действий. Возможно, в будущем мы запустим наиболее востребованные приложения в виде управляемых на нашей стороне сервисов (например хранилище S3), но общая концепция это именно свобода в управлении своими проектами и вендорная независимость для пользователей. За год мы прошли через множество изменений и трансформаций, дорабатывали текущий и разрабатывали новый функционал. И, конечно, не обошлось без факапов. Самый первый факап случился в первый же день запуска. По плану 30 мая мы должны были открыть доступ к платформе для пользователей, и в этот день Docker Hub заблокировал доступ из России. В итоге нам пришлось поднять собственное зеркало Docker Hub, которое пригодилось нам в дальнейшем для реализации функционала Push‑to‑Deploy. В сентябре мы получили большую нагрузку на сервера, load average в пике был больше 200. Пошли разбираться, и увидели, что изначально промахнулись с настройками и не учли фактор «шумных соседей». Как обычно, то что прекрасно работало в тесте и на старте, ожидаемо легло под нагрузкой. В декабре 2024 мы столкнулись с очередной проблемой роста платформы. Нагрузка со стороны пользователей выросла и один из серверов в основном кластере внезапно вышел из чата. Что привело к каскадной реакции внутри кластера и остановке платформы. В итоге до полного восстановления мы пролежали более 2 часов, но это был хороший урок для команды. Каждый из описанных кейсов приносил нам дополнительный опыт, благодаря которому мы становились крепче и устойчивее. При этом мы всегда были максимально открыты со своими пользователями и регулярно информировали о том, что происходит на платформе. Спустя год мы продолжаем политику максимальной открытости. В апреле 2024 мы запустили публичную статус панель, в которой любой пользователь может отследить актуальный статус по работе наших сервисов. status.dockhost.ru Dockhost сегодня — это полноценная облачная платформа, у которой есть все, что необходимо для запуска проекта любого масштаба, от простых ботов до сложных микросервисных приложений. И, разумеется, наша платформа значительно отличается от того MVP, который мы запускали год назад. Самое важное из того, что мы делали все это время — мы активно слушали наших пользователей! И все наши изменения были основаны на той обратной связи, которую мы от них получали. Это очень ценный опыт, за который мы благодарны нашим пользователям. Мы внимательно следим за развитием рынка облачных платформ в России. И видим явный тренд на рост PaaS сервисов, особенно платформ для хостинга Docker‑контейнеров. Все больше пользователей хотят запускать свои проекты именно на платформах, которые заберут на себя всю лишнюю рутину и обеспечат гибкость, масштабируемость и отсутствие лишних телодвижений по управлению серверами. Именно поэтому мы с оптимизмом смотрим в будущее и будем продолжать развивать Dockhost как универсальную платформу для хостинга приложений...