DevOps-акселератор, або Як підвищити швидкість і якість запуску нових проєктів

Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!

Привіт, спільното DOU. Мене звати Буйний Сергій, я — DevOps Competency Lead у компанії Yalantis.

Швидкість та якість розробки і впровадження програмного забезпечення — ось ключові фактори, що визначають успіх сучасних IT-проєктів.

І саме тут на допомогу приходить DevOps Accelerator який використовує інструменти автоматизації, щоб підвищити швидкість, якість та безпеку запуску нових проєктів. У цій статті ми розглянемо, що таке DevOps Accelerator, з чого він складається та навіщо він потрібен бізнесу та організаціям, що прагнуть залишатися конкурентоспроможними в швидкозмінному світі інформаційних технологій.

Що таке DevOps акселератор і навіщо DevOps-акселератор потрібен бізнесу

DevOps-акселератор — це набір інструментів спрямований на прискорення запуску та впровадження нових програмних продуктів. Який складається з чотирьох основних елементів.

Серед основних переваг є:

  • до 3-x разів швидший запуск нових проєктів (~40 годин);
  • зменшення витрат;
  • більш передбачуваний процес запуску проєкту;
  • мінімізація ризиків;
  • гнучкість;
  • краща якість інфраструктури;
  • покращення Security;
  • типова інфраструктура для кожного проєкту спрощує онбридинг нових інженерів.

DevOps-акселератор виявився надзвичайно важливим для бізнесу з багатьох причин. Він дозволяє значно збільшити швидкість виходу на ринок нових продуктів та функцій, що є критичним у конкурентному середовищі. Крім цього, він сприяє покращенню якості та безпеки інфраструктурного коду.

Іншою важливою перевагою є зменшення ризику впровадження нових змін і оновлень. Зрештою, DevOps-акселератор допомагає бізнесу швидко реагувати на зміни ринкових умов і підтримувати високу якість інфраструктури, що необхідна для програмного забезпечення.

Які технології було використано для акселератора

DevOps-акселератор — це комплексний підхід до розробки, впровадження та управління програмним забезпеченням, який містить різноманітні компоненти для оптимізації процесів. Однією з ключових складових є хмарні обчислення, в нашому випадку акселератор побудований на базі Amazon Web Services (AWS) який надає масштабовані ресурси, що дозволяють гнучко керувати ресурсами.

Для поліпшення процесу автоматизації розгортання та керування різними етапами розробки наш акселератор використовує GitLab. GitLab надає можливість ефективно створювати, налаштовувати та впроваджувати автоматизовані завдання, що дозволяє нам прискорити процес розгортання та знизити ризик помилок. Крім цього, GitLab забезпечує безпеку та можливості інтеграції з іншими сервісами.

Для управління інфраструктурою DevOps-акселератор використовує Terraform — інструмент інфраструктурного коду, який дозволяє описати і керувати інфраструктурою як кодом. Це спрощує розгортання, моніторинг і керування інфраструктурою, що є важливою частиною DevOps.

Крім того, DevOps-акселератор використовує Helm — пакетний менеджер для Kubernetes, що допомагає автоматизувати розгортання та керування контейнеризованими застосунками. Helm дозволяє легко створювати, оновлювати та видаляти застосунки на основі контейнерів, що полегшує процес впровадження.

Усі ці технології разом створюють інструмент, який допомагає підвищити швидкість і якість розробки інфраструктури та полегшує роботу DevOps-команди.

CI/CD Pipelines

Ми розробили та впровадили ряд пайплайнів для автоматизації процесу деплоймента, і це має велике значення для ефективності та надійності наших розробок. Пайплайни допомагають нам автоматизувати кожен крок розгортання, від тестування до впровадження, зменшуючи ризик помилок та забезпечуючи стабільну та прозору процедуру впровадження.

Всього для прикладів було створено шість пайплайнів для CI/CD:

  • terraform-deploy — пайплайн для деплоймента інфраструктури;
  • fronted-build — створення артефакту для фронтенда;
  • frontend-deploy — деплймент фронтенда до S3 бакета;
  • backend-build-fast-api — build docker image та завантаження його до ECR;
  • backend-eks-deploy-fast-api — деплоймент застосунку до EKS кластера за допомогою HELM;
  • backend-ecs-deploy-fast-api — деплоймент застосунку до ECS.

