Мое собственное определение:
microservice является автономным, развязаны компонент, который обрабатывает один бизнес озабоченность, и является расходным от других услуг.
Другие могут согласиться или не соглашаться, и есть много интересного обсуждения на эту тему, которые делают его отличным учебным пунктом для инженеров-программистов.
С технической точки зрения: Вы можете создать microservices практически любой технологии: Java EE, Java + Spring, Python, Rails, Grails, Node.js и так далее. Из того, что я видел, он чаще всего применяется в области веб-приложений и ориентированных на обслуживание экосистем.В статье, на которую вы ссылаетесь, модель NetFlix - это очень интересная вещь для изучения, потому что вы можете увидеть все элементы глубинной архитектуры микросервиса: обнаружение сервисов, прерывание цепи, мониторинг, динамическая конфигурация и т. Д.
Некоторые вещи, которые вы могли бы хотеть, чтобы проверить, если вы Java-ориентированные:
Spring Облако позволяет использовать некоторые из этих же компонентов Netflix с минимумом ручного кодирования: http://cloud.spring.io/spring-cloud-netflix/
An фактический эксплуатационный пример на GitHub (не мой, но я использовал его в своем собственном обучении по теме): https://github.com/ewolff/microservice
с концептуальной точки зрения, ваш вопрос намекает на печально известной конструкции microservice дилеммой. Не обязательно «правильный» уровень детализации для микросервиса. Идея заключается в выборе уровня детализации, который имеет смысл в вашей бизнес-области. Если вы внедряете микросервисы на очень низком уровне детализации (например, уровень CRUD), то почти наверняка вы получите очень частые сервисы, и вам, вероятно, придется создавать более значимые составные сервисы поверх. Если вы выберете слишком высокий уровень детализации, вы можете получить более монолитное приложение, которое позже может потребовать рефакторинга в куски размером с микросервис.
Смотрите прекрасные пояснения, проблемы & решение о microservices https://www.youtube.com/watch?v=CriDUYtfrjs –