Реалізація Multi-Region деплою для глобального веб-застосунку

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

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація Multi-Region деплою для глобального веб-застосунку
Складна
~5 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Мультирегіональний деплой веб-додатку

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

Архітектурні паттерни

Active-Passive — один регіон основний, другий отримує трафік тільки при збої. Просто, але failover не миттєвий (15–60 секунд).

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

Read Replicas — запис тільки в основному регіоні, читання з ближайшого. Підходить для більшості веб-додатків з read-heavy навантаженням.

AWS Multi-Region з Route 53

# Terraform: два EKS кластери
module "eks_eu" {
  source  = "terraform-aws-modules/eks/aws"
  region  = "eu-west-1"

  cluster_name    = "myapp-eu"
  cluster_version = "1.29"
  vpc_id          = module.vpc_eu.vpc_id
  subnet_ids      = module.vpc_eu.private_subnets

  managed_node_groups = {
    main = {
      instance_types = ["m6i.xlarge"]
      min_size       = 2
      max_size       = 10
      desired_size   = 3
    }
  }
}

module "eks_us" {
  source  = "terraform-aws-modules/eks/aws"
  region  = "us-east-1"
  # аналогічно
}

# Route 53: Latency-based routing
resource "aws_route53_record" "api" {
  zone_id = var.hosted_zone_id
  name    = "api.mysite.com"
  type    = "A"

  set_identifier = "eu-west-1"
  latency_routing_policy {
    region = "eu-west-1"
  }

  alias {
    name                   = aws_lb.eu.dns_name
    zone_id                = aws_lb.eu.zone_id
    evaluate_target_health = true
  }
}

База даних: репліцування між регіонами

PostgreSQL з логічною репліцією:

-- PRIMARY (eu-west-1)
CREATE PUBLICATION myapp_pub FOR ALL TABLES;

-- REPLICA (us-east-1)
CREATE SUBSCRIPTION myapp_sub
  CONNECTION 'host=eu-primary.rds.amazonaws.com user=replicator password=secret dbname=myapp'
  PUBLICATION myapp_pub;

AWS Aurora Global Database — керований варіант:

Primary Region: eu-west-1 (запис + читання)
Secondary:      us-east-1 (тільки читання, ~1s lag)
Secondary:      ap-southeast-1 (тільки читання)

Aurora Global failover: ~1 хвилина, автоматично через Route 53.

Kubernetes: мультирегіональний деплой

# ArgoCD ApplicationSet: деплой в кілька кластерів
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: myapp
  namespace: argocd
spec:
  generators:
    - list:
        elements:
          - cluster: eks-eu-west-1
            region: eu-west-1
            db_host: aurora-eu.cluster.rds.amazonaws.com
          - cluster: eks-us-east-1
            region: us-east-1
            db_host: aurora-us.cluster.rds.amazonaws.com
  template:
    metadata:
      name: 'myapp-{{region}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/myorg/myapp
        targetRevision: HEAD
        path: helm/myapp
        helm:
          values: |
            region: {{region}}
            database:
              host: {{db_host}}
      destination:
        server: '{{cluster}}'
        namespace: myapp

Stateless додаток

Для мультирегіонального деплоя додаток повинен бути stateless:

// НЕ зберігати стан у пам'яті процесу
// ПОГАНО:
const sessions = new Map<string, Session>(); // теряється при перезапуску

// ДОБРЕ: Redis (з репліцією)
import { Redis } from '@upstash/redis';

const redis = new Redis({
  url: process.env.UPSTASH_REDIS_URL!, // Upstash підтримує мультирегіон
  token: process.env.UPSTASH_REDIS_TOKEN!,
});

async function getSession(sessionId: string): Promise<Session | null> {
  return redis.get<Session>(`session:${sessionId}`);
}

Vercel/Netlify: Edge Network

Для Next.js/Nuxt найпростіший мультирегіональний деплой — Vercel Edge Network:

// Серверні компоненти та API routes деплояться як Edge Functions
// автоматично у 30+ регіонах

// app/api/config/route.ts
export const runtime = 'edge'; // деплой на edge nodes по всьому світу

export async function GET() {
  const region = process.env.VERCEL_REGION ?? 'unknown';
  return Response.json({ region });
}

Overhead на latency для EU→US: 100–150ms. Edge deployment: 5–20ms до користувача.

Моніторинг мультирегіонального деплоя

# Prometheus: метрики по регіонам
labels:
  region: eu-west-1
  cluster: eks-eu

# Grafana dashboard: Request Rate by Region, Latency by Region
# Alertmanager: alert якщо один регіон недоступний

Настройка Active-Active мультирегіонального деплоя у двох AWS регіонах з Aurora Global Database — 5–10 робочих днів.