GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
19.6K subscribers
2.09K photos
75 videos
207 files
1.19K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart

РКН №5013005196
Download Telegram
GetAnayst_Архитектура_5_основных_сервисов_и_микросервисов.pdf
1.4 MB
💚💜 5 стандартных сервисов и микросервисов 💜💚

В большинстве проектов, которые используют подход сервисной или микросервисной архитектуры, можно встретить эти пять основных сервисов:

Аутентификация и авторизация
Управление процессами аутентификации пользователей и контроля доступа к ресурсам системы.

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

Уведомления и рассылки
Отправка уведомлений и сообщений пользователям через различные каналы (email, SMS, push-уведомления).

Управление контентом (блоги на сайтах, новости и подобное)
Управление статическим и динамическим контентом (тексты, изображения, видео), организация его структуры и хранения.

Биллинг и платежи
Обработка и учет платежей, интеграция с платежными шлюзами, выставление счетов. Взаимодействует с внешними платежными шлюзами и банковскими системами.


Если я работаю над проектом с нуля, то использую этот список как чек-лист “С чего начать". Поможет всем IT-специалистам в задачах, связанных с проектированием архитектуры.


В мини-книге прикрепленной к посту рассказала подробнее про каждый сервис, и почему их выделяют как независимые части систем 🙌

#АрхитектураGA
👍227🔥7👌5
🧑‍🌾 Пример: сервисы и микросервисы для проекта #FarmFreshGA 🧑‍🌾

Вчера и сегодня я рассказывала про подходы к выделению сервисов и микросервисов. Пришло время применить их на практике!

Разделим на части Backend платформы FarmFresh, которая занимается заказом фермерских продуктов и оформлением подписки на них.

🔗 О проекте

💚 Сервис аутентификации и авторизации
Отвечает за регистрацию и авторизацию пользователей, управление ролями и правами доступа. Ожидается высокая нагрузка.

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

💚 Сервис каталога товаров
Добавление, изменение и удаление товаров фермерами, распределение их по категориям. Поиск товаров для покупателей. Высокая нагрузка - основная функциональность системы.

💚 Сервис заказов
Обработка заказов покупателей, включая добавление в корзину и контроль статусов.

💚 Сервис подписок Создание, обновление и отмена подписок на продукты.

💚 Сервис платежей
Интеграции с внешними платежными системами для обработки платежей, работа с возвратами и отменой покупок. Основная и критическая функциональность.

💚 Сервис доставки Управление зонами доставки, расписанием и доступностью курьеров. Отслеживание статусов доставки и обновление их в сервисе заказов. Интегрируется с внешними API курьерских служб.

💚 Сервис склада
Контроль запасов продуктов от каждого фермера и учет данных при оформлении заказов пользователями. Высокая нагрузка.

💚 Сервис уведомлений
Отправка уведомлений (push-, SMS, email) пользователям. Интеграция с соответствующими сервисами рассылок.

💚 Сервис маркетинга и акций
Управление скидками, акциями и специальными предложениями для покупателей.

💚 Сервис отзывов и рейтингов

💚 Cервис чата и поддержки


💚 Сервис API Gateway
Маршрутизация запросов к сервисам, а также для контроля безопасности и авторизации.

Есть еще идеи по дополнительным сервисам?
Пишите идеи в комментарии! Добавим 😎

#АрхитектураGA
👍104🔥2
👍 Версионирование API. Обратная совместимость в API 👍

Работаете с задачами на Backend, проектируете методы REST API или описываете интеграции? Этот эпизод актуален для вас.

В нём мы разберём, что такое версионирование API, когда и почему нужно вводить новые версии, какие подходы к версионированию лучше использовать и как это влияет на его пользователей.

Эпизод будет полезен системным аналитикам, которые работают с интеграциями, разрабатывают контракты методов API и сталкиваются с задачами изменения существующих API. Особенно это актуально в задачах на проектирование REST API методов.

🔗 Сайт эпизода

Эпизод доступен в:
Apple Podcast
Яндекс.Музыка
YouTube
Telegram
Castbox
Spotify

Делитесь с коллегами, подписывайтесь на канал и следите за новыми эпизодами, чтобы не пропускать важные темы для системных аналитиков 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥74
💛 Спасибо 💛

Иногда сообщения, которые мы получаем, трогают до глубины души.

Они напоминают мне о том, что GetAnalyst существует не зря.

В мае я пытался сменить место работы, но мне не удавалось пройти собеседования на те места, которые мне были интересны. На тот момент я уже учился в другом месте на курсе системного аналитика, но чувствовал, что мне не хватает знаний и практики. К счастью, я встретил сайт GetAnalyst! Несмотря на то, что нужные модули мне ещё предстояли в большом курсе, я решил параллельно пойти ещё и в GA по интеграциям и архитектуре. 