Ці пайплайни дозволяють нам швидше впроваджування оновлення, зменшуючи час від розробки до впровадження нового функціоналу. Крім того, вони забезпечують стандартизацію гарантовану якість.

Cloud-частина акселератора

Cloud-частина акселератора відіграє вирішальну роль у вдосконаленні розробки та впровадженні програмного забезпечення. Вона об’єднує в собі різноманітні компоненти, кожен з яких відповідає за певну аспект розробки.

На рисунку нижче можна побачити базову архітектуру акселератора.

Cloud-частину, залежно від призначення, можна розбити на декілька груп:

Networking — це VPC та Route53, які гарантують безпеку та стабільність мережевих з’єднань, що є фундаментальною основою для роботи у хмарному середовищі.

Containerization — це EKS, ECS та ECR, які спрощують керування контейнерами та їх розгортання.

Content Delivery Network — це Amazon CloudFront, який допомагає забезпечити швидку та надійну доставку контенту для користувачів у всьому світі.

Data Store — це S3, RDS, ElastiCache, EBS та DynamoDB, що надають різноманітні можливості для зберігання та керування даними.

Security — це Secret Manager, ACM, WAF та KMS, які покращують безпеку та захист конфіденційної інформації.

Container management

Одним з важливих компонентів цього акселератора є контейнерний менеджер, який грає важливу роль у розгортанні та керуванні нашими застосунками. Ми обрали використання AWS Container Registry (ECR) як засіб для зберігання наших контейнерів. ECR надає нам надійне та масштабоване сховище для наших образів, дозволяючи нам ефективно керувати ними.

Крім того, акселератор використовує Amazon Elastic Kubernetes Service (EKS) для оркестрації наших контейнерів. EKS допомагає нам спростити керування контейнерами та автоматизувати їхнє розгортання та масштабування. Ми також використовуємо Amazon Elastic Container Service (ECS) для певних видів робіт, де це більш ефективно.

А що з Security

Безпека завжди є найважливішою складовою будь-якого проєкту, і DevOps-акселератор не виняток. У більшості випадків набагато легше впровадити Security на стадії запуску проєкту, аніж вже на наявному, особливо якщо це вже Production.

Тому в акселератор було додано 20% Security, які б покривали 80% вразливостей.

Що саме входить в 20% Security:

  • Encryption at rest для EBS дисків, S3 та стореджів баз даних.
  • Encryption in Transit для балансерів, CDN, RDS, ElastiCache, Amazon MQ, etc.
  • Обов’язково WAF для балансерів та CDN.
  • Secret Manager, через який повинні зберігатися та використовуватися всі чутливі дані.
  • Налаштування мережевих доступів до RDS, ElastiCache, Amazon MQ, etc. лише через VPN та з Security Groups, де розгорнуті застосунки.

Загальна мета Security частини акселератора — забезпечити мінімум для захисту даних від потенційних загроз та атак на всіх оточеннях, починаючи з Dev та закінчуючи Prod.

Важливість використання Secret Manager

Використання Amazon Web Services (AWS) Secret Manager є дуже важливим аспектом безпеки та керування доступом до конфіденційних даних в хмарному середовищі. AWS Secret Manager надає зручні та безпечні засоби для збереження та керування секретами, як-от паролі, ключі, токени та інші конфіденційні дані.

Використання Secret Manager дозволяє:

  1. Зберігати секрети централізовано.
  2. Зменшити ризик витоку інформації.
  3. Автоматизувати оновлення секретів.
  4. Легко інтегрувати з іншими сервісами.

Використання AWS Secret Manager допомагає забезпечити надійний та безпечний доступ до конфіденційних даних, що є надзвичайно важливим у хмарному середовищі, де безпека та захист даних мають вирішальне значення.

Ну й куди ж без моніторингу та логування

Моніторинг та логування виявляються надзвичайно важливими інструментами, що використовуються й у великих корпоративних проєктах, і на початкових стадіях розвитку стартапів. Вони не лише допомагають вчасно виявляти та реагувати на проблеми, але також надають можливість передбачати їх можливе виникнення в роботі програмних та апаратних компонентів.

