Мы были Проектирование и строительство Программное обеспечение более десяти лет и большую часть этого времени мы использовали отличную структуру Symfony для этого. Symfony — это традиционный монолитный набор компонентов PHP, слабо вдохновленный Java Spring, и мы обнаружили, что он хорошо подходит для быстрого развития Корпоративные веб -приложения и цифровые продукты, которые являются нашим хлебом с маслом.
Выпуск Symfony 4 в прошлом году, однако, представлял собой что -то постепенное изменение фокуса для рамки; вдали от его монолитных корней и к Подход микросервисов , это методология, которая набирает популярность за последние несколько лет.
Чтобы проиллюстрировать этот сдвиг, новый релиз был объявлен как «Micro по умолчанию», а Фонд Symfony рассказывал о своем новом Microkernel Проектирование, утверждая, что для запуска приложения требуется на 70% меньше кода по сравнению с Symfony 3.
Среди других преимуществ это изменение означает, что накладные расходы за использование отдельного приложения намного меньше, что делает Symfony более привлекательным для использования в архитектуре микросервиса.
Что такое монолиты и микросервисы?
Конструкция микросервиса основана на концепции разделения ваших крупных, традиционных (монолитных) применений на несколько небольших, отдельных применений. Каждое из этих приложений будет обрабатывать одну область бизнес-функциональности и сотрудничать с другими компонентами, как будто они являются сторонними приложениями.
Теперь это действительно новая вещь, или это просто Сервисная архитектура с современным именем? Ну, у нас здесь не будет эта дебаты — Slashdot и Хакерские новости В конце концов, может справиться с этим совершенно хорошо. Что мы скажем, так это то, что подход микросервисов (или как вы хотите его назвать), в первую очередь полезен для крупных организаций. Это связано с тем, что очень большие приложения могут быть разделены на несколько отдельных услуг, каждый из которых управляет собственной отдельной командой разработчиков.
Дополнительным преимуществом архитектуры микросервиса является обеспечение гибкого масштабирования емкости одного конкретного компонента, а не всего применения. Это хорошо подходит в мире Эластичные облачные вычисления , но в большинстве ситуаций я бы сказал, что этот прирост эффективности утопляется большой, явной проблемой.
Вам действительно нужны микросервисы?
Я считаю, что, если вы не работаете в компании, такой как Google или Netflix, со многими сотнями разработчиков программного обеспечения, вам, вероятно, не нужны микросервисы. Фактически, для большинства малых или средних бизнеса может быть активно неуместно выбрать этот маршрут дизайна.
Есть исключения, к которым я приду, но большой слон в комнате — это стоимость разработки и технического обслуживания такого подхода. Мы можем широко определить, должны ли микросервисы быть вашей отправной точкой с простым вопросом:
‘ Является ли единственный компонент вашей системы, такой как управление пользователями, достаточно большим, чтобы потребовать постоянного разработки более чем одним разработчиком, полный рабочий день? »
Если ответ нет, подход микросервисов, вероятно, является пустой тратой времени и денег для вас. Вместо этого, если вам посчастливилось достичь этой шкалы позже, вы, вероятно, можете позволить себе медленно разделить компоненты, которые требуют такого уровня индивидуального внимания.
Почему микросервисы стоят дороже для разработки и управления?
Монолитные приложения, как правило, являются гораздо более дешевым предложением, так как вам не нужно решать целый ряд проблем распределенных систем. Монолиты, использующие такую структуру, как Symfony, дают много преимуществ, предоставляя функции интеграции вне коробки, которые затем легко получить со всех областей вашего приложения. В основном вы можете избежать необходимости решать такие проблемы, как:
- Аутентификация и разрешение на распределенную систему.
- Отслеживание сложных проблем по транзакциям через несколько отдельных систем.
- Распределенная блокировка.
- Коммуникация между услугами.
- Дополнительное управление конфигурацией для нескольких приложений.
Исключения из правила (он же гибридный подход)
Есть моменты, когда микросервисы подходят, но, по моему опыту, это ситуации, когда требования к масштабированию или требования к устойчивости к разломам перевешивают недостатки необходимости проектировать и управлять распределенной системой. Хороший пример здесь — такой бизнес, как Монзо Банк , которые должны иметь возможность как мгновенно масштабировать, а также иметь возможность обеспечить, чтобы ошибка в одной области системы не повлияла на другого.
Хороший подход, который мы в браузере повторили несколько раз, — это использовать гибридный подход к проектированию систем. Это включает в себя центральный монолит, окруженный поддержкой микросервисов, но только там, где есть веская причина для них. Например, мы недавно использовали этот подход при интеграции обработки NLP в приложение.
Мы построили несколько систем, где основное бизнес -приложение создается как монолит (обычно в Symfony) с тяжелой обработкой данных, обрабатывающей отдельной конвейера микросервисов. Это позволяет нам не только обрабатывать огромные объемы данных без влияния на производительность основных приложений, но мы можем взять эти компоненты в автономном режиме, если это необходимо, не влияя на повседневную работу платформы.
Рассмотренный подход — в идеале с четким пониманием масштабных и будущих требований к развитию — важен для принятия решения по архитектуре. Вы хотите быть быстрым на рынке? Вы хотите поддержать миллионы пользователей? Тебе нужно обрабатывать огромные потоки данных ?
Принимая правильное решение на раннем этапе дает вашему продукту наибольшую вероятность предоставления ваших инвестиций в кратчайшие сроки, не исключая варианты, которые вы хотите изучить в будущем. Часто более экономически эффективно планировать разделение компонентов на микросервисы позже, а не в начальной разработке MVP.
Пост Вам действительно нужны микросервисы? появился первым на Браузер Лондон Анкет
Оригинал: «https://dev.to/browserlondon/do-you-really-need-microservices-5b87»