В сентябре я вновь начал поиски работы и уже примерно через неделю получил два интересных оффера! Я бы точно не справился без GetAnalyst и не чувствовал бы себя так уверенно на технических интервью. Вчера был мой первый день в Сбере, и я очень счастлив, что 5 месяцев назад увидел в интернете одну из ваших статей 😄.


Спасибо, что делитесь своими историями!
Спасибо, что вы с нами!
Спасибо, что ставите ❤️👍🔥🦄 под посты!

Это мое вдохновение и поддержка всей команды!

Каждый подобный отзыв — напоминание, что знания и опыт, которыми мы делимся, помогают вам стать лучшей версией себя 🚀

Вы делаете успехи в карьере, преодолеваете "синдром самозванца" и с уверенностью осуществляете поставленные цели.

Гордимся каждым из вас! 💜
❤‍🔥34👍141
Одна из ступеней профессионального роста системного аналитика - работа в тесном сотрудничестве с архитекторами на проектах с сервисной или микросервисной архитектурой.

Мы в GetAnalyst создали программу для опытных специалистов, которая помогает на практике получить все нужные знания по архитектуре, чтобы продолжать расти в карьере и соответствовать актуальным требованиям компаний.


💥 Проектирование Архитектуры
🗓 Старт предобучения 3 декабря 2024

🔗 Подробности о программе и запись

🎁 Сегодня последний день, когда открыта запись на самых выгодных условиях с дополнительным обучением по REST API в подарок.


По всем вопросам пишите @getanalyst, info@getanalyst.ru или оставляйте заявку через сайт. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на ваши вопросы 🙌
👍73
☀️ Способы взаимодействия микросервисов ☀️

1) Синхронное
2) Асинхронное
3) Событийно-ориентированная архитектура (EDA)
4) Непрерывное соединение в режиме реального времени (Streaming)

Это прямые способы взаимодействия, которые могут использоваться в сочетании с различными архитектурными подходами: API Gateway, хореография, оркестрация и другими.

То, как будет организовано взаимодействие между микросервисами, будет влиять на:
+ скорость работы системы,
+ возможность масштабирования,
+ надежность работы - гарантия доставки и обработки запросов между микросервисами.

Выбор способа взаимодействия должен быть осознанным, с пониманием, почему мы выбираем именно это решение.

Также при проектировании архитектуры рекомендуется помнить о единообразии и о соблюдении общих архитектурных шаблонов выбранных для проекта.
То есть не стоит пытаться использовать всё и сразу, чтобы быть лучше. Наоборот, лучше придерживаться минимализма и чётко определенных правил по выбору решений.

#АрхитектураGA
27👍8
🗓 Приглашаем на открытый урок по Архитектуре 30.11 - 02.12 🗓

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

Поэтому приглашаем вас на открытый урок!

💎 Проектирование архитектуры: от монолита к микросервисам
🗓 Доступ с 30 ноября до 2 декабря (СБ-ПН)

🔗 ЗАРЕГИСТРИРОВАТЬСЯ

План
1. Роль системного аналитика в проектировании архитектуры
2. Знакомство с проектом
3. Проектирование монолита
4. Переход к сервисам (SOA) и микросервисам (MSA)
5. Проблемы деления монолита на микросервисы
6. Что нужно знать системному аналитику про работу с архитектурой

Уже после этого занятия вы сможете получить знания и навыки, которые усилят вас как специалиста.

Регистрируйтесь, чтобы получить доступ к уроку, и планируйте время на обучение в ближайшие выходные! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍62👎1
🌪 Способы обмена данными между приложениями и системами 🌪

В этом посте собрана подборка материалов по разным способам взаимодействия систем.


REST
🔗 Официальная документация
📚 Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)
📚 Postman: навык тестирования REST API за вечер
📚 Вопросы и ответы по REST API: собеседование на системного аналитика (подкаст)
Пример API-документации:
Wildberries


SOAP
🔗 Официальная документация
Пример API-документации:
PayPal (обратите внимание, что устаревший)


WebSocket
🔗 Официальная документация
Пример API-документации:
Binance Биржа


GraphQL
🔗 Официальная документация
📚 GraphQL — знакомство на практике через Postman [пошаговая инструкция]
Пример API-документации:
Contentful


gRPC
🔗 Официальная документация
📚 gRCP vs REST - что выбрать для проекта (подкаст + материалы)
Пример API-документации:
Dropbox от Google


SSE
🔗 Официальная документация


+ есть Socket.IO

Знание всех подходов к взаимодействию между системами помогает в работе с проектированием архитектуры.

#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍1310👏3
GetAnalyst FarmFresh - Архитектура - этап 1.png
307.1 KB
💎 Пример схемы архитектуры проекта #FarmFreshGA 💎

Самое простое в проектировании архитектуры микросервисов — создать схему, в которой есть только синхронные взаимодействия и один вид API, например, REST API. Однако в реальных системах редко встречаются решения, где используется только синхронный обмен данными.

Рассказываю, что к чему при проектировании архитектуры на примере схемы, прикреплённой к посту, где пока отсутствуют асинхронные взаимодействия.


