Управление данными в микросервисах
В микросервисной архитектуре у каждого сервиса обычно своя база данных. Для организации доступа одного сервиса к данным другого сервиса нужно либо каждый раз делать запрос к сервису, ответственному за данные, либо иметь копию нужных данных. И тут важен баланс.
Например, у нас есть сервис, который хранит и обслуживает актуальный справочник городов. А навигационный сервис предоставляет информацию о маршрутах общественного транспорта в выбранном городе. Как правильно организовать доступ навигационного сервиса к справочнику городов?
В статье автор рассказывает о способах управления данными в микросервисной архитектуре:
– Дублирование мастер-систем. Каждый сервис хранит и поддерживает данные независимо друг от друга
– API. Сервис, ответственный за данные, предоставляет доступ к данным по API другим сервисам
– DWH. Сервис, ответственный за данные, сливает их в единое хранилище, а другие сервисы имеют доступ к хранилищу
– Очереди. Сервис, ответственный за данные, публикует информацию обо всех изменениях в очередь. А другие сервисы, считывая данные из очереди, хранят на своей стороне и актуализируют.
По каждому способу автор рассказывает о достоинствах и недостатках. Подробнее останавливается на последнем, как на наиболее интересном, и рассказывает о нюансах реализации.
Способ через очереди мне особенно нравится тем, что позволяет делать сервисы более независимыми, хотя он, конечно, более трудозатратный.
#systemdesign
В микросервисной архитектуре у каждого сервиса обычно своя база данных. Для организации доступа одного сервиса к данным другого сервиса нужно либо каждый раз делать запрос к сервису, ответственному за данные, либо иметь копию нужных данных. И тут важен баланс.
Например, у нас есть сервис, который хранит и обслуживает актуальный справочник городов. А навигационный сервис предоставляет информацию о маршрутах общественного транспорта в выбранном городе. Как правильно организовать доступ навигационного сервиса к справочнику городов?
В статье автор рассказывает о способах управления данными в микросервисной архитектуре:
– Дублирование мастер-систем. Каждый сервис хранит и поддерживает данные независимо друг от друга
– API. Сервис, ответственный за данные, предоставляет доступ к данным по API другим сервисам
– DWH. Сервис, ответственный за данные, сливает их в единое хранилище, а другие сервисы имеют доступ к хранилищу
– Очереди. Сервис, ответственный за данные, публикует информацию обо всех изменениях в очередь. А другие сервисы, считывая данные из очереди, хранят на своей стороне и актуализируют.
По каждому способу автор рассказывает о достоинствах и недостатках. Подробнее останавливается на последнем, как на наиболее интересном, и рассказывает о нюансах реализации.
Способ через очереди мне особенно нравится тем, что позволяет делать сервисы более независимыми, хотя он, конечно, более трудозатратный.
#systemdesign
👍6🔥3🌭3
Путь от монолита к микросервисам
Лёгкая для понимания статья, проводящая грань между монолитом, микросервисным монолитом, микросервисами и так называемым оркестратором бизнес-сервисов (последнее – это какая-то ненаучная фантастика).
Каждый из вариантов имеет свои плюсы и свои недостатки, о которых говорит автор. Пожалуй, самое грустное – зависнуть на микросервисном монолите и словить все проблемы, какие только можно придумать.
Статья мне понравилось ещё тем, что по пути автор даёт ссылки на интересные материалы для погружения в тему. Например, о CirquitBreaker от Мартина Фаулера.
Тема достаточно холиварная, поэтому советую ещё заглянуть в комменты.
#systemdesign
Лёгкая для понимания статья, проводящая грань между монолитом, микросервисным монолитом, микросервисами и так называемым оркестратором бизнес-сервисов (последнее – это какая-то ненаучная фантастика).
Каждый из вариантов имеет свои плюсы и свои недостатки, о которых говорит автор. Пожалуй, самое грустное – зависнуть на микросервисном монолите и словить все проблемы, какие только можно придумать.
Статья мне понравилось ещё тем, что по пути автор даёт ссылки на интересные материалы для погружения в тему. Например, о CirquitBreaker от Мартина Фаулера.
Тема достаточно холиварная, поэтому советую ещё заглянуть в комменты.
#systemdesign
Хабр
От микросервисного монолита к оркестратору бизнес-сервисов
Когда компании решают разделить монолит на микросервисы, в большинстве случаев они последовательно проходят четыре этапа: монолит, микросервисный монолит, микросервисы, оркестратор бизнес-сервисов....
👍6🌭3🔥1
Как документировать архитектуру
В архитектуру входят сервисы, базы данных, брокеры сообщений, внешние интеграции и хорошо бы понимать, кто на ком стоял и кто с кем взаимодействует.
Замечательная статья, охватывающая многие аспекты документирования. Начинает автор с главного, объясняя, зачем нужно документировать архитектуру.
В качестве структурного шаблона для документирования предлагается использовать arc42. Для визуализации — C4 model. Кстати, C4 оказалась вполне удобной, и мы активно применяем её у себя.
Из приятного — для arc42 и C4 автор приводит ссылки на хорошие примеры реализации.
В конце автор рассказывает, как можно всё описанное организовать, применяя подход — documentation as code, а так же приводит полезные тулзы для этого.
#systemdesign #tools
В архитектуру входят сервисы, базы данных, брокеры сообщений, внешние интеграции и хорошо бы понимать, кто на ком стоял и кто с кем взаимодействует.
Замечательная статья, охватывающая многие аспекты документирования. Начинает автор с главного, объясняя, зачем нужно документировать архитектуру.
В качестве структурного шаблона для документирования предлагается использовать arc42. Для визуализации — C4 model. Кстати, C4 оказалась вполне удобной, и мы активно применяем её у себя.
Из приятного — для arc42 и C4 автор приводит ссылки на хорошие примеры реализации.
В конце автор рассказывает, как можно всё описанное организовать, применяя подход — documentation as code, а так же приводит полезные тулзы для этого.
#systemdesign #tools
workingsoftware.dev
The Ultimate Guide To Software Architecture Documentation
This guide shows you how to write, structure, visualize and manage software architecture documentation using appropriate documentation tools.
👍8🔥4❤2🌭1
Event storming для проектирования сервисов
Скажу честно, я в event storming не бум-бум и никогда не применял на практике. На просторах хабра нашел вводную статью — Моделирование микросервисов с помощью Event storming.
Event Storming помогает быстро получить стратегический дизайн, определив границы, в рамках которых технические решения можно принимать автономно.
Сомневаюсь, что буду применять на практике этот метод, но какие-то идеи точно стоит взять на вооружение. Например, правильное распределение приоритетов разработки и выделение контекстов.
А вот официальный сайт, если заинтересовались концепцией.
#systemdesign
Скажу честно, я в event storming не бум-бум и никогда не применял на практике. На просторах хабра нашел вводную статью — Моделирование микросервисов с помощью Event storming.
Event Storming помогает быстро получить стратегический дизайн, определив границы, в рамках которых технические решения можно принимать автономно.
Сомневаюсь, что буду применять на практике этот метод, но какие-то идеи точно стоит взять на вооружение. Например, правильное распределение приоритетов разработки и выделение контекстов.
А вот официальный сайт, если заинтересовались концепцией.
#systemdesign
Хабр
Моделирование микросервисов с помощью Event storming
Event storming — метод, который смещает акцент у событий с технического на организационный и бизнес уровни и помогает создать устойчивую модульную систему. Он нередко используется в контексте...
🔥6👍2🌭2
Как проектировать бизнес-логику приложения?
Вопрос подписчика: с ростом сложности разработки возникает необходимость в проработке логики приложения и будущего интерфейса. Есть ли какие-то приложухи, приёмы, фреймворки, тулзы для помощи в создании абстракций будущего проекта? Слышал про UML-диаграммы, но хочется уточнить, что сейчас в сфере разработки действительно применимо, что нужно и что не нужно.
----------
При нашем участии создавались проекты от месяца до полутора лет и коллективами от 1 до 10 участвующих лиц. Были мы и рядовыми разработчиками, и тимлидами, и даже чисто создавали ТЗ для дальнейшей реализации сторонними силами. По нашему опыту проектной работы, функционал приложения удобно излагать в техническом задании (ТЗ). Подробное ТЗ в текстовом виде содержит набор требуемых фич и покрывает нюансы вроде разграничения ролей, планируемых интеграций и так далее. Само ТЗ можно компоновать по-разному. Довольно удачным является описание через раскрытие сценариев работы приложения. Оттолкнуться можно от user story – это краткое описание функциональности в стиле "возможность добавлять тег к задаче". В ТЗ такую фичу надо детализировать: кто именно может добавлять тег? Теги фиксированные или настраиваются? Настраиваются пользователем или админом приложения? На какие экраны надо выводить тег и где их можно редактировать? Ответы на эти вопросы складываются в кучу нюансов. Удобнее всего описывать ТЗ по экранам будущего приложения, а потом рядом прописать сценарии работы, в каком порядке эти экраны позволят выполнить те самые user story. При этом не надо из ТЗ пытаться делать огромный бюрократический документ. Размер, конечно, зависит от сложности системы, но вот наполнять ТЗ канцеляризмами совсем зло. Формальные подходы типа UML, на наш взгляд, в индустрии не взлетели.
После ТЗ или одновременно с ним неплохо бы нарисовать макеты будущего приложения. Они упрощают восприятие ТЗ и позволяют согласовывать отдельные элементы с широким кругом заинтересованных лиц. Посмотреть картинку приложения куда проще, чем читать ТЗ. Нужные элементы, то есть условные формочки, выпадающие списки и кнопочки нужно накидать на будущие экраны. Сразу становится понятно, не перегружены ли экраны избыточной функциональностью. Рисовать макеты можно хоть от руки, хоть в paint. Конечно, есть более подходящие инструменты вроде figma, но глобально можно использовать что любой инструмент. Figma предоставляет разные библиотеки элементов и берёт на себя вопросы расшаривания макетов – макеты можно отдать дизайнеру, который в фигме же прорисует нормальный интерфейс, из которого потом верстальщик перенесёт всё в код. Дальше вопрос объёма приложения и опыта. Условно, если в paint макет я отрисую за 10 часов, а в figma за 1 час, казалось бы, paint совсем плох. Но! Для освоения figma я потрачу кучу времени, условные 4 часа. Тогда соотношение времени уже не 1 к 10, а 1 к 2. Плюс, сколько всего времени займут макеты? Обычно это относительно малая часть работы. По нашему опыту, для приложения со сроком разработки в год на ТЗ и макеты выделяется меньше 1 месяца, большая часть из которого тратится на выяснение фич и их согласование с заказчиком.
#devfm #systemdesign
Вопрос подписчика: с ростом сложности разработки возникает необходимость в проработке логики приложения и будущего интерфейса. Есть ли какие-то приложухи, приёмы, фреймворки, тулзы для помощи в создании абстракций будущего проекта? Слышал про UML-диаграммы, но хочется уточнить, что сейчас в сфере разработки действительно применимо, что нужно и что не нужно.
----------
При нашем участии создавались проекты от месяца до полутора лет и коллективами от 1 до 10 участвующих лиц. Были мы и рядовыми разработчиками, и тимлидами, и даже чисто создавали ТЗ для дальнейшей реализации сторонними силами. По нашему опыту проектной работы, функционал приложения удобно излагать в техническом задании (ТЗ). Подробное ТЗ в текстовом виде содержит набор требуемых фич и покрывает нюансы вроде разграничения ролей, планируемых интеграций и так далее. Само ТЗ можно компоновать по-разному. Довольно удачным является описание через раскрытие сценариев работы приложения. Оттолкнуться можно от user story – это краткое описание функциональности в стиле "возможность добавлять тег к задаче". В ТЗ такую фичу надо детализировать: кто именно может добавлять тег? Теги фиксированные или настраиваются? Настраиваются пользователем или админом приложения? На какие экраны надо выводить тег и где их можно редактировать? Ответы на эти вопросы складываются в кучу нюансов. Удобнее всего описывать ТЗ по экранам будущего приложения, а потом рядом прописать сценарии работы, в каком порядке эти экраны позволят выполнить те самые user story. При этом не надо из ТЗ пытаться делать огромный бюрократический документ. Размер, конечно, зависит от сложности системы, но вот наполнять ТЗ канцеляризмами совсем зло. Формальные подходы типа UML, на наш взгляд, в индустрии не взлетели.
После ТЗ или одновременно с ним неплохо бы нарисовать макеты будущего приложения. Они упрощают восприятие ТЗ и позволяют согласовывать отдельные элементы с широким кругом заинтересованных лиц. Посмотреть картинку приложения куда проще, чем читать ТЗ. Нужные элементы, то есть условные формочки, выпадающие списки и кнопочки нужно накидать на будущие экраны. Сразу становится понятно, не перегружены ли экраны избыточной функциональностью. Рисовать макеты можно хоть от руки, хоть в paint. Конечно, есть более подходящие инструменты вроде figma, но глобально можно использовать что любой инструмент. Figma предоставляет разные библиотеки элементов и берёт на себя вопросы расшаривания макетов – макеты можно отдать дизайнеру, который в фигме же прорисует нормальный интерфейс, из которого потом верстальщик перенесёт всё в код. Дальше вопрос объёма приложения и опыта. Условно, если в paint макет я отрисую за 10 часов, а в figma за 1 час, казалось бы, paint совсем плох. Но! Для освоения figma я потрачу кучу времени, условные 4 часа. Тогда соотношение времени уже не 1 к 10, а 1 к 2. Плюс, сколько всего времени займут макеты? Обычно это относительно малая часть работы. По нашему опыту, для приложения со сроком разработки в год на ТЗ и макеты выделяется меньше 1 месяца, большая часть из которого тратится на выяснение фич и их согласование с заказчиком.
#devfm #systemdesign
👍12❤3🔥2
RESTful web API design
У Майкрософта есть годный гайд по проектированию RESTful веб-API. Там и фундаментальные вещи, и конкретные рекомендации:
— во главу угла ставить ресурс, а не действие. Не делать ручку create-order, вместо неё делать POST-запрос на
— стараться не усложнять ручку больше, чем двойная вложенность
— приводятся типовые HTTP-методы. Нередко достаточно GET/POST/DELETE, можно добавить PUT и PATCH. К сожалению, часто семантика этих запросов понимается всеми по-разному. В этом гайде представлено довольно практичное описание. По каждому методу даны нюансы как по применению, так и по особенностям реализации в части возврата ошибок и асинхронным операциям. Важно не забывать про идемпотентность (пост о ней) некоторых методов
— не забыта постраничная навигация в запросе, HATEOAS и версионирование API
#systemdesign
У Майкрософта есть годный гайд по проектированию RESTful веб-API. Там и фундаментальные вещи, и конкретные рекомендации:
— во главу угла ставить ресурс, а не действие. Не делать ручку create-order, вместо неё делать POST-запрос на
orders/<id>. При этом подчёркивается, что внутреннее представление данных не должно просачиваться наружу. То есть за сущностью orders может быть несколько сущностей реальной базы данных— стараться не усложнять ручку больше, чем двойная вложенность
collection/item/collection, например, /customers/<id>/orders. При этом следует найти баланс. С одной стороны, запросы лучше экономить (много запросов = больше нагрузка на сервер и клиент), но при этом на каждый чих слать весь мир в ответе тоже не стоит— приводятся типовые HTTP-методы. Нередко достаточно GET/POST/DELETE, можно добавить PUT и PATCH. К сожалению, часто семантика этих запросов понимается всеми по-разному. В этом гайде представлено довольно практичное описание. По каждому методу даны нюансы как по применению, так и по особенностям реализации в части возврата ошибок и асинхронным операциям. Важно не забывать про идемпотентность (пост о ней) некоторых методов
— не забыта постраничная навигация в запросе, HATEOAS и версионирование API
#systemdesign
Docs
Web API Design Best Practices - Azure Architecture Center
Learn how to apply best practices for designing RESTful web APIs that support platform independence and loose coupling for service evolution.
👍20🔥8❤2⚡1
Прекрасная статья ARCHITECTS, ANTI-PATTERNS, AND ORGANIZATIONAL FUCKERY, написанная по мотивам треда в твиттере. Название говорит само за себя.
Очень рекомендую к прочтению.
Свою позицию я выражу двумя цитатами из этой же статьи: «It treats architecture is a job to be done, not a role to be occupied.» и «Don’t become that sad architect. Be an engineer. Own your own code in production. This is the way.»
#systemdesign
Очень рекомендую к прочтению.
Свою позицию я выражу двумя цитатами из этой же статьи: «It treats architecture is a job to be done, not a role to be occupied.» и «Don’t become that sad architect. Be an engineer. Own your own code in production. This is the way.»
#systemdesign
charity.wtf
Architects, Anti-Patterns, and Organizational Fuckery
I recently wrote a twitter thread on the proper role of architects, or as I put it, tongue-in-cheek-ily, whether or not architect is a “bullshit role”. It got a LOT of reactions (2.5 we…
1😁7⚡3❤1🔥1
Google design docs
Перед тем как разрабатывать что-то серьёзное – расскажи, как ты это будешь делать. Для этого существуют design docs.
В статье рассказывается о том как, устроены design docs в гугле.
Это такой достаточно верхнеуровневый документ, по которому можно быстро понять, какую проблему мы решаем, зачем её решаем, как её решаем, и почему не решаем иначе. Также документ позволяет на ранних этапах понять основные проблемы, с которыми столкнёмся, а ещё шарить знания в рамках компании.
Автор говорит, что в целом нет каких-то жёстких правил по составлению подобных документов, но указывает набор важных аспектов, которые нужно покрыть:
– Контекст документа
– Цели
– Собственно, дизайн, который должен включать некую системную диаграмму, апишки, хранилища данных, а также ограничения, в которых проектируется система
– Альтернативные решения – супер важный раздел, который расскажет о других рассмотренных решениях и причинах, почему эти решения отбросили
Важный момент: не нужно фанатично на всё клепать доки. Об этом также не стоит забывать. Если задача прямая, как железная дорога, то не стоит мудрить.
#systemdesign
Оффтоп: включили на канале платные реакции, чтобы вы могли нас поддержать. Уверены, это именно то, чего вы все ждали! :D
Перед тем как разрабатывать что-то серьёзное – расскажи, как ты это будешь делать. Для этого существуют design docs.
В статье рассказывается о том как, устроены design docs в гугле.
Это такой достаточно верхнеуровневый документ, по которому можно быстро понять, какую проблему мы решаем, зачем её решаем, как её решаем, и почему не решаем иначе. Также документ позволяет на ранних этапах понять основные проблемы, с которыми столкнёмся, а ещё шарить знания в рамках компании.
Автор говорит, что в целом нет каких-то жёстких правил по составлению подобных документов, но указывает набор важных аспектов, которые нужно покрыть:
– Контекст документа
– Цели
– Собственно, дизайн, который должен включать некую системную диаграмму, апишки, хранилища данных, а также ограничения, в которых проектируется система
– Альтернативные решения – супер важный раздел, который расскажет о других рассмотренных решениях и причинах, почему эти решения отбросили
Важный момент: не нужно фанатично на всё клепать доки. Об этом также не стоит забывать. Если задача прямая, как железная дорога, то не стоит мудрить.
#systemdesign
Оффтоп: включили на канале платные реакции, чтобы вы могли нас поддержать. Уверены, это именно то, чего вы все ждали! :D
Industrialempathy
Design Docs at Google
One of the key elements of Google's software engineering culture is the use of design docs for defining software designs. These are...
41👍15🔥8🌭4⚡2
Всё ли так просто с ретраями?
На первый взгляд ретраи кажутся простым способом улучшить отказоустойчивость. Что может пойти не так? Ребята из Яндекса написали на эту тему большую и захватывающую статью.
Автор ретроспективно на конкретных примерах показывает результаты применения простого ретрая с фиксированной задержкой, ретрая с экспоненциальной задержкой, ретрая с джиттером.
В итоге приходит к выводу, что ретраи хороши при единичных ошибках или кратковременных сбоях. Однако, при затяжном или массовом сбое ретраи только увеличивают нагрузку на сервер, что приводит к замедлению восстановления после сбоя.
Для решения этих проблем и повышения отказоустойчивости в статье выделяется три способа:
– retry budget – ограничивает количество ретраев в зависимости от количества успешных запросов
– circuit breaker – полностью отключает ретраи, если процент ошибок превышает заданный порог
– deadline propagation – в запросе содержится таймаут, после которого сервер может прекратить обработку запроса
Ссылочка на код, чтобы самостоятельно поэкспериментировать.
В столь же интересном формате у нас был обзор на статью об идемпотентности.
На эту же тему стоит посмотреть видео.
#skills #systemdesign
На первый взгляд ретраи кажутся простым способом улучшить отказоустойчивость. Что может пойти не так? Ребята из Яндекса написали на эту тему большую и захватывающую статью.
Автор ретроспективно на конкретных примерах показывает результаты применения простого ретрая с фиксированной задержкой, ретрая с экспоненциальной задержкой, ретрая с джиттером.
В итоге приходит к выводу, что ретраи хороши при единичных ошибках или кратковременных сбоях. Однако, при затяжном или массовом сбое ретраи только увеличивают нагрузку на сервер, что приводит к замедлению восстановления после сбоя.
Для решения этих проблем и повышения отказоустойчивости в статье выделяется три способа:
– retry budget – ограничивает количество ретраев в зависимости от количества успешных запросов
– circuit breaker – полностью отключает ретраи, если процент ошибок превышает заданный порог
– deadline propagation – в запросе содержится таймаут, после которого сервер может прекратить обработку запроса
Ссылочка на код, чтобы самостоятельно поэкспериментировать.
В столь же интересном формате у нас был обзор на статью об идемпотентности.
На эту же тему стоит посмотреть видео.
#skills #systemdesign
Хабр
Хороший ретрай, плохой ретрай, или История одного падения
Порой простое и очевидное решение может потянуть за собой хвост проблем в будущем. Например, добавление ретраев. Меня зовут Денис Исаев, и я работаю в Яндекс Go. Сегодня я поделюсь опытом решения...
🔥12👍3❤2⚡2
Для чего нужны архитектурные схемы
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна архитектурная схема? Конечно, кроме того, что это просто красиво.
Пост как раз об этом.
Онбординг. Обычно технический онбординг мы начинаем с архитектурной схемы. Это позволяет новому сотруднику посмотреть на систему с высоты птичьего полета, начать ориентироваться, кто на ком стоял. Тут же можно бегло рассказать о каждом компоненте, внешних зависимостях и способах их взаимодействия. Причем это работает не только с разработчиками. Приходит к тебе нагрузочник и говорит, ну, давай рассказывай, что у вас тут. И перед тем, как кидаться в него жирной пачкой документации, ты такой опа: давай пробежимся по архитектуре, расскажу тебе, как всё устроено.
Обсуждение работ со смежными командами. Обычно разрабатываемая система работает не в соло. И есть соседние сервисы, с которыми нужно интегрироваться. Первичные обсуждения всегда удобно делать с наглядной картинкой.
Обсуждение и планирование больших фичей. Когда планируется разработка чего-то сложного, затрагивающего многие компоненты/сервисы. Опять же, можно собраться с командой разработки, аналитиками, обсудить и зафиксировать первичные договорённости. Эта же картинка будет полезна, когда перед стартом разработки будет презентоваться окончательное решение. При разработке разухабистых фичей, кстати, могут быть полезны design docs.
Напоминалка о сложности. Да, для этого также нужна архитектурная схема, просто чтобы помнить о комплексности, о потребности в людях на хозяйстве, о невозможности реализовать фичу в маленькие сроки реализации, о наличии вооот такого сервиса, о котором уже никто и не помнит.
О том, как документировать архитектуру у нас был отдельный пост.
#devfm #systemdesign #edu
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна архитектурная схема? Конечно, кроме того, что это просто красиво.
Пост как раз об этом.
Онбординг. Обычно технический онбординг мы начинаем с архитектурной схемы. Это позволяет новому сотруднику посмотреть на систему с высоты птичьего полета, начать ориентироваться, кто на ком стоял. Тут же можно бегло рассказать о каждом компоненте, внешних зависимостях и способах их взаимодействия. Причем это работает не только с разработчиками. Приходит к тебе нагрузочник и говорит, ну, давай рассказывай, что у вас тут. И перед тем, как кидаться в него жирной пачкой документации, ты такой опа: давай пробежимся по архитектуре, расскажу тебе, как всё устроено.
Обсуждение работ со смежными командами. Обычно разрабатываемая система работает не в соло. И есть соседние сервисы, с которыми нужно интегрироваться. Первичные обсуждения всегда удобно делать с наглядной картинкой.
Обсуждение и планирование больших фичей. Когда планируется разработка чего-то сложного, затрагивающего многие компоненты/сервисы. Опять же, можно собраться с командой разработки, аналитиками, обсудить и зафиксировать первичные договорённости. Эта же картинка будет полезна, когда перед стартом разработки будет презентоваться окончательное решение. При разработке разухабистых фичей, кстати, могут быть полезны design docs.
Напоминалка о сложности. Да, для этого также нужна архитектурная схема, просто чтобы помнить о комплексности, о потребности в людях на хозяйстве, о невозможности реализовать фичу в маленькие сроки реализации, о наличии вооот такого сервиса, о котором уже никто и не помнит.
О том, как документировать архитектуру у нас был отдельный пост.
#devfm #systemdesign #edu
Telegram
DevFM
Google design docs
Перед тем как разрабатывать что-то серьёзное – расскажи, как ты это будешь делать. Для этого существуют design docs.
В статье рассказывается о том как, устроены design docs в гугле.
Это такой достаточно верхнеуровневый документ, по…
Перед тем как разрабатывать что-то серьёзное – расскажи, как ты это будешь делать. Для этого существуют design docs.
В статье рассказывается о том как, устроены design docs в гугле.
Это такой достаточно верхнеуровневый документ, по…
👍10🔥4❤3