Edge & Web Serving
Тема дорожной карты · DevOps Engineer
Edge-слой — это всё, что стоит между клиентом и вашим бэкендом: веб-сервер, обратный прокси, балансировщик нагрузки, кэш статики, CDN. Для DevOps это первый рубеж надёжности: здесь терминируется TLS, режется rate-limit, отдаётся статика без обращения к приложению и распределяется нагрузка между несколькими репликами. От правильной настройки edge зависит p95 latency, отказоустойчивость к single-instance-падениям и стоимость обслуживания трафика.
Как это работает
Запрос пользователя сначала попадает на edge: DNS резолвится в IP, TCP-соединение терминируется на веб-сервере, TLS-handshake происходит на нём же. Дальше — три ветки. Статика (HTML, JS, CSS, картинки) отдаётся прямо с edge без участия приложения. Динамические запросы проксируются через proxy_pass к upstream-инстансам. Балансировщик распределяет нагрузку по алгоритму (round-robin, least-connections, ip_hash). Edge также режет abuse-трафик через rate-limiting, отбивает крупные load-spikes через буферизацию запросов, и кэширует ответы бэкенда через proxy_cache.
Когда применять
Edge ставят с самого начала — даже для одного бэкенд-инстанса. Это даёт сразу несколько вещей: TLS-терминацию (Let's Encrypt автоматизирует выпуск), graceful reload приложения за прокси без потери соединений, единую точку логирования всех запросов, возможность переключения трафика между версиями (canary, blue-green). Когда инстансов становится больше одного — edge сразу превращается в балансировщик, без переделки архитектуры. В Kubernetes роль edge выполняет Ingress-контроллер, обычно ingress-nginx.
Типичные ошибки
Грабли edge-слоя: терминировать TLS на бэкенде вместо edge (теряется централизованный контроль сертификатов); отсутствие health-check на upstream-инстансах (трафик льётся в мёртвую реплику); неправильный X-Forwarded-For (приложение видит IP прокси вместо клиентского); отдача статики через бэкенд вместо edge (10x потеря throughput); единая точка отказа — один edge-инстанс без HA-pair; забытая настройка keepalive к upstream (новый TCP-handshake на каждый запрос съедает CPU и latency).