На днях в эксплуатацию была запущена первая версия системы, построенной на микросервисной архитектуре, в разработке которой мы приняли участие.
Данный подход в последнее время набирает популярность и, как многие популярные подходы, сопровождается громкой шумихой. Понимание реальных плюсов и проблем появляется, если опробовать его на практике. Мы попробовали и хотели бы поделиться полученным опытом.
Микросервисы предлагают новый подход к разработке больших систем. В противовес господствующей в настоящее время “монолитной” архитектуре, когда вся система реализована в единой базе кода, работает с одной большой базой данных и разворачивается как одна единица, микросервисный подход предлагает разделить систему на набор взаимодействующих подсистем. При этом, каждая подсистема (микросервис) развивается отдельно от остальных, не имеет с ними общей базы кода, работает со своими данными, в рамках собственной БД и отдельно разворачивается в выделенном контейнере.
Естественный вопрос, который возникает — как разделить набор функций системы на обособленные куски, пригодные для вынесения в подсистемы и до какого размера следует производить дробление?