4599. Чем протокол gRPC принципиально отличается от классического REST API при проектировании интеграции?
Anonymous Quiz
92%
gRPC использует бинарный формат Protocol Buffers и HTTP/2, а не текстовый JSON/XML поверх HTTP/1.1
2%
gRPC не поддерживает аутентификацию, в отличие от REST.
4%
gRPC может работать только в рамках синхронного взаимодействия.
1%
gRPC не поддерживает потоковую передачу данных.
👩🏫Объяснение:
gRPC использует бинарный формат Protocol Buffers (protobuf) и HTTP/2, а не текстовый JSON/XML поверх HTTP/1.1
📚 Объяснение: Это основное технологическое отличие, определяющее выбор протокола.
* REST (Representational State Transfer): Чаще использует текстовые форматы (JSON/XML) и стандарт HTTP/1.1, что человекочитаемо, но может быть менее эффективно по размеру и скорости.
* gRPC (Google Remote Procedure Call): Использует бинарный формат protobuf, который компактнее и быстрее сериализуется/десериализуется, а также транспортный протокол HTTP/2, поддерживающий мультиплексирование запросов и уменьшающий задержки.
gRPC отлично поддерживает аутентификацию, оба типа взаимодействия (синхронное и асинхронное) и, что важно, потоковую передачу данных.
📚 Объяснение: Это основное технологическое отличие, определяющее выбор протокола.
* REST (Representational State Transfer): Чаще использует текстовые форматы (JSON/XML) и стандарт HTTP/1.1, что человекочитаемо, но может быть менее эффективно по размеру и скорости.
* gRPC (Google Remote Procedure Call): Использует бинарный формат protobuf, который компактнее и быстрее сериализуется/десериализуется, а также транспортный протокол HTTP/2, поддерживающий мультиплексирование запросов и уменьшающий задержки.
gRPC отлично поддерживает аутентификацию, оба типа взаимодействия (синхронное и асинхронное) и, что важно, потоковую передачу данных.
4600. Каков основной недостаток использования паттерна интеграции «Общая база данных» (Shared Database), когда несколько систем читают и пишут в одну БД?
Anonymous Quiz
4%
Высокая производительность операций чтения.
94%
Нарушение инкапсуляции и сильная связанность систем, усложняет их независимое изменение и эволюцию.
1%
Отсутствие необходимости в создании отдельного интеграционного слоя.
0%
Упрощение процедур резервного копирования данных.
👩🏫Объяснение:
Хотя Shared Database кажется простым решением (вариант C верен как факт, но это преимущество, а не недостаток), он приводит к серьезным архитектурным проблемам:
* Связанность (Coupling): Все системы жестко зависят от одной схемы данных. Изменение таблицы или колонки может сломать несколько систем одновременно.
* Нарушение инкапсуляции: Каждая система имеет прямой доступ к внутренним данным других, что противоречит принципам модульного дизайна.
* Сложность поддержки: Трудно определить, какая система и когда изменила данные, что приводит к сложностям в отладке и обеспечении целостности.
Поэтому данный паттерн считается антипаттерном для интеграции сервисов в современных распределенных системах.
* Связанность (Coupling): Все системы жестко зависят от одной схемы данных. Изменение таблицы или колонки может сломать несколько систем одновременно.
* Нарушение инкапсуляции: Каждая система имеет прямой доступ к внутренним данным других, что противоречит принципам модульного дизайна.
* Сложность поддержки: Трудно определить, какая система и когда изменила данные, что приводит к сложностям в отладке и обеспечении целостности.
Поэтому данный паттерн считается антипаттерном для интеграции сервисов в современных распределенных системах.
4601. Для чего в первую очередь применяется паттерн «Адаптер» при реализации интеграционного решения?
Anonymous Quiz
17%
Для увеличения пропускной способности канала связи между системами.
6%
Для шифрования всех передаваемых данных между системами.
2%
Для автоматического создания документации по API.
75%
Для преобразования интерфейса одной системы в интерфейс, ожидаемый другой системой.
👩🏫Объяснение:
Паттерн Адаптер (Adapter) является одним из ключевых интеграционных паттернов. Он действует как «переходник» или «прослойка» между двумя системами, которые несовместимы на уровне своих API, форматов данных или протоколов.
* Пример: Старая система отправляет данные в фиксированном текстовом формате по FTP, а новая система ожидает JSON через REST API. Адаптер будет слушать FTP, парсить текстовый формат, преобразовывать его в JSON и вызывать REST-эндпоинт новой системы.
Его задача — обеспечить совместимость без изменения кода самих интегрируемых систем. Остальные варианты — задачи других инструментов или паттернов.
* Пример: Старая система отправляет данные в фиксированном текстовом формате по FTP, а новая система ожидает JSON через REST API. Адаптер будет слушать FTP, парсить текстовый формат, преобразовывать его в JSON и вызывать REST-эндпоинт новой системы.
Его задача — обеспечить совместимость без изменения кода самих интегрируемых систем. Остальные варианты — задачи других инструментов или паттернов.
4602. Как практики CI/CD (Continuous Integration / Continuous Delivery) в методологии DevOps помогают управлять интеграциями между сервисами?
Anonymous Quiz
5%
Обеспечивают ручное, но контролируемое развертывание изменений в продакшн.
2%
Позволяют полностью отказаться от написания интеграционных тестов.
80%
Автоматизируют сборку, тестирование и развертывание, позволяя быстро и безопасно вносить изменения.
12%
Концентрируются исключительно на автоматизации процессов разработки, не касаясь этапа тестирования.
👩🏫Объяснение:
В контексте интеграции множество сервисов должны работать вместе. Практики CI/CD критически важны для:
* Continuous Integration: Автоматическая сборка и прогон интеграционных тестов при каждом изменении кода. Это быстро выявляет поломки взаимодействия между сервисами.
* Continuous Delivery/Deployment: Автоматическое и предсказуемое развертывание протестированных изменений в различные среды (тестовые, продуктивные). Это минимизирует риски при обновлении отдельных компонентов сложной интегрированной системы.
Таким образом, CI/CD создает безопасный «конвейер» для эволюции интеграций, а не заменяет необходимость тестирования (варианты A и D неверны) и уходит от чисто ручных процессов (вариант B).
* Continuous Integration: Автоматическая сборка и прогон интеграционных тестов при каждом изменении кода. Это быстро выявляет поломки взаимодействия между сервисами.
* Continuous Delivery/Deployment: Автоматическое и предсказуемое развертывание протестированных изменений в различные среды (тестовые, продуктивные). Это минимизирует риски при обновлении отдельных компонентов сложной интегрированной системы.
Таким образом, CI/CD создает безопасный «конвейер» для эволюции интеграций, а не заменяет необходимость тестирования (варианты A и D неверны) и уходит от чисто ручных процессов (вариант B).
4603. В каком сценарии выбор SOAP для интеграции может быть более оправданным, чем REST?
Anonymous Quiz
6%
При необходимости максимальной простоты, скорости разработки и легковесного взаимодействия.
86%
При работе в экосистеме, где строго формализованные контракты, встроенные стандарты безопасности.
3%
При интеграции с современными сервисами, предоставляющими только JSON API.
5%
Когда важна возможность кэширования ответов на стороне клиента.
👩🏫Объяснение:
SOAP — это протокол с жесткой спецификацией, что в некоторых корпоративных и финансовых контекстах является преимуществом, а не недостатком.
* WSDL — машинно-читаемый контракт, по которому можно автоматически генерировать клиентский код.
* *WS-* стандарты* предоставляют готовые, стандартизированные решения для сложных требований безопасности, транзакций, надежной доставки.
REST (как архитектурный стиль) более гибкий и легковесный, лучше подходит для публичных API и веб-сервисов (вариант A). Кэширование (вариант D) — это сильная сторона REST. Вариант C описывает типичный сценарий для REST.
* WSDL — машинно-читаемый контракт, по которому можно автоматически генерировать клиентский код.
* *WS-* стандарты* предоставляют готовые, стандартизированные решения для сложных требований безопасности, транзакций, надежной доставки.
REST (как архитектурный стиль) более гибкий и легковесный, лучше подходит для публичных API и веб-сервисов (вариант A). Кэширование (вариант D) — это сильная сторона REST. Вариант C описывает типичный сценарий для REST.
4604. Что означает принцип идемпотентности (idempotency) при проектировании интеграционных API?
Anonymous Quiz
10%
Возможность выполнить операцию только один раз за определенный период времени.
83%
Свойство операции, при котором её многократное выполнение приводит к тому же результату.
6%
Обязательное использование уникального идентификатора для каждого запроса.
1%
Требование к немедленному ответу на каждый входящий запрос.
👩🏫Объяснение:
Идемпотентность — критически важное свойство для надежных интеграций, особенно в распределенных системах, где возможны повторные отправки запросов из-за сетевых сбоев или таймаутов.
* Пример: Операция PUT /orders/{id}/status с телом {"status": "CANCELLED"} должна быть идемпотентной. Сколько бы раз клиент ни отправил этот запрос (с одним и тем же id и телом), заказ должен оказаться в состоянии CANCELLED, а не переходить в какое-либо другое состояние или вызывать ошибку после первого применения.
Это позволяет безопасно повторять запросы, не опасаясь побочных эффектов (например, списания денег дважды). HTTP-методы GET, PUT, DELETE по спецификации должны быть идемпотентными, в отличие от POST.
* Пример: Операция PUT /orders/{id}/status с телом {"status": "CANCELLED"} должна быть идемпотентной. Сколько бы раз клиент ни отправил этот запрос (с одним и тем же id и телом), заказ должен оказаться в состоянии CANCELLED, а не переходить в какое-либо другое состояние или вызывать ошибку после первого применения.
Это позволяет безопасно повторять запросы, не опасаясь побочных эффектов (например, списания денег дважды). HTTP-методы GET, PUT, DELETE по спецификации должны быть идемпотентными, в отличие от POST.
4605. Какой из перечисленных подходов НАИЛУЧШЕ описывает практику «Плавной деградации» (Graceful Degradation) в контексте интеграции с внешними сервисами?
Anonymous Quiz
69%
Продолжение работы с ограниченной функциональностью или с использованием закешированных данных
8%
Немедленная попытка непрерывного перезапуска упавшего внешнего сервиса.
10%
Полное отключение функционала системы при недоступности любого из внешних сервисов.
13%
Перенаправление всех запросов пользователей на резервный центр обработки данных.
👩🏫Объяснение:
Graceful Degradation — это дизайн-принцип, направленный на обеспечение отказоустойчивости. Система спроектирована так, чтобы при сбое одной из её зависимостей (например, внешнего API прогноза погоды или рекомендательного сервиса) основные функции (например, оформление заказа в интернет-магазине) продолжали работать, а дополнительный функционал (показать прогноз погоды для доставки) временно отключался или показывался в упрощенном виде (например, из старого кэша).
Это противоположность подходу «единая точка отказа», когда крах одной зависимости обрушивает всю систему (вариант A). Варианты C и D описывают другие аспекты отказоустойчивости и DR (Disaster Recovery).
Это противоположность подходу «единая точка отказа», когда крах одной зависимости обрушивает всю систему (вариант A). Варианты C и D описывают другие аспекты отказоустойчивости и DR (Disaster Recovery).
🤔1