Что значит монолитную структуру: Монолитная vs Микросервисная архитектура

Содержание

Монолитная vs Микросервисная архитектура

Что такое монолитная архитектура?

Монолитное приложение (назовем его монолит) представляет собой приложение, доставляемое через единое развертывание. Таким является приложение, доставленное в виде одной WAR или приложение Node с одной точкой входа.

Пример

Давайте представим классический интернет-магазин. Стандартные модули: UI, бизнес-логика и дата-слой. Возможны способы взаимодействия с сервисом: API REST и веб-интерфейс.

При построении монолита все эти вещи будут управляться внутри одного и того же модуля. Я не написал «один и тот же процесс», так как это было бы неверно для сценариев, в которых несколько экземпляров нашего модуля будут работать для более высоких нагрузок.

Рассмотрите пример на следующем рисунке, где все части находятся в одном и том же модуле развертывания:

Достоинства

Большим преимуществом монолита является то, что его легче реализовать. В монолитной архитектуре вы можете быстро начать реализовывать свою бизнес-логику, вместо того чтобы тратить время на размышления о межпроцессном взаимодействие.

Еще одна вещь — это сквозные (E2E) тесты. В монолитной архитектуре их легче выполнить.

Говоря об операциях, важно сказать, что монолит прост в развертывании и легко масштабируется. Для развертывания вы можете использовать скрипт, загружающий ваш модуль и запускающий приложение. Масштабирование достигается путем размещения Loadbalancer перед несколькими экземплярами вашего приложения. Как вы можете видеть, монолит довольно прост в эксплуатации.

Теперь давайте рассмотрим негативный аспект монолитной архитектуры.

Недостатки

Монолиты, как правило, перерождаются из своего чистого состояния в так называемый «большой шарик грязи». Вкратце это описывается как состояние, возникшее, потому что архитектурные правила были нарушены и со временем компоненты срослись.

Это перерождение замедляет процесс разработки: каждую будущую функцию будет сложнее развивать. Из-за того что компоненты растут вместе, их также необходимо менять вместе. Создание новой функции может означать прикосновение к 5 различным местам: 5 мест, в которых вам нужно написать тесты; 5 мест, которые могут иметь нежелательные побочные эффекты для существующих функций.

Ранее я говорил, что в монолите легко масштабировать. Это действительно так до тех пор, пока он не перерастёт в «большой шарик грязи», как упоминалось ранее. Масштабирование может быть проблематичным, когда только одной части системы требуются дополнительные ресурсы, ведь в монолитной архитектуре вы не можете масштабировать отдельные части вашей системы.

В монолите практически нет изоляции. Проблема или ошибка в модуле может замедлить или разрушить все приложение.

Строительство монолита часто протекает с помощью выбора основы. Отключение или обновление вашего первоначального выбора может быть затруднительным, потому что это должно быть сделано сразу и для всех частей вашей системы.

Что такое микросервисная архитектура?

В микросервисной архитектуре слабо связанные сервисы взаимодействуют друг с другом для выполнения задач, относящихся к их бизнес-возможностям.

Микросервисы в значительной степени получили свое название из-за того, что сервисы здесь меньше, чем в монолитной среде. Тем не менее, микро — о бизнес-возможностях, а не о размере.

По сравнению с монолитом в микросервисах у вас есть несколько единиц развертывания. Каждый сервис развертывается самостоятельно.

Пример

Давайте вновь рассмотрим в качестве примера Интернет-магазин.

Как и раньше, у нас есть: UI, бизнес-логика и дата-слой.

Здесь отличие от монолита состоит в том, что у всех вышеперечисленных есть свой сервис и своя база данных. Они слабо связаны и могут взаимодействовать с различными протоколами (например, REST, gRPC, обмен сообщениями) через свои границы.

На следующем рисунке показан тот же пример, что и раньше, но с разложением на микроуслуги.

Каковы преимущества и недостатки этого варианта?

Достоинства

Микросервисы легче держать модульными. Технически это обеспечивается жесткими границами между отдельными сервисами.

