Вопрос проверяет понимание базовых архитектурных подходов к разработке ПО, их сильных и слабых сторон, что необходимо для принятия обоснованных решений на старте проекта.
Монолитная архитектура — это классический стиль построения приложений, где все функциональные модули (например, пользовательский интерфейс, бизнес-логика, доступ к данным) объединены в единую кодовую базу и исполняемый процесс. Это похоже на один большой блок кода, который развёртывается целиком.
Рассмотрим простое веб-приложение на Node.js и Express, где маршруты, логика и доступ к БД находятся в одном файле.
// app.js - пример монолитного приложения
const express = require('express');
const app = express();
// Маршрут для пользователей (часть бизнес-логики)
app.get('/users', (req, res) => {
// Прямой запрос к БД (часть доступа к данным)
db.query('SELECT * FROM users', (err, results) => {
if (err) {
console.error('Database error:', err); // Ошибка здесь может повлиять на всё приложение
res.status(500).send('Server Error');
return;
}
res.json(results);
});
});
// Маршрут для заказов
app.post('/orders', (req, res) => {
// Вся логика создания заказа в одном месте
// ...
});
app.listen(3000, () => console.log('Monolith running on port 3000'));
Этот код прост для понимания, но по мере добавления функций файл будет расти, а изменения в логике заказов потребуют перезапуска всего сервера.
Вывод: Монолитная архитектура отлично подходит для небольших проектов, прототипов или приложений с чётко определёнными и стабильными требованиями, где важна скорость начальной разработки. Её стоит выбирать, когда команда маленькая, а сложность распределённых систем (микросервисов) не оправдана.