unit-0.3 beta

Валентин Бартенев vbart на nginx.com
Сб Дек 30 02:55:17 UTC 2017


On Saturday, 30 December 2017 04:43:31 MSK S.A.N wrote:
> > Как по вашему, firefox - это сервис или приложение?  Можете обосновать
> > почему?
> 
> Я же не ради холивара это писал :)
> Клиентские GUI приложения сервисами сложно назвать, но для меня:
> PHP-FPM - это сервис
> Node.js - это сервис
> Python WSGI - это сервис
> Go Server - это сервис

И Unit может быть сервисом, а запускает он приложения. =)


> 
> Возможно у меня systemd головного мозга, но в вашем конфиге, раздел
> "listeners" я понимаю как директивы для systemd.socket и соответственно
> "applications" у меня ассоциируется с директивами для systemd.service, мне
> так проще унифицировать свои знание и ваше название Unit очень помогает
> сделать связь с unit от systemd.

Для меня wordpress.com - это сервис, а WordPress тот, что набор php
скриптов - это приложение.  И именно настройка интерпретации данного
набора скриптов и производится в объекте "applications".

Тот же GUI для Firefox отрисовывается с помощью других промежуточных
служб,  X-сервера, драйвера и т.д., и там даже может учавствовать некий
протокол, а всё это может быть физически разнесено по разным машинам.
А для WordPress интерфейс рисуется с помощью браузера, того же Firefox.
Поэтому всё не так просто и однозначно.

Под сервисами, как правило, понимают те приложения, которые выполняют
некую служебную, то бишь сервисную функцию для других приложений.
Поскольку именно такую функцию чаще всего выполняют системные службы,
то и systemd, и многие другие init-системы пользуются данной терминологией.

В любом случае сервисное приложение - это тоже приложение.  Как утверждает
словарь: application - a program or piece of software designed to fulfil
a particular purpose. "a database application".  Так, например в зависимости
от архитектуры, приложение может быть монолитным или микросервисным, с ним
может непосредственно взаимодействовать пользователь, а могут другие
приложения.

Иными словами сервис - это более узкий термин, определяющий выполняемую
приложением роль.  Возможно он идеально подходит для systemd, но я бы не
стал называть большинство веб-приложений сервисами.

В Unit-е используется нейтральный термин, не навязывающий определенной
роли или архитектуры для приложения.


> 
> В идеале мне (думаю и многим тоже) будет удобно если все аналогичные
> директивы из unit.nginx и systemd будут иметь одинаковые название.
> 

О нет, не хотелось бы переизобретать systemd.  Пусть systemd и дальше
запускает сервисы, а Unit будет заниматься запуском веб-приложений.

В любом случае, спасибо вам за идею, я её принял к сведению.  Безусловно,
конфигурация должна быть интуитивно понятной для пользователей и правильный
выбор терминологии крайне важен.  Например, в ранних версиях Unit объект
"listeners" назывался "sockets", но это вызвало всеобщее неприятие и в
итоге он был переименован.

В случае же "applications" -> "services" - это первый подобный запрос, а
текущая терминология устраивает в том числе американскую часть компании,
для которой это родной язык, поэтому вероятность одобрения не велика.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru