Архитектура в масштабе или как мы в Tinkoff принимаем архитектурные решения

Прошлой осенью я выступал на конференции ArchDays и рассказывал про принятие архитектурных решений. В этом году я планирую опять выступить на конференции ArchDays и рассказать про то, как мы в Tinkoff проводим интервью про проектирование распределенных систем. А пока я подготовил расшифровку своего прошлогоднего доклада.

Любителям смотреть видео предлагаю перейти по ссылке ниже …

А мы продолжим текстом.

Собственно для начала надо отметить зачем нам в Tinkoff требуется масштабировать процесс принятия решений. Ответ очень простой — мы большие, у нас много клиентов, мы быстро растем как в плане продукта, так и в размерах команды, которая уже давно распределена по всей России и странам СНГ.

Ок, теперь мы поняли зачем, но сразу возникает следующий вопрос

На этот вопрос есть очень много мнений, но мне нравятся два нижеперечисленных:

  • один Буча — про архитектуру, которая про значительные решения, что измеряются стоимостью изменений
  • второй Крачтена — про траекторию и границы проекта

Ок, теперь мы поняли что такое архитектура, осталось понять как с ней быть.

Я бы выделил 3 вида архитектур:

  • Software Architecture
  • Solution Architecture
  • Enterprise Architecture

Эти три вида архитектур можно интересно сравнить, выделив следующие характеристики: уровень абстракции, инструментарий, нотации, контекст взаимодействия, темы для обсуждения, роль исполнителя.

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

Собственно по моему мнению ниже изложены мысли относительно валидности роли, откуда они появляются и их зона ответственности.

Теперь давайте отдельно поговорим про каждый из видов архитектуры и начнем с Software Architecture

Для начала хотелось бы обсудить состояние дел в области Software Architecture на 2020 год. Для этого рекомендую изучить выступление Филиппа Крачтена, который в 2020 году получил Linda M. Northrop Software Architecture Award от Software Engineering Institute. В своем выступлении по поводу этой награды “Software Architecture: A Mature Discipline?” он сделал отличный обзор, откуда я взял перечисленные ниже тезисы о состоянии дел.

Теперь мы имеем представление о состоянии дел в нашей индустрии, а как дела у нас в Tinkoff.

По-факту, важно разделить решения по уровням: проектирования и архитектуры. Решения уровня проектирования мы не хотим регулировать, а вот правый прямоугольник с архитектурными решениями нам интерес.

Важно эти решения принимать не единолично, а выстроить децентрализованный процесс принятия решений, включая RFC, ADR и иже с ним. Подробнее рекомендую посмотреть выступление “Scaling out architectural decision making ” Патрика Куа, бывшего CTO необанка N26.

Ок, теперь идем дальше к

Типичные проблемы архитектурных решений перечислены ниже. Они приводят к решениям не самого высокого качества.

С этими проблемами можно бороться и вот к чему мы пришли

Ок, с solution architecture мы разобрались. Остался последний вид

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

И если к ней внимательно присмотреться у здорового человека возникают вопросы

Собственно другие представления Enterprise Architecture тоже отдают бюрократическим привкусом и чудится этакий человечек, рисующий квадратики и стрелочки где-то в своем кабинете.

У нас enterprise архитекторов нет, но в части enterprise архитектуры мы пришли к следующему

Помимо этого можно использовать подход с техрадаром, популяризированный компанией ThoughtWorks. Этот подход позволяет видеть какие технологии используются в организации, а также какие не используются или выводятся из эксплуатации. Этакий варант governance. Вот, например, наш радар фронтовых историй (веб и мобилка).

Update

За последний год мы неплохо продвинулись в сторону унификации подходов и переезда на нашу PaaS платформу. Подробнее можно посмотреть про это в докладе Станисласа Халупа с Yandex Kuber Conf.

Источники

  1. Scaling out architectural decision making — Patrick Kua (N26)
  2. Видео “Software Architecture: A Mature Discipline?” by Philippe Kruchten at SEI’s Linda Northrop award и слайды
  3. Обзор книги “Fundamentals of Software Architecture”
  4. Обзор книги “Technology Strategy Patterns”
  5. Гайд “Technology Radar v.24” от ThoughtWorks
  6. DevOps-эры в Тинькофф: культура, люди, инструменты” Станислав Халуп на Yandex Kuber Conf.

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.