Що можна моніторити та логувати, якщо проєкт перебуває в початковій стадії?

  1. Аномальне зростання ціни використовуваних Cloud-ресурсів.
  2. CPU / Disk space / Memory utilisation.
  3. Latency, 5XX та 4XX помилки на балансерах та CloudFront.
  4. VPC flow logs.
  5. Журнали доступу з ALB та CloudFront, які містять усі запити до сервера.

Навіть базовий моніторинг і логування забезпечують розуміння того, як працює система та чи працює вона взагалі. Це дозволяє здійснювати швидку реакцію на неполадки та забезпечувати безперебійну роботу сервісів.

Ціна цього рішення

Важливо розглянути питання вартості використання нашого DevOps-акселератора з урахуванням різниці у вартості між двома ключовими сервісами, які ми використовуємо для оркестрації контейнерів: Amazon Elastic Kubernetes Service (EKS) та Amazon Elastic Container Service (ECS).

EKS — це потужний інструмент для керування контейнерами, але він призначений для більш розгалужених проєктів, і вартість його використання стартує від 270 доларів на місяць.

З іншого боку, ECS — менш витратний сервіс, вартість якого складає від 205 доларів на місяць.

Під час розрахунку вартості акселератора важливо враховувати обсяг роботи та потреби проєкту, а також бюджетні обмеження клієнта. Обираючи між EKS та ECS, ми повинні зважити на їхні можливості та витрати, щоб забезпечити ефективне використання ресурсів та оптимізацію акселератора.

Тож як запускати акселератор

Щоб запустити акселератор слід виконати такі кроки:

  1. Створити IAM користувача.
  2. Додати облікові дані до налаштувань CI/CD у GitLab.
  3. Створити публічну DNS зону в AWS Route53.
  4. Відредагувати dev.tfvars файл з енвами.
  5. Додати / видалити ресурси з main.tf.
  6. Запушити зміни до Git репозиторія.
  7. Та задеплоїти це все.

Висновок

У цій статті ми розглянули DevOps-акселератор, визначили його значення для бізнесу та висвітлили, які проблеми він допомагає вирішувати. Ми також розглянули важливі складові акселератора — його Security частину та роль моніторингу у забезпеченні безперебійності та продуктивності.

Важливо зауважити, що DevOps-акселератор, незважаючи на свою корисність, все ще не є ідеальним інструментом. Ми завжди прагнемо до вдосконалення та оптимізації нашого акселератора, щоб забезпечити ще більшу ефективність та надійність, та наразі ми працюемо над план оптимізації, який передбачає ряд покращень та нововведень.

Сподіваюся, стаття була для вас корисною та надихне на створення власних акселераторів, які робитимуть ваші процеси простішими та передбачуваними, надаючи можливість досягти нових вершин у сфері технологій.

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Налаштувати ІАМ-користувача в AWS та додати змінні AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY й AWS_DEFAULT_REGION до налаштувань CI/CD у GitLab, аби надати необхідний доступ до AWS-ресурсів для автоматизованого розгортання інфраструктури.

Такий підхід хіба для vanilla setup чи PoC має сенс використовувати. В реальному світі є сенс робити окремий гітлаб ранер в своєму AWS акаунті, який сам комунікуватиме з гітлаб і буде використовувати instance profile для доступу до ресурсів.
Особливо якщо присутнє слово

Security

А деплоймент в кубернетіс без GitOps це сум біль і страждання. Бо декларативний метод конфігурування для кубернетіс є нативним.

згоден що куб без GitOps це сум, на разі ми плануемо додати GitOps до аксеератора.

Я відчув в статті те, що ви пишаєтесь своїм DevOps-акселератором.
Це є добре — почувати гордість і задоволеність результатами своєї роботи.

Зі статті я не зрозумів, чим є насправді ваш DevOps-акселератор, що це за сутність?
І при чому тут DevOps, якщо фактично мова йде про Infrastructure-акселератор.

Думаю, ми знаходимось у полоні некоректного використання термінології.
LinkedIn та Djinni завалені вакансіями DevOps Інженерів, які насправді є вакансіями Infrastructure Інженерів, Cloud Інженерів, Ops, Delivery, Sysadmins etc.
Просто для зручності обох сторін процесу всі вирішили використовувати назву методології як маркер, що нам потрібні особливі, продвинуті адміни, які будуть опікуватись нашою інфраструктурою.

На мене це базовий код інфраструктури для продажу кастомеру, типовЕ рішення DevOps консалтинга.

Підписатись на коментарі