Задать вопрос
Ответы пользователя по тегу Сервис-ориентированная архитектура
  • Как верно выбрать коммуникационный протокол для взаимодействия между микросервисами?

    Viji
    @Viji
    DevOps Engineer
    Смотрите - вы должны смотреть на требования бизнеса. Те процессы, которые не требуют немедленного подтверждения могут быть сделаны через мессаж брокер, типа Кролика или Кафки (лучше имхо). Остальные могут быть сделаны через обычный http(s) протокол - советую через ssl, тк у вас серьезные данные. Теперь как выбирать прямое взаимодействие между сервисами по https? Я советую использовать какой-либо API Gateway со своим - внутреннем доменом и все взаимодействие между сервисами вести через него, а не напрямую внутри кластера K8S или Docker Swarm итд. Получается гораздо более организованно. Не знаю, нужно ли вам gRPC, по-моему и разрабам и девопсам легче будет работать со старым добрым http для устранения неполадок и tracinga.

    После окончания дизайна проводите what-if анализ с ведущими разрабами и админом бд. А что если сообщение потерялось, брокер или база перегружена, или сеть отказала в соединении... как откатить деньги обратно итд. Все надо серьезно со всех сторон продумать! После этого вносите изменения в систему.

    На всем протяжении одного длинного действия создавайте transaction_id, которое будет распространятся по системе, включая сообщения Кролика/Кафки и записи в базе, чтобы можно было легко его найти в логах или восстановить, если где-то произошла проблема.
    Ответ написан
    5 комментариев
  • Как лучше организовать управление доступом в микросервисной архитектуре?

    Viji
    @Viji
    DevOps Engineer
    Сам только учусь - исходя из того что есть в нашем проекте и нашел на инете...

    Сделайте так, чтобы Keycloak создавал JWT для авторизации. Т.е. в Keycloak будет не только аутентификация, но и роли\группы хранится. Таким образом Security Manager будет создавать роли в Keycloak (а пермишины? не уверен - может их создавать в базе отдельно), а все последущие коммуникации между сервисами будут включать JWT полученный после аутентификации юзера в Keycloak, т.о. сервисы будут вытаксивать авторизацию из переданного JWT перед выполнением какого-то действия.

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

    И да, не совсем понимаю, зачем всегда использовать Кафку - у нас микросервисы некоторые общаются и напрямую по HTTP, можно также и через Grpc. Если в Кубере можешь поставить изоляции - network policies.
    Ответ написан
  • Как лучше развертывать микросервисы на FastApi python?

    Viji
    @Viji
    DevOps Engineer
    Обязательно ли использовать для каждого микросервиса свою бд - в основном, да! Но мы например используем 1 базу для 2-3 микросервисов, потому что так удобнее или дешевле.
    Хотя для большинства микросервисов - одна база один сервис. Просто есть базы, куда иногда надо ходить 2-3 сервисам для получения определенных данных общего типа. Совсем строгих правил не существует - надо исходить из бизнес логики и цены, во сколько все это выльется.

    Можете попробовать k3s - так будет легче перейти в кубернетес при масштабировании бизнеса. k3s может работать даже на одном инстансе как docker compose. И k3s сертифицирован CCNF
    Ответ написан
    3 комментария
  • Какие решения есть для API Gateway, при использовании микросервисов?

    Viji
    @Viji Автор вопроса
    DevOps Engineer
    Комментировать