Подобно тому, как микросервисы представляли собой значительное улучшение по сравнению с монолитными архитектурами, наносервисы — это шаг вперед по сравнению с микросервисами — для некоторых вещей, пишет на портале TechBeacon независимый консультант Джойдип Канджилал.

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

Еще меньше

Как бы ни были хороши микросервисы, у них есть и недостатки. Наносервисы устраняют некоторые из них.

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

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

Наносервис включает всю функциональность микросервиса — он просто меньше. Его можно представить как сверхмалый микросервис, который состоит из фрагмента, который можно использовать многократно и который может служить доступным по сети единым адресом (endpoint) API. И в отличие от микросервиса, наносервис предназначен для выполнения только одной задачи за раз.

Наносервисы против микросервисов

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

Как и в случае с микросервисами, нет единого мнения о том, какого размера должен быть типичный наносервис.

Для примера того, как можно использовать наносервисы, рассмотрим некий сервис PayrollService, состоящий из трех отдельных сервисов: EmployeeService, LeaveService и DepartmentService. EmployeeService ответственен за обработку детальных данных о работнике и является микросервисом с собственным хранилищем данных. Два другие сервиса также могут быть микросервисами.

Теперь предположим, что вам нужен метод многократного использования, чтобы проверять почтовые адреса сотрудников. Вы можете создать метод, который проверяет электронные адреса и «обернуть» его в сервис под названием, скажем, ValidateEmailAddressService. Далее вы можете открыть его, используя конечную точку REST. Это идеальный вариант использования наносервиса.

Антишаблоны наносервисов, которые следует избегать

У наносервисов есть несколько преимуществ. Они более гранулированы, чем микросервисы, и обеспечивают более быструю обратную связь, что позволяет быстрее обнаруживать и устранять проблемы. И при работе с наносервисами можно записать бизнес-логику в функцию и инкапсулировать ее как бессерверную, чтобы ее можно было использовать повторно.

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

Наносервисы имеют мелкогранулированную, разрозненную, фрагментированную логику. По сути, это миниатюрные, более сфокусированные версии микросервисов, которые самостоятельно разрабатываются, тестируются, выпускаются и версионируются.

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

Будущее наносервисов

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

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

Используйте гибридный подход

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

Используйте наносервисы, когда хотите использовать бессерверные архитектуры. Если ваше приложение обладает широким функционалом, вам, возможно, захочется разделить эту функциональность на несколько наносервисов для большей детализации. Для всех остальных целей можно использовать микросервисы.

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