Хмарна інфраструктура для web-проєктів
Cloud infrastructure дозволяє будувати web-систему з окремих керованих сервісів замість розміщення всього application stack на одному сервері.
Залежно від проєкту architecture може включати compute, database, storage, networking, backups, monitoring та deployment automation.
Microsoft Azure
Microsoft Azure надає великий набір cloud services для web applications, APIs, databases, containers та enterprise systems.
Ми не використовуємо cloud лише заради самого cloud. Перед вибором сервісів оцінюємо:
- application architecture;
- expected load;
- availability requirements;
- database;
- storage;
- deployment process;
- security;
- budget.
Azure App Service
Для web applications можна використовувати managed application hosting без необхідності самостійно адмініструвати повний virtual server.
Такий підхід може бути зручним для:
- web applications;
- REST APIs;
- corporate portals;
- SaaS;
- backend services.
Azure Virtual Machines
Якщо проєкту потрібен більший контроль над операційною системою та server environment, можна використовувати virtual machines.
У цьому випадку окремо налаштовуються OS, web server, runtime, database connectivity, access, backups та monitoring.
Containers в Azure
Для containerized applications можна використовувати відповідні Azure services залежно від architecture та складності.
Контейнери можуть спростити:
- deployment;
- environment consistency;
- scaling;
- rollback;
- CI/CD integration.
Azure Container Apps
Для окремих containerized web-services або APIs можна використовувати managed container environment без необхідності самостійно підтримувати повний Kubernetes cluster.
Це може бути доцільним для microservices, background workers, APIs та інших container-based workloads.
Azure Kubernetes Service
AKS може використовуватися для систем, де справді потрібен Kubernetes: багато services, складний deployment, orchestration та масштабування.
Kubernetes не є обов'язковим для кожного cloud-проєкту. Для невеликого application простіша infrastructure часто дешевша та легша у підтримці.
Databases в Azure
Залежно від stack можна використовувати managed database services або окремий database server.
При проєктуванні враховуємо:
- database engine;
- storage;
- backup;
- performance;
- connections;
- availability;
- network access.
Storage
Для files, media, backups та інших object data можна використовувати cloud storage.
Це особливо корисно для applications із великою кількістю uploads або для відокремлення persistent files від application instances.
Networking
Cloud architecture може включати virtual networks, private connections, load balancing, firewall rules, DNS та інші network components.
Структура network layer повинна відповідати реальним security та connectivity requirements.
Cloud Migration
Можемо переносити існуючі web applications із VPS, dedicated server або іншої infrastructure в Azure.
Migration може включати:
- application;
- database;
- files;
- DNS;
- SSL;
- storage;
- background jobs;
- integrations.
Rehost чи Modernization
Не кожна міграція повинна одразу змінювати всю architecture.
Можливі два підходи:
- перенести існуючу систему з мінімальними змінами;
- одночасно модернізувати application і перейти на managed cloud services.
Вибір залежить від technical debt, budget та roadmap.
Scaling
Cloud дає можливість масштабувати окремі компоненти системи, але application повинна бути технічно готовою до scaling.
Окремо враховуємо sessions, files, cache, database, queues та background processes.
Monitoring
Для Azure infrastructure можна контролювати metrics, logs, application health, availability та resource usage.
Monitoring architecture визначаємо відповідно до критичності системи та support process.
Backup та Recovery
Cloud не означає автоматичну відсутність ризику втрати даних. Для production systems все одно потрібна backup та recovery strategy.
Оптимізація витрат
Cloud infrastructure може стати дорогою, якщо resources вибрані без урахування реального usage.
Перевіряємо:
- resource sizes;
- unused services;
- storage;
- traffic;
- scaling rules;
- architecture complexity.
Коли Azure не потрібен
Для невеликого corporate site або простого application звичайний VPS може бути економічнішим і достатнім.
Azure має найбільшу цінність там, де потрібні managed services, enterprise integration, scaling, isolation або cloud-oriented architecture.
Чому Promodex
Promodex може працювати не лише з cloud infrastructure, а й із самим application: backend, frontend, database, containers, CI/CD та integrations.
Тому cloud architecture проєктуємо від потреб software, а не окремо від нього.