В больших компаниях разные сервисы могут принадлежать разным командам. Услуги могут быть повторно использованы всей компанией. Это также позволяет командам работать над услугами в основном самостоятельно. Нет необходимости координировать развертывание между командами. Развивать сервисы лучше с увеличением количества команд.

Микросервисы меньше, и благодаря этому их легче понять и проверить.

Меньшие размеры помогают, когда речь идет о времени компиляции, времени запуска и времени, необходимом для выполнения тестов. Все эти факторы влияют на производительность разработчика, так как позволяют затрачивать меньше времени на ожидание на каждом этапе разработки.

Более короткое время запуска и возможность развертывания микросервисов независимо друг от друга действительно выгодны для CI / CD. По сравнению с обычным монолитом он намного плавнее.

Микросервисы не привязаны к технологии, используемой в других сервисах. Значит мы можем использовать лучшие технологии подгонки. Старые сервисы могут быть быстро переписаны для использования новых технологий.

В микросервисах изолируемые разломы лучше по сравнению с монолитным подходом. Хорошо спроектированная распределенная система переживет сбой одного сервиса.

Недостатки

Все звучит довольно хорошо, но есть и недостатки.

Распределенная система имеет свою сложность: в ней вам приходится иметь дело с частичным отказом, более затруднительным взаимодействием при тестировании (тесты E2E), а также с более высокой сложностью при реализации взаимодействия между сервисами.

Транзакции легче проводить в монолите. Решением этой проблемы на микросервисах является Saga Pattern. Хорошее решение, но все же слишком громоздкое для реализации на практике.

Существуют эксплуатационные накладные расходы, а множество микросервисов сложнее в эксплуатации, чем несколько экземпляров сигнального монолита.

Помимо вышеперечисленных сложностей, для микросервисов также может потребоваться больше оборудования, чем для традиционных монолитов. Иногда микросервисы могут превзойти один монолит, если есть его части, которые требуют масштабирования до предела.

Изменения, затрагивающие несколько сервисов, должны координироваться между несколькими командами, а это может быть сложно, если команды еще не имели контактов.

Заключение

Все зависит от вашей организационной структуры. У вас есть 6 команд, которые будут работать над одним продуктом? Микросервисы могут подойти.

У вас есть команда из 3 разработчиков? Вероятно, они будут хорошо строить и поддерживать монолит.

Другими факторами являются скорость изменения и сложность. Высокие темпы изменений и высокая сложность могут быть факторами, которые заставляют выбрать архитектуру микросервиса.

Напротив, когда вы не очень хорошо знакомы с предметной областью, начать с монолита может быть полезно. Просто сделайте себе одолжение и постарайтесь сохранить его модульным. Это облегчит задачу, если вы когда-нибудь решите разделить свой монолит на несколько сервисов.

Монолитные системы

В общем случае «структура» монолитной системы представляет собой отсутствие структуры (рисунок 3). ОС написана как набор процедур, каждая из которых может вызывать другие, когда ей это нужно. При использовании этой техники каждая процедура системы имеет хорошо определенный интерфейс, и каждая может вызвать любую другую при необходимости.

Рис. 3

Монолитная ОС собирается из программных модулей и затем компилируется как единая система. И хотя как программа такая СОС может и быть модульной, на практике взаимодействие ее процедур происходит в единой области видимости и любая процедура может вызвать любую.

  1. Многоуровневые системы

При структуризации от монолитных систем переходят к многоуровневым. Уровни образуются группами функций операционной системы — файловая система, управление процессами и устройствами и т.п. Каждый уровень может взаимодействовать только со своим непосредственным соседом — выше- или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням (рисунок 4).

Рис. 4

Хотя такой структурный подход на практике обычно работал неплохо, сегодня он все больше воспринимается монолитным, старые ОС UNIXс многоуровневой структурой сейчас характеризуются как ОС с монолитными ядрами. В системах, имеющих многоуровневую структуру было нелегко удалить один слой и заменить его другим в силу множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требовало хорошего знания операционной системы и массы времени. Когда стало ясно, что операционные системы живут долго и должны иметь возможности развития и расширения, монолитный подход сменился моделью клиент-сервер с тесно связанной с ней концепция микроядра.

  1. Модель клиент-сервер и микроядра

