QA Engineer
  • Введение
  • FAQ
    • Качества и навыки, которыми нужно обладать тестировщику?
    • Что должен знать и уметь Midle? Что спросят на собеседовании?
    • Как происходит процесс найма?
    • Как проходить собеседование?
    • Ошибки в работе у начинающих тестировщиков
    • Как взаимодействовать с коллегами?
  • МОДУЛЬ 1. ТЕОРИЯ ТЕСТИРОВАНИЯ
    • Общее понимание тестирования
  • Виды тестирования
    • Функциональное тестирование
    • Нефункциональное тестирование
    • Тестирование связанное с изменениями
  • Уровни тестирования
  • Методы тестирования
    • Black box testing
    • White Box Testing
    • Grey box testing
  • Тест-Дизайн
  • Тестовая документация
    • Требования
      • Тестирование требований
    • Тест-план
    • Чек-лист
    • Тест-кейс
    • Баг-репорт
  • ЗАДАНИЕ. ТЕСТ
  • МОДУЛЬ 2. API (BackEnd)
    • API. Что это?
  • Архитектуры ПО
    • Монолитная архитектура
    • Микросервисная архитектура
  • Брокеры сообщений
    • Kafka
  • Клиент-серверное взаимодействие
  • Тестирование API (BackEnd)
    • REST и SOAP
    • jRPC
    • JSON
    • XML
    • Протоколы
    • Коды состояния ответов HTTP(S)
    • Логирование (Logs)
  • Swagger
  • Postman
  • ЗАДАНИЕ. ТЕСТИРОВАНИЕ API
  • МОДУЛЬ 3. FRONTEND и WEB
    • Теория FrontEnd
    • Элементы интерфейса сайта
  • Верстка
  • Основы HTML
  • CSS
  • Сети и около них
    • Идентификация ресурсов в сети (Identifying resources on the Web)
    • Веб-сервис (WS - Web service)
    • Сокет/веб-сокет (socket/websocket)
    • Рендеринг в интернете (Rendering on the Web)
  • DevTools
    • Network
    • Application
    • Source
    • Elements
    • Console
    • Performances
  • Кроссбраузерность
  • Сетевые данные
    • Сache
    • Сookie
  • МОДУЛЬ 4. SDLC и STLC
    • Жизненный цикл разработки SDLC
    • Жизненный цикл тестирования STLC
    • Модели разработки ПО
      • «V-Model»
      • «Waterfall Model» (каскадная модель или «водопад»)
      • «Agile Model» (гибкая методология разработки)
    • Agile
    • Scrum
    • Подходы к разработке/тестированию
  • МОДУЛЬ 5. БАЗЫ ДАННЫХ.
    • Теория
    • Типы БД
      • Реляционные
      • Нереляционные
    • SQL. ОСНОВЫ
      • Работа с Select * From
      • JOIN
    • Задание
  • ALL SOFT (Ознакомление)
    • Jira и Confluence
    • SOAP UI
    • Git
    • Kibana
    • Docker
    • Jenkins
Powered by GitBook
On this page
  1. Архитектуры ПО

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

PreviousАрхитектуры ПОNextМикросервисная архитектура

Last updated 1 year ago

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

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

Пример

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

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

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

Достоинства

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

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

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

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

Недостатки

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

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

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

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

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