digital-garden/source/книги/книготека/Микросервисы. Паттерны разработки и рефакторинга.md

63 lines
4.9 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
tags:
- content/book
date: 2024-01-11
author:
- "[[Ричардсон Крис]]"
linked:
zero-link:
- "[[00 Разработка]]"
ISBN: 978-5-4461-0996-8
---
## Описание
Если вам давно кажется, что вся разработка и развертывание в вашей компании донельзя замедлились — переходите на микросервисную архитектуру. Она обеспечивает непрерывную разработку, доставку и развертывание приложений любой сложности.
Книга, предназначенная для разработчиков и архитекторов из больших корпораций, рассказывает, как проекnироваь и писать приложения в духе микросервисной архитектуры. Также в ней описано, как делается рефакторинг крупного приложения — и монолит превращается в набор микросервисов.
## Главная идея книги
## Тезисы
# Литературные заметки
## Побег из монолитного ада
### Медленным шагом в монолитный ад
Пример приложения, на основе которого рассматриваются проблемы монолитов: FTGO - популярный сервис по заказу еду.
Клиенты заказывают еду в местных ресторанах на сайте компании или с помощью мобильного приложения. FTGO координирует сеть курьеров. Также компания отвечает за оплату услуг курьеров и ресторанов. Рестораны могут редактировать меню и управлять заказами.
#### Архитектура приложения FTGO
Архитектура представляет собой типичную [гексогональную архитектуру](Гексогональная%20архитектура.md). Не смотря на логически модульную структуру, приложение упаковывается в единый WAR-файл.
Так как приложение представляет собой [монолит](Монолитная%20архитектура.md), состоящий из единого файла WAR, написанное с использование уже устаревших фремворков, которое с годами стало большим и сложным и превратилось в [Большой комок грязи](Большой%20комок%20грязи.md).
![](Pasted%20image%2020240404203816.png)
В итоге несмотря на использование гибких методик планирования, темп разработки продолжил замедляться.
#### Жизнь в монолитном аду
Популярность FTGO привела к тому, что оно выросло из монолитной архитектуры. В итоге команда разработки оказалась в [монолитном аду](Монолитный%20ад.md).
Команда приняла решение, что приложение нужно переводить на [микросервисную архитектуру](Микросервисная%20архитектура.md).
Программная архитектура имеет мало общего с функциональными требованиями. Их можно достичь используя любую архитектуру. А вот с не функциональными требованиями сложнее.
### Микросервисная архитектура спешит на помощь
#### Куб масштабирования и микросервисы
![Куб масштабирования приложений](Куб%20масштабирования%20приложений.md)
#### У каждого сервиса есть своя база данных
![Database per service](Database%20per%20service.md)
#### Микросервисная архитектура для FTGO
Применив к FTGO декомпозицию получаем следующую архитектуру:
![](Pasted%20image%2020240412211723.png)
- Order — управляет заказами;
- Delivery — управляет доставкой заказов из ресторана клиентам;
- Restaurant — хранит информацию о ресторанах;
- Kitchen — отвечает за подготовку заказов;
- Accounting — управляет биллингом и платежами.