На поверку это все можно сделать через толстый клиент через Angular/Ract/Vue и т.п. И бекенд вынести в отдельный сервис, ему еже не нужно все 12-гб и соответственно можно использовать сервера по дешевле, заодно можно разнести CMS данные и бизнес логику по разным BD. Притом для CMS лучше подходит No SQL решения, тогда сервис заметок как для бизнес логики напротив реляционные базы данных. Потом строятся сервисы с базовой и дополнительной бизнес логикой и т.п. Да кластер сильно усложняется, но каждый его составной компонент напротив упрощается. Система проще масштабируется, держит высокую нагрузку и т.п.
Когда использовать микросервисы а когда монолиты?
Мой личный опыт — архитектор либо выполняет роль мебели, либо занимаеться космическими кораблями бороздящими просторы необъятного космосу. Комуникацию между микро, макро, и нано сервисами делают сами девелоперы, они делают кучу недокументируемых изменений; в конце концов никто не имеет полной картины, и не знает как оно работает. И ситуация не шибко лучче чем на большом монолите. JS, и прочие питоны, имхо, куда более вписываються в микросервисы, чем в большие монолиты. Дык для микросервиса (если он на джабе) все тоже самое — спринг бут, DI, простыни конфигов, «мудреное аннотирование», итд.
Этапы создания чата для мобильного приложения
Если о каких-то специальных телодвижениях, которые одноразово требуются для запуска свежедобавленного в систему микросервиса — в этом нет никакой крамолы. Таким образом мы попадаем в мир в котором, якобы изолированный контекст имеет тенденцию к нарастанию в спагетти-монстра, и в котором одно дополнительное предложение в описании таски приводит к изменению границ между сервисами. А когда в любой момент микросервис прийдется вносить обратно в тело крупного контекста, программиста который решает отложить вынос, пока страсти с требованиями не улягутся — можно понять. Он знание не берет, а является единственным в системе источником знаний о юзерах.
Микросервисы общая теория и микросервисы на бекэнде
У кого нет, тому нечего делать в микросервисах. Если Н не делает документацию — это не проблема концепции, это проблемы того, кто не делает так, как необходимо. Проведу аналогию — если Вы не пристегнулись в машине и подушки безопасности сломали вам шею, то это не повод говорить, что подушки это плохо и машины плохо. На самом деле микросервисы — это очень хороший инструмент. Но использовать их необходимо с полным пониманием что ты хочешь и почему ты это хочешь.а самое главное с понимаем того, чего не надо делать. К примеру — в таком варианте категорически нельзя не писать документацию.
Достоинства и недостатаки использования микросервисов на бекэнде
С фрилансом я дружу очень давно, но также был немалый опыт работы в компаниях. В одной проработал более трёх лет, начинал с простого программиста с зарплатой 2000 грн (это не опечатка, если что). Позже дали админить и нанимать команду, и так шаг за шагом я стал партнёром компании с 50%-й долей и без зарплаты вообще. Как технический директор Сергей отлично организовал работу над проектом мобильного приложения SeshMe, благодаря чему мы всегда получали результат вовремя. Также хотелось бы отметить высокий уровень разработчиков из команды Сергея.
Выводы об использовании микросервисной архитектуре на бекэнде и фронтэнде
В целом микросервисы гораздо лучше подходят для таких сценариев, как веб-сайты электронной коммерции, где возможность контейнеризации всевозможных крупномасштабных наборов данных находится в приоритете. Бессерверные вычисления демонстрируют огромный потенциал в тех случаях, когда речь заходит об оптимизации временных и финансовых затрат на разработку. Более того, выбор бессерверных сервисов позволяет оптимизировать процессы разработки приложений и таким образом повысить результативность других практик по оптимизации бизнес-процессов, включая DevOps и Agile. Нет ничего удивительного в том, что сегодня большинство мобильных приложений предлагает тот или иной функционал текстового чата – для бизнеса, для онлайн-коммерции, для развлечений, или для знакомств. Как обеспечить максимальную скорость, удобство и безопасность общения пользователей в мобильном формате? Мы решили эти задачи, создав свой микросервис чата.
Ни DDD, ни микросервисы не настаивают на горизонтальных отношениях между сервисами/контекстами, и точно так-же как в рамках контекста мы обращаемся к платежной системе, мы можем обратится к лоторейной системе — это к вопросу вложенности. Первое, как правильно заметили выше, довольно реализуется через сторонний security token service (Keycloak, Okta и иже с ними), второе — детали реализации того микросервиса / контекста, к домену которого эти бизнес-правила относятся. Есть отдельный случай с API gateway, которое авторизует, маршрутизирует, и пробрасывает вызовы к микросервисам. Но в таких случаях, обычно, между API gateway и микросервисами бегает какой-нибудь gRPC или Thrift.
Також ви можете залишити питанная або відгук про книгу: Микросервисы. Паттерны разработки и рефакторинга, Ричардсон К.
- Бизнес считает этот компонент самым важным для них т.к.
- А если этот сервис упал или обновляется, вся система встанет колом и путь весь мир подождет.
- Просто это приводит к тому, что люди работают много лет, но не понимают вообще что такое многопоточность и как с ней работать.
- Комбинация коворкинга и компании с обдуманными процессами, демократией по принципу квалификации (т. е. свобода слова тем, кто имеет опыт в вопросе, который решается).
- Глюк или креш обычно отслеживается системами мониторинга и логирования.
С которыми мы можем прогадать(и прогадаем, абстракции протекут обязательно), которые могут измениться потому что «птиц» и «рыб» придется менять на «летающих» и «плавающих». — а такое изменение при ортодоксальном ООП — это переписывание системы практически с нуля. Это вопрос жизненного цикла проекта (если точнее — продукта, а в общем виде «системы» (это если используем системный подход к делу)). В нормальном проекте ролью «программер» не обойдешся, там есть место очень разным ролям в первую очередь тем которые «проектируют», обладают видением «облика продукта», и тому подобное. Но, тут на банальную документацию забивают, не говоря про ее актуализацию (согласно текущим изменениям). Конечно нет универсального решения, но state-данные по производительности лучше не в базу, а в отдельное in memory хранилище ложится.
— бизнесу надо сделать ну очень быстро, а нужных вам людей нет.к примеру у вас стек сервисов на Ruby + Go, а вам закинули ребят, которые на ноде мастера. Поддерживать, если база в бокс не влазит и не шардится. Или приложение сильносвязное, и не влазит в проц.Или — когда 200 человек работают в одном репозитории.
В случае РСУБД надо будет лочить аккаунт юзера до конца операции с момента чтения(lock for update), либо использовать optimistic locking с транзакционным обновлением двух таблиц(Products, Account). В конце выясниться, что надо привлечь магистров сакраальных знаний(aka DBA) что бы разгрести всю эту дичь, что происходит когда бизнесс логика в базе внутри транзакции. У меня монолит и те списания, что я делаю уже внутри begin tran/commit tran в том кейсе, что я описал, а остатки кривые(отрицательные) все равно.
Сравнение в том, что использовать готовый запущенный экземпляр OAuth2 сервиса значительно проще, чем запустить такой же в виде «класса» (те исходников), тк класс требует для запуска ещё и настройки окружения и нетривиальной конфигурации. Там наверно прикол в том, что невозможно ни «взять всё и переписать», ни «распилить на микросервисы», ни «повыкусывать микросервисы». Забавно что большинство статей пропагандирующие микросервисы, приводят один и тот же дурацкий пример с интернет магазином где за юзеров отвечает один микросервис, за обработку заказов другой, за товар третий, за цены четвертый и т.д. Еще более дебильное разбиение на микросервисы сложно придумать, это называется разбить на микросервисы лишь бы разбить. А вот нефиг по каждому чиху микросервис пилить.
Этот подход — не единственный возможный, и уж точно не панацея от плохого кода. Но он поможет вам продвигаться вперед быстрее, чем если вы закопаетесь в микросервисы раньше нужного. Кроме понимания окружения есть тема мониторинга окружения. Она выходит за пределы дискуссии “микросервис vs. монолит”, но мониторинг должен быть в основе инженерных усилий. Вам скорее всего понадобится много информации о разных частях системы чтобы понять, почему одна из частей ведет себя плохо или даже генерирует ошибки. Если у вас налаженная система мониторинга составных частей системы, тогда вы сможете понимать поведение системы при горизонтальном масштабировании.
Если говорить о взаимодействии со сторонними сервисами, то неупорядоченность и разгильдяйство в этом вопросе может существенно ударить, в том числе, и по бюджету разработки. Перечисленное добавляет головной боли не только разработчикам, но и проектным менеджерам. PM-ам даже сложнее, ведь именно менеджеру придется «выруливать» перед клиентом в случае форс-мажора. Чтобы снизить риск появления проблем из-за интеграции со сторонним решением, важно системно подходить к его оценке. Начинать следует с изучения информации о работе внешней системы.
IT курсы онлайн от лучших специалистов в своей отросли https://deveducation.com/ here.