Что такое REST?

«Что такое REST?» — вопрос из категории Сети, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST (Representational State Transfer) — это архитектурный стиль для проектирования распределенных систем, в частности веб-API. Он основан на использовании стандартных HTTP-методов для операций с ресурсами, которые идентифицируются URI.

Принципы REST с точки зрения DevOps/инфраструктуры:

  • Stateless (Без состояния): Каждый запрос от клиента содержит всю необходимую информацию для его обработки. Сервер не хранит состояние сессии клиента. Это критически важно для горизонтального масштабирования — любой сервер из пула может обработать любой запрос.
  • Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать и как долго. Это позволяет разгрузить бэкенд с помощью кэширующих прокси (Varnish, CDN) или шлюзов (API Gateway).
  • Единообразие интерфейса: Использование стандартных HTTP-методов (GET, POST, PUT, DELETE, PATCH) делает API предсказуемым и упрощает создание инструментов автоматизации, мониторинга (логирование по кодам ответа) и безопасности (настройка правил WAF).

Пример взаимодействия для DevOps-скрипта (использование curl для проверки здоровья API):

# Проверка доступности и получения метаданных сервиса (Health Check)
curl -X GET https://api.example.com/health -H "Accept: application/json"

# Получение списка конфигураций (например, из внутреннего инструмента)
curl -X GET https://internal-api.company.com/v1/configs 
     -H "Authorization: Bearer $TOKEN"

# Ответ (JSON):
# {
#   "status": "healthy",
#   "version": "2.5.1",
#   "dependencies": { "database": "ok", "cache": "ok" }
# }

Почему это важно для DevOps: RESTful API — стандарт де-факто для взаимодействия микросервисов, интеграции с CI/CD (запуск сборок, развертывание), управления облачными ресурсами (через API AWS, Azure, GCP) и автоматизации инфраструктуры.

Видео-ответы