Зачем сервисам общаться

Чтобы автоматизировать процессы и создавать полезные цифровые инструменты, нужно сначала понять, как сервисы общаются друг с другом через интернет.

Это базовое знание: без него нельзя ни писать программы, ни настраивать интеграции, ни даже осознанно пользоваться многими цифровыми сервисами.

Мы будем связывать сервисы, чтобы они могли обмениваться данными, выполнять действия и реагировать на события.

И это общение происходит по строгим правилам.

Сервисы общаются между собой через интернет, отправляют друг другу сообщения и получают ответы.

Когда сервисы взаимодействуют между собой, они делают это не морганием лампочек и посвистыванием, как пылесосы на колёсах в «Звёздных войнах», а с помощью чётких и понятных запросов через интернет по заранее согласованным правилам.

Если люди общаются с помощью слов, то сервисы общаются с помощью запросов и ответов.

Представим бизнес задачу. Загородны гольф-клуб. Каждое утро администратор клуба проверяет погоду, чтобы понять, нужно ли поливать газон для этого он звонит на метеостанцию и спрашивает: «Привет! Какая температура ожидается? Сегодня будет дождь?» Метеостанция отвечает: «Доброе утро! Сегодня ожидается 25 градусов, дождя не будет». Администратор клуба принимает решение поливать или нет.

Чтобы исключить человеческий фактор, можно автоматизировать этот процесс. Вместо администратора будет работать автоматическая система полива, которая сама проверяет погоду и принимает решение.

Система полива отправляет запрос на сервер метеостанции не в свободной форме типа «Привет! Какая погода?», а в чётко структурированном виде, например, так:

