Как и пообещается здесь, является первым постом на микросервисах и их преимуществах и недостатках.
Для начала, давайте определим несколько ключевых условий, которые часто придумывают в любых дискуссиях вокруг микросервисов.
Монолиты : Не гигантская колонна в классическом фантабечном фильме, а вместо монолитного приложения. Это когда все функциональные возможности для приложения в одном процессе. Это часто хранятся в одном отдельном репо, однако, а также увеличение популярности монореспонса это становится менее частыми в качестве метода реализации. Я обсудим некоторые преимущества монолитов ниже.
Микросервисы : Когда функциональность приложения разбита в несколько процессов, которые все проходят отдельно друг от друга. Часто реализован в разных реподе, хотя, как с монолитными приложениями, монорепозию меняют ландшафты с этим.
Таким образом, с определениями разбиты, давайте пойдем в некоторые преимущества различных типов архитектуры.
Монолиты
Мнолитная архитектура на самом деле имеет много преимуществ по поводу микросервисов в определенных обстоятельствах. Первичное использование случая для монолита было бы для продукта MVP, это связано с легкостью, в которой она может быть развернута, а также насколько легко можно настроить среды разработки. Это означает, что ваша команда Dev может встать на скорость гораздо быстрее и начать быть продуктивным намного быстрее. Также легче контролировать приложение, и в результате его можно намного проще отладить какие-либо проблемы с приложением.
Это не сказать, что нет недостатков. Поскольку прогрессирует время, и ваше приложение растет, вы можете обнаружить, что ваши команды становятся гораздо большего размера, как только это начало происходит, становится гораздо более сложным, чтобы эффективно поддерживать структуру и каналы связи, см. Диаграмму ниже, чтобы увидеть, сколько большей линии связи генерируются как ваши весы команды.
Развертывание становится все труднее, поскольку приложение увеличивается по размеру и возможностям, и в конечном итоге даже небольшие изменения кода будут иметь возможность станет сложным для управления. Масштабирование также увеличит стоимость и сложность, поскольку вам нужно будет масштабировать все приложение, а не просто небольшую часть функциональности, которое приобрело высокий спрос.
Микросервисы
Теперь на микросервисам. После того, как вы начнете видеть некоторые недостатки, изложенные выше для монолитов, то, безусловно, это определенно рассмотреть изменение в архитектуре микросервиса. Некоторые из преимуществ микросервисов подробно описаны ниже.
Поскольку каждая часть функциональности разбита в индивидуальный процесс, это означает, что вы можете иметь гораздо более низкую общую область применения. Это означает, что каждое функциональное устройство может быть спроектировано, построено, протестировано и развернуто индивидуально и изолировано друг от друга. Конечный результат этого заключается в том, что ваш цикл сборки должен быть в состоянии ускорить, а функции могут быть развернуты чаще.
Вы также можете масштабировать функции гораздо более комфортно, приводящие к снижению затрат на эксплуатацию, вместо масштабирования всех ваших функций сразу независимо от использования, вы можете настроить его в масштабирование только части приложения, которые сталкиваются с более высокими требованиями использования. Также из-за разделенной архитектуры ваше приложение может иметь гораздо более высокий статус надежности, если один сервис снизится, приложение может работать вокруг него и все еще функционирует, не двигаясь полностью вниз.
Минервисты не без их нисходящих, из-за распределенной архитектуры, она может быть намного сложнее во многих различных фронтах, а не просто развитие. Отладка и мониторинг станут намного более сложнее, поскольку вам нужно будет вводить инструменты агрегации журнала в стек и даже последовать, когда запросы на данные пошли, могут привести к поездке по отверстиям кролика. Это также может страдать от уменьшения производительности из-за постоянных вызовов API и связи между услугами.
Причины двигаться.
Так что с указанием выше, почему вы должны перемещаться от монолита в архитектуру микросервиса? Ну, во-первых, потому что это весело, вовлечено множество проблем, но половина удовольствия от разработки преодолевает эти проблемы. Это говорит, что это не должно быть решением только от технологий, существует много действительных деловых причин для перемещения вашей архитектуры.
Во-первых, ваши команды будут намного меньшими, так как вы можете увидеть с диаграммы выше, когда у вас есть большая команда, ваш номер потенциальных каналов связи увеличивается экспоненциально, небольшая команда помогает массивно оптимизировать любые сообщения. Меньшая команда также будет гораздо более специализированной и более эффективной, поскольку им нужно будет только беспокоиться о коде в их функциональном устройстве, в отличие от каждой функции в приложении.
Имея небольшую команду, также может включить организацию команды вокруг бизнеса вместо возможностей. Организуя вокруг функций вместо возможностей бизнес-возможностей, вы можете избежать SILD Cructures, где код «брошен через стену» в следующий отдел без мысли о том, как оно повлияет на команду по трубопроводу. Это также означает, что команды могут владеть всем жизненным циклом от открытия пользы для клиента к окончательному выпуску кода в дикую природу, не будучи проблемой для других групп функций.
Во-вторых, бортовые члены для новых членов команды станут намного быстрее, что еще раз им нужно будет беспокоиться о том, как запустить свою функцию, в отличие от всей кодовой базы.
Наконец, ваши релизы будут намного меньшими и частыми. Как часть культуры CI/CD, вы должны стремиться к выпуску как можно более частоту. Это позволяет вам постепенно улучшать приложение и фактически доставлять значение клиента вместо того, чтобы делать большие взрывающие выпуски функциональности, которые конечный пользователь на самом деле не хочет.
Заключение
Есть много причин использовать микросервисы и много причин использовать монолит. Как я уже упоминал, используя монолит для вашего MVP, совершенно отлично, и на самом деле, я бы порекомендовал его, ваша настройка будет быстрее и изначально, ваш Dev Bangoboarding будет гораздо более гладко Но как только вы начнете встречаться с выпуски, изложенные выше, определенно считают переключение на микросервисы.
Линии общения изображения любезно предоставлены Джастин Нисснеру на переполнении стека
2001: Гиф Space Odyssey используется под справедливым использованием, и все права принадлежат Созданному Создателю
Оригинал: «https://dev.to/ashenmaster/microservices-101-a4a»