mirror of
https://github.com/goavengers/go-interview.git
synced 2026-02-04 12:46:20 +00:00
Merge pull request #7 from screamo-boop/patch-1
Добавил немного про микросервисы
This commit is contained in:
@@ -1,2 +1,65 @@
|
|||||||
### <a name="microseivice_questions"></a>Вопросы про микросервисы
|
# <a name="microseivice_questions"></a>Вопросы про микросервисы
|
||||||
|
|
||||||
|
## Что такое микросервисная архитектура? (кратко)
|
||||||
|
|
||||||
|
Микросервисная архитектура — это способ разработки программного обеспечения, при котором большое приложение разбивается на небольшие, независимо работающие модули или сервисы. Каждый микросервис отвечает за выполнение конкретной задачи или функции и может быть разработан, развернут и обновлен независимо от остальных. Эти сервисы общаются друг с другом с помощью легковесных протоколов, чаще всего через REST API.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Чем отличается микросервис от монолита?
|
||||||
|
|
||||||
|
|
||||||
|
Приложение-микросервис состоит из множества маленьких, независимо работающих частей (микросервисов), каждая из которых выполняет свою уникальную функцию и общается с другими через сетевые запросы.
|
||||||
|
|
||||||
|
Приложение-монолит представляет собой единый неделимый блок, где все функции встроены в одно целое и работают в рамках одного процесса.
|
||||||
|
|
||||||
|
Основные отличия:
|
||||||
|
* Масштабируемость: Микросервисы можно масштабировать независимо друг от друга, в то время как монолит требует масштабирования целиком.
|
||||||
|
* Гибкость разработки: В микросервисной архитектуре команды могут разрабатывать, обновлять и развертывать каждый сервис независимо, что обеспечивает большую гибкость. В монолитной архитектуре изменения в одной части приложения могут повлиять на всё приложение.
|
||||||
|
* Технологическая гибкость: Микросервисы могут быть написаны на разных языках программирования и использовать разные технологические стеки, в то время как монолит, как правило, ограничен единым стеком технологий.
|
||||||
|
* Отказоустойчивость: Ошибка в одном микросервисе обычно не влияет на работу остальных, тогда как в монолитном приложении ошибка может привести к сбою всего приложения.
|
||||||
|
* Сложность управления: Микросервисные архитектуры могут быть сложнее в управлении и мониторинге из-за их распределенного характера, в то время как управление монолитным приложением проще из-за его централизованности.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Опишите плюсы и минусы двух концепций
|
||||||
|
|
||||||
|
### Монолитная архитектура
|
||||||
|
|
||||||
|
#### Достоинства:
|
||||||
|
|
||||||
|
* Простота разработки и развертывания: Все части приложения тесно интегрированы, что делает процесс разработки и тестирования относительно простым.
|
||||||
|
* Простота управления: У вас всего одно приложение для мониторинга и управления, а не несколько микросервисов.
|
||||||
|
* Понятность: Новым разработчикам часто проще понять и внести свой вклад в со структурированное монолитное приложение.
|
||||||
|
|
||||||
|
#### Недостатки:
|
||||||
|
|
||||||
|
* Масштабируемость: Монолитные приложения сложнее масштабировать, особенно для обработки большого количества запросов.
|
||||||
|
* Гибкость разработки: Большие изменения могут повлиять на весь проект, затрудняя быстрое внесение изменений.
|
||||||
|
* Технологическая привязанность: Проекты замкнуты на одном технологическом стеке, что ограничивает внедрение новых технологий.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Микросервисная архитектура
|
||||||
|
|
||||||
|
Достоинства:
|
||||||
|
|
||||||
|
* Масштабируемость: Легко масштабировать и обновлять отдельные части системы независимо.
|
||||||
|
* Гибкость разработки: Команды могут разрабатывать, тестировать и развертывать микросервисы независимо друг от друга.
|
||||||
|
* Использование разных технологий: Возможность использовать для каждого микросервиса наиболее подходящий язык программирования и технологический стек.
|
||||||
|
|
||||||
|
Недостатки:
|
||||||
|
|
||||||
|
* Сложность управления: Управление множеством микросервисов и их взаимосвязями может быть сложным.
|
||||||
|
* Проблемы с безопасностью и мониторингом: Безопасность и мониторинг в распределенной системе требуют более сложного подхода.
|
||||||
|
* Сложности с координированием данных: Обеспечивать целостность и согласованность данных между различными микросервисами может быть нетривиальной задачей.
|
||||||
|
|
||||||
|
|
||||||
|
## Полезные ссылки
|
||||||
|
|
||||||
|
[Просто о микросервисах](https://habr.com/ru/companies/raiffeisenbank/articles/346380/)
|
||||||
|
|
||||||
|
[Монолитная и микросервисная архитектура. Сравнение](https://habr.com/ru/companies/haulmont/articles/758780/)
|
||||||
|
|
||||||
|
[Введение в Cloud native. (цикл статей)](https://habr.com/ru/articles/758250/)
|
||||||
|
|||||||
Reference in New Issue
Block a user