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
- Обновляет некоторые поля ресурса (не все)
- Неидемпотентный
Безопасность
Cookie
- Текст, хранящийся в браузере и идентифицирующий пользователя
CSRF token
- Уникальная строка с серва, генерируемая для каждой сессии и отправляемая при сабмите формы, чтобы была защита от CSRF
JWT
- Все в токене
OAuth
- Разные провайдеры авторизации
Basic
- Авторизация по логин/паролю