Архитектура ИТ-решений
14.5K subscribers
294 photos
30 files
1.11K links
Разговоры об архитектуре корпоративных информационных систем (архитектура предприятия, архитектура ИТ-решений, микросервисы).

Вебинары: https://disk.yandex.ru/d/0lwmomky8wCjgw
Download Telegram
офф-топик: Любой кризис оставляет за собой трущобы унаследованных приложений и обломки незавершенных проектов. ИТ-архитекторы называют это браунфилд. Это хотели переделать, да не успели. А это начали, но потом денег не стало, а потому бросили. В общем, всё как мы любим. Очень скоро заказчики захотят построить поверх этого новые воздушные замки силами сотрудников с удалёнки. Так что архитекторА будут востребованы. Вот только сначала HR-ы пройдутся дружными рядами туда-сюда и можно приступать.
Еще одна картинка о жизненном цикле архитектуры решений (solution architecture). От других её принципиально отличает попытка предоставить список возможных вариантов реализации (см. внизу секцию options) https://dalbanger.wordpress.com/2017/05/07/the-solution-architecture-life-cycle/
В своем учебном курсе про микросервисы https://itexpert.ru/msa/ (который переезжает в онлайн, ну разумеется) хочу перенести демо/лабы по docker и kubernetes с katakoda.com на какой-либо отечественный kubernetes-as-a-service. Если среди подписчиков кто-то такое предоставляет, напишите, плз. @mxsmirnov
Классификация микросервисов.
Совершенно разные вещи понимают под микросервисами те или иные эксперты. Для кого-то это компоненты без состояния (stateless), участвующие в обработке команд. В другом случае микросервис отвечает не только за обработку, но за хранение данных, причем не только в оперативной памяти, но и на внешних носителях. Часто микросервисом считают реплику данных, предназначенную только для чтения. Один и тот же набор данных может поступать в множество различных представлений, оптимизированных для определенного типа запросов. Все эти случаи разные. И характеристики компонент, называем ли мы их микросервисами или нет, так же различаются. Мы запутаемся если не признаем, что под общим термином мы понимает несколько непохожих вещей. Возможно, классификация микросервисов уже существует, но мне она не известна. В этом случае её придется создать
Похожая ситуация была с архитектурным стилем REST. Автор этого стиля Рой Филдинг (Roy Fielding) описал его в своей диссертации немного сложно https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Что не помешало разработчикам добавлять слово REST к любым API, реализованным поверх HTTP. И только одно нарушало их энтузиазм. Заметки Филдинга в его блоге о том, что очередной как бы REST API таковым не является
I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today’s example is the SocialSite REST API. That is RPC. It screams RPC
https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
Ситуацию разрядил Leonard Richardson, предложив модель зрелости API по степени их соответствия идеям REST http://restcookbook.com/Miscellaneous/richardsonmaturitymodel/
На мой взгляд, наиболее адекватный сегодняшним технологиям способ классификации взаимодействий между сервисами представлен на рисунке. Любое взаимодействие — это либо команда (command), запрос(query) или событие(event). Команды устремлены в будущее. Они несут намерение клиента изменить состояние ресурса на сервере. Это может произойти при успешной обработке команды, как правило осуществляемой асинхронно, либо не произойти. Запросы не собираются ничего менять. Они хотят предоставить клиенту информацию о текущем состоянии ресурса (это тоже может не всегда получиться). Команды – про настоящее. Вернее, про очень недавнее прошлое. И события – это уведомления сервера о том, что где-то за его границами что-то случилось с одним из ресурсов и сервису может быть интересно об этом узнать. События – следы прошлого. Они не могут закончится неудачей, т.к. уже произошли, хотя сервис, конечно, может их проигнорировать
Иногда краткий обзор книжки бывает не так уж плох. Нашел такой для знаменитой "Дилеммы инноватора" Клейтона Кристенсена. Всё перечисленное там полностью применимо к ИТ-продуктам
С моей подачи https://tttttt.me/itarchitect_jobs/6691 третий день в группе "Работа для ИТ-архитекторов" идет крайне интересное обсуждение темы Почему люди становятся ИТ-архитекторами, посмотрите. Язык не поворачивается назвать это офф-топиком. Вряд ли кто-то сейчас занят подбором архитекторов, ведь так? Думаю, что контекст, в котором мы все сейчас оказались, располагает к размышлениям о более фундаментальных вещах, чем обычно
Архитектура ИТ-решений
С моей подачи https://tttttt.me/itarchitect_jobs/6691 третий день в группе "Работа для ИТ-архитекторов" идет крайне интересное обсуждение темы Почему люди становятся ИТ-архитекторами, посмотрите. Язык не поворачивается назвать это офф-топиком. Вряд ли кто-то сейчас…
... да, но на собеседованиях лучше рассказывать другие истории. Если бы меня спросили почему ты решил стать ИТ-архитектором, то я бы ответил, что всю жизнь мечтал стать менеджером. Хорошим менеджером, как в книжках Питера Друкера про эффективного управляющего. Менеджером, принимающим правильные решения, учитывающим объективные возможности, способным придумать несколько альтернативных вариантов, а ещё лучше – угадать неожиданное, но офигенно эффективное решение.

