Возвращаясь к разговору “Монолиты против Микросервисов”. Дошли глаза прочитать оригинальную заметку “Microservices are something you grow into, not begin with”, которую перевели на Хабре.
Оригинал -
https://nickjanetakis.com/blog/microservices-are-something-you-grow-into-not-begin-withХабр (перевод) -
https://habr.com/post/427215/Краткий конспект:
1. Не надо бежать за гуглом.
2. Shopify поднимает много денег, сидя на монолите.
3. Микросервисы, по мнению автора, всего-лишь очередной уровень абстракции.
4. Не стоит начинать с микросервисов, пока вы не написали хотя бы одной строчки кода, потому что на этом уровне вы еще не знаете, что вы пишете. (Што?)
5. Микросервисы надо начинать осваивать, когда решит ваша команда.
6. Переход на микросервисы имеет свои проблемы и нюансы. (You don’t say!)
Ух ты. Ладно.
Монолитные приложения быстрее микросервисных. Неважно, насколько сложно их обновить, какой при этом грозит даунтайм или сколько подписей нужно собрать, что выкатить новый релиз. Один метод, вызывающий другой, будет всегда быстрее, чем один контейнер, отправляющий API вызов к другому. Поэтому, если вы пишете HFT системы, АБС, кредитные конвейеры, процессинг, который должен работать чуть медленнее Visa/Mastercard, но быстрее Bitcoin, или что-то еще, где важна каждая миллисекунда - монолит.
Во-вторых по монолитным, сложным информационным системам, при проектировании которых рисуют много этих ваших UML, BPMN и прочих рисовашек и документов, наработана огромная теоретическая и практическая база, на которой выросло не одно поколение enterprise архитекторов. Проще говоря, профессионалов, которые знают как готовить монолит, по очевидным причинам больше, чем тех, кто умеет готовить микросервисы.
В-третьих, микросервисы основательно усложняют структуру вашего приложения. Заменив одну строчку в коде, вы рискуете положить много много смежных сервисов, а значит должны вложить больше усилий в интеграционное тестирование.
В-четвертых, написать прототип на микросервисах, гораздо трудозатратнее (не сложнее!), чем на монолите.
Вот эти моменты гораздо важнее абстрактных “да зачем тебе микросервисы, братишка, пили монолит, че ты” и “ты че гугол?”.
А если вы создаете распределенную систему, где скорость до миллисекунды не критична, но нужно иметь возможность для горизонтального масштабирования, то можно начать с микросервисов, и не надо никого слушать.
Просто помните, что:
- вы в этом путешествии одни, и вам никто не поможет.
- неплохо иметь в команде людей, которые уже имеют опыт работы с микросервисами.