📚 Нотация С4 - подробнее об уровнях моделирования 📚
Если вы решили самостоятельно разобраться с нотацией моделирования архитектуры C4, то настоятельно рекомендую идти на официальный сайт нотации и смотреть всю документацию и примеры там.
Есть нюансы:
1. Там всё на английском. Гугл переводчик или автоперевод страниц поможет, но иногда переводится криво.
2. Разобран всего один пример.
3. Нет понимания, что нужно СА, а что нет.
Поэтому я даю больше материалов в нашем сообществе 🙌
Детализация уровней моделирования в C4:
👉 Контекст (C4 / Context)
Система, её интеграции и пользователи.
✔️ Главный прямоугольник - наша система
✔️ Серые прямоугольники вокруг - внешние системы
✔️ Пользователи
👩💻 Полезна бизнес- и техническим специалистам.
👉 Контейнеры (C4 / Container)
Независимые по коду приложения внутри системы, детализация главного прямоугольника c C4 / Context.
✔️ Пользователи и внешние системы с уровня C4 / Context
✔️ Мобильные, веб- и десктоп приложения
✔️ Сервер-приложения: монолит, сервисы, микросервисы, API Gateway
✔️ Базы данных и файловые хранилища
✔️ Виды API
✔️ Технологии (языки программирования, СУБД, протоколы для API и др)
✔️ Базы данных и файловые хранилища
✔️ Очереди и брокеры
Схему удобнее использовать в адаптированном виде, когда на этом уровне не показывают сервисы и микросервисы, а переносят их на уровень глубже - C4 / Component. Иначе она очень перегружена.
👩💻 Полезна архитекторам, разработчикам и системным аналитикам.
Разбор уровней Компонентов и Кода далее 👇
#АрхитектураGA
Если вы решили самостоятельно разобраться с нотацией моделирования архитектуры C4, то настоятельно рекомендую идти на официальный сайт нотации и смотреть всю документацию и примеры там.
Есть нюансы:
1. Там всё на английском. Гугл переводчик или автоперевод страниц поможет, но иногда переводится криво.
2. Разобран всего один пример.
3. Нет понимания, что нужно СА, а что нет.
Поэтому я даю больше материалов в нашем сообществе 🙌
Детализация уровней моделирования в C4:
👉 Контекст (C4 / Context)
Система, её интеграции и пользователи.
✔️ Главный прямоугольник - наша система
✔️ Серые прямоугольники вокруг - внешние системы
✔️ Пользователи
👩💻 Полезна бизнес- и техническим специалистам.
👉 Контейнеры (C4 / Container)
Независимые по коду приложения внутри системы, детализация главного прямоугольника c C4 / Context.
✔️ Пользователи и внешние системы с уровня C4 / Context
✔️ Мобильные, веб- и десктоп приложения
✔️ Сервер-приложения: монолит, сервисы, микросервисы, API Gateway
✔️ Базы данных и файловые хранилища
✔️ Виды API
✔️ Технологии (языки программирования, СУБД, протоколы для API и др)
✔️ Базы данных и файловые хранилища
✔️ Очереди и брокеры
Схему удобнее использовать в адаптированном виде, когда на этом уровне не показывают сервисы и микросервисы, а переносят их на уровень глубже - C4 / Component. Иначе она очень перегружена.
👩💻 Полезна архитекторам, разработчикам и системным аналитикам.
Разбор уровней Компонентов и Кода далее 👇
#АрхитектураGA
👍22❤🔥5❤3🔥2
📚 Нотация С4 - подробнее об уровнях моделирования 📚
Про два главных уровня - Контекст и Контейнеры рассказала выше ☝️
Продолжаем:
👉 Компоненты (C4 / Component)
Модули кода и зависимости между ними, детализирует один из контейнеров с C4 / Container.
Показывает что внутри веб-приложения, мобильного или сервер-приложения.
В адаптированном виде здесь можно показать детали бэкенд: сервисы, микросервисы, базы данных, очереди и т.д.
👩💻 Полезна архитекторам, разработчикам и в некоторых случаях системным аналитикам, когда описывают модули монолита, или на этот уровень выносим сервисы и микросервисы.
👉 Код (C4 / Code)
Описывает реализацию кода для конкретных компонентов системы, детализирует C4 / Component.
Аналог диаграммы классов в UML, если вы её когда-то использовали (я только в университете).
👩💻 Полезна… никому 🙃 или программистам, когда обсуждают, как лучше организовать код.
Автор это признает и не рекомендует держать схему в составе документации проекта, т.к. она быстро устаревает и требует много лишних сил на актуализацию.
Цитата с официального сайта
C4 помогает создать целостное представление системы на разных уровнях, начиная с общего обзора и заканчивая деталями реализации.
Схема C4 полезна для большинства проектов, особенно, где есть несколько пользовательских приложений, несколько сервер-приложений или интеграции.
#АрхитектураGA
Про два главных уровня - Контекст и Контейнеры рассказала выше ☝️
Продолжаем:
👉 Компоненты (C4 / Component)
Модули кода и зависимости между ними, детализирует один из контейнеров с C4 / Container.
Показывает что внутри веб-приложения, мобильного или сервер-приложения.
В адаптированном виде здесь можно показать детали бэкенд: сервисы, микросервисы, базы данных, очереди и т.д.
👩💻 Полезна архитекторам, разработчикам и в некоторых случаях системным аналитикам, когда описывают модули монолита, или на этот уровень выносим сервисы и микросервисы.
👉 Код (C4 / Code)
Описывает реализацию кода для конкретных компонентов системы, детализирует C4 / Component.
Аналог диаграммы классов в UML, если вы её когда-то использовали (я только в университете).
👩💻 Полезна… никому 🙃 или программистам, когда обсуждают, как лучше организовать код.
Автор это признает и не рекомендует держать схему в составе документации проекта, т.к. она быстро устаревает и требует много лишних сил на актуализацию.
Цитата с официального сайта
Оригинал:
Recommended for most teams: No, particularly for long-lived documentation because most IDEs can generate this level of detail on demand.
Перевод:
Рекомендуется для большинства команд: Нет, особенно для долговременной документации, поскольку большинство инструментов разработки могут генерировать этот уровень детализации по запросу.
C4 помогает создать целостное представление системы на разных уровнях, начиная с общего обзора и заканчивая деталями реализации.
Схема C4 полезна для большинства проектов, особенно, где есть несколько пользовательских приложений, несколько сервер-приложений или интеграции.
#АрхитектураGA
👍17❤🔥5❤3
GetAnalyst Гайд по нотации C4.pdf
10.8 MB
⭐️ Гайд по C4 с примерами [Моделирование архитектуры для системных аналитиков] ⭐️
Нотация C4 - одна из самых удобных для визуализации архитектуры информационных систем. Разработана в 2011 году Саймоном Брауном, системным архитектором.
C4 - это 4 уровня детализации:
⭐️ Context
⭐️ Container
⭐️ Component
⭐️ Code
Преимущества по сравнению с нотацией Archimate: более техническая, меньше бизнес-контекста.
Все подробности собрала в прикрепленном к посту гайду.
В нём больше наглядных примеров, инструменты для C4 и полезные ссылки! Сохраняйте и пользуйтесь ❤️
#АрхитектураGA
Нотация C4 - одна из самых удобных для визуализации архитектуры информационных систем. Разработана в 2011 году Саймоном Брауном, системным архитектором.
C4 - это 4 уровня детализации:
⭐️ Context
⭐️ Container
⭐️ Component
⭐️ Code
Преимущества по сравнению с нотацией Archimate: более техническая, меньше бизнес-контекста.
Все подробности собрала в прикрепленном к посту гайду.
В нём больше наглядных примеров, инструменты для C4 и полезные ссылки! Сохраняйте и пользуйтесь ❤️
#АрхитектураGA
🔥20❤3🤔2🥰1
💫 Архитектура в C4 / Context - проект RideFlow 💫
Самый верхний уровень C4 / Context показывает систему и её окружение.
Проектируя его, мы не заморачиваемся с тем, какой подход к архитектуре будет выбран — будь то монолит, сервис-ориентированная архитектура или микросервисы.
Все, что показывает C4 / Context:
1. Пользователей, которые работают с системой.
2. Интеграции с внешними системами.
Основное преимущество этого уровня заключается в его наглядности и доступности как для IT-команды, так и для бизнес-стейкхолдеров. Его может разработать как системный, так и бизнес-аналитик.
Понимание пользователей критично для определения ролевой модели системы, управления доступами и выявления потенциальных ограничений. Этот уровень также позволяет предположить, какие приложения могут быть важны для пользователей.
А интеграции это то, что нужно знать о любой системе. Это вся техническая суть C4 / Context.
Интеграции влияют на:
+ Работу отдельных бизнес-процессов в системе и синхронизацию данных по ним, а также на работу с данными в системе в целом.
+ Безопасность, так как каждая точка интеграции в системе это потенциальное место для атаки.
+ Масштабируемость, так как в системе одновременно может работать большое количество пользователей и важно понимать, как много одновременных запросов от нашей системы сможет обрабатывать внешняя система.
Пример схемы проекта по заказу такси #RideFlow поможет нам понять, как реализуется C4 / Context на практике. См. картинку к посту.
Вопросы по схеме? Пишите комментарии.
Всё понятно и готовы идти дальше? Ставьте 👍
#АрхитектураGA
Самый верхний уровень C4 / Context показывает систему и её окружение.
Проектируя его, мы не заморачиваемся с тем, какой подход к архитектуре будет выбран — будь то монолит, сервис-ориентированная архитектура или микросервисы.
Все, что показывает C4 / Context:
1. Пользователей, которые работают с системой.
2. Интеграции с внешними системами.
Основное преимущество этого уровня заключается в его наглядности и доступности как для IT-команды, так и для бизнес-стейкхолдеров. Его может разработать как системный, так и бизнес-аналитик.
Понимание пользователей критично для определения ролевой модели системы, управления доступами и выявления потенциальных ограничений. Этот уровень также позволяет предположить, какие приложения могут быть важны для пользователей.
А интеграции это то, что нужно знать о любой системе. Это вся техническая суть C4 / Context.
Интеграции влияют на:
+ Работу отдельных бизнес-процессов в системе и синхронизацию данных по ним, а также на работу с данными в системе в целом.
+ Безопасность, так как каждая точка интеграции в системе это потенциальное место для атаки.
+ Масштабируемость, так как в системе одновременно может работать большое количество пользователей и важно понимать, как много одновременных запросов от нашей системы сможет обрабатывать внешняя система.
Пример схемы проекта по заказу такси #RideFlow поможет нам понять, как реализуется C4 / Context на практике. См. картинку к посту.
Вопросы по схеме? Пишите комментарии.
Всё понятно и готовы идти дальше? Ставьте 👍
#АрхитектураGA
👍20❤7🤔1
🌱 Архитектура для аналитиков: опыт работы и рост здесь 🙌
Погружение в архитектуру систем и опыт работы в сложных проектах с микросервисной архитектурой - точки роста для опытных системных аналитиков.
Поэтому, по вашей обратной связи, в этом году я запустила новую практическую программу для системных аналитиков, которая позволяет расширить экспертизу в архитектуре систем.
🌟 Проектирование архитектуры
🌟 Старт предобучения 29 августа 2024
🌟 Подробности о программе и запись
🎁 С 14 до 22 августа открыта предзапись на специальных условиях + дополнительное обучение по REST API в подарок.
В архитектуре я проявила максимальные занудство и дотошность. Собирала не только свой опыт, но и подключила других экспертов.
Один из важных отзывов, повторяемый разными словами в чатах:
Программа подойдёт только для опытных системных аналитиков (Middle и выше), кто уже работал с интеграциями, хочет расти в Senior внутри компании, или переходить в интересные и сложные проекты.
Навыки работы с архитектурой, очередями, API, взаимодействием систем в реальном времени, которые аналитики получили в ходе работы, уже сейчас помогают им:
+ проходить аттестацию в компании на повышение грейда,
+ менять работу и выбирать офферы по душе,
+ получать повышения.
Создавать IT-таланты в Системном Анализе - цель GetAnalyst.
И Архитектура - самая сложная, но самая интересная часть в этом пути 🙌
2024 - год больших и крутых перемен ♥️ Давайте идти к ним вместе!
Погружение в архитектуру систем и опыт работы в сложных проектах с микросервисной архитектурой - точки роста для опытных системных аналитиков.
Поэтому, по вашей обратной связи, в этом году я запустила новую практическую программу для системных аналитиков, которая позволяет расширить экспертизу в архитектуре систем.
🌟 Проектирование архитектуры
🌟 Старт предобучения 29 августа 2024
🌟 Подробности о программе и запись
🎁 С 14 до 22 августа открыта предзапись на специальных условиях + дополнительное обучение по REST API в подарок.
В архитектуре я проявила максимальные занудство и дотошность. Собирала не только свой опыт, но и подключила других экспертов.
Один из важных отзывов, повторяемый разными словами в чатах:
“Есть возможность попрактиковаться в проектировании архитектурного решения, выйти за пределы "пузыря" моей работы и налаженных процессов на работе”
Программа подойдёт только для опытных системных аналитиков (Middle и выше), кто уже работал с интеграциями, хочет расти в Senior внутри компании, или переходить в интересные и сложные проекты.
Навыки работы с архитектурой, очередями, API, взаимодействием систем в реальном времени, которые аналитики получили в ходе работы, уже сейчас помогают им:
+ проходить аттестацию в компании на повышение грейда,
+ менять работу и выбирать офферы по душе,
+ получать повышения.
Создавать IT-таланты в Системном Анализе - цель GetAnalyst.
И Архитектура - самая сложная, но самая интересная часть в этом пути 🙌
2024 - год больших и крутых перемен ♥️ Давайте идти к ним вместе!
❤16👍6👎4👌1
🔸 Монолит, Сервисная и Микросервисная архитектура - сравнение 🔸
Для системных аналитиков важно не только знать, какие виды архитектур существуют, но и понимать их ключевые отличия и области применения. В этом посте мы познакомимся с наиболее распространенными видами архитектуры.
🔸 Монолитная архитектура
В монолитной архитектуре все компоненты приложения находятся в одной кодовой базе и работают как единое целое. Это обеспечивает простоту разработки и релизов системы.
Хорошо подходит для стартапов и небольших проектов.
БД:
Обычно используется одна БД, что упрощает взаимодействие между различными частями приложения, но может стать узким местом при масштабировании.
Внутренние интеграции:
Все компоненты взаимодействуют только на уровне кода. Интеграции между ними по API и другими способами не нужны. Внутренние интеграции могут быть только при наличии очередей или брокеров сообщений.
🔸 Сервисная архитектура SOA (Service-Oriented Architecture)
SOA разделяет функциональность на отдельные сервисы, которые взаимодействуют между собой через сетевые вызовы - по API, через шину данных (ESB) или другими способами.
Идеально подходит для средних и крупных проектов, где важно обеспечивать высокий уровень доступности или производительности для отдельных частей системы.
Например, в Интернет-магазине сервис каталога и сервис заказов можно поделить, чтобы инсталлировать на сервере 10 копий сервиса каталога, но всего 3 копии сервиса заказов, т.к. до заказа товаров доходит меньше пользователей чем тех, кто просто смотрит каталог.
БД:
Каждый сервис может использовать свою собственную БД, что облегчает масштабирование и изоляцию сервисов, но также несколько сервисов могут использовать одну БД, что отличает SOA от MSA.
Внутренние интеграции:
Сервисы интегрируются через API, что упрощает интеграцию. Могут использовать шину - ESB.
#АрхитектураGA
Продолжение 👇
Для системных аналитиков важно не только знать, какие виды архитектур существуют, но и понимать их ключевые отличия и области применения. В этом посте мы познакомимся с наиболее распространенными видами архитектуры.
🔸 Монолитная архитектура
В монолитной архитектуре все компоненты приложения находятся в одной кодовой базе и работают как единое целое. Это обеспечивает простоту разработки и релизов системы.
Хорошо подходит для стартапов и небольших проектов.
БД:
Обычно используется одна БД, что упрощает взаимодействие между различными частями приложения, но может стать узким местом при масштабировании.
Внутренние интеграции:
Все компоненты взаимодействуют только на уровне кода. Интеграции между ними по API и другими способами не нужны. Внутренние интеграции могут быть только при наличии очередей или брокеров сообщений.
🔸 Сервисная архитектура SOA (Service-Oriented Architecture)
SOA разделяет функциональность на отдельные сервисы, которые взаимодействуют между собой через сетевые вызовы - по API, через шину данных (ESB) или другими способами.
Идеально подходит для средних и крупных проектов, где важно обеспечивать высокий уровень доступности или производительности для отдельных частей системы.
Например, в Интернет-магазине сервис каталога и сервис заказов можно поделить, чтобы инсталлировать на сервере 10 копий сервиса каталога, но всего 3 копии сервиса заказов, т.к. до заказа товаров доходит меньше пользователей чем тех, кто просто смотрит каталог.
БД:
Каждый сервис может использовать свою собственную БД, что облегчает масштабирование и изоляцию сервисов, но также несколько сервисов могут использовать одну БД, что отличает SOA от MSA.
Внутренние интеграции:
Сервисы интегрируются через API, что упрощает интеграцию. Могут использовать шину - ESB.
#АрхитектураGA
Продолжение 👇
👍15❤5👎2
🔸 Микросервисная архитектура MSA (Microservice Architecture)
MSA состоит из множества маленьких, независимо разрабатываемых и развертываемых сервисов, каждый из которых выполняет одну бизнес-функцию.
Микросервисы меньше по функциональности чем сервисы. Это обеспечивает высокий уровень масштабируемости и гибкости, но из-за большого количества сервисов такие проекты дорого сопровождать, в частности из-за необходимости опытной и высоко-квалифицированной команды.
Подход эффективен для больших и быстро-развивающихся приложений, где требуется быстрая разработка и частые обновления.
БД:
Каждый микросервис, в идеале, управляет своей собственной БД, что позволяет избежать зависимостей и упрощает масштабирование каждого сервиса по отдельности.
Внутренние интеграции:
Взаимодействие между микросервисами часто строится по API на легких протоколах, таких как REST или gRPC, и может включать очереди и брокеры сообщений для асинхронной коммуникации.
👉 Выбор архитектуры проекта зависит от специфики и требований к системе.
На практике часто используют либо смесь подходов SOA и MSA, либо начинают проекты с монолита и через 3-5 лет задумываются о переезде на SOA в качестве первого этапа деления монолита на микросервисы.
🧐 Основная рекомендация опытных архитекторов:
Ключевые подходы к проектированию архитектуры фиксируются в проектной документации. И это не только схемы архитектуры, но и правила, по которым продолжать развивать проект всей команде.
Понимание ключевых аспектов каждого подхода поможет аналитикам определить наиболее подходящую архитектуру для конкретного случая, а также принимать активное и осознанное участие в обсуждениях с разработчиками и архитекторами 🌱
#АрхитектураGA
MSA состоит из множества маленьких, независимо разрабатываемых и развертываемых сервисов, каждый из которых выполняет одну бизнес-функцию.
Микросервисы меньше по функциональности чем сервисы. Это обеспечивает высокий уровень масштабируемости и гибкости, но из-за большого количества сервисов такие проекты дорого сопровождать, в частности из-за необходимости опытной и высоко-квалифицированной команды.
Подход эффективен для больших и быстро-развивающихся приложений, где требуется быстрая разработка и частые обновления.
БД:
Каждый микросервис, в идеале, управляет своей собственной БД, что позволяет избежать зависимостей и упрощает масштабирование каждого сервиса по отдельности.
Внутренние интеграции:
Взаимодействие между микросервисами часто строится по API на легких протоколах, таких как REST или gRPC, и может включать очереди и брокеры сообщений для асинхронной коммуникации.
👉 Выбор архитектуры проекта зависит от специфики и требований к системе.
На практике часто используют либо смесь подходов SOA и MSA, либо начинают проекты с монолита и через 3-5 лет задумываются о переезде на SOA в качестве первого этапа деления монолита на микросервисы.
🧐 Основная рекомендация опытных архитекторов:
Начинай стартап с монолита и сразу правильно организуй модули кода в нём, которые потом можно будет выделить в отдельные сервисы и микросервисы.
Ключевые подходы к проектированию архитектуры фиксируются в проектной документации. И это не только схемы архитектуры, но и правила, по которым продолжать развивать проект всей команде.
Понимание ключевых аспектов каждого подхода поможет аналитикам определить наиболее подходящую архитектуру для конкретного случая, а также принимать активное и осознанное участие в обсуждениях с разработчиками и архитекторами 🌱
#АрхитектураGA
👍11❤9🔥5
Forwarded from 👩🏻💻 Подкаст Системных Аналитиков | GetAnalyst
👩💻🧑💻 Как проводят собеседования на системного аналитика: про найм и подготовку к смене работы 🧑💻👩💻
Смена работы часто сопровождается стрессом и "синдромом самозванца". Мы хотим помочь побороть их. В эпизоде разберем структуру собеседований, вакансии и актуальные навыки аналитиков, чтобы добавить уверенности в новом шаге для вашей карьеры.
01:17 - Актуальные вакансии в компаниях и почему они появляются.
04:37 - Кто составляет вакансии системных аналитиков и задает требования к кандидатам.
10:46 - Структура собеседования на системного аналитика. Теоретические и практические вопросы. Какого уровня системных аналитиков ищут, какой опыт нужен и что ожидают от кандидатов.
17:24 - Про зубрежку теории: почему это не работает на пользу кандидату. Подробный список вопросов собеседования и требований к системным аналитикам от СберЗдоровье.
21:54 - Отношение к собеседованию на 1.5 часа и техническим задачам во время собеседований.
30:04 - Про найм джунов (младших системных аналитиков): ожидания по навыкам и опыту. Цитата из эпизода: “Джуны - единственная сила, которая работает”.
35:21 - Процесс онбординга: что происходит после успешного найма системного аналитика. Как можно помочь адаптироваться новому сотруднику в IT-компании.
42:57 - Ожидания от нанятых сотрудников в течение испытательного срока.
46:40 - Сложности высадки новых сотрудников. Истории провального найма системных аналитиков. И про обязательный выходной по средам.
52:27 - Удаленка и построение взаимоотношений в компании. Интересные решения по развитию корпоративной культуры ИТ-компаний.
59:53 - Рекомендации по подбору сотрудников для руководителей в ИТ и по смене работы и собеседованиям для системных аналитиков.
Ведущая:
Екатерина Ананьева
Гости:
Никита Финько, Росбанк
Ольга Пашкова, СберЗдоровье
Эпизод доступен в:
⏯ Apple Podcast
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Castbox
⏯ Spotify
Ждём вопросы в комментариях, чтобы рассказать больше в следующем эпизоде 😉
Смена работы часто сопровождается стрессом и "синдромом самозванца". Мы хотим помочь побороть их. В эпизоде разберем структуру собеседований, вакансии и актуальные навыки аналитиков, чтобы добавить уверенности в новом шаге для вашей карьеры.
01:17 - Актуальные вакансии в компаниях и почему они появляются.
04:37 - Кто составляет вакансии системных аналитиков и задает требования к кандидатам.
10:46 - Структура собеседования на системного аналитика. Теоретические и практические вопросы. Какого уровня системных аналитиков ищут, какой опыт нужен и что ожидают от кандидатов.
17:24 - Про зубрежку теории: почему это не работает на пользу кандидату. Подробный список вопросов собеседования и требований к системным аналитикам от СберЗдоровье.
21:54 - Отношение к собеседованию на 1.5 часа и техническим задачам во время собеседований.
30:04 - Про найм джунов (младших системных аналитиков): ожидания по навыкам и опыту. Цитата из эпизода: “Джуны - единственная сила, которая работает”.
35:21 - Процесс онбординга: что происходит после успешного найма системного аналитика. Как можно помочь адаптироваться новому сотруднику в IT-компании.
42:57 - Ожидания от нанятых сотрудников в течение испытательного срока.
46:40 - Сложности высадки новых сотрудников. Истории провального найма системных аналитиков. И про обязательный выходной по средам.
52:27 - Удаленка и построение взаимоотношений в компании. Интересные решения по развитию корпоративной культуры ИТ-компаний.
59:53 - Рекомендации по подбору сотрудников для руководителей в ИТ и по смене работы и собеседованиям для системных аналитиков.
Ведущая:
Екатерина Ананьева
Гости:
Никита Финько, Росбанк
Ольга Пашкова, СберЗдоровье
Эпизод доступен в:
⏯ Apple Podcast
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Castbox
⏯ Spotify
Ждём вопросы в комментариях, чтобы рассказать больше в следующем эпизоде 😉
👍15❤7🔥7👌2
💫 Пример C4 / Container для монолита с брокерами, БД и ФХ - проект RideFlow 💫
Рассказала теорию про основные виды архитектуры: монолиты, сервисы и микросервисы.
Показала пример схемы монолита #RideFlow без нотаций.
А теперь хочу показать этот же монолит, но уже с использованием нотации C4 / Container.
➡️ C4/Container расширяет расширяет предыдущий уровень C4/Context, на котором вид архитектуры уже точно должен быть понятен.
➡️ Основное на схеме C4 / Container для монолита (🔗ИСХОДНИК):
- Пользователи
- Внешние системы, оборудование
- Приложения с UI
- Монолитное сервер-приложение - Backend
- Базы данных - для монолита обычно одна, отдельные схемы не отражают
- Файловые хранилища
- Очереди, брокеры
Почему я подробно показываю и разбираю монолиты?
Монолит идеален для небольших проектов и стартапов. И можно остановиться на нём для RideFlow, но...
Дополнительно про "жесткий монолит":
➡️ Итого:
На схеме показана современная версия монолитной архитектуры, где монолитом является только Backend (приложение сервера).
Внутри монолитного Backend можно будет организовать функциональные модули.
Их, согласно нотации C4, показывают на следующем уровне - C4/Component.
Модульный монолит в будущем поможет легче переехать на сервисную или микросервисную архитектуру.
#АрхитектураGA
Рассказала теорию про основные виды архитектуры: монолиты, сервисы и микросервисы.
Показала пример схемы монолита #RideFlow без нотаций.
А теперь хочу показать этот же монолит, но уже с использованием нотации C4 / Container.
➡️ C4/Container расширяет расширяет предыдущий уровень C4/Context, на котором вид архитектуры уже точно должен быть понятен.
➡️ Основное на схеме C4 / Container для монолита (🔗ИСХОДНИК):
- Пользователи
- Внешние системы, оборудование
- Приложения с UI
- Монолитное сервер-приложение - Backend
- Базы данных - для монолита обычно одна, отдельные схемы не отражают
- Файловые хранилища
- Очереди, брокеры
Почему я подробно показываю и разбираю монолиты?
С монолитами работают многие из нас. И когда мы ясно понимаем, что такое монолит и как он выглядит на схеме архитектуры, то понять микросервисы будет уже легче.
Монолит идеален для небольших проектов и стартапов. И можно остановиться на нём для RideFlow, но...
Монолит - идеальное решение, если мы делаем разработку с нуля, пока у нас нет пользователей и масштабных нагрузок.
К микросервисам для RideFlow мы перейдем далее,
чтобы посмотреть на отличия схем для одного и того же проекта в разной архитектуре.
Дополнительно про "жесткий монолит":
В нашем проекте мы избегаем "жесткой монолитной архитектуры" — мы не будем смешивать код пользовательского интерфейса веб-приложений (UI) и Backend (серверной логики и обращений к БД), как это обычно бывает в монолитах.
Такое решение обусловлено наличием мобильных приложений, для которых потребуется разработка API.
➡️ Итого:
На схеме показана современная версия монолитной архитектуры, где монолитом является только Backend (приложение сервера).
Внутри монолитного Backend можно будет организовать функциональные модули.
Их, согласно нотации C4, показывают на следующем уровне - C4/Component.
Модульный монолит в будущем поможет легче переехать на сервисную или микросервисную архитектуру.
#АрхитектураGA
❤14🔥6
⭐ Масштабирование - что важно понимать ⭐
Термин "масштабироваться" относится к способности системы адаптироваться к изменяющемуся количеству функций в ней или запросов от пользователей: увеличение или уменьшение ресурсов и мощностей для обеспечения эффективной работы.
Масштабирование может быть вертикальным или горизонтальным.
⭐ Вертикальное масштабирование (scaling up/down) означает добавление ресурсов к одному серверу или экземпляру приложения. Например, увеличение объёма оперативной памяти, мощности процессора или места на диске.
Это сравнимо с переездом из маленькой квартиры в большую: вы получаете больше места и ресурсов для своих нужд.
👉 Вертикальное масштабирование имеет свои ограничения, связанные с максимально доступными ресурсами оборудования - нельзя бесконечно добавлять память и ядра процессора.
⭐ Горизонтальное масштабирование (scaling out/in) подразумевает добавление дополнительных экземпляров серверов или приложений, работающих параллельно, для распределения нагрузки. Т.е. запускаются одинаковые копии приложений.
Это можно сравнить с созданием сети из множества магазинов, каждый из которых обслуживает своих клиентов: если один магазин переполнен, клиенты могут перейти в другой.
👉 Горизонтальное масштабирование обычно предпочтительнее, так как оно обеспечивает более высокую доступность и устойчивость к отказам.
➡️ Эти определения важно знать при работе с архитектурой систем, чтобы понимать, почему выбирают микросервисы вместо монолита.
#АрхитектураGA
Термин "масштабироваться" относится к способности системы адаптироваться к изменяющемуся количеству функций в ней или запросов от пользователей: увеличение или уменьшение ресурсов и мощностей для обеспечения эффективной работы.
Масштабирование может быть вертикальным или горизонтальным.
⭐ Вертикальное масштабирование (scaling up/down) означает добавление ресурсов к одному серверу или экземпляру приложения. Например, увеличение объёма оперативной памяти, мощности процессора или места на диске.
Это сравнимо с переездом из маленькой квартиры в большую: вы получаете больше места и ресурсов для своих нужд.
👉 Вертикальное масштабирование имеет свои ограничения, связанные с максимально доступными ресурсами оборудования - нельзя бесконечно добавлять память и ядра процессора.
⭐ Горизонтальное масштабирование (scaling out/in) подразумевает добавление дополнительных экземпляров серверов или приложений, работающих параллельно, для распределения нагрузки. Т.е. запускаются одинаковые копии приложений.
Это можно сравнить с созданием сети из множества магазинов, каждый из которых обслуживает своих клиентов: если один магазин переполнен, клиенты могут перейти в другой.
👉 Горизонтальное масштабирование обычно предпочтительнее, так как оно обеспечивает более высокую доступность и устойчивость к отказам.
➡️ Эти определения важно знать при работе с архитектурой систем, чтобы понимать, почему выбирают микросервисы вместо монолита.
#АрхитектураGA
👍17❤🔥5🔥2
⚡️ Переезд на микросервисную архитектуру ⚡️
Микросервисная архитектура (MSA) - это подход к разработке, при котором система состоит из множества маленьких, независимо разрабатываемых и развертываемых сервисов, каждый из которых выполняет определенную бизнес-функцию.
Например, в системе заказа такси, вместо одного большого сервер-приложения, работающего как единый сервис, со всей логикой обработки данных внутри, можно выделить микросервисы:
🔸Управление пользователями - все, связанное с регистрацией пользователей и настройкой их аккаунтов.
🔸Авторизация - логика предоставления доступа к системе и управления сессиями пользователей.
🔸Уведомления - все, что связано с рассылкой уведомлений, интеграции с сервисами уведомлений.
🔸Геолокация - логика получения координат от каждого автомобиля такси и передача этих данных пользователям для отображения машин на карте.
И другие микросервисы.
Такое деление позволит оптимально применять принцип горизонтального масштабирования.
👉Ситуация:
Сервис геолокации использует большой объем ресурсов сервера и из-за него тормозит всё приложение.
👉Решение для монолита:
Вертикальное масштабирование, пока это возможно, или горизонтальное - выделение мощностей для параллельно работающей копии монолита, хотя причиной проблем является только одна его часть.
👉Решение для микросервисов:
Горизонтальное масштабирование независимого сервиса геолокации - выделение мощностей для развертывания только его параллельно работающих копий.
MSA не так часто выбирают на старте ИТ-проектов. Она позволяет горизонтально масштабировать систему без перерасхода серверных ресурсов, делает удобной релизы. Но ее реализация и сопровождение стоят очень дорого 💰
Специалисты, кто имеет опыт работы c MSA, стоят на порядок дороже. Не каждый маленький проект или стартап могут себе это позволить.
Поэтому задачу переезда с монолита на микросервисы встречается чаще: проект уже успешен и провисает от нагрузок, приносит прибыль, а значит можно инвестировать в улучшение архитектуры 🙌
#АрхитектураGA #RideFlow
Микросервисная архитектура (MSA) - это подход к разработке, при котором система состоит из множества маленьких, независимо разрабатываемых и развертываемых сервисов, каждый из которых выполняет определенную бизнес-функцию.
Например, в системе заказа такси, вместо одного большого сервер-приложения, работающего как единый сервис, со всей логикой обработки данных внутри, можно выделить микросервисы:
🔸Управление пользователями - все, связанное с регистрацией пользователей и настройкой их аккаунтов.
🔸Авторизация - логика предоставления доступа к системе и управления сессиями пользователей.
🔸Уведомления - все, что связано с рассылкой уведомлений, интеграции с сервисами уведомлений.
🔸Геолокация - логика получения координат от каждого автомобиля такси и передача этих данных пользователям для отображения машин на карте.
И другие микросервисы.
Такое деление позволит оптимально применять принцип горизонтального масштабирования.
👉Ситуация:
Сервис геолокации использует большой объем ресурсов сервера и из-за него тормозит всё приложение.
👉Решение для монолита:
Вертикальное масштабирование, пока это возможно, или горизонтальное - выделение мощностей для параллельно работающей копии монолита, хотя причиной проблем является только одна его часть.
👉Решение для микросервисов:
Горизонтальное масштабирование независимого сервиса геолокации - выделение мощностей для развертывания только его параллельно работающих копий.
MSA не так часто выбирают на старте ИТ-проектов. Она позволяет горизонтально масштабировать систему без перерасхода серверных ресурсов, делает удобной релизы. Но ее реализация и сопровождение стоят очень дорого 💰
Специалисты, кто имеет опыт работы c MSA, стоят на порядок дороже. Не каждый маленький проект или стартап могут себе это позволить.
Поэтому задачу переезда с монолита на микросервисы встречается чаще: проект уже успешен и провисает от нагрузок, приносит прибыль, а значит можно инвестировать в улучшение архитектуры 🙌
#АрхитектураGA #RideFlow
👍19❤5🔥3
⚡️ Принципы выделения микросервисов ⚡️
Первое, что нужно понять при разработке системы в MSA - как выделять микросервисы? 🧐
Есть шаблоны проектирования микросервисов и методологии разработки, которые могут в этом помочь. Но прежде чем изучать их, хочу познакомить вас с основами.
Базовые принципы выделения микросервисов:
1. Бизнес-функциональность:
Подход заключается в разделении системы на микросервисы по бизнес-функциям.
Примеры: управление пользователями, управление заказами, калькулятор стоимости поездки, геолокация, уведомления, интеграции с внешними системами бухгалтерии.
2. Выделение по техническим аспектам:
2.1. Масштабируемость: выделяются микросервисы для тех частей системы, которые требуют повышенной производительности и могут масштабироваться независимо.
Пример: Сервис расчета стоимости поездки может быть выделен в отдельный микросервис, так как он может требовать большого объема вычислений.
2.2. Независимость разработки и развертывания: микросервисы выделяются так, чтобы разные команды могли разрабатывать и деплоить (выпускать обновления) сервисы независимо.
Пример: Сервис управления пользователями и сервис оплаты могут разрабатываться разными командами. Если будут выпускать обновления для сервиса пользователей и он будет на время обновления временно недоступен, то сервис оплат продолжит работать без остановки
2.3. Реплицируемость данных: если определенные данные должны быть реплицированы или доступны в различных географических зонах, то соответствующие микросервисы могут быть выделены для управления этими данными.
3. Разделение по данным:
Каждый микросервис должен владеть своими данными об отдельных объектах.
Примеры: заказ (все о заказах), платеж (все о транзакциях), пользователи (всё о пользователях).
Результаты такого деления похожи на деление по бизнес-функциональности, но ориентированы больше на принцип управления данными об одном конкретном объекте.
Знание этих базовых принципов поможет сделать первые шаги по выделению микросервисов в вашем проекте ✅
#АрхитектураGA #RideFlow
Первое, что нужно понять при разработке системы в MSA - как выделять микросервисы? 🧐
Есть шаблоны проектирования микросервисов и методологии разработки, которые могут в этом помочь. Но прежде чем изучать их, хочу познакомить вас с основами.
Базовые принципы выделения микросервисов:
1. Бизнес-функциональность:
Подход заключается в разделении системы на микросервисы по бизнес-функциям.
Примеры: управление пользователями, управление заказами, калькулятор стоимости поездки, геолокация, уведомления, интеграции с внешними системами бухгалтерии.
2. Выделение по техническим аспектам:
2.1. Масштабируемость: выделяются микросервисы для тех частей системы, которые требуют повышенной производительности и могут масштабироваться независимо.
Пример: Сервис расчета стоимости поездки может быть выделен в отдельный микросервис, так как он может требовать большого объема вычислений.
2.2. Независимость разработки и развертывания: микросервисы выделяются так, чтобы разные команды могли разрабатывать и деплоить (выпускать обновления) сервисы независимо.
Пример: Сервис управления пользователями и сервис оплаты могут разрабатываться разными командами. Если будут выпускать обновления для сервиса пользователей и он будет на время обновления временно недоступен, то сервис оплат продолжит работать без остановки
2.3. Реплицируемость данных: если определенные данные должны быть реплицированы или доступны в различных географических зонах, то соответствующие микросервисы могут быть выделены для управления этими данными.
3. Разделение по данным:
Каждый микросервис должен владеть своими данными об отдельных объектах.
Примеры: заказ (все о заказах), платеж (все о транзакциях), пользователи (всё о пользователях).
Результаты такого деления похожи на деление по бизнес-функциональности, но ориентированы больше на принцип управления данными об одном конкретном объекте.
Знание этих базовых принципов поможет сделать первые шаги по выделению микросервисов в вашем проекте ✅
#АрхитектураGA #RideFlow
👍16❤9🥰1
🦄 Вижу цель - иду к ней 🦄
Недавно общалась с одним из наших студентов, который находился в процессе смены работы. Нужно было посоветоваться по поводу выбора из нескольких офферов — не просто выбрать, где больше платят, а найти тот самый, который поможет дальше расти в карьере.
👉 Что меня больше всего удивило и порадовало — это подход к собеседованиям.
Не всегда до собеседования можно понять, что за проект тебе предлагают. Иногда в компании этих проектов несколько, и приходится выяснять, какой именно тебе достанется. HR не всегда может дать полную картину.
✅ Поэтому в самом начале интервью у него был обязательный вопрос о проекте, стеке технологий, архитектуре и зоне ответственности СА.
И вот теперь представьте себя на его месте:
Ты слышишь рассказ о проекте и понимаешь — не то. Твоя реакция? 😬
Тут нужно либо терпеть и собеседоваться до конца, либо... быть достаточно уверенным в себе, чтобы просто сказать: "Спасибо, но я пас". И двигаться дальше. Не тратить ни свое время, ни время работодателя.
Так, часть его технических интервью завершалась через 15-20 минут со словами:
И ведь дело не в том, что ему что-то не нравилось в людях, З/П или бонусах, как это бывает. Просто проект не соответствует ожиданиям. Нет микросервисов? Нет брокеров? Это стоп-сигнал.
Смена проекта на бОльшие деньги, но с тем же стеком тоже не нужна. Нужен новый опыт, в котором можно продолжать изучать новое и применять полученные знание. Иначе нет смысла.
Он четко понимает, куда хочет двигаться и что ему нужно от следующего места работы.
Разве это не круто, когда ты четко знаешь что хочешь и выбираешь проект?
Вижу цель - иду к ней. И получаю результат! Так это работает, у всех нас 🙌
Я горжусь им. Это не просто успех — это уверенность в себе и своих силах, осознанность и понимание целей.
Оффер уже выбран и принят. И я еще раз искренне поздравляю с крутыми изменениями 🎉
Желаю каждому из вас с такой же уверенностью и осознанностью делать новые шаги в карьере! Всё получится ❤️🔥
Недавно общалась с одним из наших студентов, который находился в процессе смены работы. Нужно было посоветоваться по поводу выбора из нескольких офферов — не просто выбрать, где больше платят, а найти тот самый, который поможет дальше расти в карьере.
👉 Что меня больше всего удивило и порадовало — это подход к собеседованиям.
Не всегда до собеседования можно понять, что за проект тебе предлагают. Иногда в компании этих проектов несколько, и приходится выяснять, какой именно тебе достанется. HR не всегда может дать полную картину.
И вот теперь представьте себя на его месте:
Ты слышишь рассказ о проекте и понимаешь — не то. Твоя реакция? 😬
Тут нужно либо терпеть и собеседоваться до конца, либо... быть достаточно уверенным в себе, чтобы просто сказать: "Спасибо, но я пас". И двигаться дальше. Не тратить ни свое время, ни время работодателя.
Так, часть его технических интервью завершалась через 15-20 минут со словами:
Знаете, это не мое. Спасибо, что нашли время.
И ведь дело не в том, что ему что-то не нравилось в людях, З/П или бонусах, как это бывает. Просто проект не соответствует ожиданиям. Нет микросервисов? Нет брокеров? Это стоп-сигнал.
Смена проекта на бОльшие деньги, но с тем же стеком тоже не нужна. Нужен новый опыт, в котором можно продолжать изучать новое и применять полученные знание. Иначе нет смысла.
Он четко понимает, куда хочет двигаться и что ему нужно от следующего места работы.
Разве это не круто, когда ты четко знаешь что хочешь и выбираешь проект?
Вижу цель - иду к ней. И получаю результат! Так это работает, у всех нас 🙌
Я горжусь им. Это не просто успех — это уверенность в себе и своих силах, осознанность и понимание целей.
Оффер уже выбран и принят. И я еще раз искренне поздравляю с крутыми изменениями 🎉
Желаю каждому из вас с такой же уверенностью и осознанностью делать новые шаги в карьере! Всё получится ❤️🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍17❤🔥6❤1
GetAnalyst_Архитектура_5_основных_сервисов_и_микросервисов.pdf
1.4 MB
🤩 5 сервисов и микросервисов, которые есть почти в каждом проекте 🤩
В большинстве проектов, которые используют подход сервисной и микросервисной архитектуры, можно встретить эти пять основных сервисов.
Если я работаю над проектом с нуля, то использую этот список как чек-лист “С чего начать". Поможет всем IT-специалистам в задачах, связанных с архитектурой.
✅ Аутентификация и авторизация
Управление процессами аутентификации пользователей и контроля доступа к ресурсам системы.
Пользователи отправляют свои учетные данные (логин и пароль) в микросервис аутентификации. Микросервис взаимодействует с БД пользователей для проверки учетных данных и, если необходимо, генерирует токены доступа (например, JWT). После успешной аутентификации микросервис возвращает токен для пользователя. Токен проверяется на каждом запросе к защищенным ресурсам.
✅ Управление пользователями
Обработка регистраций, управление профилями пользователей, хранение и обработка данных пользователей. Взаимодействует с сервисом аутентификации для создания учетных записей и управления ими.
✅ Уведомления и рассылки
Отправка уведомлений и сообщений пользователям через различные каналы (email, SMS, push-уведомления).
Получает запросы на отправку уведомлений от других сервисов. Обеспечивает интеграцию с внешними поставщиками услуг для отправки email, SMS и push-уведомлений, управляет очередями сообщений и шаблонами уведомлений.
✅ Управление контентом (блоги на сайтах, новости и подобное)
Управление статическим и динамическим контентом (тексты, изображения, видео), организация структуры и хранения контента. Взаимодействует с базами данных и файловыми хранилищами.
✅ Биллинг и платежи
Обработка и учет платежей, интеграция с платежными шлюзами, выставление счетов. Взаимодействует с внешними платежными шлюзами и банковскими системами.
Обоснование для выделения сервисов и их назначение более подробно описаны в прикрепленной к посту мини-книге.
#АрхитектураGA
В большинстве проектов, которые используют подход сервисной и микросервисной архитектуры, можно встретить эти пять основных сервисов.
Если я работаю над проектом с нуля, то использую этот список как чек-лист “С чего начать". Поможет всем IT-специалистам в задачах, связанных с архитектурой.
✅ Аутентификация и авторизация
Управление процессами аутентификации пользователей и контроля доступа к ресурсам системы.
Пользователи отправляют свои учетные данные (логин и пароль) в микросервис аутентификации. Микросервис взаимодействует с БД пользователей для проверки учетных данных и, если необходимо, генерирует токены доступа (например, JWT). После успешной аутентификации микросервис возвращает токен для пользователя. Токен проверяется на каждом запросе к защищенным ресурсам.
✅ Управление пользователями
Обработка регистраций, управление профилями пользователей, хранение и обработка данных пользователей. Взаимодействует с сервисом аутентификации для создания учетных записей и управления ими.
✅ Уведомления и рассылки
Отправка уведомлений и сообщений пользователям через различные каналы (email, SMS, push-уведомления).
Получает запросы на отправку уведомлений от других сервисов. Обеспечивает интеграцию с внешними поставщиками услуг для отправки email, SMS и push-уведомлений, управляет очередями сообщений и шаблонами уведомлений.
✅ Управление контентом (блоги на сайтах, новости и подобное)
Управление статическим и динамическим контентом (тексты, изображения, видео), организация структуры и хранения контента. Взаимодействует с базами данных и файловыми хранилищами.
✅ Биллинг и платежи
Обработка и учет платежей, интеграция с платежными шлюзами, выставление счетов. Взаимодействует с внешними платежными шлюзами и банковскими системами.
Обоснование для выделения сервисов и их назначение более подробно описаны в прикрепленной к посту мини-книге.
#АрхитектураGA
👍22🔥9❤7
Одна из ступеней профессионального роста для системного аналитика - работа в тесном сотрудничестве с архитекторами на проектах с сервисной или микросервисной архитектурой.
Мы в GetAnalyst создали программу для опытных специалистов, которая помогает на практике получить все нужные знания по архитектуре, чтобы продолжать расти в карьере и соответствовать актуальным требованиям компаний.
💥 Проектирование Архитектуры
🗓 Старт предобучения 29 августа 2024
🔗 Подробности о программе и запись
🎁 До завтра, 22 августа, открыта предзапись на самых выгодных условиях + дополнительное обучение по REST API в подарок.
По всем вопросам пишите @getanalyst или заполняйте анкету предзаписи на сайте. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на ваши вопросы :)
Мы в GetAnalyst создали программу для опытных специалистов, которая помогает на практике получить все нужные знания по архитектуре, чтобы продолжать расти в карьере и соответствовать актуальным требованиям компаний.
💥 Проектирование Архитектуры
🗓 Старт предобучения 29 августа 2024
🎁 До завтра, 22 августа, открыта предзапись на самых выгодных условиях + дополнительное обучение по REST API в подарок.
По всем вопросам пишите @getanalyst или заполняйте анкету предзаписи на сайте. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на ваши вопросы :)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
😎 OpenShift, Kubernetes: знакомые слова, но что это и зачем? 😎
Архитектура тесно связана с инфраструктурой. Поэтому при работе с ней я уделяю много внимания нефункциональным требованиям, таким как масштабируемость и производительность.
Чтобы их обеспечивать, на помощь приходят инфраструктурные решения OpenShift и Kubernetes.
🔵 Kubernetes — это система, которая управляет контейнерами, в которых работают приложения.
Она позволяет запускать и обновлять их, чтобы они работали стабильно и без сбоев.
Контейнеры - это как коробки, которые содержат всё необходимое для работы приложения: код, библиотеки, зависимости, настройки и другие ресурсы.
Ключевые функции:
1. Запуск и мониторинг контейнеров - обеспечение работы параллельно запущенных копий приложения.
2. Балансировка нагрузки - распределение запросов между запущенными копиями приложения
3. Автомасштабирование - увеличение или уменьшение запущенных копий приложения
4. Обновления без простоя - можно делать постепенный переход на новую версию, заменяя старые контейнеры новыми
5. Автовосстановление в случае сбоев
🔴 OpenShift — это улучшенная версия Kubernetes. Это платформа контейнеризации, построенная на основе Kubernetes.
OpenShift создали, чтобы сделать Kubernetes более удобным за счет предоставления графического интерфейса и интеграции с другими сервисами.
OpenShift также добавляет дополнительные функции для обеспечения безопасности.
Kubernetes и OpenShift могут использовать как вместе, так и раздельно.
Применяются не только для систем с микросерверной архитектурой, но и для монолитов.
➡️ При работе на проектах, где используются Kubernetes и OpenShift, системный аналитик может встретиться с ситуацией, когда нужно описать поведение системы при недоступности одного из контейнеров.
В этом случае ему могут дать доступ в консоль OpenShift, чтобы он мог добавлять и уменьшать запущенные копии приложения на тестовом окружении и смотреть, как в этом случае будет вести себя система и продумывать возможные реакции на ошибки.
#АрхитектураGA
Архитектура тесно связана с инфраструктурой. Поэтому при работе с ней я уделяю много внимания нефункциональным требованиям, таким как масштабируемость и производительность.
Чтобы их обеспечивать, на помощь приходят инфраструктурные решения OpenShift и Kubernetes.
🔵 Kubernetes — это система, которая управляет контейнерами, в которых работают приложения.
Она позволяет запускать и обновлять их, чтобы они работали стабильно и без сбоев.
Контейнеры - это как коробки, которые содержат всё необходимое для работы приложения: код, библиотеки, зависимости, настройки и другие ресурсы.
Ключевые функции:
1. Запуск и мониторинг контейнеров - обеспечение работы параллельно запущенных копий приложения.
2. Балансировка нагрузки - распределение запросов между запущенными копиями приложения
3. Автомасштабирование - увеличение или уменьшение запущенных копий приложения
4. Обновления без простоя - можно делать постепенный переход на новую версию, заменяя старые контейнеры новыми
5. Автовосстановление в случае сбоев
🔴 OpenShift — это улучшенная версия Kubernetes. Это платформа контейнеризации, построенная на основе Kubernetes.
OpenShift создали, чтобы сделать Kubernetes более удобным за счет предоставления графического интерфейса и интеграции с другими сервисами.
OpenShift также добавляет дополнительные функции для обеспечения безопасности.
Kubernetes и OpenShift могут использовать как вместе, так и раздельно.
Применяются не только для систем с микросерверной архитектурой, но и для монолитов.
➡️ При работе на проектах, где используются Kubernetes и OpenShift, системный аналитик может встретиться с ситуацией, когда нужно описать поведение системы при недоступности одного из контейнеров.
В этом случае ему могут дать доступ в консоль OpenShift, чтобы он мог добавлять и уменьшать запущенные копии приложения на тестовом окружении и смотреть, как в этом случае будет вести себя система и продумывать возможные реакции на ошибки.
#АрхитектураGA
🔥29👍14❤7😁1
🚀 Деление монолита на микросервисы: пошаговый план с примером
🗓 29.08.2024 в 19:00 Мск (ЧТ)
🔗 Узнать подробности и зарегистрироваться
«С какими проблемами сталкиваются при переходе от монолита к микросервисам?» — знание ответа на этот вопрос имеет весомое значение, если в вашем проекте предстоит переезд на микросервисную архитектуру. Или в ближайшее время вы планируете начать работать в компании, где этот переезд идёт в самом разгаре 🔥
Желательно понимать, с какими болями придется столкнуться, на какие детали при проектировании новой логики и при переносе старой обращать внимание. Как вообще эти микросервисы выделяют и почему тоже хотелось бы знать.
Поэтому готовим для вас новый практический вебинар, на котором разберем всё на примере и ответим на ваши вопросы!
👉 План 👇
1. Роль системного аналитика в проектировании архитектуры
2. Обзор проекта с монолитной архитектурой
3. Способы деления монолита на микросервисы
4. Разбор задачи
5. Проблемы выделения сервисов из монолита
6. Что важно знать системному аналитику про архитектуру
🔗 Зарегистрироваться
Этот вебинар даст вам реальные инструменты и знания, которые могут пригодиться в работе уже сейчас.
Не пропускайте — регистрируйтесь и присоединяйтесь к нам в прямом эфире в следующий четверг! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤8👍3😁1
🌱 Еще не микросервисы, но сильно улучшенный монолит 🌱
Или о том, как я больше года думала, что мы разрабатываем микросервисы, а потом узнала, что это модульный монолит, который легко поделится на микросервисы, и “ЯЖГОВОРИЛ” 🤣
Мы уже знаем как выглядит проект системы заказа такси #RideFlow в монолитной архитектуре. Главное, что мы из этого должны были усвоить:
➕ Единое сервер-приложение:
Все запросы и ответы от веб- и мобильных приложений направляются в одно место.
➕ Единая БД:
Все данные в одной схеме, то есть одна ER-диаграмма которую нужно знать, возможно с 100+ таблицами 🙂 Но исключения есть, бывает несколько БД.
➕ Может быть несколько API-интерфейсов:
В одном проекте может быть деление того же REST API на две и более части - public и admin, как минимум. Также нормальной практикой считается, когда у монолита поддержаны сразу несколько видов API: SOAP, REST, GraphQL и WebSocket, например.
😞 Проблема, которая есть у монолита - вся нагрузка в одно место. Лёг монолит - легло всё. И если код никак не разделен на независимые модули, то это печально.
В прошлом посте мы узнали про контейнеризацию приложений, OpenShift и Kubernetes. Так вот… Есть одна хитрость, которой пользуются стартаперы и молодые проекты - модульный монолит и контейнеризация модулей 🤩
👉 Модульный монолит создается по следующим правилам:
1. Монолит делят на независимые модули
2. Код поделен на части, но всё еще в одном месте - в одном репозитории
3. Зависимости между модулями остаются
4. Коммуникация между модулями по внутренним вызовам функций и методов классов
5. Общие ресурсы - БД, конфиги, библиотеки
6. Развертывание модулей может быть сделано независимо, каждый модуль можно масштабировать отдельно благодаря OpenShift и Kubernetes
7. У монолита есть счастливое микросервисное будущее 🌱
Картинку сделала чтобы максимизировать отличия и ваше понимание))
А подробнее про каждый из пунктов про модульный монолит, и особенно про 6, расскажу дальше 😉
#АрхитектураGA
Мы уже знаем как выглядит проект системы заказа такси #RideFlow в монолитной архитектуре. Главное, что мы из этого должны были усвоить:
➕ Единое сервер-приложение:
Все запросы и ответы от веб- и мобильных приложений направляются в одно место.
➕ Единая БД:
Все данные в одной схеме, то есть одна ER-диаграмма которую нужно знать, возможно с 100+ таблицами 🙂 Но исключения есть, бывает несколько БД.
➕ Может быть несколько API-интерфейсов:
В одном проекте может быть деление того же REST API на две и более части - public и admin, как минимум. Также нормальной практикой считается, когда у монолита поддержаны сразу несколько видов API: SOAP, REST, GraphQL и WebSocket, например.
😞 Проблема, которая есть у монолита - вся нагрузка в одно место. Лёг монолит - легло всё. И если код никак не разделен на независимые модули, то это печально.
В прошлом посте мы узнали про контейнеризацию приложений, OpenShift и Kubernetes. Так вот… Есть одна хитрость, которой пользуются стартаперы и молодые проекты - модульный монолит и контейнеризация модулей 🤩
👉 Модульный монолит создается по следующим правилам:
1. Монолит делят на независимые модули
2. Код поделен на части, но всё еще в одном месте - в одном репозитории
3. Зависимости между модулями остаются
4. Коммуникация между модулями по внутренним вызовам функций и методов классов
5. Общие ресурсы - БД, конфиги, библиотеки
6. Развертывание модулей может быть сделано независимо, каждый модуль можно масштабировать отдельно благодаря OpenShift и Kubernetes
7. У монолита есть счастливое микросервисное будущее 🌱
Картинку сделала чтобы максимизировать отличия и ваше понимание))
А подробнее про каждый из пунктов про модульный монолит, и особенно про 6, расскажу дальше 😉
#АрхитектураGA
👍19❤2
👉Модульный монолит создается по следующим правилам👇
1. Монолит делят на независимые модули
Получаются логически независимые компоненты, каждый из которых отвечает за свою часть функциональности.
В приложении такси #RideFlow это управление пользователями, управление заказами, калькулятор стоимости поездки, геолокация. По сути то же, что мы прикидывали для микросервисов.
2. Код поделен на части, но все еще в одном месте
Вся кодовая база хранится всё ещё хранится в одном репозитории. Несмотря на разделение на модули, все они компилируются и деплоятся вместе как одно целое приложение.
Это отличие от микросервисной архитектуры, где каждый микросервис - независимое приложение со своим собственным репозиторием и циклом развертывания
3. В монолитной архитектуре модули могут зависеть друг от друга
За этим важно следить, чтобы не усложнять поддержку и развитие кода.
Например, модуль "Заказы" может использовать функции модуля "Пользователи" для получения информации о нем
4. Коммуникация между модулями
В монолите модули взаимодействуют друг с другом по внутренним вызовам функций и методов классов кода.
А микросервисы общаются между собой только по сети (например, по HTTP), то есть через API.
5. Общие ресурсы
Модули разные, а вот база данных, конфигурационные файлы и библиотеки у них могут быть общие, в то время как у каждого микросервиса всё своё
6. Развертывание (релиз приложения сервера)
Та-дам 🎉 Вот тут то и ключевое преимущество!
❗️Каждый модуль монолита может быть упакован в отдельный контейнер
Это позволяет частично изолировать модули монолита, развертывать и обновлять их независимо, благодаря OpenShift и Kubernets.
Так, отдельный модуль можно будет запустить в 10 экземплярах, работающих параллельно, а другой всего лишь в 1-м
7. Счастливое микросервисное будущее🙌
Модули в будущем могут быть значительно легче вынесены из монолита и превращены в микросервисы. Но из-за общей БД, конфигураций и других ресурсов могут быть сложности...
#АрхитектураGA
1. Монолит делят на независимые модули
Получаются логически независимые компоненты, каждый из которых отвечает за свою часть функциональности.
В приложении такси #RideFlow это управление пользователями, управление заказами, калькулятор стоимости поездки, геолокация. По сути то же, что мы прикидывали для микросервисов.
2. Код поделен на части, но все еще в одном месте
Вся кодовая база хранится всё ещё хранится в одном репозитории. Несмотря на разделение на модули, все они компилируются и деплоятся вместе как одно целое приложение.
Это отличие от микросервисной архитектуры, где каждый микросервис - независимое приложение со своим собственным репозиторием и циклом развертывания
3. В монолитной архитектуре модули могут зависеть друг от друга
За этим важно следить, чтобы не усложнять поддержку и развитие кода.
Например, модуль "Заказы" может использовать функции модуля "Пользователи" для получения информации о нем
4. Коммуникация между модулями
В монолите модули взаимодействуют друг с другом по внутренним вызовам функций и методов классов кода.
А микросервисы общаются между собой только по сети (например, по HTTP), то есть через API.
5. Общие ресурсы
Модули разные, а вот база данных, конфигурационные файлы и библиотеки у них могут быть общие, в то время как у каждого микросервиса всё своё
6. Развертывание (релиз приложения сервера)
Та-дам 🎉 Вот тут то и ключевое преимущество!
❗️Каждый модуль монолита может быть упакован в отдельный контейнер
Это позволяет частично изолировать модули монолита, развертывать и обновлять их независимо, благодаря OpenShift и Kubernets.
Так, отдельный модуль можно будет запустить в 10 экземплярах, работающих параллельно, а другой всего лишь в 1-м
7. Счастливое микросервисное будущее🙌
Модули в будущем могут быть значительно легче вынесены из монолита и превращены в микросервисы. Но из-за общей БД, конфигураций и других ресурсов могут быть сложности...
#АрхитектураGA
👍17❤6🔥4