August 19, 2019

Плов (микросервисы в действии)

Ниже написан не бред (как может показаться даже после трёх прочтений) - а абстракция, позволяющая лучше понять слой "execution" в микросервисных проектах. Этот текст хорошо ложится на Agile (или Agile хорошо ложится на этот текст ))

"“Execution microservices” means nothing more but how to execute an application. Microservice in this context means systemd service describes how we will execute (start/stop/status) the definite application in terms of external service provision. "

-----

Плов

Пишу это текст plaintext'ом, так как просто хочу приготовить плов. Без фасадов рекламных, без воронок продаж - для себя, для друзей и знакомых. Просто плов.

Плов хочу тот самый, который армяне готовят, который меня учили готовить, хотя, "учили" - это не та категория. "Учил себя, учился" - а мне лишь давали возможность быть с теми, кто уже умеет. Правда, загадку плова я понял лишь когда начал учить готовить его других людей... загадка в том, что если ты думаешь, что знаешь, как готовить плов, знаешь его вкус, аромат и текстуру до рисинки и до каждой зиры - просто попробуй научить кого-то его готовить. И прямо в этот момент ты поймёшь, что НИЧЕГО, НИ-ЧЕ-ГО не умеешь, и это самое лучшее ощущение - наслаждаться, отказаться от "умения готовить плов".

Вот из этого настроения мы и будем дальше его готовить.

---

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

Образ плова в моей голове каждый раз, каждое приготовление, немного корректируется - и, одновременно, ветвится. Потому что я начинаю замечать, что готовлю плов не ради плова - а для людей. А потом - что именно для этих людей. А потом - начинаю ощущать, какой плов я могу сегодня приготовить (т.е. то, что идёт от меня) и какой плов сегодня этим людям лучше подать (то, что идёт от среды и от людей).

Таак.. для плова мне понадобятся ... и, обычно, новичок тут начинает перечислять "лук, морковка...". Но мы сделаем иначе.

--

Представим, что мы записали процесс приготовления плова, и комментируем, что делает тот, кто готовит. Прежде чем это сделать, зафиксируем позиции:

1) есть те, кто будут плов есть - они конечные пользователи, для которых он должен быть вкусным и соответствовать их понятиям о "вкусно", "эстетично". Плов здесь - не рис, не казан - а антураж.

2) есть повар, который готовит - то есть, выводит в фазу эксплуатации сам плов. Потому что плова нет до тех пор, пока он готов. Для Клиентов нет - а для повара есть. В этом и секрет. Он техник-инженер-архитектор слоя производства и исполнения плова. Опять же, до исполнения (полной готовности) плова - плова нет. При производстве плова только повар может сказать, что это - плов.

Плов здесь двойной - как продукт (сервис) в казане и как процесс его производства.

3) Производители и поставщики риса тоже здесь - но мы их оставим пока, и ,наконец, начнём готовить.

Итак, поехали!

--

Этот парень сейчас будет готовить плов. Он реально знает, что такое плов и каков он должен быть. То есть, у него есть ощущение результата, и он будет соблюдать некие правила его приготовления. Иногда пробовать. Но факт - он его готовит не для того, чтобы приготовить. Он его подаст на обед. И его задача - "исполнить" плов, передать казан с вкусным пловом тем, кто создадут антураж и аккуратно, на серверованном столе, создадут атмосферу уюта.

Итак, он в своей голове делит кухню на два типа объектов (ландшафт): окружение и исполнение плова.

Окружение - это буквально, то, что окружает плов, но не составляет его. И это окружение он делит на два типа:

1) "аппаратное", железо - уровня "плита-вытяжка-холодильник"
\\ это - аппаратные мощности и серверы

2) "мягкое", то, что работает поверх "железа" - сковородка, казан, контейнер для морковки.
\\ это - операционные системы виртуальных машин

Он включил газ, поставил казан - и наливает масло. Масло - не часть плова. То есть, не ощущается, что именно то масло из бутылки есть в плове. Оно трансформируется по ходу. Сначала оно вбирает цвет и аромат морковки и специй, потом лука...

Стойте, а откуда морковка и лук? Они составляющие плова, но не плов - они же "технические сервисы". Технические - потому как они исполняют в плове не свою, системно-обособленную функцию, а функцию системы "плов". Это исполнение плова.
\\ это -запущенные инстансы jetty\haproxy\neo4j\nginx\...

Плов, как сервис - это сервис уровня приложений. Это и есть приложение, если мы ассоциируем приложение с запущенным приложением.
\\ Запущенное приложение формирует бизнес-ценность, которую и нужно поддерживать: его консистентность, доступность, расширяемость, обновляемость.

---

Есть специальные люди, которые понимают, что "приложение" и "запущенное приложение" - две большие разницы. Этот текст об этом.


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


......TBC......