Наивность таких фантазий я осознал, став еще совсем маленьким начальником. И вот почему. Во-первых, даже у самого маленького начальника времени о чём-то подумать просто нет. Какие альтернативные варианты и неожиданные решения? Дела надо раскидывать, причем шустренько, а иначе ими тебя просто закидает. Во-вторых, если о чем-то и удается подумать, то исключительно о политике. Всё многообразие мира ограничивается для начальничка его организационно-социальным окружением; такими же как он бюрократами, с которыми и дружить надо, но палец в рот не клади. И в-третьих, работа норовит превратить всю твою потенциальную энергию в свою кинетическую. Сил разобраться с той или иной технологией, понять и посмотреть что-то новое, пусть даже очень простое, банально не остается.

Даже доработав до должности руководителя департамента, по-настоящему хорошим менеджером я так не стал. Зато понял, чего ИТ-руководителю больше всего не хватает и как ему помочь почувствовать себя эффективным управляющим из книжек Питера Друкера. Я научился готовить хорошие решения. Когда меня просят проработать для руководства компании какой-либо технический вопрос я делаю это будто бы для себя. Вернее, для того вымышленного хорошего менеджера из собственных фантазий.

В общем, вот так я и стал ИТ-архитектором. Нет, ну еще много UML-диаграмм рисовал, конечно, в нотации Archimate и TOGAF-ом перед сном зачитывался
PS: история вымышленная [почти], но вдруг кому пригодится
Ну что, айтишнички криворукие, есть ли у вас план Б? Я не знаю, живо обсуждаемое в telegram-каналах приложение https://tttttt.me/itsorm/1576, действительно, от оперативного штаба Москвы или нет, но есть ряд детских глупостей, от которых отлично помогает ИТ-архитектура. Надо её просто иногда применять. Попробую перечислить пару вещей:

1) Никогда не пишите приложения. Особенно клиентские, особенно мобильные (да и фронтальные, те что на js в браузере, тоже не пишите), особенно если нет времени, тем более если вам масштабироваться до нескольких миллионов за несколько дней. Начинайте с протокола взаимодействия: Alice->Bob…, ну сами знаете

В нашем случае, вот сгенерите человеку, которому надо выйти из дома, цифру и пусть она будет валидна в течении получаса, а потом сгорает. Можно к району привязать, а можно и не париться. А программу для проверки можно сделать так, чтоб она и в офф-лайне работала, без проблем (да даже на бумажке посчитать)

2 ) Нет приложения, нет проблемы омниканальности. Сегодня локально проверяем, а вечером логи на сервер грузим для поиска злоупотреблений, завтра в браузере, послезавтра по mail-у шлём и ответ полчаса ждём, через полгода приложение напишем, ну если ещё захочется, разумеется

3) Фичи никому не нужны. Всегда надо делать только базовый функционал. Кстати, реальное назначение MVP не гипотезы тестировать, а отгонять от продукта идиотов с дополнительными требованиями (это шутка, почти). Типа:
- А почему ты не хочешь биометрию встроить?
- Я?! Не хочу? Да я всё что угодно встрою! Хоть блокчейн с машинлёрнингом, хоть ГОСТовские алгоритмы, реализованные только под виндоуз, но потом, в целевой архитектуре, так сказать. А пока у меня MVP, отвалите!

Ну, а для тех кому всё это сложно даётся простой совет: архитектора позовите, будет хоть на кого потом всё свалить
Архитектура ИТ-решений
Ну что, айтишнички криворукие, есть ли у вас план Б? Я не знаю, живо обсуждаемое в telegram-каналах приложение https://tttttt.me/itsorm/1576, действительно, от оперативного штаба Москвы или нет, но есть ряд детских глупостей, от которых отлично помогает ИТ-архитектура.…
Тезис о том, что приложения – это проблема совсем не метафора. Кому-то это покажется странным, но дискуссия о том, что важнее: разработать софт или сочинить протокол возникала в ИТ-отрасли неоднократно. В 90-ые по организациям ходило множество уродов, которые впаривали proprietary реализацию электронной почты. Стоило больших сил убедить руководство в том, что почту надо отправлять по SMTP, а читать по POP3/IMAP4. Пользователи орали, что им нужен функционал, а не правильная архитектура. Про сайт ietf.org вообще мало кто что понимал. На тот момент электронная почта по интернет-протоколам победила (Собственно интернет и существует исключительно благодаря протоколам).

Когда сегодня тот или иной локальный облачный почтовый сервис отключает у себя IMAP, предлагая читать почту через собственное мобильное приложение или сайт, я чувствую, что мракобесие возвращается. (Эти компании - алчные идиоты, а никакие не технологические лидеры)

Такая же ситуация с разного рода госуслугами. Если вы не можете получить услугу используя curl, то с вами, скорее всего, просто играют в наперстки. Протокол начинает работать, а сервис развиваться, только когда появляются 3-4 независимые реализации. Вспомните, хотя бы войны браузеров.
В общем: #APIFirst
Никак не найду время написать что-то внятное после прочтения этой книги https://www.alpinabook.ru/catalog/book-604931/ потому главное впечатление.

Авторы поставили себе цель не просто регулярно проводить опросов вокруг DevOps (с 2014 года), но и найти статистические зависимости между довольно разными вещами в организациях (помните, наверное, критерий хи-квадрат и всё такое... )
Ряд таких зависимостей (и их отсутствий) авторам обнаружить удалось. Ну а за подробностями переадресую к первоисточнику
Архитектура ИТ-решений
Никак не найду время написать что-то внятное после прочтения этой книги https://www.alpinabook.ru/catalog/book-604931/ потому главное впечатление. Авторы поставили себе цель не просто регулярно проводить опросов вокруг DevOps (с 2014 года), но и найти статистические…
Расширю словами самого же Gene Kim из интервью https://www.infoq.com/articles/unicorn-project/
--
When I contributed to Accelerate and to The State of DevOps Reports with Dr. Nicole Forsgren and Jez Humble, we established that architecture is a top predictor of performance
Architecture enables teams to independently develop, test, and deploy value to customers without being coupled to 20 30 40 other teams. This finding really got me interested in exploring how important it is for developers to write code that can be decoupled from everybody else.
--
Ну, а вообще, это интервью про книжку The Unicorn Project и раскрытых в ней Five Ideals:
- Locality and Simplicity
- Focus, Flow, and Joy
- Improvement of Daily Work
- Psychological Safety
- Customer Focus
Новое слово в архитектуре пишется AIP, что означает API Improvement Proposals
AIP - это сочетание руководства по проектированию и системы, которую мы используем для управления и отслеживания этого руководства
https://aip.dev/
Изобретатель архитектурного стиля REST Рой Филдинг пишет у себя в твиттере (см. рисунок). В общем, наблюдаем
Не хотел делиться этой ссылкой в канале, но в выходные в группах по ИТ-архитектуре как-то совсем тоскливо. Редкий спам от ботов, а иногда и людей. Так что расшарю: https://mxsmirnov.com/2020/04/02/digital-shadow/
ИТ-ПЛАТФОРМА как много в этом звуке, для ... начинающего предпринимателя, чиновника от ИТ, бюрократа. Если у вас есть бюджет, но нет понимания какой нужен продукт - создавайте платформу. Если у вас есть потенциальный заказчик, но нет решения - продавайте платформу. Когда вам нравится считать себя обладателем некоторого набора технологий, ноу-хау, но не очень ясно куда и как это применить назовите их в платформой и предлагайте при всяком удобном случае.

Теперь чуть более серьезно. Последнее время термин платформа часто комбинируется с о словом микросервисная. Однако внятной концепции, ответа на вопрос зачем она нужна, практически не услышишь.
У меня есть свой вариант ответа (надеюсь неплохой). Позже, я обязательно его озвучу. Есть и еще несколько гипотез. Но уверен, что мой список неполный. Потому прошу подписчиков поделиться своим вариантом ответа на вопрос: кому и зачем нужна микросервисная платформа; какие боли нашего и кого именно она вылечит и почему? Чем такое лекарство отличается от других таблеток?
Архитектура ИТ-решений
ИТ-ПЛАТФОРМА как много в этом звуке, для ... начинающего предпринимателя, чиновника от ИТ, бюрократа. Если у вас есть бюджет, но нет понимания какой нужен продукт - создавайте платформу. Если у вас есть потенциальный заказчик, но нет решения - продавайте платформу.…
У каждого типа платформ, технологических или бизнес- , есть свой вариант ответа на вопрос ЗАЧЕМ? (Кстати, есть и своя цена, которую мы платим за выбор такого варианта ответа) Библиотеки не только упрощают разработку, но и обеспечивают концептуальную целостность. Сервера приложений отвечают за совместное использование ресурса. СУБД обеспечивают нескольким параллельным процессам работу с общим набором данных, обещая поддержание консистентности этого набора. Бизнес-платформа защищает нашу позицию внутри экосистемы. API избавляет от необходимости интеграции с каждым новым клиентом, вынуждая их интегрироваться в режиме самообслуживания. Но зачем нужна микросервисная платформа?

Прояснение замыслов (концепций) один из основных видов деятельности архитектора. Нам не избежать ответов на подобные вопросы, ведь так?