Последние два-три года стало модно говорить о микросервисах. В твиттере и на профильных ресурсах слово "microservice" мелькает уж очень часто. Но...
Интересно, что микросервисы как подход к разработке можно было применять и пять лет назад и десять - этому ничего не мешало, просто не было такого тренда. Никто не мешал дробить крупные Java EE-проекты на большое количество маленьких WAR и JAR, разворачивать фермы Glassfish или JBoss и добиваться той же слабой связанности. Так же никто не мешал разрабатывать микросервисы в виде standalone-приложений. В целом этому способствовало и существование OSGi-контейнеров, которые, впрочем, в народе не особо прижились. Наиболее важной причиной увеличения популярности микросервисов на мой взгляд является популярность облачных сервисов: PaaS, IaaS и прочих XaaS.
Стоит отметить, что Spring Boot уже является стабильным и достаточно успешным фреймворком, с помощью которого можно без лишней головной боли разрабатывать standalone-приложения, основанные на Spring Framework. Хотя далеко не все рекомендуют это делать, особенно приверженцы Java EE.
А вот с WildFly Swarm всё несколько хуже. Идея проекта заключается в интеграции Java EE в standalone-приложения. Смысл в этом есть, но сам проект ещё находится в разработке и до стабильного релиза, судя по всему, ещё очень далеко. Если при разработке простенького микросервиса с REST в случае со Spring Boot в итоге получается компактный jar на 5-10Мб, то в случае WildFly Swarm у вас в зависимостях будет добрая половина сервера приложений WildFly. Модульность Spring Framework взяла своё в данном случае.
Слово "микросервис" использовано в данном посте 20 раз.
Microservices is like teenage sex, every body talking about it, but no body is doing it! #TGIF
— Arun Gupta (@arungupta) 26 июня 2015
В моём представлении микросервис по сути представляет собой самостоятельный компонент большой системы, выполняющий узкий круг задач. Кто-то превращает большие монолитные проекты в набор микросервисов, кто-то создаёт проекты сразу изначально в виде набора микросервисов. Наиболее важная на мой взгляд выгода в использовании микросервисов - достижение слабой связанности компонентов проекта. Плюс можно разделить микросервисы между командами разработчиков, что наверняка увеличит производительность труда.Интересно, что микросервисы как подход к разработке можно было применять и пять лет назад и десять - этому ничего не мешало, просто не было такого тренда. Никто не мешал дробить крупные Java EE-проекты на большое количество маленьких WAR и JAR, разворачивать фермы Glassfish или JBoss и добиваться той же слабой связанности. Так же никто не мешал разрабатывать микросервисы в виде standalone-приложений. В целом этому способствовало и существование OSGi-контейнеров, которые, впрочем, в народе не особо прижились. Наиболее важной причиной увеличения популярности микросервисов на мой взгляд является популярность облачных сервисов: PaaS, IaaS и прочих XaaS.
Standalone или контейнеры?
В этом вопросе, на мой взгляд, удобнее standalone-микросервисы. Во-первых при обновлении библиотек любой контейнер прийдётся перезапускать вместе со всеми запущенными в нём приложениями. Это решается запуском нескольких инстансов контейнеров и фэйловер-конфигурацией, но... Во-вторых лучше много мелких инстансов JVM, чем несколько раздутых. Однако, если в микросервисах используется HTTP-контейнер, то для каждого инстанса понадобится свой порт, что не очень удобно.
Spring Boot и WildFly Swarm
На волне популярности микросервисов начали появляться фреймворки и проекты, упрощающие разработку микросервисов: к вышеупомянутым OSGi-контейнерам добавился Spring Boot, а так же ведётся разработка WildFly Swarm. Оба проекта предоставляют возможность разрабатывать микросервисы в виде standalone-приложений, минимизируя затрачиваемое время на конфигурирование компонента.Стоит отметить, что Spring Boot уже является стабильным и достаточно успешным фреймворком, с помощью которого можно без лишней головной боли разрабатывать standalone-приложения, основанные на Spring Framework. Хотя далеко не все рекомендуют это делать, особенно приверженцы Java EE.
А вот с WildFly Swarm всё несколько хуже. Идея проекта заключается в интеграции Java EE в standalone-приложения. Смысл в этом есть, но сам проект ещё находится в разработке и до стабильного релиза, судя по всему, ещё очень далеко. Если при разработке простенького микросервиса с REST в случае со Spring Boot в итоге получается компактный jar на 5-10Мб, то в случае WildFly Swarm у вас в зависимостях будет добрая половина сервера приложений WildFly. Модульность Spring Framework взяла своё в данном случае.
Слово "микросервис" использовано в данном посте 20 раз.
Комментариев нет:
Отправить комментарий