Серьёзный программист скажет, что это части одной системы, а не виды продуктов. А потом выдаст: «Делаем не сайт, а веб-приложение, — или, — Сайт готов, но нужно ещё подключить веб-сервисы». Как это понимать?
Сравним блинную в торговом центре и федеральную сеть доставки пиццы.
Блинной хватает онлайн-визитки с указанием, какие блины она жарит, где находится. Можете анонсировать там скидки и мастер-классы, размещать срочные объявления: «Сегодня закрыты. Нет воды».
Пиццерия принимает заказы через сайт и мобильное приложение. С клиентами общается робот (чат-бот). У поваров и курьеров — свои приложения, чтобы получать задачи и фиксировать ход работ. Простеньким сайтом тут не обойтись: нужен целый комплекс программ.
Повар раскатал тесто, выложил начинку, отправил пиццу в печь, упаковал в коробку для доставки. Так вот, коробка — это сайт, печь — веб-сервис, а повар — веб-приложение. Пицца, коробка, печь, повар — это не отдельные услуги, а часть единого процесса.
Перейдём от метафоры к реальности.
«Реализуем архитектуру “клиент-сервер”», — объявили разработчики. Что это значит: клиент только «просит» сервер поработать и выдать результат. Бизнес-процесс выполняется на сервере, а не на устройстве клиента. Веб-приложение — та часть кода на сервере, которая выполняет бизнес-процессы.
Веб-сервис — ещё более техническое понятие. Если веб-приложение хоть как-то касается клиента, то веб-сервис работает не с клиентом, а с другими приложениями и сервисами. Это код для другого кода.
Поясним на примере.
Заказчик пиццы при оформлении вводит адрес, контакты, номер карты. На сервер отправляется команда «Оформляй!» Сервер, а точнее, приложение на сервере, вычисляет стоимость доставки, применяет скидки, начисляет бонусы, записывает заказ в базу, уведомляет кухню и курьера, связывается с банком для оплаты, создаёт проводку для бухгалтерии. Проделав всё это, сервер отчитывается: «Заказ оформлен!» Заказчик видит уведомление.
Где тут веб-сервис? Там, где пиццерия связывается с банком, чтобы снять деньги со счёта плательщика. Он не видит, как сервер опрашивает банк: хватает ли денег на карте, правильно ли введены данные, не состоит ли карта в чёрном списке. С банком общается вспомогательный код — «веб-сервис». Ещё есть второй веб-сервис, для сбора метрик, и третий, для имейл-рассылок.
По сравнению с этим, на сайте блинной обрабатывать нечего: надо просто показать статичный текст и изображения. Пара незамысловатых страничек безо всяких приложений и сервисов.
Веб-приложение помогает компании расти благодаря тому, что:
Но вместе с тем оно приносит новые трудности:
В обиходе под сайтом понимают справочную: лендинг, портфолио, визитку. Пользователь ничего не делает, а только читает, что написано.
Под веб-приложением имеют в виду нечто более сложное: интернет-магазин, онлайн-банк, электронные госуслуги. Там есть взаимодействие с клиентом.
Говоря «мы разрабатываем веб-сервис», подразумевают, что пишут вспомогательный код. Для сбора метрик, например.
Технически приложение и сервис — не виды продуктов, а детали пазла. Малый оффлайн-бизнес обойдётся без них, средний и крупный онлайн-бизнес — нет. Пиццерия с онлайн-заказами никак не может быть простым сайтом.