Здравствуйте, дорогие читатели! Готов поспорить, если вы не программист или иной IT-специалист, что в мире информационных технологий вы слышали очень часто одно слово, но не сможете до конца объяснить, что за ним стоит. Это слово, этот термин - Сервис. Казалось бы, слово до боли банальное, но так ли всё просто с ним? Попробуем разобраться вместе, заодно узнаем, общаются ли программы друг с другом (и голосом ли?)
Сервис значит услуга
Действительно, это слово происходит от английского (а туда оно попало из латыни) to serve: служить, обслуживать. Нас могут обслуживать в кафе, парикмахерской, магазине, аэропорте. Государство тоже нас обслуживает: вон, даже целый портал на эту тему есть, который так и называется - Госуслуги. Таким образом, если мы слышим выражение IT-сервис, то получается, что это просто услуги в сфере ИТ, что логично. Всё, конечно, в этом мире просто, да не совсем. В мире IT слово сервис несколько отличается от банальной услуги. Оно является техническим термином, а не просто указанием на то, что вот бизнес, компания; они оказывают услуги, но их руководители страдают использованием pigeon-english, а именно, очень любят русские слова заменять на англицизмы к месту или не к месту. К сожалению, конкретно в этой истории действительно всё небанально: сервис в информационных технологиях относится к двум концепциям, которые тесно переплелись между собой. Какие именно это концепции - сегодня и разберём
Сервисно-ориентированная архитектура. Она же SOA
В IT можно встретить такое сокращение как SOA: service oriented architecture. По-русски: сервисно-ориентированная архитектура. Речь идёт об архитектуре компьютерных (информационных) систем, а не о красивой архитектуре зданий. Причём же здесь сервисы? Почему архитектура на них ориентируется? Конкретно в этом случае, речь идёт действительно об оказании IT-услуг другим пользователям (частным или юридическим). Имеется в виду, что разработанная нами система предназначена для того, чтобы её использовали как услугу, получали к ней удалённый доступ, требовали с нас поддержку и развитие, качество услуги. Возможно (т. к. бывают бесплатные случаи) платили за использование. Важно, что эту услугу теоретически должен оказывать не один провайдер. На практике, как повезёт, конечно, так как бывают уникальные решения и услуги. Иными словами, у клиента имеется своя собственная система, компоненты которой могут предоставляться провайдерами сервисов.
В прошлый раз мы говорили о том, что существуют облачные вычисления, облака. Облака - ярчайший пример сервисно-ориентированной архитектуры, подхода. Ярчайший, но не единственный. Скажем, до появления облаков, как концепции, можно было пользоваться email-сервисами или хостингом сайтов, а также получать к каким-нибудь сайтам доступ за деньги.
Да, есть такой момент, который обязательно нужно упомянуть. Мы часто говорим "программный продукт", "купил программу", так, словно это товар. На самом деле, любая компьютерная программа или система является услугой. Товары - это то, что делают на заводах и фабриках, реже дома или ещё где. В любом случае, товар можно потрогать, у него есть физическое воплощение и представление. У него есть юридические вытекающие: товар является имуществом, может быть утрачен, испорчен, переделан, арестован. Компьютерная программа - её руками потрогать нереально. Можно потрогать диск с программой, сервер или ПК, на котором она стоит. Можно увидеть её в виде единиц и ноликов, либо ещё в каком виде, но чисто в электронном, неосязаемом формате. Юридически, программы являются услугами. Если вы купили WIndows, допустим, или новую компьютерную игрушку, то вы купили на самом деле лицензию за её использование. Возможно, носитель данных (диск или флешку). Ещё, возможно, к нему идёт буклет, книжки и т. д. Лицензия даёт право использовать программу на тех или иных условиях, но не даёт права владеть ею. Почему важно вспомнить про это сегодня? Потому что это отчасти объясняет использование слова сервис при описании концепций в мире IT. Раз программа - услуга, то её компоненты, доступ к которым она может иметь, в том числе удалённый, тоже услуги, то есть сервисы.
Как общаются программы? Или что это за зверь по имени веб-сервис?
Плавно переходим ко второй грани нашего сегодняшнего концепта. Наверняка слышали слово "сервер" и выражение "клиент-сервер" в разных формах? Сервер, по-английски, переводится как слуга, хотя в таком виде уже почти не используется. Классический смысл клиент-серверного подхода: послать со стороны клиента запрос на обслуживание; со стороны сервера - получить этот запрос и обработать, обслужить клиента, вернув ему на его запрос тот или иной ответ.
Клиент и сервер могут существовать на одном компьютере: в таком случае, одна программа будет клиентом, а вторая - сервером (да, бывает и такое!). Могут находиться в пределах локальной сети - то есть два компьютера соединяются проводами, опционально, через специальное оборудование (свитчи, роутеры), хотя можно и напрямую. Например, по bluetooth, USB, либо ещё через какую-нибудь экзотику.
В наше время всё больше и чаще мы видим сложные, распределённые случаи, когда клиенты и серверы находятся в разных сетях, но связывает их всех интернет. Общий подход остался тем же и ещё долго останется, но реалии, антураж, будут меняться, порой существенно, внося свои коррективы. В любом случае, программы интегрируются (интеграция, по-русски, это способность подружить две разные программы: иногда, как в сказке про ежа и ужа, но чаще всё же имеем дело с нормальными "ребятами"); между ними происходит обмен запросами/сообщениями; тут ещё важно помнить, что две программы по отношению друг к другу могут быть как клиентами, так и серверами, меняясь ролями при необходимости. Открытый вопрос: как общаются программы?
Понятное дело, что программы общаются не голосом, хотя это и происходит на языке, причём письменном, а самое интересное, читаемом человеком (при необходимости). Скажу ещё более интересные вещи: иногда программы пользуются услугами почтальона, хотя больше предпочитают прямой контакт. Письменный язык, на котором они общаются, называется протоколом. Вернее говоря, это скорее подход в общении, так как универсальных протоколов для общения программ и систем придумано несколько. Подробнее поговорим в следующий раз, но многие протоколы основаны на других протоколах.
Прямой контакт между программами посредством интернета осуществляется через точки доступа в Mikoshi. Выглядит это в виде самого обычного веб-адреса, как к сайту. Да, доступ к нему может быть прикрыт различными системами идентификации и авторизации, но могут быть и публичные адреса, доступ к которым открыт всем. По адресу может пройти и человек. Более того, он даже увидит сообщения (те самые человекочитаемые сообщения) в структурированном виде.
Так вот, веб-сервисы - это не порталы в интернете, как их частенько называют недалёкие люди. Нет. Веб-сервисы - это как раз те самые прослойки между двумя программами, либо их части, к которым по таким адресам можно получить доступ. При заходе на адрес, можно в параметрах, либо в так называемых заголовках вызова (невидимая часть айсберга при работе в интернете) указать, что конкретно мы запрашиваем у веб-сервиса. Получаемое сообщение и будет ответом на наш запрос. Что происходит за кулисами? Считайте это приманкой на то, чтобы клюнуть на новую статью на моём канале ). Обязательно расскажу в следующий раз.
Как правило, у серьёзных систем далеко не один возможный вызов. Бывают системы с сотней, а то и несколькими, вариантов вызовов, запрашиваемой информации и т. д. В таком случае, вызовы веб-сервисов объединены в так называемый API: Application Programming Interface - программируемый интерфейс приложений - по сути, библиотеку (правильнее говоря, документ), в которой все эти вызовы собраны, а также рассказывается, как ими пользоваться, как доступ получить и т. д. У Яндекса, например, есть публичные и условно-публичные (требуют ключа разработчика, а в некоторых случаях и отдельного договора) API для многих их сервисов.
Подведём итоги
Итак, мы пришли к выводу, что слово сервис в мире компьютеров, информатики, информационных технологий, значит гораздо больше, чем банальная услуга. Сервис - это целый подход к организации взаимодействия между программами и компьютерными системами. Бывают публичные сервисы, бывают сервисы платные (берут деньги за подписку и использование). Облака также построены на основе сервисов. А ещё мы узнали, что программы друг с другом умеют общаться на вполне читаемом человеком языке. Понимание концепции сервиса в ИТ очень важно для дальнейшего продвижения в изучении прочих современных концепций и понятий.
Благодарю за внимание. Ставьте лайк, если понравилась статья. Также, буду очень рад вопросам и комментариям
Игорь Кучаев