В чем разница между веб-сервером и веб-сервисом?

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

Ответ

Веб-сервер — это программа или аппаратное обеспечение, основная задача которого — обрабатывать входящие HTTP(S)-запросы и возвращать статический контент (HTML-страницы, CSS, JS, изображения) или передавать запросы динамического контента прикладным программам. Примеры: Nginx, Apache HTTP Server.

Веб-сервис — это приложение (или часть приложения), работающее, как правило, поверх веб-сервера, которое предоставляет API для машинно-машинного взаимодействия. Оно принимает запросы, выполняет бизнес-логику и возвращает структурированные данные (JSON, XML), а не готовые веб-страницы. Примеры: REST API, SOAP-сервис, GraphQL endpoint.

Аналогия: Веб-сервер — это официант, который принимает заказ и приносит готовое блюдо (страницу). Веб-сервис — это повар на кухне, который получает от официанта спецификацию заказа (API-запрос), готовит по рецепту (бизнес-логика) и отдает результат.

Пример простого веб-сервиса (REST API на Node.js с Express):

const express = require('express');
const app = express();
app.use(express.json());

// Веб-сервис предоставляет эндпоинт /api/users
app.get('/api/users', (req, res) => {
  // Бизнес-логика: получение данных из БД
  const users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
  // Возвращаются данные, а не HTML
  res.json(users);
});

// Веб-сервер (Express) слушает порт
app.listen(3000, () => console.log('Сервис запущен на порту 3000'));

Итог: Веб-сервер занимается коммуникацией по HTTP, а веб-сервис — реализацией бизнес-логики и предоставлением данных через этот протокол.