Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Бекенд, разработка серверов
  4. Что такое микросервисная архитектура

Что такое микросервисная архитектура

Запланировано Прикреплена Закрыта Перенесена Бекенд, разработка серверов
backend
5 Сообщения 4 Постеры 80 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    js
    написал отредактировано
    #1

    dcfbb3cb-9e0d-4349-9da9-f6d3d8a4616f-image.png

    В последние годы стало чуть ли не главным трендом в backend-разработке - микросервисной архитектуре. Если вы хоть раз слышали фразы вроде «у нас всё на микросервисах» или «мы уходим от монолита», то мои умозаключения как раз для вас. Я постараюсь объяснить все максимально человечно, без заумных терминов, но с пользой.


    Что вообще такое микросервисы?

    Представим себе ассоциацию помойного ведра. Один. Цельный. Все в нем: пластик, органика и прочее - все перемешано и держится вместе.

    Это и есть монолитное приложение. Всё работает в одном процессе, одна база данных, один деплой, одна команда (или одна помойка 😅).

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

    Например:

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

    Каждый из них — это отдельное приложение со своей логикой, своей базой данных (иногда), своим API и своей жизнью.


    Почему вообще перешли на микросервисы?

    Все просто: монолиты - это удобно в начале, но когда проект растёт, они становятся монстром.

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

    Микросервисы решают эти проблемы:
    ✅ Независимость - можно менять, тестировать и деплоить каждый сервис отдельно.
    ✅ Масштабируемость - можно масштабировать только то, что реально нагружено.
    ✅ Технологическая свобода - каждый сервис может быть написан на своем стеке (Python, Go, Node.js - да что угодно).
    ✅ Устойчивость - если упал один сервис, не обязательно падает всё приложение.
    ✅ Командная автономия - разные команды могут работать над разными сервисами без постоянных конфликтов.


    Но… всё ли так радужно?

    Конечно, нет 😄

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

    А теперь о плохом подробнее:

    • Сложность системы в целом - сервисов много, связи между ними, нужно следить за тем, чтобы всё работало вместе.
    • Сетевые вызовы - вместо быстрых вызовов внутри процесса - HTTP/gRPC/RPC между сервисами. Задержки, ошибки сети, таймауты.
    • Согласованность данных - если у каждого сервиса своя БД, как обеспечить целостность? Транзакции между сервисами - это боль.
    • Логирование и мониторинг - где искать ошибку, если запрос прошёл через 5 сервисов? Нужны распределённые трейсы (например, Jaeger, Zipkin).
    • DevOps-нагрузка - деплой, CI/CD, оркестрация (Kubernetes, Docker Swarm), конфигурация, сервис-дискавери - всего этого в монолите почти не было.

    Щас сюда должен прийти @Jspi и закидать меня х*ями в панамку сказав используй FSD 😁


    Когда переходить на микросервисы?

    По моему личному опыту: не начинайте с микросервисов!

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

    Правило большого пальца: если у вас больше 3-5 команд, которые постоянно сталкиваются в коде, или если часть системы явно требует отдельного масштабирования - тогда можно задуматься о разделении. Если же Вы пилите в несколько разрабов то микросервисы точно не нужны.

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


    Вместо вывода

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

    Не гонитесь за модой. Сначала решайте бизнес-задачу. А потом уже думайте, как ее лучше поддерживать и развивать.

    1 ответ Последний ответ
    0
    • I Не в сети
      I Не в сети
      itrace
      написал отредактировано
      #2

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

      JspiJ 1 ответ Последний ответ
      0
      • I itrace

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

        JspiJ Не в сети
        JspiJ Не в сети
        Jspi
        js
        написал отредактировано
        #3

        @itrace микросервисы, это, мне кажется, следствие того, что сейчас все стали делать проекты большими командами, и не хотят вникать в чужой код, модули и не хотят писать по принятым уже стандартам, проще накатить очередной hellow world на go. Я не говорю, что они не нужны и не решают определенные задачи хорошо, но везде надо думать головой “зачем” и какие минусы решения.

        G I 2 ответов Последний ответ
        0
        • JspiJ Jspi

          @itrace микросервисы, это, мне кажется, следствие того, что сейчас все стали делать проекты большими командами, и не хотят вникать в чужой код, модули и не хотят писать по принятым уже стандартам, проще накатить очередной hellow world на go. Я не говорю, что они не нужны и не решают определенные задачи хорошо, но везде надо думать головой “зачем” и какие минусы решения.

          G Не в сети
          G Не в сети
          Gleb_Osin
          написал отредактировано
          #4

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

          1 ответ Последний ответ
          0
          • JspiJ Jspi

            @itrace микросервисы, это, мне кажется, следствие того, что сейчас все стали делать проекты большими командами, и не хотят вникать в чужой код, модули и не хотят писать по принятым уже стандартам, проще накатить очередной hellow world на go. Я не говорю, что они не нужны и не решают определенные задачи хорошо, но везде надо думать головой “зачем” и какие минусы решения.

            I Не в сети
            I Не в сети
            itrace
            написал отредактировано
            #5

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

            1 ответ Последний ответ
            👍
            0

            Категории

            • Главная
            • Новости
            • Фронтенд
            • Бекенд
            • Языки программирования

            Контакты

            • Сотрудничество
            • info@exlends.com
            • Наш чат
            • Наш ТГ канал

            © 2024 - 2025 ExLends, Inc. Все права защищены.

            Политика конфиденциальности
            • Войти

            • Нет учётной записи? Зарегистрироваться

            • Войдите или зарегистрируйтесь для поиска.
            • Первое сообщение
              Последнее сообщение
            0
            • Лента
            • Категории
            • Последние
            • Метки
            • Популярные
            • Пользователи
            • Группы