Про клієнта
Європейська компанія, яка спеціалізується на рішеннях для енергоефективності для малого та середнього бізнесу, знову звернулася до нас. Їхні послуги включають моніторинг на базі IoT, оптимізацію споживання енергії та автоматизацію промислових процесів. Раніше ми вже успішно співпрацювали: наша команда створила хмарні пайплайни для Azure IoT Hub, які допомогли оптимізувати енергомоніторинг і підвищити ефективність роботи.
Бізнес-проблема: потреба в безперешкодному переході між хмарними провайдерами
Компанія надає інструменти для вимірювання, моніторингу, контролю та покращення енергоспоживання в різних типах будівель. Спочатку програмне забезпечення було розгорнуте на локальному сервері та у хмарі Microsoft Azure. Згодом технічний керівник вирішив зробити код легко переносимим між хмарними платформами з можливістю інтеграції з нативними сервісами провайдерів.
Причина — обмеження в тарифах та потреба домовлятися про кращі умови з різними постачальниками хмарних послуг.
Клієнт перейшов з Azure на AWS, щоб задовольнити короткострокові вимоги щодо масштабування та вартості. Пізніше відбулося повернення з on-premises до Azure, аби уніфікувати сервіси, полегшити інтеграцію з Power BI та Microsoft-інструментами, і підготуватися до cloud-native ETL. Незважаючи на міграції, основні застосунки залишалися в контейнерах на виділеному сервері.
Як ми це вирішили: рефакторинг коду для модернізованої та гнучкої архітектури
Для створення сучасного бекенду з мікросервісною архітектурою ми реалізували чітке розділення обов’язків (SoC), розділивши логіку системи на робочі модулі (workers) та інфраструктурні компоненти. Це дозволило уникнути повного переписування коду.
Архітектурний рефакторинг
Ми почали з від'єднання компонентів від специфічних налаштувань Azure. Архітектура була побудована навколо модульних сервісів на базі .NET Core — продуктивної та кросплатформної технології.
-
Workers містять бізнес-логіку, ізолюючи її від хмарної інфраструктури.
-
Інфраструктурні компоненти відповідають за інтеграцію з хмарою, зберігання файлів, планування задач тощо.

