Notes by Peter Galonza(Пётр Галонза)
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Micro services and frontends

MicroFrontends

  • Преимущества
    • Организационная гибкость
    • Свобода выбора технологического стека
    • Удобство управления кодовой базой
    • Управляемое масштабирование
    • Отказоустойчивость
    • Time to Market
  • Не подходящее решение
    • Простое приложение
    • Ограниченная функциональность
    • Ограниченный ресурс разработки
    • Тесносвязанные компоненты
    • Minimum Viable Produrct или Proof Of Concept
    • Повышенная требовательность к производительности
    • Организационные и культурные ограничения комании
    • Недостаточность инфраструктуры, процессов и инструментов CI/CD
  • Компоненты
    • Microfrontend-модули
    • Слой композиции
      • Гибридная
      • Серверная композиция
        • Reverce Proxy(Nginx? HAProxy)
        • Backend for Frontend
          • Подготовка данных под клиента
          • Упрощение логики клиента
          • Увеличение производительности
          • Повышение безопасности
      • Клиентская композиция
        • Single SPA
        • Module Federation
    • Маршрутизация
      • Гибридная
      • На стороне сервера
      • На стороне клиента
      • Динамическая
    • Слой коммуникации
      • API
        • Взаимодействие исключительно с backend
        • Простой обмен данными
        • Высокие требование к производительности и масштабируемости
      • Паттерн Publisher/Subscriber
        • Отсутсвие прямых зависимостей
        • Еvent-driven architecture
        • Независимое внедрение
      • Global state or Shared state
        • Тесная связь между разными частями приложения
        • Согласованность в разных частях приложения и последовательный пользовательский опыт
        • Слажные требования к управлению состояниями
  • Стратегии
    • Вертикальная нарезка
    • Автономность команд
    • Изоляция
  • Методы интеграции
    • Build time
      • Упращенное внедрение
      • Тесное взаимодействие функций и компонентов
      • Прозводительность
    • Run time
      • Независимость внедрения модулей
      • Динамическо обновление модулей(Разработка)
      • Масштабирование

MicroServices

  • Strangler Fig
    • Преимущества
      • Постепенная замена монолита
      • Снижение рисков
      • Инкрементная доствака новых функций
      • Решение проблемы технического долга
    • Реализация
      1. Определение доменной области
        • Техники
          • Domain-Driven Design
            • Области
              • Домен
              • Поддомен
              • Контекст
            • Проектирование
              • Стратегическое
                • Bounded Context
                • Context Map
              • Тактическое
                • Entities
                • Value Objects
                • Aggregates
                • Repositories
                • Services
            • Выделение доменов
              1. Анализ бизнеса и требований
              2. Выделение доменов
              3. Разделение на поддомены
              4. Определение контекстов
              5. Создание контекстных карт
              6. Итеративное уточнение
          • Технический анализ
          • Анализ производительности
        • Приоритизация
          • Бизнес-влияние
          • Техническое влияние
          • Клиентское влияние
          • Методы
            • MoSCoW
              • Must have
              • Should have
              • Could have
              • Won’t have
            • Матрица Эйзенхауэра
              • Срочно и важно
              • Не срочно, но важно
              • Срочно, но не важно
              • Не срочно и не важно
            • Модель Кано
              • Must-Have
              • Performance
              • Excitement
              • Indifferent
              • Reverse
            • Weighted Scoring Model
            • ICE Scoring
              • Impact
              • Confidence
              • Effort, ICE
            • Value vs. Effort
            • Cost of Delay
      2. Проектирование и разработка новых сервисов
      3. Мониторинг и верификация
        • Application perfomance monitoring
        • Централизованное логирование
        • Мониторинг инфраструктуры
        • A/B-тестирование
        • Автоматизированное тестирование
      4. Переклюяение трафика
        • Маршутизация
          • Reverc proxy
          • API Gateway
          • Service Mesh
        • Anti-corruption layer (ACL)
          • Паттерны
            • Facade
            • Adapter
          • Преимущества
            • Изоляция от сложностей и проблем
            • Управление маршрутизацией запросо
            • Адапация днных под различные требования
            • Инкапсуляция монолитной системы
  • Road Map
    • Граицы сервисов
    • Методы взаимодействия
      • Синхронное взаимодействие
        • REST
        • GRPC
      • Асинхронное ывзаимодействие
        • Event-Driven Architecture
    • Управление данными
      • Стратегии обеспечения согласованности данных
        • Конечная согласованность
        • Строгая согласованность
        • Партицирование данных
      • Распределённые транзакции
        • Протокол двухфазной фиксации (2 Phase Commit, 2PC)
        • Паттерн Saga
    • Стратегии развёртывания
      • Blue-Green
      • Canary
      • Rolling
    • Балансировки нагрузки
      • Стратегии
        • Round Robin
        • Least Connections
        • IP Hash, Sticky sessions
        • Weighted Round Robin
        • Random distribution
        • Least Response Time
        • Least Bandwidth
    • Устойчивость к сбоям
    • Масштабируемость
      • Репликация
      • Кэширование
      • Шардирование и партиционирование
        • Партиционирование
          • Вертикальное
          • Горизонтальное
        • Шардирование
          • Хэшированное
          • Диапазонное
          • Динамическое
          • Геошардинг
        • Маршрутизация
          • Средствами СУБД
          • Router-сервис
          • На стороне клиента
    • Безопасность
    • Мониторинг и наблюдение
    • Хранение данных
    • API-менеджмент
    • Тестирование и валидация
    • DevOps-практики
    • Версионирование и совместимость
  • Life Cicle
    • Проектирование
    • Разработка
    • Тестирование
    • Развёртывание
    • Мониторинг и поддержка
    • Масштабирование
    • Обновление и улучшение
    • Вывод из эксплуатации

Patterns

  1. Application patterns
    • Database per Service
    • Service per Team
    • Event Sourcing
    • CQRS
    • Saga
      • Типы реализации
        • Orchestration
          • Сложные бизнес-процессы
          • Потребность в централизованном управлении
          • Транзакционное согласование
          • Сложная бизнес-логик
        • Choreography
          • Простые взаимодействия
          • Независимые микросервисы
          • В приоритете гибкость и масштабируемость
          • Событийно-ориентированная архитектура
      • Обрабока ошибок и компенсация
        • Компенсационные транзакции
        • Повторные попытки
        • Тайм-ауты и дедлайны
        • Circuit Breaker
        • Событийно-ориентированная обработка ошибок
        • Системы мониторинга и алертов
      • Реализация
        • Анализ бизнес-процесса и определение шагов Saga
        • Проектирование микросервисов
        • Управление состоянием и взаимодействием микросервисов
        • Реализуйте действия и компенсирующие действия
        • Логирование и мониторинг
        • Тестирование
  2. Application infrastructures patterns
    • Distributed Tracing
    • Audit Logging
    • API Gateway
  3. Infrastructures patterns
    • Service Discovery,
    • Service Mesh
    • Service Registry