Ответы пользователя по тегу Проектирование программного обеспечения
  • Как связать админку на Angular с множеством сторонних сервисов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Лучше всегда иметь gateway хотябы для безопасности и управления доступами. А при необходимости для асинхронных или параллельных операций и много чего ещё
    Ответ написан
  • Такая архитектура это нормально?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Разве не логичнее сразу, из первого приложения добавлять сообщение в rabbitmq


    Да, это логично. Но сохранение в БД я бы также оставил по простой причине - консистентность. А то на больших объемах кролик может терять данные + иногда есть необходимость повторной обработки (CQRS/Event Sourcing)
    Ответ написан
    4 комментария
  • Когда лучше применять DDD а когда EDD? А когда лучше совмещать?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Все что указано можно совмещать, в разных пропорциях. Когда как - зависит исключительно от того соответствует подход задаче или нет
    Ответ написан
    Комментировать
  • Какое архитектурное решение выбрать для ролей пользователей?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Да какая разница как называются роли. Стоит прочитать про RBAC или ACL. Я не знаю что из них принято использовать в laravel. Я за первое
    Ответ написан
  • Как правильно спроектировать приложение?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Делать обратное разумному это надо быть или смелым глупцом или безумным гением. И гениальностью тут не пахнет
    Ответ написан
    Комментировать
  • Стек технологий при переделке монолита на микросервисы?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    А не будет соображений. История сферическая в вакууме и сами «микросервисы» вообще самая простая часть. А вот с процессом миграции и ее детальным планированием можно мучаться. В принципе, можно сразу сказать что системы существующие как монолит больше 5 лет редко занимают меньший срок для изменения архитектуры
    Ответ написан
    Комментировать
  • Как организовать хранение данных о пользователе в микросервисной архитектуре с OAuth & JWT?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Заводить отдельный микросервис где хранить шары. Пользователь обращается за своими шарами в это сервис. Все, магия закончилась
    Ответ написан
    Комментировать
  • Архитектура/стек для telegram - бота, где не прав? Aws. +Метрики. Логи?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Как я вижу архитектуру :
    1) Amazon api gateway получает запрос с вебхука телеги.
    2) Перекидывает его в amazon Lambda
    3) Та делает минимальное логирование/метрики и прокидывает дальше в очередь Amazon SQS
    4) Дальше очередь разбирается n бекендами (для начала той же Lambda), если это "быстрый" овтет - отвечает юзеру в телегу, если "сложный" - кладёт в SQS и уже это сообщение подбирается другим специальным отдельным EC2 инстансом.
    бд : Amazon DynamoDB для удешевления и скорости.


    Да, абсолютно нормальней подход

    В случае перерасхода средств пути для удешевления :
    Пункты 1 и 2 перекидываются на EC2 или инстанс digital ocean'а,


    Или AWS ECS + Fargate с scale to 0. В нагрузку получим бонусом работу с контейнерами. И еще придется же все-равно делать троттлинг по скорости отправки. Сколько там сегодня - все те же 30 сообщений в секунду?

    1) Имею небольшой опыт работы с prometheus и grafana, хотелось бы и тут их использовать. Подскажите как нынче проще всего интегрировать их? Им нужна своя бд? Проще ли и дешевле ли будет это всё хостить на DO или же сносно будет и на AWS?


    дорого, долго настраивать и почти бесполезно в AWS

    Что можно использовать для сбора логов сегодня из разряда дёшево и сердито?


    В идеологии AWS - ничего кроме CloudWatch. Вне AWS используйте что знаете - все-равно самостоятельно разворачивать.
    Ответ написан
    3 комментария
  • Есть ли похожий сервис как Figma только для блок-схем?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Не скажу за регистрацию ибо это дико иметь доступ в сервис без неё но Lucidchart, Miro и аналоги чем не подходят?
    Ответ написан
    Комментировать
  • Существует ли карта сервисов AWS, Google Cloud, Azure?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Когда вы начинаете пользоваться облаками то предлагать решение без глубокой подготовки - опасно и не продуманно. Если серьезно, то вы и не сможете по тому что есть миллион нюансов. Когда вы являетесь специалистом в определенном облаке то вы УЖЕ знаете что надо, как оно соединяется и сколько будет стоить
    Ответ написан
    2 комментария
  • Как доставлять данные в микросервисы через Event?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Все зависит от жизненного цикла данных. Надо понимать что событийная система не обязана отрабатывать в режиме реального времени. Для некоторых случаев необходимо расширять payload, а для каких-то наоборот. Например, если у вас микросервис создаёт заказ на основе запроса пользователя то логично в payload отправить запрос пользователя, а если микросервис прогревает кэш, то логично выдать минимум данных чтобы остальное взять из базы. И в обоих случаях, скорее всего, на самом деле, будет комбинация
    Ответ написан
    Комментировать
  • Какой язык поможет научиться грамотно подходить разработке на БЭ?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    TS есть и на бэк, разумеется в виде трансформации в JS (Node.js это просто рантайм в котором запускается js). Если хочется прямо каноничной разработки - Java only. Можно PHP со строгой типизацией, можно Go, но я его не оценил.

    Что до функционального программирования то сегодня оно есть в одном виде по-сути и это serverless (FaaS) и там Nodejs заходит более чем полностью
    Ответ написан
    4 комментария
  • В архитектуре с API GATEWAY, все ответы должен предоставлять этот API GATEWAY?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Да. Ну, кроме call-back
    Ответ написан
    Комментировать
  • Как лучше смасштабировать приложение?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Я буду, наверное, максимально прост в рекомендациях:
    • AWS Lambda + AWS Step Functions
    • GCP Cloud Functions + GCP Dataflow
    • Azure Functions + Azure Logic Apps


    собственно я перечислил горизонтальные вычислительные мощности + оркестратор к каждой из них.
    Oт SQLite придется отказаться
    Ответ написан
  • Что используют для проектирования ПО?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Итак, давайте подумаем головой, а не как остальные - набрасываться на инструментарий. UML это инструмент формализации накопленных знаний, его используют довольно редко по тому что мало кто его знает и в большинстве своем он избыточен. И еще раз - это документирование.

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

    Для документирование используются разные инструменты, которые существуют для абсолютно разных вещей. Многая документация ведется в MS Office или Confluence, протоколы пишутся в Swagger, диаграммы рисуются в Visio, Lucidchart, Draw.io, .... Все зависит от выбранных инструментов в команде, от правил компании и от миллиона других факторов
    Ответ написан
    Комментировать
  • Как правильно все перенести в микросервисы и сделать устойчивую архитектуру?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Итак, куча всего смешана, давайте разбираться. У нас имеется:
    - X различных сервисов с различными интерфейсами
    - отсутствие транзакционности
    - отсутствие гарантии доступности сервисов
    - необходимость это все контролировать

    Как в реальности это решается:
    - Saga Pattern - отличная вещь, появилась именно как микросервисная транзакционность
    - нам потребуется оркестрация. Я не очень в курсе что сейчас по on-prem решениям но из моего мира есть AWS StepFunctions. Ищем аналоги для своего энва
    - если нет готовых решений то придется строить свою событийную архитектуру на очередях с брокерами и медиаторами
    - для проблемы не доступности сервисов придется использовать exponential backoff или exponential retry. Опять, же, в моем мире это решает AWS SNS.

    Вообще, во времена до облаков я такое делал на RabbitMQ и смекалке, но с любыми такими системами встает проблема валидация контрактов, так что только вам решать на какую часть переносить сложность.
    Ответ написан
  • Правильное добавление/обновление таблиц в базах данных?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Во-первых есть запросы, а во-вторых есть разные виды кэширования: Read-Through, Write-Through и другие. У всех есть свои минусы и недостатки. Кроме того под капотом в таких системах чаще всего внутри все работает на очередях или стриминге
    Ответ написан
  • Как лучше организовать микросевисы основанных на Docker написанных на node.js?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    по контейнеру на одну таску может быть дорого даже при Fargate. Я бы перестал заниматься фигней и взял AWS StepFunctions c Wait:
    idle-coldstart-01-1024x547.png

    Создаем StepFunctions джобу с параметрами и инвокаем из нее Lambda в цикле. Все, никаких проблем не будет. Надо только учитывать что у решения лимит исполнения - 1 год, вроде. Дальше - пересоздавать.

    Надо считать во-сколько это встанет, конечно. На Step Functions одна такая Джоба в месяц около 20$ может встать (10$ на SF и 10$ на Lambda), без необходимости дополнительного управления. Сохранять можно куда охота - хоть в CloudWatch, хоть куда потребуется.

    Для сравнения - в минимуме на ECS + Fargate это выйдет в 10$ (если ресурсов хватит), но надо контролировать где-то дополнительно что все работает, инфраструктуру и вообще. Я бы переплатил за первый вариант
    Ответ написан
    2 комментария
  • Возможно ли простое обновление зависимостей в множестве микросервисов?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Добро пожаловать в реальный мир. На самом деле эта проблема совсем не нова. Да, зависимости это удобно, но болезненно и именно поэтому необходимо тестирование, а некоторые организации даже применяют тестирование сторонних компонент на безопасность.

    Начинать лечить вашу проблему стоит с того чтобы внедрить CI/CD и получать отчеты об успешных сборках. Тестирование добавите позже. После этого вы поймете что необходимо довольно жестко фиксировать зависимости в проектах, делать форки сторонних библиотек, версионировать свой код в репозитории. Даже API придется со временем версионировать и учиться писать контракты, документацию) Много дополнительной работы, но при этом это все - единственное что держит на плаву проекты, выходящие из песочницы
    Ответ написан
    8 комментариев
  • Как строить диаграмму классов и диаграмму состояний для системы "мобильный банк"?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    "Смешались в кучу кони, люди". Попытка описать систему вообще со всех сторон пользы не принесет, да и не возможно это в целом сделать понятно и наглядно. Стоит начать хотяб с use-case диаграммы чтобы понять какие есть actors, а оттуда уже можно будет сделать компонентную диаграмму и пойти дальше. Условия клепать это не про проектирование, а если все что я перечислил является сложным для вас то возьмите просто mindmap
    Ответ написан