{
  "location": {
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "date": "2026-07-20",
  "parameters": [
    "temperature",
    "precipitation",
    "wind"
  ]
}

Этот формат называется JSON (JavaScript Object Notation) — это стандартный способ представления данных, который легко читается и обрабатывается как людьми, так и машинами.

Адрес сервера метеостанции который принимает запрос, может выглядеть так: POST https://api.superweatherstation.com/v1/forecast.

Адрес и структура запроса заранее согласованы, чтобы сервер мог понять, что именно нужно.

Пожалуйста, посмотрите на структуру запроса. Он содержит координаты местоположения, дату и параметры, которые интересуют систему полива. Это чётко определённый формат, который сервер метеостанции понимает.

Если мы попробуем отправить запрос в формате, который сервер не понимает, например, так:

{
  "location": "around here",
  "date": "today",
  "question": "To rain, or not to rain — that is the question."
}

Сервер метеостанции не сможет обработать такой запрос и вернёт ошибку, например, 400 Bad Request. Это значит, что запрос не соответствует ожидаемому формату.

Если всё сделано правильно, сервер метеостанции вернёт ответ в формате JSON, например:

{
  "date": "2025-07-20",
  "location": "San Francisco, CA",
  "forecast": [
    {
      "hour": "06:00",
      "temperature_k": 291.15,
      "precipitation_mm": 0,
      "wind_mph": 7.5
    },
    {
      "hour": "09:00",
      "temperature_k": 293.15,
      "precipitation_mm": 0,
      "wind_mph": 6.2
    },
    {
      "hour": "12:00",
      "temperature_k": 296.15,
      "precipitation_mm": 0,
      "wind_mph": 9.3
    },
    {
      "hour": "15:00",
      "temperature_k": 297.15,
      "precipitation_mm": 0.5,
      "wind_mph": 11.2
    },
    {
      "hour": "18:00",
      "temperature_k": 294.15,
      "precipitation_mm": 1.2,
      "wind_mph": 13.6
    }
  ]
}

Мы еще не обсуждали формат JSON, но вы уже видите, что это структурированный ответ. Он содержит прогноз погоды с температурой, осадками и ветром на каждый час. Попробуйте найти в запросе и ответе закономерность: запрос чётко определяет, что нужно получить, а ответ содержит именно ту информацию, которая запрашивалась.

Если люди общаются с помощью слов, то сервисы общаются с помощью запросов и ответов.

Общение в стиле запрос-ответ

Когда вы:

  • открываете сайт,
  • отправляете сообщение в мессенджере,
  • оплачиваете покупку через приложение,

ваше устройство отправляет запрос другому компьютеру — серверу.

Этот запрос может быть:

  • «Покажи мне страницу»,
  • «Сохрани это сообщение»,
  • «Пришли код подтверждения».

Сервер принимает запрос, делает то, о чём его просят, и отправляет ответ.

Пример запроса и ответа из реальной жизни

Это похоже на заказ в кафе:

  • Вы заказываете капучино.
  • Бариста готовит и отдаёт, если всё в порядке. Если нет — сообщает о проблеме.

Точно так же работают и цифровые сервисы:
Вы — клиент, сервер — это бариста, только вместо кофе — данные.


Что такое интернет

Интернет — это огромная сеть, которая соединяет миллиарды устройств по всему миру: компьютеры, телефоны, серверы, часы, холодильники, умные колонки, выключатели и многое другое.

Интернет похож на паутину, где каждое устройство подключено к сети через маршрутизаторы, провайдеров и другие узлы.

Устройства не «болтают» как попало — они передают запросы и ответы по строгим правилам, которые называются протоколами.


Как всё соединено

  • Ваш телефон подключён к роутеру (по Wi-Fi или мобильной сети).
  • Роутер подключён к интернет-провайдеру.
  • Провайдер соединён с другими сетями.
  • И, наконец, данные доходят до сервера, где хранится нужная информация.

IP-адрес

Чтобы устройства могли найти друг друга, у каждого есть IP-адрес — как номер телефона или адрес дома.
Примеры:

  • IPv4: 192.168.0.1, 8.8.8.8
  • IPv6: 2001:0db8:85a3::8a2e:0370:7334

IPv4 — старый формат, адресов в нём стало не хватать.
Поэтому всё больше устройств используют IPv6 — адресов там гораздо больше.


Кто такой клиент и кто такой сервер

Когда вы пользуетесь интернетом, ваше устройство (браузер, приложение, компьютер) играет роль клиента — оно * запрашивает* данные.

А сервер — это другой компьютер (чаще всего в дата-центре), который принимает запросы и отдаёт нужную информацию.


Пример

Вы заходите на сайт example.com:

  1. Браузер отправляет запрос: «Покажи главную страницу».
  2. Сервер обрабатывает запрос.
  3. Возвращает страницу.
  4. Браузер показывает её вам.

Аналогия

Представьте библиотеку:

  • Вы (клиент) просите книгу.
  • Библиотекарь (сервер) ищет и отдаёт книгу, если она есть.
  • Если книги нет — говорит: «Не найдено».

Как передаются данные

Общение между клиентом и сервером идёт в форме:

  • Запроса (что-то получить, отправить или изменить),
  • и ответа (что получилось в ответ на запрос).

Как всё это находит друг друга

Каждое устройство в интернете имеет IP-адрес.
Запрос уходит на этот адрес — как письмо по адресу.

Для точности также указывают порт — это как номер квартиры в доме.
Например: 192.168.1.10:80 — адрес и порт, где «ждёт» веб-сервер.


Всё под контролем

Важно: в интернете не бывает случайных соединений.
Устройства общаются строго по правилам, которые называются протоколами.


Что такое протоколы

Протокол — это набор правил, по которым устройства понимают друг друга.
Как общий язык: если оба «говорят» на нём — они смогут общаться.


TCP/IP — основа всего

Основной набор протоколов называется TCP/IP. Он:

  • находит путь к получателю,
  • передаёт данные,
  • проверяет, что всё дошло целиком и в нужном порядке.

Можно представить TCP/IP как дорогу с навигатором и контролёром качества.


Но этого мало

TCP/IP умеет передавать «посылки», но не знает, что внутри: текст? картинка? страница?

Поэтому есть специальные протоколы, которые объясняют содержимое запроса.
Главный из них — HTTP.


Что такое HTTP

HTTP — это протокол, который используют сайты и приложения, чтобы общаться с серверами.
Он говорит: как запрашивать данные, как их отправлять и как понимать ответ.


Примеры:

  • Вы открыли сайт — браузер отправил HTTP-запрос, получил HTML и показал страницу.
  • Нажали «Отправить» в форме — данные ушли по HTTP.
  • Загрузили картинку — она тоже пришла по HTTP.

HTTP стал основой Всемирной паутины.


Простой пример HTTP-запроса

Когда вы заходите на сайт, браузер делает запрос. Он может выглядеть так:

GET https://example.com/index.html

Это значит:

  • GET — запрос: «получи данные»,
  • https://example.com/index.html — полный адрес страницы.

📌 То есть вы как бы говорите:
«Привет, сайт example.com! Покажи страницу index.html».

Браузер отправляет этот запрос → сервер отвечает → браузер показывает результат.


Простой ответ от сервера

Сервер может ответить так:

200 OK
Привет! Это главная страница сайта.

Здесь:

  • 200 OK — всё прошло успешно,
  • ниже — просто текст, который вернул сервер.

📌 Представьте: вы сказали «Покажи страницу»,
а сервер ответил: «Вот она».


Ответ с ошибкой

Иногда сервер сообщает об ошибке. Например:

404 Not Found
Такой страницы нет.

Это значит:

  • 404 — сервер не нашёл страницу,
  • ниже — текстовое сообщение для пользователя.

📌 Вы сказали: «Покажи /contact»,
а сервер ответил: «Такой страницы нет».


Часто используемые коды ответа

Сервер всегда отвечает кодом, по которому можно понять, как всё прошло.

✅ Успешно

  • 200 OK — всё хорошо.
  • 201 Created — что-то создано.
  • 204 No Content — всё нормально, но данных нет.

🔄 Перенаправление

  • 301 Moved Permanently — страница переехала.
  • 302 Found — временное перенаправление.

⚠️ Ошибки клиента

  • 400 Bad Request — неправильный запрос.
  • 401 Unauthorized — нужна авторизация.
  • 403 Forbidden — доступ запрещён.
  • 404 Not Found — не найдено.

❌ Ошибки сервера

  • 500 Internal Server Error — ошибка на сервере.
  • 502 Bad Gateway — ошибка шлюза.
  • 503 Service Unavailable — сервер недоступен.

📌 Запомните 3 самых важных:

  • 200 — всё хорошо,
  • 404 — не найдено,
  • 500 — что-то сломалось.

Что дальше

Теперь вы знаете:

  • как устроен интернет и как передаются данные;
  • кто такие клиент и сервер;
  • что такое HTTP и как выглядят запросы и ответы.

В следующих главах мы научимся отправлять HTTP-запросы вручную,
и писать программы, которые делают это сами.