Створення інфраструктури за допомогою діаграми
Під час роботи в різних компаніях я неодноразово стикався з інфраструктурними акселераторами. Зазвичай це була колекція Bash/Python-скриптів, доповнених Terraform або Ansible. Такі інструменти були корисними для запуску однотипних проєктів, але часто виявлялися складними в підтримці, масштабуванні чи навіть у розумінні того, якою саме буде кінцева інфраструктура, особливо якщо документація не оновлювалася роками.
Це підштовхнуло мене до створення власного рішення — self-service акселератора для хмарної інфраструктури, який працював би на основі візуальної діаграми, схожої на draw.io
Для початку про рішення, які вже доступні на ринку:
Brainboard
Brainboard — це найвідоміший стартап у цій сфері. Він пропонує найбільший вибір хмарних компонентів, підтримуючи AWS, Azure, GCP та інші хмарні провайдери. Він миттєво здатен перетворити кожен розміщений на діаграмі компонент у Terraform код. Однак увесь згенерований код додається в один файл, що може бути проблематичним для великих і складних архітектур.
Brainboard трансформує більшість Terraform-ресурсів у доступні на діаграмі компоненти, забезпечуючи велику гнучкість під час проєктування архітектури. Проте надмірна деталізація створює певні труднощі. Використання візуального інтерфейсу для керування навіть найменшими хмарними ресурсами додає зайві кроки та фактично позбавляє платформу функції акселератора. Будь-який досвідчений розробник швидше опише інфраструктуру вручну, ніж збиратиме її з таких компонентів на діаграмі.
Плюси:
— Велика кількість доступних ресурсів
— Потужний механізм діаграмування
Мінуси:
— Надмірна деталізація
— Усі ресурси додаються в один файл
Massdriver
Massdriver використовує інший підхід, ніж Brainboard. Замість прямої генерації коду з діаграм він слугує єдиним інтерфейсом для управління інфраструктурою, дозволяючи моніторити та змінювати активні ресурси з однієї платформи. Хоча кількість компонентів обмежена, Massdriver забезпечує хороший рівень абстракції, спрощуючи користувацький досвід. Користувачі можуть створювати власні хмарні компоненти для використання на платформі, але це вимагає вивчення спеціальної скриптової мови, що може бути доволі складним.
Централізоване управління всією хмарною інфраструктурою через один графічний інтерфейс виглядає привабливо, але має свої недоліки. По-перше, для початку роботи з Massdriver потрібно надати платформі роль AdministratorAccess у вашому AWS-акаунті, що може стати серйозним бар’єром для багатьох розробників, особливо у продакшн-середовищі.
Крім того, платформа не надає вихідний код інфраструктури, що обмежує можливість кастомізації та створює залежність від самого сервісу. Це може працювати як акселератор, але відсутність контролю над кодом, на мою думку, робить платформу непридатною для використання в жодному серйозному проєкті.
Плюси:
— Централізоване управління інфраструктурою
— Хороший рівень абстракції компонентів
Мінуси:
— Залежність від платформи (vendor lock-in)
— Відсутність інфраструктурного коду, що обмежує кастомізацію
— Потрібні права адміністратора в AWS-акаунті
ArchFormation
ArchFormation — рішення, яке розробив я, займає проміжну позицію між Massdriver і Brainboard. Компоненти платформи мають хороший рівень абстракції, зберігаючи при цьому високий рівень кастомізації, що робить їх більш схожими на Terraform-модулі, ніж на окремі ресурси. Завдяки цьому платформа може слугувати хорошим рішення для акселерації створення хмарної інфраструктури без vendor lock-in.
Платформа дозволяє організовувати компоненти в окремі стеки, що значно спрощує управління інфраструктурою у великих архітектурах. Також передбачена вбудована підтримка середовищ, що дає змогу налаштовувати різні параметри компонентів для різних середовищ (development, staging, production). Користувачі повністю володіють усім згенерованим кодом, що усуває ризик залежності від постачальника (vendor lock-in).
Також можлива інтеграція з GitHub, що дозволяє керувати змінами інфраструктури через pull request’и. Для тих, хто не хоче надавати доступ до GitHub, код можна завантажити у форматі ZIP-архіву.
Основні недоліки платформи — обмежена кількість компонентів і підтримуваних хмарних провайдерів, оскільки наразі підтримується лише AWS.
Плюси:
— Збалансований рівень абстракції компонентів
— Безкоштовна інтеграція з GitHub
— Вбудоване управління середовищами
— Повне володіння кодом та його переносимість
Мінуси:
— Обмежена бібліотека компонентів
— Поки що підтримується лише AWS

1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів