Уже много лет меня беспокоит проблема понятной и удобной инфраструктуры. В каждом проекте, где я работал, так или иначе приходилось решать эту задачу, каждый раз по-разному и каждый раз недостаточно хорошо.
Что я понимаю под личным облаком и удобной инфраструктурой?
- приватная сеть с балансировщиком, VPNом внутрь, фаерволами
- легко масштабируемые вычислительные ресурсы
- managed базы данных с автобекапами, автообновлениями, горизонтальной и вертикальной масштабируемостью
- мониторинг и алёрты
- объектное хранилище и CDN, очереди
- единый, простой и понятный способ развернуть новое приложение в облаке, независимо от того на чем оно написано
- service discovery чтобы сервисы могли общаться друг с другом
- https снаружи и внутри, автогенерация сертификатов
- полностью автоматизированный blue/green, canary деплоймент
- хранение секретов и изоляция сервисов друг от друга
- понятный CI/CD, интеграция с тулзами
- дашборд чтобы медитировать на метрики загруженности кластера
- не за все деньги мира
- всё полностью автоматизированно, так чтобы если завтра война, датацентр взорвали, а человек, который всё разворачивал, пропал, то любой другой боец мог подхватить пачку терраформ шаблонов и поднять всё в новом месте одной командой
Да, все эти задачи решаются, для большинства из них есть вендорские решения. Менеджед базы данных есть почти у всех, кубернетес кластер тоже, VPC и друзья тоже есть, миллион пресетов для графаны и прометеуса и так далее, и так далее, и так далее.
Проблема в том, что никто до сих пор не собрал это в кучу. Есть те или иные куски—там сеть, сям облачные ресурсы, тут сервис дискавери и сервис меш, здесь гора баш скриптов для автодеплоя.
Но единого, и главное, простого решения нет.
Я вижу здесь разрыв. Или мы берём хероку и деплоим один сервис, или мы нанимаем двух девопсов по $8k каждый и строим кубер в амазоне который стоит столько же.
Нет решения посредине, которым могли бы пользоваться разработчики, и которое не было бы запредельно сложным.
Везде, где я работал, такое решение пришлось делать самому и никогда оно не было хорошим.
Конечно, у каждого PaaSа (а то что я предлагаю это именно PaaS) есть фатальный недостаток—он написан не той командой, которая его использует. Все команды так или иначе будут упираться в ограничения платформы, а если делать её слишком универсальной—то мы получим кубернетис.
Однако я не покидаю надежд, и хотя эта идея беспокоит меня уже много лет, недавно я наконец-то добрался до практической реализации.
Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred