Всем привет! Проведенный отпуск дал какую-то легкость мысли, и мне захотелось написать простую и немного забавную статью, в которой я бы смог на обычных примерах из своей жизни объяснить различные термины из мира ИТ архитектуры.  По мере планирования своего отдыха этим летом случайно поймал себя на мысли, что использую техники и подходы, которые характерны для архитектурного мышления. Получается, сам того не замечая, я использовал архитектурное мышление там, где изначально его не должно было быть – при планировании велопутешествия. И раз это велопутешествие прошло успешно, о чем в подробностях расскажу ниже, мне показалось, что этот навык может быть полезен каждому и в обычной жизни.   Другой мотивацией создания статьи является факт, что сейчас не существует единого общепризнанного определения термина «архитектурное мышление», поэтому куда проще описать его на примере, чем приводить кучу ссылок на разные источники. И, наконец, когда твое личное хобби и работа так гармонично сочетаются, об этом стоит рассказать! Если кратко, то архитектурное мышление есть не что иное, как ряд последовательных и логичных действий, которые приводят к созданию архитектуры целевого решения. В моем случае целевым решением, которое надо создать, была совокупность из спроектированного маршрута, экипировки и вещей, необходимых в велопутешествии. Можно сказать, что в процессе подготовки я провел функциональную декомпозицию, разбив целевое решение как систему на такие компоненты, как «одежда», «набор для приготовления еды», «ночевка», «еда», «сумки», «запасные детали», «аптечка» и пр. И далее уже анализировал требования и принимал решения для каждого из этих компонентов.  Предполагаю, по мере прочтения статьи многие не раз подумают, что они неоднократно используют в жизни техники и подходы, не зная изначально, что они относятся к архитектурному мышлению. В этом, мне кажется, и заключается основное преимущество архитектурного мышления: оно органично вписывается в нашу жизнь, ведь замечу, что каждый из нас немножко архитектор.  Итак, зимой с покупкой нового велосипеда я запланировал отправиться летом в велопутешествие. Стоит признать, что изначально хотелось проехать вдоль Атлантического побережья во Франции. Первом этапом архитектурного мышления идет понимание бизнес-целей проекта, и в нашем случае летнее велопутешествие по Франции этой целью и является. Как мы знаем, пандемия внесла свои коррективы, и границы стран оказались закрыты, поэтому еще в марте я начал прорабатывать альтернативный маршрут без изменения сроков, но уже по России. Сделав небольшое исследование самых красивых дорог России, в итоге остановился на Горном Алтае с Чуйским трактом, оставив Псковскую область с древними городами Изборск и Печоры на запас. Изменение страны путешествия можно сравнить с изменением бизнес-цели проекта, так как теперь велопутешествие пройдет по России. Почему я сравниваю это с изменением цели? Потому что смена страны поменяла суть путешествия, затронув очень много аспектов во время подготовки, включая изменения в снаряжении и бюджете. Во Франции, в отличие от Горного Алтая, более развита инфраструктура ресторанов, отелей и общественного транспорта, которым можно воспользоваться, если произошла поломка или авария и надо добраться до города. Соответственно я планировал ехать налегке, спать в отелях и есть в кафе и ресторанах. Для путешествия по Алтаю палатка, коврик, спальник, а также горелка и небольшой запас еды становятся необходимыми вещами, ведь между деревнями, где есть магазин, может быть не менее 30 км, а отелей или кафе может не быть на протяжении и 100 км. Поэтому велопутешествие по Франции и по Алтаю это две абсолютно разные вещи.   Как и в проектах, на изменения в бизнес-целях лучше реагировать как можно раньше, и мне повезло, что я знал о закрытии границ еще в начале весны, а не за пару недель до начала путешествия. Лучше вообще не менять цели по ходу проекта, но в моем случае был форс-мажор из-за пандемии. Можно было оставить все как есть и верить, что границы в августе все же откроют, но, как показала практика, я принял верное решение не ждать. Это позволило грамотно выбрать новое снаряжение, провести сравнительный анализ того, что есть на рынке, успеть заказать в западных онлайн-магазинах (в России многие вещи не продаются и я пользовался доставкой из chain reaction и trekkinn) и еще воспользоваться скидками из-за низкого сезона и пандемии. Если бы я ждал до последнего и не принял изменение цели, то пришлось бы покупать другое, менее удобное снаряжение в последний момент и за бОльшие деньги.  Здесь мы плавно переходим к второму этапу архитектурного мышления при создании решения, а именно к формированию требований (функциональных и нефункциональных) в соответствии с бизнес-целями. В отличие от пешего или водного похода для велопутешествия помимо веса еще очень важен объём и размер вещей, ведь у тебя нет одного большого рюкзака за спиной, где можно разместить все разом. К примеру, я использовал 8 разных сумок емкостью от 1 до 14 литров, закрепленных под седлом, на раме, на руле и на вилке.   В целом, это можно сравнить с диаграммой развертывания (deployment diagram) при создании ИТ архитектуры, где велосипед как бы являлся ИТ инфраструктурой, нужные вещи – частями приложения, а сумки – контейнерами или виртуальными машинами. Такой стиль велопутешествий имеет отдельное название «байкпакинг» (bikepacking) и не подразумевает использование на велосипеде багажников (особенно заднего) и больших сумок «велоштанов». Грамотное размещение сумок по всему велосипеду позволяет получить лучший баланс при управлении, не перегружая заднюю или переднюю части, что приводит к большей безопасности и комфорту в особенности на спусках.   Из-за смены маршрута на Алтай новыми функциональными требованиями для меня были наличие палатки, коврика и спальника, набора для приготовления еды, а также необходимость грамотного размещения этих вещей на велосипеде.  Для этого я заказал к имеющимся дополнительную сумку на руль на 14 литров, куда можно разместить все дополнительное снаряжение. Отсутствие торопливости при планировании, ведь у меня было больше трех месяцев до поездки, позволило спокойно проанализировать рынок и выбрать наиболее подходящее снаряжение в рамках бюджета и размеров сумок. Так и в ИТ-проектах при наличии достаточного времени для проектирования удается выбрать правильные и подходящие решения, а не использовать только то, что знаешь, игнорируя новые для себя технологии, в которых надо успеть разобраться. Далее детали для велофанатов, где я опишу свои функциональные и нефункциональные требования к подседельной сумке в стиле байкпакинг и палатке для велопутешествий. Зная, что не всегда получается размещать велосипед рядом с собой во время сна или отдыха, удобнее иметь раздельную конструкцию сумки, когда крепление и сама сумка (мешок) разделены. В противном случае, сумку надо будет каждый раз снимать и закреплять обратно, что занимает время и просто неудобно. Другие важные функциональные требования к сумке — это защита от промокания и жесткость крепления, ведь из-за веса на плохой дороге сумка будет мотаться из стороны в сторону, что негативно влияет на балансировку велосипеда. Поэтому мне было важно наличие двух застежек к подседельному штырю и дополнительных стяжек к седлу. Забегая вперед, отмечу, что в итоге остановился на сумке фирмы restrap, и она показала себя очень хорошо.  Схожий подход я использовал и при выборе палатки, которую для Алтая тоже пришлось обновить, где ключевыми требованиями были:  В требованиях к размеру было еще дополнительное условие, что длина дуг в сложенном состоянии должна быть не более 40 см, чтобы можно было удобно разместить палатку в сумках.   Из-за цены и небольших показателей водостойкости пришлось отказаться от покупки Big Agnes Fly Creek, которая создавалась именно для велопутешествий. Вместо этого остановился на не самой известной испанской марке Columbus, которая идеально соответствовала всем требованиям. Должен признаться, найти ее было крайне непросто, ведь мои требования были близки к идеальным – палатка должна быть и легкой, и компактной, и водостойкой, и недорогой.  Как в велопутешествии снаряжение состоит из отдельных элементов, так и в случае с ИТ-архитектурой система включает в себя несколько решений, к каждому из которых предъявляются отдельные функциональные и нефункциональные требования. Выбор палатки чем-то мне напомнил выбор сервера, где водостойкость можно сравнить с параметрами надежности (наработка на отказ), а размеры с емкостью памяти и дисков, где размещаются данные.  Отдельной задачей был выбор набора для приготовления еды, где ключевыми требованиями были: Отмечу сразу, что в итоге не стал брать более дорогую интегрированную систему с лучшей эффективностью (jetboil как пример), а остановился на раздельном варианте, когда кружка и горелка не присоединяются жестко друг к другу.  Другим новым функциональным требованием стал фонарь, который во Франции вряд ли бы мне пригодился. Я решил взять налобный и, к тому же, использовать его вместо велосипедной фары в сумерках или при дожде, так как в вечернее и ночное время ехать не планировал. Также мой старый спальник не соответствовал требованиям по температуре (могло быть до +5 ночью) и размеру (не более 3 литров в сжатом состоянии), поэтому пришлось купить новый с расчетом на +4 градуса комфорта.  Поговорим теперь про нефункциональные требования к маршруту. В моем случае такими требованиями были:  Из своего опыта, а ведь это было уже четвертое одиночное велопутешествие (и пятое всего), я знал, что пробег в 100 км в день не представляется для меня чем-то сложным, а вот отрезок больше 150 км потребует дополнительных усилий и, к тому же, потребует хорошей ровной асфальтированной дороги. Также мне не хотелось выходить за предел в 700 км совокупного пробега и более 4 часов чистой активности в день, то есть порядка 8 часов в реальности (это соотношение один к двум было опять же выработано на практике с учетом остановок для еды и отдыха). Это означало необходимость средней скорости на уровне 25 км/ч, чтобы проходить 100 км в день. Из собственного опыта я знал, первый день всегда дается тяжелее остальных, поэтому на него лучше планировать не более 70 км, чтобы «вкатиться». Забегая вперед, должен отметить, что одно требование при проектировании я все же не учел и оно сильно повлияло на поездку. Опять же не могу не провести параллель с ИТ проектами, когда из-за неучтенного нефункционального требования (например, задержка в сети) приходилось вносить коррективы или вообще переделывать решение.   Вместе с требованиями необходимо учитывать различные существующие ограничения. В моем случае это были в основном сроки поездки, где я хотел уложиться в 16 дней с учетом перелета, и бюджет. Согласитесь, это типичные ограничения и в ИТ проектах.  Из опыта предыдущих поездок я знал, что на маршруте лучше делать перерывы в день, поэтому после каждых трех дней пути у меня был запланирован день отдыха. Также лучше иметь свободный день после прилета для сбора велосипеда и адаптации к другому часовому поясу (+4 часа относительно Москвы).  Как и в ИТ проектах, так и в велопутешествии требования могут меняться, и в моем случае одним из таких примеров была неожиданная отмена брони в гостевом доме за несколько недель до поездки, что привело к изменению в маршруте.  За этапом формирования требований в архитектурном мышлении идет этап анализа возможных альтернатив и принятия архитектурных решений. С учетом всех требований, расчетов и неожиданной отмены брони у меня получился следующий маршрут:  Мне удалось детально с ночевками распланировать первую часть, которая проходила по Чуйскому тракту, имея большую гибкость для второй части по долине Чулышман, где покрытие было уже грунтовым с камнями и сложно было предсказать среднюю скорость и километраж в день. Безусловно, я изучал различные туристические блоги по Горному Алтаю при составлении маршрута, что можно сравнить с изучением референсных архитектур, что является важной частью при построении ИТ-решений.  Возможной альтернативой был маршрут только по асфальту по Чуйскому тракту от Горно-Алтайска до районного центра Кош-Агач, но он не отвечал требованиям по километражу (всего 460 км), а также не позволял посмотреть ключевые достопримечательности Алтая – долину Чулышман и перевал Кату-Ярык. Другой альтернативой мог быть схожий маршрут, но в этом случае существенная часть 1го этапа проходила бы по Чемальскому тракту, а затем по дороге через Ороктойский перевал. Признаться, долгое время именно эта альтернатива была моим основным вариантом, но буквально за пару недель до поездки, посмотрев несколько роликов на youtube о состоянии дороги через Ороктойский перевал (дорогой в некоторых местах это назвать сложно), я все же передумал и остановился на маршруте через Чуйский тракт, который приведен на рисунке. С точки зрения ИТ-проектов и архитектуры можно сказать, что я изучил международный опыт схожих проектов и провел референс-визит в организацию, которая уже решала схожие задачи и на основе ее опыта сделал для себя корректировку.  Безусловно, без оценки рисков не обходится ни один проект, и в случае архитектурного мышления это также неотъемлемая часть процесса. Для своего велопутешествия я разделил риски на несколько групп (кстати, схожая рекомендация есть и в архитектурном фреймворке TOGAF!). Первая группа связана с поломками велосипеда, вторая – с изменениями в маршруте и третья – с моим здоровьем. Для решения проблем из первой группы я взял две запасные камеры, запасные звенья цепи и запасную покрышку. Также обычно прохожу техническое обслуживание (ТО) велосипеда до поездки, чтобы выявить потенциальные проблемы заранее. Так как в моем случае велосипед был новый и пробег на нем не составлял больше 300 км, ТО было не нужно. Также я взял запасные хомуты для крепления сумок, если из-за тряски на грунтовой дороге крепления сломаются.  Для ответа на риски из второй группы, связанной с изменениями в маршруте, у меня была палатка, которая позволила бы снизить зависимость от гостевых домов, если бы у меня не получилось пройти необходимое расстояние за день. Также я распланировал «дневки», которыми мог воспользоваться, чтобы компенсировать потерянное время. Для решения рисков, связанных со здоровьем, я отдельно собрал аптечку с большим набором специфичных для велосипедиста лекарств. Также дополнительно взял симку МТС для постоянной связи, так как другие операторы в регионе не имеют хорошей зоны покрытия.  На моем пути были риски, которые я принял и решал по мере возникновения. Как пример — переправа через Телецкое озеро. Заранее я знал, что ежедневно по озеру ходят паромы, а также можно нанять отдельный катер. В реальности проблем с этим не возникло, так как договориться с паромом мне помог владелец базы, где я останавливался на берегу.  Безусловно, как и в ИТ проектах, при планировании велопутешествия неплохо протестировать решение до запуска, хотя бы проехав небольшой маршрут около дома, так как маневренность, устойчивость и скорость велосипеда сильно меняются из-за дополнительного веса сумок.  Хорошей практикой архитектурного мышления является анализ полученных результатов и всего проекта в целом. В жизни не бывает только идеальных и правильных решений, поэтому важно оглядываться назад и анализировать свои действия. Как уже писал раньше, я не учел одно из нефункциональных требований к маршруту и это был набор высоты. Безусловно, я знал о четырех перевалах на моем пути (Семинский, Чике-Таман, Улаганский, Кату-Ярык), знал их высоту и даже поставил на карте точки их начала, но для меня было неприятным сюрпризом, что во второй день мне пришлось набрать незапланированные 800 метров подъема еще до Семинского перевала, а затем добавить столько же на нем самом. Также эта проблема с незапланированным подъемом привела к тому, что в третий день на последних 10 километрах из-за пересечения двух рек было 4 подъема по 300 метров с уклоном больше 9 градусов (которые не были указаны в maps.me), что окончательно лишило меня сил и из-за чего я приехал на незапланированную базу для ночевки. В итоге за весь маршрут у меня получилось более 7000м набора высоты.   С другой стороны, я уверен, что решение ехать против часовой стрелки по маршруту, а именно из Горно-Алтайска вниз по Чуйскому тракту, а не сразу на Телецкое озеро, было абсолютно верным. Это позволило хорошо «вкатиться» по асфальту и уже на плохой дороге по долине Чулышман чувствовать себя увереннее.  По итогу оказалось, что палатку я ни разу не ставил, останавливаясь все время в гостевых домах даже там, где планировал использовать палатку, но все равно не считаю, что провозил ее бесполезно, так как она могла мне помочь в случае каких-либо экстренных остановок. В целом, я бы все равно рекомендовал более детально планировать маршрут и попробовать обойтись без нее. Это существенно снизит вес вещей, так как не нужно будет брать еще коврик и спальник.  Всегда важно помнить о ключевых задачах на проект, и для меня это было получение удовольствия, а не обязательное прохождение определенного расстояния. Достаточно устав на второй части маршрута в долине Чулышман и поговорив с местными о состоянии дороги на 3м этапе, я принял решение остаться на Телецком озере и найти машину, чтобы добраться до точки начала путешествия не за 2 дня на велосипеде, а за 3 часа. Это позволило мне лучше восстановиться и получить больше удовольствия от путешествия, хотя и снизило общий пробег с запланированных 700 до 550 км.   Что хотелось бы сказать в конце в качестве выводов: велопутешествия – это круто! Если мне удалось вдохновить хотя бы пару человек проложить свой маршрут и отправиться по нему в велопутешествие, то, значит, статья написана не напрасно. И будем помнить, что архитектурное мышление – полезная вещь не только при проектировании ИТ решений, но и в решении обычных задач в жизни.