Задача
AppDirect забезпечує платформу для торгівлі продуктами та послугами на базі хмари. Коли директор з розробки програмного забезпечення Пʼєр-Олександр Ласерт почав працювати в компанії у 2014 році, компанія мала монолітний застосунок, розгорнутий на "інфраструктурі tomcat, і весь процес випуску був складним для того, чим він мав бути", говорить він. "Була велика кількість ручних кроків, один інженер розробляв функцію, потім інша команда приймала зміни. Отже, у вас були вузькі місця в конвеєрі для доставки функції в операційну експлуатацію." Одночасно команда інженерів зростала, і компанія усвідомила, що їй потрібна краща інфраструктура для підтримки цього зростання та збільшення швидкості.
Рішення
"Моя ідея була: давайте створимо середовище, де команди зможуть швидше розгортати свої сервіси, і вони скажуть, 'Добре, я не хочу більше розробляти в моноліті. Я хочу розробляти сервіс'", говорить Ласерт. Вони розглядали і прототипували кілька різних технологій перед тим, як вирішити впровадити Kubernetes на початку 2016 року. Команда Ласерта також інтегрувала моніторинг Prometheus у платформу; наступним етапом є трасування. Сьогодні AppDirect має більше 50 мікросервісів в експлуатації та 15 кластерів Kubernetes, розгорнутих на AWS та локально по всьому світу.
Вплив
Платформа Kubernetes допомогла підтримати зростання команди інженерів у 10 разів за останні кілька років. Разом з тим, що вони постійно додавали нові функції, Ласерт каже: "Я думаю, що наша швидкість значно сповільнилася б, якби ми не мали цієї нової інфраструктури." Перехід на Kubernetes і сервіси означав, що розгортання стало набагато швидшим завдяки меншій залежності від створених вручну, крихких оболонкових скриптів із SCP-командами. Час на розгортання нової версії скоротився з 4 годин до кількох хвилин. Крім того, компанія вклала багато зусиль у те, щоб зробити все самостійним для розробників. "Впровадження нового сервісу не потребує Jira тікетів або зустрічей з трьома різними командами", говорить Ласерт. Сьогодні компанія бачить 1,600 розгортань на тиждень, порівняно з 1-30 раніше. Компанія також досягла економії витрат, перемістивши свої моноліти ринку та білінгу на Kubernetes з застарілих хостів EC2, а також за рахунок використання автоскейлінгу, оскільки трафік є вищим в робочі години.
Коли директор з розробки програмного забезпечення Пʼєр-Олександр Ласерт почав працювати в компанії у 2014 році, компанія мала монолітний застосунок, розгорнутий на "інфраструктурі tomcat, і весь процес випуску був складним для того, чим він мав бути", говорить він. "Була велика кількість ручних кроків, один інженер розробляв функцію, потім створював pull request, і QA або інший інженер перевіряв функцію. Потім її зливають, і хтось інший буде займатися розгортанням. Отже, у нас були вузькі місця в конвеєрі для доставки функції в операційну діяльність."
Одночасно команда інженерів з 40 осіб зростала, і компанія хотіла додати все більше функцій до своїх продуктів. Як член команди платформи, Ласерт почав чути від кількох команд, які хотіли розгортати застосунки, використовуючи різні фреймворки та мови, від Node.js до Spring Boot Java. Він швидко зрозумів, що для підтримки зростання та збільшення швидкості компанії потрібна краща інфраструктура і система, в якій команди є автономними, можуть самостійно розгортати свої сервіси та нести відповідальність за них в операційній діяльності.
З самого початку, Ласерт каже: "Моя ідея була: давайте створимо середовище, де команди зможуть швидше розгортати свої сервіси, і вони скажуть, 'Добре, я не хочу більше розробляти в моноліті. Я хочу розробляти сервіс.'" (Ласерт залишив компанію у 2019 році.)
Працюючи з командою операцій, група Ласерта отримала більше контролю та доступу до AWS інфраструктури компанії та почала прототипувати кілька технологій оркестрування. "Тоді Kubernetes був трохи підпільним, невідомим", говорить він. "Але ми подивилися на спільноту, кількість pull requestʼів, швидкість на GitHub, і побачили, що вона набирає популярність. І ми виявили, що вона була набагато легшою для нас в управлінні, ніж інші технології."
Вони розгорнули перші кілька сервісів на Kubernetes, використовуючи Chef та Terraform для налаштування, і з додаванням нових сервісів автоматизація також зросла. "У нас є кластери по всьому світу — в Кореї, в Австралії, в Німеччині та в США", говорить Ласерт. "Автоматизація є критично важливою для нас." Тепер вони в основному використовують Kops і розглядають пропозиції використання Kubernetes від кількох хмарних постачальників.
Сьогодні, хоча моноліт все ще існує, кількість комітів і функцій зменшується. Всі команди розгортаються на новій інфраструктурі, і сервіси стали нормою. AppDirect тепер має більше 50 мікросервісів у виробництві та 15 кластерів Kubernetes, розгорнутих на AWS та локально по всьому світу.
Стратегія Ласерта врешті-решт спрацювала завдяки реальному впливу, який платформа Kubernetes мала на час розгортання. Завдяки меншій залежності від створених вручну, крихких скриптів оболонки з SCP-командами, час на розгортання нової версії скоротився з 4 годин до кількох хвилин. Крім того, компанія вклала багато зусиль, щоб зробити все самостійним для розробників. "Впровадження нового сервісу не потребує Jira тікетів або зустрічей з трьома різними командами", говорить Ласерт. Сьогодні компанія бачить 1,600 розгортань на тиждень, порівняно з 1-30 раніше.
Крім того, платформа Kubernetes допомогла підтримати зростання команди інженерів у 10 разів за останні кілька років. "Власність, основна цінність AppDirect, відображається в нашій здатності самостійно розгортати сервіси незалежно від нашої монолітної кодової бази", говорить старший розробник програмного забезпечення Александре Жерве, який працював з Ласертом над ініціативою. "Маленькі команди тепер володіють критичними частинами нашої моделі бізнес-домену і функціонують у своїх розділених сферах експертизи, з обмеженим знанням всієї кодової бази. Це зменшує та ізолює частину складності." Разом із тим, що вони постійно додавали нові функції, Ласерт каже: "Я думаю, що наша швидкість значно сповільнилася б, якби ми не мали цієї нової інфраструктури."
Компанія також досягла економії витрат, перемістивши свої моноліти ринку та білінгу на Kubernetes з застарілих хостів EC2, а також за рахунок використання автоскейлінгу, оскільки трафік є вищим в робочі години.
Хмарний технологічний стек AppDirect також включає gRPC та Fluentd, і команда наразі працює над налаштуванням OpenCensus. Платформа вже має інтегрований Prometheus, тому "коли команди розгортають свій сервіс, вони мають свої сповіщення, оповіщення та конфігурації", говорить Ласерт. "Наприклад, в тестовому середовищі я хочу отримати повідомлення в Slack, а в операційному середовищі я хочу отримати повідомлення в Slack і також мати дзвінок. У нас є інтеграція з pager duty. Команди мають більше відповідальності за свої сервіси."
Це, звичайно, також означає більше відповідальності. "Ми попросили інженерів розширити свої горизонти," говорить Жерве. "Ми перейшли від культури, обмеженої 'пересиланням коду в гілку', до захоплюючих нових відповідальностей поза межами коду: розгортання функцій і конфігурацій; моніторинг застосунків і бізнес-метрик; і підтримка у разі збоїв. Це був величезний культурний зсув в інженерії, але переваги є безсумнівними в плані масштабу та швидкості."
Оскільки кількість інженерів продовжує зростати, команда платформи стикається з новим викликом — забезпеченням того, щоб платформа Kubernetes була доступною та легкою у використанні для всіх. "Як ми можемо забезпечити, щоб коли ми додаємо більше людей до нашої команди, вони були ефективними, продуктивними та знали, як швидко освоїти платформу?" говорить Ласерт. Тож у нас є евангелісти, документація, кілька прикладів проєктів. Ми проводимо демонстрації, у нас є сесії AMA. Ми пробуємо різні стратегії, щоб привернути увагу всіх."
Через три з половиною роки після початку свого шляху з Kubernetes, Жерве вважає, що AppDirect "прийняла правильні рішення в правильний час", говорить він. "Kubernetes і технології для хмари зараз розглядаються як де-факто екосистема. Ми знаємо, на що спрямовувати наші зусилля, щоб впоратися з новою хвилею викликів, з якими ми стикаємося, коли розширюємося. Спільнота є такою активною і жвавою, що це є чудовим доповненням до нашої чудової внутрішньої команди. Надалі наш фокус справді буде спрямований на те, щоб скористатися екосистемою, надаючи додаткову бізнес-цінність у нашій щоденній діяльності."