Микросервисная архитектура — это концепция, которая существует уже довольно давно, но до сих пор многие не до конца понимают, в чем ее суть, какие плюсы и минусы она имеет по сравнению с монолитной архитектурой. На мой взгляд это нужно понимать, даже нетехническим специалистам. Как-то на одном из собеседований на "продуктовую" позицию в крупную международную компанию, рекрутер попросила меня объяснить разницу между ними и перечислить преимущества и недостатки каждого подхода.
Этот статья вряд ли откроет что-то новое опытным специалистам, хотя они, возможно, найдут ее полезной как пример для объяснения новичкам. Однако нетехническим специалистам она может быть полезна — на простом бытовом примере я покажу, как работают оба подхода и чем один лучше другого.
Монолит — телевизор все в одном, но с нюансами
У меня есть умный телевизор Samsung, ему уже лет 6. Это классический пример монолита: все встроено в одно устройство — и звук, и видео, и «мозги» (умная прошивка). Все удобно и просто, управляется с одногоа пульта.
Со временем телевизор устарел: приложения начали работать медленно, некоторые перестали запускаться, а звук начал барахлить. Если запустить встроенную операционную систему, спустя непродолжительное время он начинает постоянно перезагружаться.
Чтобы продолжить им пользоваться, можно было отправить его в ремонт, что стоило бы кучу денег и времени, звук стал бы лучше, он бы перестал загружаться, но встроенные приложения уже не обновить, их никто уже не поддерживает. Как часто бывает с монолитами, апгрейд невозможен: ты либо обновляешь все, либо ничего. Еще один вариант, купить ему на замену совершенно новый. Покупка нового ТВ не входила в мои планы, качество картинки меня полностью устраивает, да и не хотелось терять сразу большую сумму денег.
Переход на микросервисы: гибкость и возможности
Вместо того чтобы выкидывать старый телевизор и покупать новый, я пошел другим путем. Я начал поэтапно обновлять его через подключение новых устройств — и это отличный пример перехода к микросервисной архитектуре.
Первый шаг — подключил приставку от Xiaomi, то есть поставил новые «мозги». Теперь все современные приложения стали работать быстро и без проблем Апгрейд прошел почти незаметно, потребовалось подключить несколько проводов, и вуаля одна из его ключевых функций заменена.
Второй шаг — мой старый звук совсем отказал. Ремонтировать встроенные колонки? Дорого и неудобно, в мою машину телевизор не влезает, поэтому отвезти его в ремонт это отдельное приключение. Вместо этого я сначала подключил имеющуюся простенькую колонку, получился такой MVP микросервиса "звук".
Чуть позже я перешел на "целевой" микросервис, подключил новый саундбар JBL, который подарили коллеги.
Качество звука стало на несколько порядков выше, без необходимости замены телевизора. Не каждый современный ТВ может похвастаться таким звуком.
Преимущества микросервисного подхода
Такой подход — по сути, пример микросервисной архитектуры — имеет ряд неоспоримых плюсов:
Гибкость. Когда устаревают или ломаются отдельные компоненты, не нужно менять всю систему. Можно просто обновить один из сервисов. Как в моем случае: сначала я заменил «мозги» приставкой, а потом подключил саундбар для звука.
Экономия. Вместо того чтобы тратить деньги на новый телевизор (монолит), я смог поэтапно модернизировать старый. Это оказалось дешевле и позволило избежать крупных вложений.
Многофункциональность. Моя новая приставка работает не только с этим телевизором. Я могу взять её в поездку, подключить к другому телевизору или монитору. Саундбар тоже оказался универсальным — его можно использовать как отдельную колонку для музыки. То есть одни и те же "микросервисы" можно использовать в других "сервисах".
Но есть и минусы…
Как и любой подход, микросервисная архитектура имеет свои недостатки. Например, теперь у меня дома три пульта: один от телевизора, другой от приставки, и третий от саундбара. Дети первое время путались, не понимали, почему не работает звук или не переключается канал. В микросервисах также — чем больше отдельных компонентов, тем сложнее их синхронизировать и управлять ими.
Ещё один минус — возможные сложности с интеграцией. Иногда разные устройства могут не идеально «общаться» друг с другом. Например, пульт от приставки не всегда корректно работает с телевизором или звуком, и нужно вручную переключать режимы. Мой саундбар лежал долгое время в коробке, мне не хотелось тратить время на подключение, а кроме меня дома никто этого сделать не мог.
Вывод
Микросервисная архитектура — это возможность быть гибким и обновлять только те части системы, которые устарели или требуют улучшений. Вместо того чтобы каждый раз переписывать или заменять весь продукт, можно заменить только его отдельные части. Да, это добавляет немного сложности в управлении, но зато даёт свободу и экономит ресурсы.
Так что если ваш бизнес (или телевизор) начинает барахлить, возможно, пришло время подумать о микросервисах — по чуть-чуть, шаг за шагом, вы сделаете его современным и гибким, не ломая всю систему сразу.
p.s. понравился пост, приходи в мой тг-канал Inspired Product Manager.
Комментарии (26)
flancer
07.10.2024 04:18+6Что-то как-то не то. Создаётся впечатление, что монолит (телевизор) можно превратить в микросервисы (телевизор с гаджетами) путём добавления частей к базе. Но телевизор с гаджетами это совершенно не то же самое, что изначально спроектированное частями целое, типа советских музыкальных центров, где ты можешь совмещать усилитель, колонки, радио, магнитофон, проигрыватель пластинок и т.п. в разных комбинациях.
В микросервисах не наращивается (улучшается) базовая архитектура, но общая функциональность разбивается на части и создаётся отдельно, с возможностью пересборки этих отдельных частей в других проектах со схожей функциональностью (подключить микрофон к усилителю и колонкам и использовать в караоке).
Так что если ваш бизнес (или телевизор) начинает барахлить, возможно, пришло время подумать о микросервисах — по чуть-чуть, шаг за шагом, вы сделаете его современным и гибким, не ломая всю систему сразу.
Ну и вывод, соответственно, также неверен.
turchan Автор
07.10.2024 04:18так как раз и сделано то, что вы описали.
"общая функциональность разбивается на части и создаётся отдельно". была общая функциональность в одном телеке, разбили на части. От смарт тв осталась только функциональность монитора.
саундбар - используется в другом условном сервисе "прослушивание музыки без необходимости включения телевизора", до этого встроенный динамик использовался только в сервисе "просмотр фильмов".
приставка xiaomi используется в сервисе "просмотр фильмов в командировке", раньше этого было нельзя сделать, не потащу же я весь телек.
Понятно, что не одновременно, как в софте, но это ограничение хардверного примера.flancer
07.10.2024 04:18+2Если убрать все навешанные навороты с телевизора, то возможность просмотра телепередач и интернета восстановится в прежнем объёме, пусть и в худшем, по сравнению с upgrade'ом, качестве.
В микросервисной архитектуре нет и не можеть быть в принципе ни одного компонента, который бы обладал функциональностью всего комплекса, пусть и в худшем качестве.
Я понимаю, что в некоторых случаях легаси-монолит можно постепенно трансформировать в микросервисы, но с телевизором и его периферией действительно не слишком удачный пример получился.
turchan Автор
07.10.2024 04:18Этот телевизор уже не может нормально работать, я там писал, что звук отказал и "мозги" тоже, так как при запуске любой "умной" функции он постоянно перезагружается. Так что он по сути стал монитором и без "наворотов" (микросервисов) он будет просто бесполезен.
nighthtr
07.10.2024 04:18Когда у вас микросервисы начнут тормозить на 10 летней давности железе вы тоже начнёте cpu/ram/drive/etc менять и может даже gpu помощнее поставите? Или всё-таки переедете на свежее железо?
goldexer
07.10.2024 04:18+2Очень слабенькая статья с жидкими примерами. Тут даже аргументировать нечего. Пожелание автору более плодотворной работы)
martyny
Статья, конечно, интересная, но хотелось бы увидеть для сравнения все-таки практическую реализацию (код)