Реализация 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 (только чтение)

Failover Aurora Global: ~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 рабочих дней.