Применительно к структурированию ОС идея использования взаимодействия клиент-сервер и микроядра состоит в разбиении ее на несколько процессов — серверов, каждый из которых выполняет отдельный набор сервисных функций — например, управление памятью, управление файловой системой. Каждый сервер выполняется в пользовательском режиме. Клиент, которым может быть либо другой компонент ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (называемое здесь микроядром), работая в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения (рисунок 5).

Рис.

5

Подход с использованием микроядра заменил вертикальное распределение функций операционной системы на горизонтальное. Компоненты, лежащие выше микроядра, хотя и используют сообщения, пересылаемые через микроядро, взаимодействуют друг с другом непосредственно. Это свойство микроядерных систем позволяет естественно использовать их в распределенных средах. При получении сообщения микроядро может его обработать или переслать другому процессу. Поскольку для микроядра безразлично, поступило ли сообщение от локального или удаленного процесса, подобная схема передачи сообщений является удобной основой удаленных вызовов процедур (RPC — remote procedure calls). Микроядро занимается основной функцией ОС – управлением ресурсами, зачастую оно берет на себя функции взаимодействия с аппаратурой, хотя предпочтительно в рамках микроядра выделять машиннозависимый функции в отдельные подмодули для улучшения переносимости. Различные варианты реализации модели клиент-сервер в структуре ОС могут существенно различаться по объему работ, выполняемых в режиме ядра.

На одном краю этого спектра находится разрабатываемая фирмой IBM на основе микроядра Mach операционная система Workplace OS, придерживающаяся чистой микроядерной доктрины, состоящей в том, что все несущественные функции ОС должны выполняться не в режиме ядра, а в непривилегированном (пользовательском) режиме. На другом — Windows NT, в составе которой имеется исполняющая система (NT executive), работающая в режиме ядра и выполняющая функции обеспечения безопасности, ввода-вывода и другие.

Микроядерный подход при проектировании архитектуры ОС требует ответа на вопрос, какие функции ОС следует оставить в ядре, а какие вынести из него. Модули, содержащиеся в ядре, нельзя заменить без его перекомпиляции. Причем если само микроядро является плохо структурированным, то замена одного его модуля на другой (например замена планировщика задач) может стать очень трудной задачей. С другой стороны хотя вынос за пределы ядра не основных и динамически изменяемых функций хотя и делает ОС хорошо масштабируемой и более надежной (ядро обычно выступает как единый домен сбоев, в то время как гибель внешнего сервера ОС может пережить безболезненно), это сказывается на ее производительности.

В состав микроядра обычно не включают сетевые функции, пользовательский интерфейс, файловую систему, а лишь основные функции управления ???

Что такое монолитная конструкция?

Что означает монолитная конструкция?

Монолитная конструкция в контексте восстановления канализации представляет собой конструкцию люка, выполненную в виде единого водонепроницаемого блока. Компонент изготовлен таким образом, что конечный продукт не имеет швов или стыков, которые могут привести к утечкам или порче. Люки являются неотъемлемой частью канализационной системы и должны быть хорошего качества, без дефектов, которые могут вызвать проблемы притока/инфильтрации или проникновения корней деревьев.

Реклама

Trenchlesspedia Объясняет монолитную конструкцию

Традиционные бетонные люки изготавливаются и устанавливаются в виде сегментов, которые требуют нанесения водонепроницаемых герметизирующих материалов на основание, и каждый сегмент последовательно размещается. Существует вероятность выхода из строя пломбы, так как процедура требует времени и возможна человеческая ошибка. Поскольку окружающая среда люка является коррозионно-активной по своей природе, высока вероятность выхода из строя люка из-за просачивания через стыки. Монолитные смотровые колодцы изготавливаются из бетона и стекловолокна на заводах, где возможно изготовление единого водонепроницаемого блока. Эти конструкции легкие и требуют меньшего количества персонала для установки, что снижает общую стоимость реабилитации.

Реклама

Поделись этим термином

Связанные термины
  • Ремонт люков
  • Восстановление канализации
  • Бетон, армированный стекловолокном
  • Инфильтрация/приток
  • Герметизация швов
