Skip to content

Web

Протоколы

TCP

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

UDP

  • Ненадежный, без подключения протокол
  • Не гарантирует доставку пакетов
  • Более быстрый по сравнению с TCP
  • Часто используется для передачи данных в реальном времени

HTTP

  • Протокол без шифрования
  • Используется для передачи данных через Интернет
  • Основан на модели запрос-ответ

HTTPS

  • Защищенная версия HTTP
  • Добавляет слой шифрования SSL/TLS
  • Обеспечивает конфиденциальность и целостность данных

AMQP

  • AMQP (Advanced Message Queuing Protocol)
  • Предоставляет надежную доставку сообщений
  • Поддерживает различные модели обмена сообщениями (публикация-подписка, очередь)
  • Широко используется в микросервисных архитектурах
  • Обеспечивает масштабируемость и отказоустойчивость

WebSocket

  • Позволяет устанавливать постоянное соединение между клиентом и сервером
  • Обеспечивает двунаправленную передачу данных в режиме реального времени
  • Часто используется для создания интерактивных веб-приложений
  • Эффективен для приложений, требующих частого обновления данных

RPC

  • Вызов кода на удаленной машине

Плюсы

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

Минусы

  • Менее стандартизированное API
  • Сложнее масштабироваться горизонтально
  • Может быть сложнее в отладке и мониторинге
  • Зависимость от конкретной реализации RPC
  • Требует согласованности

REST

  • клиент-сервер
  • Стейтлесс - сервер не хранит контекст запросов
  • Кешируемость - запросы могут быть кешируемые
  • Единообразие ресурсов и использование хттп методов
  • Слоеная архитектура
  • (опц.) Код по требованию - сервер может прислать код, который может выполнить клиент

SOAP

  • XML
  • Stateful
  • Сильная типизация
  • Медленнее

GraphQL

  • Язык запросов
  • Сложность

Under vs over fetching

  • Under-fetching - когда серв мало данных прислал клиенту
    • Напр. не список сущностей, а список айди
    • Лечится денормализацией
  • Over-fetching - когда серв много данных прислал клиенту
    • Напр. список сущностей
    • Лечится пагинацией

HTTP-методы

PUT

  • Обновление ресурса целиком
  • Идемпотенность

PATCH

  • Обновляет некоторые поля ресурса (не все)
  • Неидемпотентный

Безопасность

  • Текст, хранящийся в браузере и идентифицирующий пользователя

CSRF token

  • Уникальная строка с серва, генерируемая для каждой сессии и отправляемая при сабмите формы, чтобы была защита от CSRF

JWT

  • Все в токене

OAuth

  • Разные провайдеры авторизации

Basic

  • Авторизация по логин/паролю

Материалы