1. Для проектирования архитектуры FarmFresh выбран шаблон API Gateway
Все запросы от клиентских приложений (Frontend) направляются в единый централизованный шлюз и далее проксируются (перенаправляются) на отдельные микросервисы, в зависимости от запроса.


2. Согласно предложенной схеме, внутреннее взаимодействие микросервисов организовано также через API Gateway
Надо понимать, что такое решение не всегда удачно.
Пример: Если сервису заказов нужно вернуть полную информацию о нём на Frontend, включая данные о товарах, то вместо прямого запроса в микросервис "Каталог товаров" придётся прогонять запрос через лишний слой API Gateway. Это может создавать ненужную задержку.


3. Снаружи для клиентов может быть только REST API, а “под капотом” всё что угодно
На предложенной схеме видим, что часть микросервисов предлагает взаимодействие через gRPC для ускорения обмена данными, а часть — через REST API. Однако слишком много разных видов API может усложнить разработку и сопровождение.
Простота и единообразие — залог успешной архитектуры.
Но зависит от проекта))) Где-то это просто нужно и точка.


#АрхитектураGA


Продолжение 👇
👍20🔥53💯1
💎 Пример схемы архитектуры проекта #FarmFreshGA (продолжение 👇) 💎


4. Отправка уведомлений пользователям — задача важная, но она не должна тормозить работу системы

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

Итог: 5 сервисов обращаются к одному, что может привести к задержкам при синхронном взаимодействии из-за загрузки

Решение:
для уменьшения нагрузки использовать асинхронное взаимодействие через брокеры сообщений (например, RabbitMQ или Kafka), чтобы уведомления отправлялись без ожидания ответа.



5. У каждого микросервиса своя БД

Это строго соответствует принципам микросервисной архитектуры.

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


6. Взаимодействие с сервисом чата организовано через WebSocket

Сервис чата работает в режиме реального времени. Чтобы не нагружать API Gateway постоянными открытыми соединениями, WebSocket вынесен на отдельный слой. Это решение выбрано для повышения производительности и отказоустойчивости.
Это одно из возможных решений.

--------------

Заключение:

Предложенная схема архитектуры FarmFresh демонстрирует базовую реализацию микросервисного взаимодействия с шаблоном API Gateway.

Для повышения производительности и надёжности системы стоит рассмотреть:
👉 Внедрение асинхронного взаимодействия через брокеры сообщений.
👉 Прямые вызовы между микросервисами там, где это оправдано.
👉 Минимизацию разнообразия API-протоколов для упрощения разработки и поддержки.


#АрхитектураGA
🔥12❤‍🔥8👍62
🚀 Асинхронное взаимодействие в архитектуре систем 🚀

Часто при разработке архитектуры начинают с простого: сервисы напрямую общаются друг с другом в реальном времени, используя синхронные вызовы, например через REST API, SOAP или gRPC.

Синхронное взаимодействие предполагает, что один сервис отправляет запрос другому и ждёт ответа.


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

С этими проблемами помогает справиться асинхронное взаимодействие, которое позволяет сервисам обмениваться сообщениями без ожидания ответа.

Асинхронное взаимодействие достигается за счёт использования очередей сообщений или публикации событий.


Ключевые преимущества такого решения:

👍 Развязка сервисов
Сервисы не зависят от доступности друг друга. Если один сервис временно недоступен, сообщения сохраняются в очереди и будут обработаны позже.

👍 Масштабируемость
Асинхронные системы легче масштабировать, так как взаимодействие сервисов не требует немедленного ответа.

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



Технологии, помогающие реализовать асинхронное взаимодействие:
1. Apache Kafka
2. RabbitMQ
3. ActiveMQ
4. Amazon MQ, Amazon SQS
5. Яндекс Message Queue (YMQ) - аналог Amazon
и другие.


Также для любого асинхронного взаимодействия можно добиться при помощи синхронных API с использованием механизмов:
1. WebHook
2. Polling
3. LongPolling
в сочетании с кронами, таймерами и воркерами.


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

#АрхитектураGA
👌17👍127🔥5❤‍🔥3
🚀 Завершается запись на открытый урок по Архитектуре 🚀

Коллеги, кому актуально освоение навыков для middle+ и senior аналитиков - вам сюда!



Простыми словами, решая реальную задачу, разбираю тему:

💎 Проектирование архитектуры: от монолита к микросервисам
🗓 Доступ с 30 ноября до 2 декабря (СБ-ПН)
👉 Подробности и регистрация



В результате этого обучения:

🌟 Поймете основы проектирования архитектуры.
🌟 Разберетесь в отличиях монолита, сервисов и микросервисов.
🌟 Научитесь проектировать архитектуру с нуля.
🌟 Узнаете, как происходит переезд с монолита на микросервисы.
🌟 Получите готовые схемы и подходы по проектированию.

Смотрите, перенимайте опыт, и применяйте в своей работе! ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
8😢2❤‍🔥1