Что общего у веб-сервера и веб-сервиса?

«Что общего у веб-сервера и веб-сервиса?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Веб-сервер и веб-сервис — это разные, но тесно связанные компоненты веб-архитектуры, которые часто работают вместе.

Общие черты:

  1. Сетевые конечные точки: Оба принимают входящие HTTP/HTTPS запросы от клиентов (браузеров, мобильных приложений, других сервисов).
  2. Развёртывание: Часто физически или виртуально располагаются на одном сервере.
  3. Цель: Обработка запросов и возврат ответов клиенту.
Ключевые различия: Аспект Веб-сервер Веб-сервис (REST API)
Основная задача Доставка статического контента (HTML, CSS, JS, изображения) и проксирование запросов. Выполнение бизнес-логики, обработка данных, работа с БД.
Тип ответа Файлы, статические страницы. Структурированные данные (JSON, XML).
Примеры ПО Nginx, Apache HTTP Server, Caddy. Приложение на Flask (Python), Express.js (Node.js), Spring Boot (Java).

Пример совместной работы (типичный стек):

# Конфигурация Nginx (веб-сервер) как reverse proxy
server {
    listen 80;
    server_name example.com;

    location /api/ {  # Запросы к API проксируются на веб-сервис
        proxy_pass http://localhost:3000;
    }

    location / {      # Статические файлы отдаются напрямую
        root /var/www/html;
    }
}
// Веб-сервис на Node.js/Express (обрабатывает API-запросы)
const express = require('express');
const app = express();
app.get('/api/users', (req, res) => {
    res.json([{ id: 1, name: 'Alice' }]); // Возвращает JSON
});
app.listen(3000); // Сервис слушает порт 3000

Итог: Веб-сервер часто выступает фронтменом, который принимает все запросы, отдаёт статику, а запросы к API перенаправляет (проксирует) на внутренний веб-сервис, занимающийся логикой.