Можна застосовувати налаштування керування на різних рівнях. Обраний рівень визначає, наскільки широко діятимуть ці налаштування. Нижчі рівні успадковують налаштування від вищих.
Наприклад: якщо ви застосуєте політику до підписки, вона охопить усі групи ресурсів і ресурси всередині неї. Якщо ж ви застосуєте її до групи ресурсів, вона вплине лише на цю групу та все, що в ній міститься.
Контейнеризація
Кожен компонент був упакований у Docker-контейнер для ізоляції середовища й забезпечення легкої міграції між хмарами. Це дозволило запускати програму без змін у логіці.
Мінімальні зміни в коді
Завдяки новій архітектурі, для міграції потрібно було оновити лише один клас, що відповідає за інфраструктурну абстракцію. Не потрібно було змінювати тисячі рядків коду.
-1.jpg)
Бізнес-ефект: зниження витрат при зміні хмарних провайдерів
-
Значне скорочення витрат завдяки мінімізації переробки та автоматизації
-
Готовність до масштабування на нові ринки через мультихмарну інфраструктуру
-
Незалежність від конкретного провайдера
-
Зниження витрат на підтримку
-
Швидше впровадження оновлень і функцій без зупинки системи
-
Покращення стабільності та надійності сервісу
-
Уникнення vendor lock-in
Міграція в іншу хмару тепер займає в 4 рази менше часу. Це призводить до економії десятків тисяч доларів на робочих годинах, простої системи та технічній підтримці при перенесенні інфраструктури між Microsoft Azure, AWS або локальними (on-prem) середовищами.
Як показала наша практика, якщо типовий процес міграції займає близько 12 тижнів і коштує приблизно 60 000 доларів, то після рефакторингу для міграції в хмару це може коштувати лише 15 000 доларів або навіть менше завдяки спрощеній архітектурі та автоматизованим процесам.
Хмарна архітектура міграції
Ми допомагаємо клієнтам з телекомунікацій, фінансів, державного сектору та енергетики безболісно переходити між провайдерами. Нижче — відповідність сервісів AWS та Azure:
- AWS Elastic Beanstalk → Azure App Service
Azure App Service пропонує повністю керовану платформу для хостингу, розгортання та масштабування веб-додатків. Простий у використанні та орієнтований на швидкість.
- Amazon API Gateway → Azure API Management
Ці сервіси дозволяють публікувати API для внутрішніх команд або зовнішніх клієнтів із повним контролем, безпекою та аналітикою.
- Amazon CloudFront → Azure Front Door
Доставляйте контент швидше і безпечніше з Azure Front Door — глобальною CDN з високою продуктивністю та вбудованим захистом від загроз.
- AWS Global Accelerator → Azure Front Door
Використовуйте Azure Front Door для уніфікації розподілених мікросервісів під одним глобальним додатком із розумним маршрутизуванням, автоскейлінгом і регіональним фейловером.
- AWS Global Accelerator → Azure cross-regional load balancer
Отримайте високу доступність зі статичною глобальною IP-адресою, що розподіляє трафік між регіонами Azure для резервування та продуктивності.
- Amazon Lightsail / AWS Amplify → Azure App Service
Azure App Service охоплює все — від коду до хмари — ідеально підходить для швидкого розгортання, масштабування та спрощеного керування.
- AWS App Runner → Azure Web App for Containers
Легко запускає контейнеризовані додатки в Azure за допомогою повністю керованого сервісу для середовищ Windows та Linux.
Ідентифікація та оцінка модулів
Перш за все, у NetLS ми ідентифікуємо всі предметні модулі системи. Ми ретельно аналізуємо компоненти, які можуть бути вилучені, оновлені або мігрувати в нове середовище. На цьому етапі оцінюємо, які модулі є критичними, які — опціональними, а які — залежними від хмарної платформи.
Міграція баз даних може стати особливо складною, особливо при переході між різними типами СУБД. Якщо задача або модуль є хмаронезалежними (cloud-agnostic), міграція проходить простіше. Водночас клієнт повинен оцінити, чи варта міграція витрачених ресурсів і чи приносить вона реальну бізнес-цінність.
У NetLS ми зіставляємо кожен сервіс AWS з його еквівалентом у Azure та розглядаємо кожен як окремий архітектурний компонент. Це забезпечує чітке розмежування зон відповідальності, покращений контроль доступу та спрощене масштабоване управління.
Ось як виглядає відповідність:
- AWS IAM Identity Center / IAM → Microsoft Entra ID
Централізоване управління ідентифікацією та доступом. Створюйте та керуйте користувачами і групами, призначайте ролі та контролюйте доступ до сервісів і ресурсів Azure з підвищеним рівнем безпеки та відповідності нормативам.
- AWS IAM → Azure Role-Based Access Control (RBAC)
Визначайте, хто і до чого має доступ і які дії може виконувати. Azure RBAC дозволяє призначати дозволи на деталізованому рівні в межах підписок Azure, груп ресурсів і окремих ресурсів.
- AWS Organizations → Azure Management Groups
Керуйте політиками і доступом у межах кількох підписок Azure. Azure Management Groups відображає концепцію AWS Organizations і забезпечує єдину структуру для масштабного застосування ролей і політик.
- MFA для IAM → Microsoft Entra ID з MFA
Захищайте входи користувачів за допомогою багатофакторної автентифікації. Entra ID інтегрує MFA безпосередньо у процес доступу, допомагаючи захистити чутливі ресурси при мінімальному навантаженні для користувача.
- AWS Directory Service → Microsoft Entra Domain Services
Повністю керований доменний сервіс, сумісний із Active Directory. Підтримує приєднання до домену, групові політики, LDAP та Kerberos/NTLM — ідеально підходить для спадкових додатків і гібридних сценаріїв.
- Amazon Cognito → Microsoft Identity Platform / Entra External ID
Дозволяє керувати зовнішніми користувачами та підтримувати сценарії “bring your own identity”. Entra External ID підтримує вхід через Google, Facebook (Meta), облікові записи Microsoft та інші — ідеально для клієнтоорієнтованих додатків.
Кожен із шести сервісів автентифікації та авторизації має власну архітектурну особливість. Це дозволяє нам ізолювати зони відповідальності, забезпечувати масштабованість і узгоджувати межі безпеки з нативними можливостями Azure.
До кінця цього етапу ми отримуємо чітке уявлення про те, що залишається, що переноситься, а що потребує переробки, з детальним документуванням ризиків, пріоритетів і очікуваної цінності для кожного модуля.
Інтернет речей (IoT)
У NetLS ми забезпечуємо міграцію IoT-рішень з AWS до Azure з точністю та увагою до деталей. Для кожного сервісу AWS ми підбираємо відповідне рішення в Azure. Для кожної пари створюється окрема архітектурна функція. У результаті система залишається гнучкою, захищеною та зручною в управлінні.
Процес переходу виглядає так:
- AWS IoT Core → Azure IoT Hub
Захищений хмарний шлюз для двосторонньої комунікації з мільярдами IoT-пристроїв. Azure IoT Hub забезпечує масштабовану та надійну передачу повідомлень між пристроями та хмарою.
- AWS IoT Greengrass → Azure IoT Edge
Забезпечує інтелектуальну обробку безпосередньо на пристроях. Azure IoT Edge переносить можливості хмари на край мережі, підтримуючи офлайн-сценарії та обробку в реальному часі у розподіленому середовищі.
- Amazon Firehose / Kinesis → Azure Event Hubs + Stream Analytics
Ці сервіси відповідають за обробку великих обсягів подій від пристроїв та сенсорів. Event Hubs приймає потоки даних, а Stream Analytics виконує обробку в реальному часі або в мікропакетах.
- AWS IoT TwinMaker → Azure Digital Twins
Створюйте цифрові копії реального світу — будівель, виробничих ліній, міської інфраструктури. Azure Digital Twins дозволяє моделювати поведінку об’єктів, виявляти аномалії та оптимізувати системи.
- AWS IoT Device Management / FleetWise → Azure IoT Central
Повністю керована платформа для підключення та управління великими парками IoT-пристроїв. Azure IoT Central підтримує як загальні сценарії, так і спеціалізовані, наприклад, телеметрію транспортних засобів.
- AWS IoT ExpressLink → Azure Sphere
Створюйте індивідуальні пристрої з підключенням до Інтернету та вбудованим захистом. Azure Sphere надає захищені модулі, програмне забезпечення та оновлення — ідеально підходить для OEM-виробників та вбудованих систем.
Абстракція інфраструктурних модулів
Тісно пов’язані (tightly coupled) системи складно й ризиковано мігрувати.
Спочатку ми ідентифікуємо всі компоненти, які залежать від конкретної хмари або платформи — наприклад, файлове сховище, системи обміну повідомленнями чи сервіси ідентифікації.
Далі ми впроваджуємо шар абстракції за допомогою інтерфейсів або обгорток сервісів (service wrappers).
Для кожного такого інтерфейсу створюються окремі реалізації під відповідні хмарні платформи (наприклад, AWS S3 vs. Azure Blob Storage).
Бізнес-логіка взаємодіє лише з інтерфейсом, а не безпосередньо з інфраструктурними сервісами.
Цей підхід забезпечує високу портативність рішень і значно спрощує подальшу зміну хмарної платформи або середовища розгортання.
Абстракція на рівні додатків
Інфраструктурно-агностичні застосунки простіше розгортати, масштабувати та переносити.
Ми також абстрагуємо логіку запуску та розгортання:
-
Засоби запуску застосунків (launchers) та оркестратори абстраговані таким чином, щоб підтримувати кілька хмарних середовищ або контейнерних платформ (наприклад, AWS EKS та Azure AKS).
-
Для перемикання між контекстами використовується конфігурація або змінні середовища — без необхідності змінювати логіку додатку.
Перед міграцією:
-
Кожен рівень абстракції автоматично тестується з використанням Gherkin, Cypress і Jest.
-
Тестування проходить безпосередньо в цільовому середовищі.
-
Контекст інфраструктури вмикається або вимикається через фіче-флаги чи конфігураційні перемикачі.
Це дозволяє проводити міграції впевнено, з мінімальною потребою у ручному втручанні під час розгортання.
Планування міграції та стратегія відкату
Копіювання даних та підтримка двох версій
Цілісність даних і безперервність сервісів є критично важливими. Ми підтримуємо два підходи:
Миттєве переключення. Перехід у live одразу після копіювання та валідації всіх даних.
Підтримка двох версій. Тимчасовий паралельний запуск обох середовищ (AWS + Azure) з активною синхронізацією даних та логікою маршрутизації.
На практиці, перевірено в наших проєктах: паралельний запуск — найбезпечніший варіант. Він дозволяє виконувати поетапну міграцію, ізолювати проблеми та проводити тестування в режимі реального часу.
Контейнеризація
Всі сервіси контейнеризуються через Docker та запускаються в Kubernetes-кластерах.
DevOps в дії
DevOps налаштовує ресурси, проводить тестування, запуск і керує відкатами.
Нижче — повний набір інструментів, що покриває всі потреби DevOps і моніторингу від початку до кінця:
- Amazon CloudWatch та AWS X-Ray → Azure Monitor
Azure Monitor збирає та аналізує телеметрію з хмарних і локальних середовищ. Його модуль Application Insights забезпечує глибокий моніторинг продуктивності застосунків і фактично об'єднує функціональність CloudWatch і X-Ray в AWS.
- AWS CodeDeploy, CodePipeline, CodeBuild, CodeConnections → Azure DevOps, GitHub, GitHub Actions
Azure DevOps — це повноцінна платформа для CI/CD та командної роботи, яка включає тестування коду, керування артефактами та перевірку безпеки. GitHub та GitHub Actions автоматизують робочі процеси, підтримують хостинг коду і колаборацію. AWS більше не пропонує створення нових репозиторіїв, але забезпечує інтеграцію з зовнішніми платформами через CodeConnections.
- AWS CLI, AWS Tools for PowerShell, AWS SDKs → Azure CLI, Azure PowerShell, Azure SDKs
Обидві платформи надають командні інтерфейси та SDK для програмного керування хмарними сервісами, що спрощує автоматизацію на різних мовах програмування.
- AWS CloudShell → Azure Cloud Shell
Веб-інтерфейс інтерактивного командного рядка для керування хмарними ресурсами, з підтримкою Bash і PowerShell.
- AWS Systems Manager → Azure Automation
Автоматизація конфігурації та керування ресурсами за допомогою шаблонів і Runbook-сценаріїв для різних типів ресурсів.
- AWS CloudFormation, Cloud Development Kit (CDK) → Azure Resource Manager, Bicep, VM Extensions, Azure Developer CLI, Automation
Ці інструменти Infrastructure-as-Code дозволяють розробникам і адміністраторам створювати, розгортати та керувати хмарними середовищами у повторюваний спосіб за допомогою декларативного синтаксису або мов програмування.
Безпека
NetLS — досвід міграції застосунків у хмару
Маючи багаторічний практичний досвід у сферах енергетики, охорони здоров’я, нерухомості, телекомунікацій, фінансів, великого електронного комерційного бізнесу та державного сектору, ми допомагаємо компаніям мігрувати їхні додатки до хмари. Наші клієнти вже отримали вигоду від наших послуг, які гарантують:
- Технологічний консалтинг, адаптований до вашої інфраструктури та бізнес-цілей
- Масштабовану та стабільну архітектуру системи
- Швидший запуск нових функцій
- Незалежність від будь-якого окремого провайдера
- Відповідність вимогам безпеки та регуляторним стандартам
- Ефективність витрат, адже ви сплачуєте лише за використані ресурси, мінімізуючи витрати на обладнання та енергію
- Хмара гарантує високу доступність через надійну та безперервну роботу ваших додатків
- Легке налаштування ресурсів для задоволення зростаючих бізнес-потреб
- Провайдери хмарних послуг забезпечують розширений захист даних
- Прискорене розгортання та оновлення з покращеною продуктивністю
- Вищу гнучкість і інноваційність, що дозволяє швидко впроваджувати нові технології
Готові почати?