Разрабатываешь ли в основном монолиты?

«Разрабатываешь ли в основном монолиты?» — вопрос из категории Архитектура, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример структуры монолита на Laravel:

// app/Http/Controllers/ProductController.php
class ProductController extends Controller
{
    public function index()
    {
        $products = Product::with('category')->paginate(20);
        return view('products.index', compact('products'));
    }
}

Однако, когда система растет и разные её части требуют независимого масштабирования или использования разных технологий, я перехожу к микросервисам. Например, выделяю сервис аутентификации или обработки платежей в отдельный сервис. Ключевой фактор — это компромисс между скоростью разработки и гибкостью масштабирования.