--- 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 — управляет биллингом и платежами.