Похожие материалы
  • Мы должны копать: ремонт люков в небольшом городе
  • Взгляд на реконструкцию структурных люков
  • Сложный мир канализационных сетей
  • Нужны ли обходы дорожного движения для бестраншейных проектов?
  • Замена футеровки труб: бестраншейная альтернатива замене труб
  • Как сделать ставку на этот бестраншейный городской проект
Теги
Материалы для труб, отвержденных на местеБестраншейное строительствоБестраншейная реабилитация

Актуальные статьи

Бестраншейное строительство

Понимание 4 этапов исследования места

Бестраншейная реабилитация

5 лучших способов соединения труб, на которые всегда можно положиться

Бестраншейная реабилитация

Как узнать, есть ли в вашем доме асбестоцементные трубы

Бестраншейное строительство

Бентонит и использование бурового раствора в бестраншейных проектах

Монолитное определение и значение — Merriam-Webster

монолитный ˌmä-nə-li-thik 

1

а

: относящийся к монолиту или напоминающий его : огромный, массивный

большое монолитное здание

влиятельная монолитная организация

б(1)

: из монокристалла

монолитный кремниевый чип

(2)

: производится в монолитной микросхеме или на ней (см.

запись микросхемы 1, смысл 6b)

монолитная схема

2

а

: цельнолитые

монолитная бетонная стена

б

: формованные или состоящие из материала без стыков или швов

покрытие пола монолитное

с

: состоящий или состоящий из одного блока

3

а

: , составляющие массивное недифференцированное и часто жесткое целое

монолитное общество

б

: проявляющие или характеризующиеся часто жестко фиксированной однородностью

монолитное партийное единство

монолитно

ˌmä-nə-li-thi-k(ə-)lē

наречие

Примеры предложений

Недавние примеры в Интернете Вся Красота и Кровопролитие принимают то же самое напряжение, между людьми и представляет собой монолитную мощь и раскрывает ее еще более тщательно и вызывающе. К. Остин Коллинз, Rolling Stone , 28 ноября 2022 г. В большой кухне монолитных острова в стиле , стойки и барная стойка. Эмма Рейнольдс, Robb Report , 25 ноября 2022 г. Android App Bundle были анонсированы с Android 9в 2018 году как способ сэкономить место на устройстве, разбив приложение на модули, а не один большой монолитный APK (старый формат приложения Android) со всеми возможными фрагментами данных. Рон Амадео, Ars Technica , 22 ноября 2022 г. Но новая романтическая комедия Netflix знаменует собой важный шаг для когда-то монолитной звезды , которая не снималась в крупных фильмах почти 10 лет. Джоуи Нолфи, 9 лет0163 EW.com , 11 ноября 2022 г. Конечно, должен быть лучший способ, чем продолжать создавать монолитных веб-сайтов, которые хранят все свои данные и обработку на одном сервере (подверженном взлому и проблемам с ресурсами). Джастин Кук, Forbes , 10 ноября 2022 г. Холокост — это не монолитная история, а множество нарративов, каждый из которых сформирован политикой, социальным духом времени и личными действиями: кто что сказал, кому, когда. Джуди Батальон, 9 лет0163 Washington Post , 8 ноября 2022 г. Средства массовой информации могут сделать так, чтобы опыт чернокожих выглядел монолитным , но в игре так много пересечений. Кэндис Бонд-Терио, SELF , 8 ноября 2022 г. Лидеры сообщества американцев азиатского происхождения и жителей тихоокеанских островов говорят, что такие стратегии играют на стереотипах и относятся к сообществу как к монолитному . Время , 17 октября 2022 г. Узнать больше

Эти примеры предложений автоматически выбираются из различных онлайн-источников новостей, чтобы отразить текущее использование слова «монолитный». Мнения, выраженные в примерах, не отражают точку зрения Merriam-Webster или ее редакторов. Отправьте нам отзыв.

История слов

Этимология

см. монолит

Первое известное использование

1825, в значении, определенном в смысле 1a

Путешественник во времени

Первое известное использование монолитного было в 1825 г.

Посмотреть другие слова того же года

Словарные статьи Рядом с

монолитный

монолит

монолитный

монолитность

Посмотреть другие записи поблизости

Процитировать эту запись «Монолитный».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *