Press "Enter" to skip to content

GOTO 2017 • A Crystal Ball to Prioritize Technical Debt • Adam Tornhill


доброго утра всем и добро пожаловать в
этот разговор, где мы будем смотреть
для хрустального шара , который поможет нам
не только идентифицировать, но и устанавливать приоритеты
технической глубины, поэтому давайте
и посмотреть , что это все о моем
отправной точкой является martin fowler’s
известное определение технической глубины
и что я хочу, чтобы мы здесь делали
сосредоточиться на ключевом аспекте и ключе
аспектом технической глубины является то, что просто
как и его финансовые партнеры
eft несут некоторые проценты и это
это то, что я обнаружил, что мы в
мы склонны злоупотреблять и
иногда неправильно понимают и
следствием этого является то, что технические
глубина концепции не так полезна или
полезно, так как это может быть так, позвольте мне показать
ты, что я имею в виду , имея тебя
сделайте небольшой эксперимент, так что
произойдет сейчас, что я собираюсь мириться
часть кода здесь и ваша задача состоит в том, чтобы
судить о качестве той части кода
все готово
вы выглядите готовым, так что взгляните на это
как многие из вас думают, что это
отличный код, сколько бы позволили
это для обзора кода, так выглядит
мы всего лишь двое из нас, конечно, это
не хороший код, это не тот вид
код, который мы пишем, и, конечно, мы бы
никогда не пишите что-то подобное
мы никогда не пишем, но это
проблема — это техническая глубина без
больше контекста, который мы просто не можем сказать, потому что
это не техническая глубина, если у нас нет
выплатить на нем процентную ставку
процентная ставка достаточно интересна
функции времени , чтобы определить
техническая глубина мы должны иметь
времени в наш код, где можно
мы получаем такую ​​вещь через несколько минут, я
собираюсь показать вам
но прежде, чем мы пойдем туда, я бы
как поделиться с вами небольшой историей , как
как часть моей дневной работы, я иду к разным
компании и я анализирую их кодовые базы
и некоторое время назад я работал с компанией
что до моего приезда они использовали
инструмент, способный количественно определять
технической глубины, поэтому они приняли это
инструмент и бросил его у нашего 15- летнего
codebase, и этот инструмент сообщил, что
Ваш 15 — летний кодовая у вас есть
накопленный 4000 лет технической
глубина 4000 лет, чтобы положить ее в
перспективны для если 4000 лет назад
был здесь, когда Моисей расстался с Красным морем
поэтому 4000 лет технической глубины могут
хорошо быть точным, но это не
особенно полезно, я имею в виду, где мы
запустите все глубины, равные сайтам
на самом деле думать, что это ошибка, чтобы попытаться
количественная оценка технической глубины от кода в одиночку
и причина, по которой я говорю, потому что
самая техническая глубина даже не
технический, и это то, что я нашел
снова и снова, что мы как
разработчиков мы склонны ошибаться
организационные проблемы для технических
проблемы, и следствие состоит в том, что мы
начните рассматривать симптомы вместо
первопричиной, поэтому просто дать вам некоторые
Быстрые примеры, возможно, вы видели
это то, что вы попадаете в новую компанию
право, и кто-то поможет вам
день и говорит вам хорошо, но немного
осторожны с этой частью коды это
полный беспорядок, это действительно очень сложно
понять или мой личный фаворит
возможно, вы слышали это
тратить много времени на слияние разных
нам нужно покупать лучше
инструменты объединения вы слышали, что один
из вас не так, как вы увидите там
может быть организационной стороной этого
и мы обсудим это позже
но я думаю, что главная причина, по которой мы
сделать неправильные данные, как это
потому что организация , которая строит
код невидим в самом коде и
это несчастливо, потому что есть
прочная связь между технической глубиной и
организация, и я уверен
мы не можем обратиться к технической глубине
не принимая целостного взгляда на него и
что целостный взгляд должен включать наши
социальный аспект, основанный на том, что я
сказал вам до сих пор, что я собрал вид
список пожеланий вид информации I
думаю, что нам нужно , чтобы
технической глубины, и первое, что наш
отправной точкой является выяснение, какая часть
кода имеет наибольший интерес
скорость второго аспекта — это наш
архитектура поддерживает то, как наша система
развивается , мы работаем с или против
наша архитектура и третий и последний
и, возможно, самый важный момент, как
это выглядит с нашей социальной точки зрения
закажите любой шарик производительности рядом с вами
знаете, что эти фрагменты кода были пятью
разные команды должны работать вместе
все время
теперь, пожалуйста, подумайте о проекте
сейчас работайте
как вы думаете, такая информация
был бы полезен для вас в вашей повседневной работе I
что некоторые из вас кивают, что
почему мы хороши, вам понравится
Остальная часть сессии , что я хочу , чтобы вы
сосредоточьтесь на том, что ничто из этого
информация доступна в коде
сам, самое главное, нам нравятся некоторые
критическая информация нам нравится
времени, и мы скучаем по социальным
организационной информации, так как мы можем
получите, где наш хрустальный шар это
у вас все уже есть одно, что мы
просто не привык думать об этом таким образом
Я говорю о нашем контроле версии
данных, поэтому это простой пример из
get и контроль версий поражают
что на самом деле это поведенческий журнал
говорит нам , какие именно части кода
мы изменились в какой момент времени, поэтому
мы получаем размер времени справа и
на основе этого измерения времени мы можем
вычислить много интересного
статистика и частоты, но еще больше
важные данные контроля версий являются социальными
данных, поэтому мы точно знаем, какой программист
который работал, в каких частях кода
поэтому давайте рассмотрим контроль версий позже
и посмотрим, как это поможет нам найти код
с высокой процентной ставкой и моим стартом
точка здесь — это концепция, которую я называю горячими точками
позвольте мне показать вам , как это работает , это
анализ горячих точек хорошо известной Java
система Tomcat как любой, кто работал или
использовал Tomcat, да, многие из вас круто, поэтому
Tomcat — зрелая система с богатым
истории, и я собираюсь показать вам, как
интерпретировать эту визуализацию, так что
посмотрите на те большие синие круги, которые
blink прямо сейчас каждый из этих
представляет собой папку в Tomcat
хранилище, и вы видите, что у вас есть
другие меньшие круги внутри него
те подпапки права , так что это
иерархическая дистилляция, которая следует
структура папок вашего кода — это
также интерактивный, который я считаю
важно, когда мы дойдем до систем
чтобы вы могли подавать иск минимум на уровень
вас интересует, и если вы
сделайте это, вы увидите, что каждый файл
представленный как круг, и вы увидите
что круги у них разные
размер, потому что размер используется для
представляют сложность
соответствующий код теперь как мы измеряем
сложность кода у нас есть куча
различные способы прямо я думаю , что большинство из вас
знакомы с такими вещами, как mccabe’s
цикломатической сложности мы также имеем
такие вещи, как показатели объема статистики здоровья
что мы можем использовать, и на самом деле это не так
независимо от того , какие метрики вы используете
потому что все, что у них есть, есть
которые являются одинаково сложными метриками сложности
ужасно страшны при измерении
сложность, поэтому я стараюсь использовать
простейшая вещь, которая могла бы работать
который в данном случае является количество
строки кода имеют очень высокий
корреляция с такими вещами, как цикломатическая
сложности, и, кроме того, это не
интересную часть данных
Интересной частью данных является то, что
процентная ставка , так что мы собираемся
делать то , что мы собираемся вытащить некоторые
данные из системы контроля версий и
посмотрите на частоту изменения этого
код так , как часто мы на самом деле в
работать в этом
к коду и при объединении этих двух
размеры смогли определить
сложный код, который мы должны работать
часто, и это наши горячие точки, поэтому
вернемся к Tomcat, и вы увидите, что
в Тонгкат горячие точки относительно
сейчас несколько горячих точек только потому, что
что-то горячее, что не
означает, что это проблема, что это означает.
что это самая важная часть
код, когда дело доходит до технической лаборатории
поэтому вы хотите проверить этот код и
гарантировать , что код хорошо это чистый
легко понять, что легко
развиваться, потому что именно там вы проводите
большую часть вашего времени, однако на практике
чаще всего я обнаружил, что
противоположное верно и что имеет тенденцию
горячие точки — большие преломляющие кандидаты
и есть увлекательная причина, почему
это так, и я хочу показать вам
почему , заимствуя цитату из своих
великий Джордж Оруэлл, возможно, вы помните
те из вас читали Джорджа Оруэлла
что он действительно сказал, что весь код
равный, но некоторый код больше, чем
другие теперь то, что будет означать с этим
заявление хорошо позвольте мне показать вам, пожалуйста
посмотрите на следующие графики:
все показывают точно то же самое, что и в
ось x у вас есть каждый файл в
системы, и они сортируются в соответствии с
их частота изменения, какая именно
я делаю это для каждого файла и
количество коммитов — это то, что вы видите здесь
по оси y теперь, если вы посмотрите на
бесплатные примеры здесь вы видите, что dos
представляют три радикально отличающихся кода
базы, они реализованы в разных
языки для разных доменов
они используют совершенно разные
технологий, разработанных ими
в разных организациях у них есть
разное время жизни все
разные, но вы видите какие-то патчи
что правильно все они показывают точно
то же распределение показывает степенное право
распределение и это то , что я
найденных в каждой кодовой базе, которая
Я проанализировал это, кажется , так
что программное обеспечение развивается, и это
важно, потому что это дает нам инструмент
для определения приоритетов, поскольку это означает
что в вашей типичной кодовой базе большинство
ваш код здесь
в longtail он представляет код, который
вам редко приходится когда-либо работать и
большая часть нашей деятельности в области развития
сосредоточена на относительно небольшой части
ваш код, и именно здесь мы хотим
улучшить фокус, чтобы быть довольно
что мы получим реальный доход от этого
инвестиции, так что горячие точки — отличные
но иногда они
недостаточно, и я хочу показать вам
пример, где горячие точки не совсем
работать, и я хочу показать вам другое
тематическое исследование — это анализ « горячих точек»
Основные возможности Microsoft:
когда я сделал этот анализ, это было похоже на шесть
несколько месяцев назад
большинство горячих точек находились здесь в
JIT-пакет компиляции точно в срок
но вы также видите, что есть
вроде как горячая точка в сателлите здесь
что-то называемое GC dot CPP, это
dot net сборщик мусора теперь GC, что CP
команда выглядит совершенно невинно на экране
но это только потому, что масштаб
dotnet core dotnet огромна, он состоит из
того, что вы видите здесь на экране,
приблизительно четыре миллиона строк кода
и GC dot CPP, поэтому относительно большой файл
насколько я понятия не имею, поэтому давайте посмотрим на
что на github Wow
так что довольно большое право, поэтому нам нужно посмотреть
в сыром файле, и когда мы это делаем, мы
увидит, что GC, что CPP — это файл с
37 000 строк C ++ далее 7000 строк
C ++ позвольте мне сказать вам, что я был
Разработчик C ++ я делал C ++ в течение 10 лет и
да, я знаю, что ты думаешь, что это 10
лет, я никогда не вернусь
Я согласен, но в то же время
дает мне большое уважение к 47 000
глаза С ++ это все дело
кошмары Мэдоффа и, кроме того, как
полезно знать, что вы видите, что
CPP — это горячая точка, поэтому давайте притвориться, что я
приходите в свою организацию и говорите, эй
смотрю, я нашел ваше худшее обслуживание
проблемы Я нашел вашу техническую глубину
с самой высокой процентной ставкой вы просто
переписать этот файл, и все в порядке
снова было бы точно, но не
особенно полезно, поэтому нам нужно
сделать лучше , потому как мы действуем на
такая информация — ответ , мы не
так что я предлагаю это, когда мы дента
что те большие горячие точки, которые мы сейчас делаем
что мы берем исходный код
Я разберу его в куски разных
методы и тогда мы посмотрим, где же
каждая фиксация попадает прямо, так что это точно
та же мера, но и по функции
уровень метода позвольте мне показать вам, как это
смотрит на GC CPP, так что наша точка доступа
анализ на уровне функции показывает
что точка доступа номер один на
уровень функции — это функция, называемая выражением
кирпичные карточные столы, которые функционируют
триста тридцать две строки
код, который очень сильно заставляет
функция не так, но это определенно
гораздо меньше трех-семи тысяч
строк кода , который является размер
общий файл, и это определенно меньше, чем
четыре миллиона строк кода,
размер всей системы, поэтому еще больше
важно, что мы сейчас находимся на том уровне, где
мы можем воздействовать на информацию и делать
ориентированный рефакторинг на основе того, как мы
работал с кодом до сих пор так
мы собираемся вернуться в горячие точки
но прежде чем мы это сделаем, я бы хотел
попробуйте ответить на вопрос вроде
как вы попадаете в файл с 37 000
строки C ++ Я действительно не могу допустить этого
так что это книга рекомендации для меня
это лучшая книга, которую я знаю о том, как
организации не справляются, это написано Дайан
Морган и Диана Уоррен интересны
Дело здесь в том, что она не программное обеспечение
разработчик, она социолог, и она
использовала авария Challenger, чтобы монета ее
боязнь нормализации девиации, так как
многие из вас помнят космический челнок
Челленджер да, так что половина из вас может
быть правым , так давайте сделаем быстрое резюме на
что случилось, так это их
Challenger на своем финальном запуске и
это фактический космический челнок и что
вы видите здесь этот огромный объект, который
сплошной ракеты- носителя, это огромный
все правильно , так оно и есть
поставляется в трех отдельных сегментах
которые затем собираются и что вы видите
вот кусок серого дыма, который вы видите
нехорошо, что это не должно быть
там, что на самом деле произошло, было то, что
вот соединение между двумя разными
сегментов, и этот сустав не удалось запечатать
и следствие заключалось в том, что некоторые горячие
ракетные газы могут уйти и повлиять на
целая структура Challenger, поэтому
что космический корабль в основном распался
как только он попал туда и когда Диана
Морган пишет об этом, она рассказывает
история уже в 70-е годы, когда
они сделали первые проектные испытания на
Challenger и твердотельные ракетные ускорители
оказалось, что фактическая
производительность этих твердых ракет
бустерные суставы отклоняются от
предсказанная производительность, что вы делаете в
В этом случае это не сэр, поэтому они
сформировали комитет, и они обсудили
проблема, и они решили передать ее
как приемлемый риск
лет спустя во время первого в полете
снова выяснилось, что
фактическая производительность отклонилась от
проект
снова они обсуждают
проблема прошла его как
приемлемый риск , и он пошел дальше и дальше
как это за годы до фактического и
Утомленный накануне запуска были некоторые
очень реальные проблемы , поднятые некоторыми из
Инженеры , работающие этот материал из — за появления
необычно холодные температуры во Флориде
в то время он обсуждался и
как приемлемый риск, и
следствием стала трагическая гибель людей
теперь это то, что Диана Уоррен называет
нормализации отклонения, которое каждый раз
мы принимаем риск отклонения
новый нормальные мы получаем новую точку
ссылка, и это интересно
потому что это не совсем о
космических кораблей это о людях, и мы
имеют много нормализации отклонений
в программном обеспечении, так что позвольте мне дать вам
Например, предположим, что вы присоединяетесь к новому
организации, и вы наследуете файл с помощью
6000 строк кода
вау, это много, но если вы работаете с
это достаточно долго, что станет вашим новым
вы начинаете знакомиться с теми
строки кода, и я имею в виду, кроме того,
серьезно, какая разница
вы с несколькими лишними сотнями строк
код так скоро, что у нас есть семь
тысячи строк кода, то у нас есть
восемь тысяч и т. д., поэтому нам нужно
найти способ идентифицировать и остановить
нормализация Debian
вот одна техника, которую я нашел на самом деле
полезно для программного обеспечения это то , что я
тенденции сложности вызова и
работы в основном такова, что когда я нахожу
горячая точка Я вытаскиваю все исторические
изменения от контроля версий позже
этого кода, а затем я измеряю код
сложность в каждый момент времени и
постройте такую ​​тенденцию, чтобы все системы
они рассказывают истории правильно
мы только постное , чтобы научиться так читать их
вот пример, поэтому вы видите синий
линия показывает рост строк кода
красная линия — одна из сложностей
такие показатели, как цикломатическая сложность и
вы видите здесь, что существует какая-то
рефакторинг здесь еще в апреле
но как-то казалось, что они
не удалось устранить основную причину, поскольку
Preda увидела, что сложность начинает
проскользнуть назад, прежде чем
драматическое увеличение здесь только на
начало эры
поэтому это предупредительный знак, который нам нужен
сделать шаг назад и рассмотреть, что
на самом деле происходит и в направлении
что этот код растет, поэтому
нормализация отклонения является одной из
причины, по которым осведомители
важно в организациях, и я обнаружил
что тенденции сложности делают большие
осведомителей в коде, чтобы подвести итог этому
Горячие точки первой части помогают нам идентифицировать
этот код с наивысшей процентной ставкой
и причина, по которой они работают, заключается в том, что все
код не равен тому, что я хочу сделать
теперь нужно подняться на абстракцию
лестницу и посмотреть на
уровня и попытаться выяснить, насколько хорошо
архитектура поддерживает
система развивается, и, как вы все знаете, вы
не может действительно говорить об архитектуре
без упоминания искусства, так кто-то
признать эту работу никому из вас
это хорошо, потому что это не
существует это нечто, называемое жидкостью
проекция кристалла света, выполненная
художник Густав Мецгер, так что это
объект, который все время изменяется
поэтому это произведение искусства выглядит полностью
отличается сегодня , чем это было вчера
это своего рода интересно смотреть сейчас
интересно то, как это
меняется, поскольку способ изменения
что любая новая форма требует
уничтожение существующей формы и
как именно код должен
развиваться, так что успешный код будет развиваться
и это изменится, и это хорошо
но причина, по которой я говорю, это
деструктивный, потому что изменения и
новые функции, которые они часто становятся
все труднее реализовать
со временем и некоторыми системами они просто
похоже, достигли своего рода переломного момента
и после этого они получают практически
невозможно поддерживать, так как мы можем
поймите, как мы можем обнаружить это хорошо
у нас есть наши горячие точки, но я бы
скажем, что уровень огня делает его довольно
трудно рассуждать о макро-аспектах
системы, поэтому мы хотели бы поднять
абстракция
боковая болезнь так один из способов сделать это
это вместо того, чтобы измерять горячие точки
на нашем уровне функции filin
давайте представим логические компоненты, но
взяв набор файлов и капая все
объединяя все
файл и поместить логическое имя на нем , чтобы мы
могут следовать наши логические компоненты
структуру папок вашего кода, если вы
хотеть
это довольно типично, вы можете использовать любые
вид отображения здесь, что вы хотите
важно только то , что
группа или карты, ввести логическое
компоненты, которые должны
архитектурное значение в вашем
контекст, поэтому, как только мы это сделаем , мы сможем начать
рассуждать о нашей системе развивается так
позвольте мне показать вам конкретный пример из
нашей сервис-ориентированной архитектуры, поэтому
я бы сделал в этом случае , что я
введёт логический компонент для
каждая служебная ошибка, а затем я бы
измерять горячие точки на этом уровне
пусть уровень услуг теперь, когда мы делаем
что мы получаем помощь , чтобы ответить на один из
самые важные вопросы, которые мы имеем о
микросервисов, и это серьезное
вопрос прав, я имею в виду серьезный
что пламенные войны говорили о
это дружба была закончена, и
вопрос в том, насколько велика микросервис
должно быть 100 строк кода 1000
мм, мы знаем, что это немного неправильно направлено на
Причина относительно размера услуг с точки зрения
строки кода, потому что мы
фактически после бизнес-возможностей
мы хотим, чтобы каждая служба выполняла
возможности одного бизнеса, так что
Ключевым моментом здесь является сплоченность, поэтому, как только мы начнем
измерить горячие точки на этом уровне, мы можем
определить службы «горячих точек», чтобы это
фактически некоторые реальные данные от реального
системы, и мы видим, что номер один
Точка здесь что — то называется
рекомендации, мы видим, что у нас есть
сделано много изменений в этой части
код, и теперь он состоит из
пять тысяч строк кода теперь просто
которые будут вычислять сложность передачи
отдельные файлы можно агрегировать
взносы от нескольких файлов и
получить сложность
весь сервис, и мы видим, что это
сервис в значительной степени был быстрым
первоначальное развитие, и теперь, похоже,
стабилизировались на этом более высоком уровне
как пять тысяч строк кода с
много изменений все время, но без
любой существенный рост в этом виде
данных он действительно не решает
проблемы, которые он делает, — это то, что помогает вам
задать правильные вопросы и задать вопрос
вот если эта услуга с пятью
тысячи строк кода, которые меняют все
время действительно представляет собой сингл
возможно, это
услуга, которая лучше, когда сплит
на две части или бесплатно, но мы можем сделать
еще больше с такими данными, и я
хотел бы показать вам, как
введение концепции, называемой временной
сцепление или изменение сцепления здесь, как
это работает, допустим, у нас есть три
различных подсистем в первый раз, когда мы
внести изменения в эту систему, мы изменили
топливный инжектор и диагностический модуль
вместе в следующий раз, когда мы сделаем какое-то изменение, мы
изменить что — то еще в третий раз
мы возвращаемся к изменению топлива
инжектора и диагностического модуля, если
это тенденция, которая продолжается там
быть какой- то зависимостью между
эти две подсистемы, потому что они
продолжайте меняться вместе, это что-то
мы можем рассуждать об их
архитектуры, и я хочу показать вам
пример из нескольких
архитектурные стили, и я хотел бы
начните с обсуждения слоев, пока
слои
так как слоистая архитектура имеет
были настолько популярны, что многие из того, что мы называем
унаследованные системы реализованы в
слоистых стилей, так что это в основном
канонические строительные блоки модели
Посмотреть контроллер, и я назначил свет
кодовой основой для нашей жизни, когда я прихожу
компания, которую я всегда спрашиваю, что это такое
архитектурного стиля, который у вас есть, и они
часто говорят мне, что да, мы используем
контроллер представления модели или модельный вид
презентатор или модель просмотра модели или
некоторые из этих вариантов правы, а затем
вы смотрите на код, и это никогда
как выглядит код и почему
для этого является то , что все мы знаем , что это
не достаточно верно
нам нужен слой услуг также право
Конечно, нам нужен уровень сервиса, но
ниже, что у нас должен быть репозиторий
и причина, по которой мы должны иметь
слой репозитория — это потому, что я на самом деле
понятия не имею, поэтому назовем его лучшим
мы должны тогда и
объектный реляционный сопоставитель за пределами этого
ниже, потому что мы не хотим
доступ к сиквелю напрямую, а затем
возможно, у нас есть продолжение, и мы все
знайте, что на самом деле это вполне вероятно
что у нас есть несколько дополнительных слоев
может иметь помощник вида или что-то вроде
что теперь это интересно, потому что если
мы выполняем измерение временной связи на
этот уровень мы рассматриваем каждый слой a
компонент логического компонента, что
наш шаблон изменения на самом деле выглядит
вот что они выглядят так, как я нашел
и это реальные данные из реальных систем
что от 30 до 70% всех
фиксирует пульсацию всего
архитектурной иерархии, и это добро
Интересно, потому что это влияет на то, что
мы можем сделать с этой системой так, что это
означает, что несколько изменений являются локальными
правильно, и я обнаружил, что работа вроде
это что архитектура , как это
в основном построены вокруг технического
разбивка на техническое здание
блоки, но какая-то работа, которую мы делаем, — это функция
ориентированный на конечный пользователь, ориентированный таким образом
является своего рода конфликт между этими двумя
стилей, и это будет работать с вами
теперь я обнаружил, что слоистые
архитектуры могут действительно работать
хорошо для небольших команд, где видели это
работать менее хорошо, когда команда является
немного больше, и я думаю, что вид
точки всего четыре, может быть, пять
люди, поэтому, если у вас есть большой
организации это вполне может стать реальным
проблемы, и это может стать реальным
проблема, потому что теперь у нас есть все
разработчики, работающие со всеми частями кода
все время не только в том , что на довольно
усиление координации
также ставит вас под угрозу для таких вещей, как
неожиданные взаимодействия функций и я
хотел бы заявить, что
одна из первоначальных мотивов для
многоуровневая архитектура — это
разделение проблем, но это
утверждают, что если большинство наших
пульсировать для всех слоев, возможно
возможно, это неправильная проблема.
разделяют честь, и я думаю, что это
одна из главных причин , также из — за
недавняя популярность таких вещей, как микро
услуг, и все это признают
правильно, потому что это то, что микросервисы
как в PowerPoint, в действительности мы
знаю, что микросервисы им очень нравятся
гораздо сложнее, поэтому мы разделяем
строительные блоки у нас есть сервис
шаблоны мы имеем клиентские IP- глаза, которые мы можем
имеют межсекторальные проблемы, такие как
диагностики и мониторинга, и все это
вещи , так что дополнительная сложность его
когда возникает риск, и что
риск связан с тем, что
кардинальный грех в праве на микрослужбы
так что это то, что мы
хочу избежать, потому что в тот момент, когда мы
запустите пару различных сервисов для
друг друга мы теряем много из
преимущество как микро — услуги , нас
остался с избытком беспорядка сложности
поэтому, если у нас есть важный архитектурный
такой принцип
почему бы нам не измерить его так снова давайте
рассмотрим каждую микросервисную логику
компонент и давайте измерять температуру
Pling на этом уровне , так что мы можем
обнаруживать шаблоны, подобные этим изменениям родителей
это пульсирует по нескольким репозиториям
и если мы начнем использовать это из
с самого начала мы можем использовать это как
раннего предупреждения и
вещи от происходящего , и если мы делаем это
мы можем избежать таких вещей, как то, что я называю
их микросервисная операция дробовика
Теперь, что такое микросервис
образ жизни
в основном идея о том, что вы хотите
настроить один бизнес и
вы в конечном итоге изменяете пять разных
услуг, и есть несколько причин, почему
что может случиться, что я видел
что наш самый распространенный в первую очередь
что эти различные услуги, которые они могут
код общего доступа, который сам по себе не является стабильным
эволюционная перспектива
еще одна причина, по которой я видел, что некоторые
услуги — это просто просачивающиеся абстракции
то наши услуги, как правило, зависят от
их детали реализации, которые
они меняются вместе. Я также видел, что
это, как правило, немного больше общей памяти
когда одна и та же команда отвечает за
несколько услуг, похоже,
намного проще отправить больше
информации и больше
то, какие инструменты я использую для
анализировать такие архитектуры и
сделать анализ «горячей точки» и временную
анализа сцепления
когда я написал свою книгу как три или
четыре года назад с преступлением ваших кодеров
Сцена ордер действительно на инструментах
доступный, который мог бы провести анализ I
хотел сделать это, я собрал свои собственные
набор инструментов доступен на моем github
учетная запись это с открытым исходным кодом, просто скачайте
это играть с ней довольно
хорошей отправной точкой, если мы хотим начать
чтобы почувствовать, что такого рода
анализаторы могут сделать для вас, что вы можете сделать для
вы так, что я сейчас работаю
что-то называемое сценой кода, которое вы можете
взгляните на этот код, смотрите i / o I
иметь кучу различных тематических исследований
там он бесплатный для использования с открытым исходным кодом
проектов, поэтому, если вы работаете в этом пространстве
взгляните на это, есть и некоторые
интересные варианты от академических
пространство мой личный фаворит — это я
называют это эволюционным радаром, который
особенно сильный при изменении сцепления
это действительно хороший инструмент для этого
и , наконец , если вы хотите создать
собственные инструменты , которые я рекомендую , что у вас есть
посмотрите на лосиную платформу, чтобы лоси
платформа — это платформа для строительства яков
анализаторы кода moose также являются лучшими
извините, я знаю, чтобы научиться программировать в
Маленький разговор — замечательный язык, поэтому
чтобы подвести итог этой части, мы видели, что
наши горячие точки масштабируются для всех
уровней мы можем использовать одну и ту же меру на
уровень функции на уровне файла, как мы можем
на архитектурном уровне, и мы видели
как использовать временную связь для оценки
наши архитектуры развивают их
теперь я хочу провести последние минуты
эта презентация на изучении
социальной стороне нашего кода, поэтому позвольте мне начать
спрашивая вас , сколько вы развиваете
программного обеспечения в составе команды, так что
как 99,9 процента чего — то , так что большинство
в написании , и это то , что вам нужно
потому что мы принимаем все больше и больше
проблемы наши системы становятся все более и
сложнее, и мы просто не можем работать
только на них
поэтому нам нужно собраться вместе в команде
достичь того, чего мы хотим достичь
однако я хочу, чтобы вы знали, что
коллективная работа никогда не бывает свободной коллективной работой
поставляется с затратами
и эта стоимость — это то, что социальная психология
называется потерей процесса, так что потеря процесса
является концепция , согласно которой социальная
психологи взяли его из
области механики и идей, но просто
как машина не может работать на 100%
эффективность все время из-за вещей
как трение и тепловые потери, ни
наша команда, поэтому позвольте мне показать вам, как это
модель работает, поэтому у нас есть куча
отдельных лиц, и вместе они имеют
потенциальная производительность, которая никогда не является чем-то
мы получаем из команды реальных
производительность всегда несколько меньше
и часть потенциала просто теряется, как
он потерял хорошо вид потери процесса
вы получаете зависит от задач, которые вы выполняете
но я бы сказал, что-то вроде
программное обеспечение, большая часть потери процесса
координация и накладные расходы на связь
и вы также можете иметь программные аспекты
например, потери мотивации, которые
это очень реально на
несколько проектов жизни плохие новости
что вы никогда не сможете избежать потери процесса
вы никогда не сможете его устранить, но
мы можем минимизировать это из
конечно, давайте посмотрим на еще один общий
источник потери процесса — это еще один
Концепция от социальной психологии называется
распространение ответственности и
распространение ответственности — это что-то
что вы можете испытать, если вы
достаточно несчастный, чтобы засвидетельствовать
чрезвычайной ситуации или аварии
Crossway получается больше
наблюдатели больше, чем люди
что — то происходит подобное
тем меньше вероятность того, что человек
предлагать помощь
это не страшно, а есть
несколько причин для этого
Разумеется, причина в том, что чем больше preper
мы просто предположили, что наш колодец
вместо этого поможет кто-то другой , и мы
есть много диффузии
ответственность в программном обеспечении — и теперь я
немного поговорю о
усталая усталая усталая спорная тема
вид темы вы никогда не говорить о
на нашей конференции это глупо
сделайте это, поэтому я собираюсь сделать это, я
собираюсь поговорить о том, что я верю или нет
Я действительно боюсь сказать это, но я
собирается поговорить о владении кодом Wow
так что я хочу поговорить об этом, потому что я
хочу дать понять, что когда я говорю
владение кодом Я не имею в виду
чувство эй, это мой код, держитесь подальше
нет совсем нет
Я имею в виду право собственности на код в том смысле, что
кто-то берет на себя персональную ответственность
за кусок кода и за его качество
и за свое будущее, и что кто-то
может быть индивидуатором, он может быть
пара, или это может быть небольшая команда внутри
более крупная организация, поэтому такие вещи, как
которые помогают нам минимизировать распространение
ответственности, и если у вас есть
важный принцип, как мы должны
попытайтесь контролировать и измерять его здесь.
один из способов сделать это, так как мы в
контроль версий Wonderland у нас есть
доступ ко всем этим социальным данным, чтобы мы
точно знать, кто
работал над тем, какие части кода, что
теперь мы собираем отдельных лиц
в команды, потому что это
интересный уровень для работы и измерения
поэтому давайте посмотрим, как диффузный
метрика ответственности выглядит так,
такой же вид визуализации, как мы видели
ранее с горячими точками только сейчас
цвет имеет другое значение :
цвет показывает количество межгрупповых
координации, тем чаще
команды работают в тех же частях кода
и чем больше фрагментов,
усилий в области развития,
соответствующий модуль и файл здесь
как мы хорошо используем эти данные, мы
область здесь с большим потенциалом много
параллельного развития доступа по лотам
разных групп, как мы реагируем на
что это действительно действительно тяжело
в общем, две вещи, которые я видел
работа во-первых, что вы начинаете
исследовать эту часть кода
с технической точки зрения, потому что вы
обнаружит, что код изменяется по причине
и причина, по которой часть кода
привлекает так много разных команд
вероятно, потому, что у него было много причин
сделать так, что у него слишком много обязанностей
так что вы увидите, что если вы примете это
кода, и вы определяете эти
обязанности, и вы разделите его
в соответствии с обязанностями не только
вы получите более сплоченную систему
также получит систему, которая поможет вам
минимизировать координацию
потребности между разными командами
вещь, которую вы можете найти со времен
время в том, что вашей организации может не хватать
команда, которая возьмет на себя общую
ответственность , так что вы на самом деле можете иметь
ввести новую команду для
но мы можем сделать гораздо больше
с контролем версий позже мы можем начать
для измерения таких вещей, как закон Конвей
так вот вот пример сейчас на этот раз
вклад каждой команды
обозначены разными цветами, поэтому
каждая команда имеет уникальный цвет, и здесь мы
может видеть, что это пакет по функции
архитектуры вы можете видеть в основном каждый
круг здесь представляет собой одну особенность и
вы видите с точки зрения Конвей
Закон это выглядит совершенно замечательно
не так ли?
каждая команда работает в полной изоляции
с минимальными накладными расходами на координацию
между ними состоит в том , как мы хотим
я не уверен, потому что не знаю, я
здесь нужно делать признание здесь весь день
что вы видели до сих пор или из
реальные системы , кроме этого , который я имел
подделать его, потому что я никогда не видел этого
происходят в действительности, и я не думаю
это хорошая идея пойти так, как я.
не собираюсь так много говорить об этом, но
Я думаю, что когда мы слишком сильно отделяем команды
мы рискуем ввели или падение
во множество различных социальных ловушек
что может быть дороже, чем
фактическая координация, но, пожалуйста,
спросите меня об этом позже, и я буду
счастливым говорить
об этом, но теперь я хочу показать вам
более реалистичным примером является следующий
реальные данные, так что это организация I
работал пару лет назад и
что сделала эта организация, так это то, что они
решил ввести функциональные команды, чтобы
они взяли свою существующую организацию
и нарезал его на двенадцать разных
а затем они работали в спринте, поэтому
в начале каждого спринта каждый
команде было назначено множество задач и
то они начинают работать над кодовой базой
и это то, что вклад
узоры выглядеть после того, как один месяц сделать
вы видите какие-либо шаблоны и не делаете этого
это в основном коллективные коровы и
я говорю, что это хор случается
здесь это кошмар координации
потому что здесь происходит то, что вы
имеют в основном 12 различных команд
работая в тех же частях кода
все время по разным причинам, поэтому
не только есть, и вам нужно начать
ставить процессы и вещи поверх
что для того , чтобы иметь возможность контролировать
качество вообще, и это будет
действительно действительно дорогие вещи
что это будет дорого, что в
в этом случае вы испытываете синергизм между
разные функции, так что вы пропустили
возможности упростить не только
проблемной области, но и решение
домена, пожалуйста, сравните вашу архитектуру
и вашей организации ваш код будет
поблагодарить вас за это теперь я надеюсь , что у вас есть
наслаждался этим путешествие по
увлекательное поле разработки кода и
в конечном счете это все о написании лучше
программное обеспечение, которое может развиваться с помощью
давление новых возможностей
предлагает и изменяет обстоятельства и
Я уверен, что код
это качество никогда не будет легким
поэтому нам нужна вся поддержка, которую мы можем получить
и я надеюсь, что на этой сессии
вдохновил вас исследовать поле в
больше глубины, если вы хотите прочитать больше
об этом у меня есть две книги о
тема вашего кода — место преступления, а мой
новая книга доступна из прагматичного снимка
книжная полка теперь дизайн программного обеспечения рентгеновские снимки I
также блог много об этом, так что если вы
посмотреть на ampere Komar
У меня много разных тематических исследований
из разных систем с открытым исходным кодом
Вы можете читать и в настоящее время , прежде чем я взять
некоторые вопросы, которые мне нравятся
возможности и сказать спасибо за
слушая меня, и пусть код будет с
вы благодарны
Спасибо, спасибо большое за разговор, поэтому
Есть некоторые вопросы , которые пришли , чтобы
земля через приложение одна из них
Я думаю , что довольно интересный один в
общий
Каков наилучший способ поделиться
необходимость рефакторинга кода для
заинтересованных сторон руководство жаль еще
время, что является лучшим способом продать
необходимость рефакторинга кода для
заинтересованные стороны и руководство, о да
это хорошо, да, так что это на самом деле
не так сложно, поэтому я думаю, что нам нужно
что мы должны преодолеть этот разрыв
между нами разработчики и менеджмент и
способ сделать это — обеспечить, чтобы мы
вид говорят на том же языке, что и у нас
чтобы это я думаю , что это в основном Наши
ответственность, которую разработчики
руководство, чтобы заглянуть в наше слово и
несколько менеджеров не являются техническими
не кодируйте, возможно, они этого никогда не делали
и поэтому я обнаружил, что
визуализация материала действительно
помогает горячим точкам, как правило,
интуитивные большинство менеджеров склонны
поймите их, что да, это действительно
где мы работаем все время, чтобы они
потому что то, чего они боятся,
конечно, чтобы принять решение, как все правильно
давайте пойдем вперед, эй, у нас есть рефакторинг
значки или улучшить этот материал, а затем
вы не получаете никакого эффекта от этого.
если вы покажете им реальные данные, они могут
их решения по данным, которые делают их
чувствую себя намного комфортнее, я тоже
обнаружил, что визуализация таких вещей, как
тенденции сложности очень помогают, потому что
что я нахожу на практике в том , что , когда
определить горячую точку в большом
и я смотрю на код и
Я вижу, что это действительно очень сложно
нам действительно нужно что- то сделать здесь, тогда
вы оглядываетесь назад во времени, и вы видите, что
этот код, вероятно, был проблемой
за годы и тенденции действительно
хорошо визуализировать, что вы можете видеть
что все правильно, что вы работали большую часть своего
время в этой части кода и как вы
это становится все больше и больше
сложно все менеджеры понимают, что
что это не очень хорошая вещь , так что это мой
рекомендация накладывает на него цифры
просто полагаться на чувство кишки и
визуализировать его
другое одно вы можете иметь примеры
технологические выгоды, противоположные потерям процесса
например , когда разработчик работает
вместе с экспертом по
проект разработки для конкретных доменов да
конечно, вы можете, и у нас есть много
процесса, полученного таким образом, но
очень жаль говорить, но это не
то, что я могу измерить сейчас для работы
там, но да, это определенно случай, поэтому
вы рекомендуете для ограниченной кросс-команды
координации такого процесса
выглядят так, я думаю, что есть
важное отличие сделать здесь
потому что то, что мы хотим сделать, в основном
мы хотим свести к минимуму координацию
нужно между различными командами , я думаю
это действительно фундаментально в том же
время, которое мы не хотим изолировать команды
потому что тогда у нас много
странные социальные ловушки, такие как фундаментальные
ошибки атрибуции, и мы можем долго
свинцовый раз между командами , поэтому мы должны
провести различие между тем, что я
вызвать оперативные границы и
их границ знаний, поэтому есть
несколько способов добиться этого, чтобы ваши
операционных границ части
код, где вы проводите большую часть своего времени
должно быть относительно небольшим, так что
команда должна нести значение из
Я думаю, что это
важно, но ваши границы знаний
должны быть намного шире, поэтому
это несколько способов достижения этого
начать приглашать людей из других
команды к вашим обзорам и дизайну кода
работает, чтобы узнать их и
Обмен контекста узнать друг друга
другое, что вы можете сделать, — это поощрять
люди писали, что их команда не
каждый хочет повернуть команду, но если
они хотят сделать это, они должны быть свободными
чтобы сделать это , и третье дело к тому , что
Я думаю , что работа очень хорошо , как это открытое
модель собственности источника, где вид команды
принадлежит часть кода в смысле
детективные обязанности могут
внесите в него изменения, но у команды есть
Решающее слово о том , что происходит внутри в
код, а что нет, что на самом деле
работал неплохо, потому что он убирает
эта шея шара, если мне нужно сделать
изменить на эту часть кода
может это сделать , я не должен ждать
кто-то другой, так что бы вы ни делали это
сознательное и преднамеренное решение
потому что это не то, что будет
случается автоматически, надеюсь, мне удастся
ответить на вопрос , так что было много
вопросы об истинах, которые вы были
используя это, вы показали, что на
слайды еще один , который сделал вас на самом деле
использовать для визуализации, которые
у вас есть в вашей презентации, да, так
Я использую цитаты для этого, потому что это
вид моей жизни в эти дни
которые будут утешать азиатов, которых вы можете использовать
какой инструмент вы хотите сделать им
я могу начать с Excel
вы можете получить довольно далеко с
что d3 замечательно при визуализации данных
как это
это то, что коды используются в большинстве
визуализации не фокусируются на
горячие точки, делающие их еще более горячими
зависит от того, что вы делаете с ними
Конечно, да, я имею в виду в краткосрочной перспективе
конечно, когда вы начинаете реорганизовывать
Это может привести к увеличению
активности в этой точке доступа, однако
вы увидите, какая типичная находка
что на самом деле действительно страшные горячие точки
что происходит с ними при рефакторе
их и рефакторинг горячей точки не
то, что вам нравится, давайте
фактор, который он начнет на этой неделе и
закончим через два месяца
поэтому это то, что должно быть
итеративный процесс, мы сделаем
меньшие и меньшие улучшения
чтобы они действительно охлаждались
в течение долгого времени и многих горячих точках просто уйти
потому что они не существуют в новом
дизайна они представлены различными
элементы дизайна и во время вашего
если вы видите заметное падение
по сложности, если вы начнете измерять
таких тенденций, чтобы вы могли на самом деле и
это еще одна , которая связывает назад к
вопрос, который я получил о том, как
продавать этот материал по праву управления
что вы можете показать им, что я смотрю, мы
на самом деле получить наш измеримый эффект
наших рефакторингов, как вы можете создать
владение кодом, как вы создаете код
владение да, я не думаю, что ты сможешь
не думай, что можешь создать, я имею в виду
еще раз, какую бы моделью я не имел в виду
Я видел все , и я видел много
из разных стилей , которые работают , я думаю ,
ключ действительно сделать это
преднамеренный выбор выбирает одну модель
и иди с ним в порядке, последний вопрос
вы использовали sonarqube
нет, я не использовал звуковое qube II действительно использую
много инструментов статического анализа я использовал для
работать в мои дни, когда я был в сети
консультант, да, это правда, я использовал и
много зависит, теперь я закрываю эти
дней Я использую другие инструменты статического анализа
для этого, и я на самом деле большой поклонник
Я просто думаю, что
проблема в том, что нам нужно что-то сверху
статического анализа нужны методы
как это, чтобы определить приоритеты и сказать, что это
где мы должны начать обращаться
эти результаты показывают, что статический анализ
инструменты дают нам это просто другое
источник ввода, и я думаю, что они
дополняют друг друга довольно неплохо
большое спасибо за многое для
большой разговор и надеюсь увидеть вас когда-нибудь
да, спасибо, и приходите и возьмите
пучок да там есть наклейки
Please follow and like us:

Be First to Comment

Добавить комментарий