Архитектура доставки версий в Google Maps JavaScript API основана на канальной модели релизов. Такой подход позволяет одновременно поддерживать стабильность production-инсталляций и ускоренную доставку новых возможностей для тестирования. Каналы Weekly и Beta представляют два разных уровня актуальности API, различающихся предсказуемостью поведения, частотой обновлений и степенью готовности функциональности.
Подключение API выполняется через загрузочный скрипт, где версия указывается явно:
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&v=weekly"></script>
или
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&v=beta"></script>
Параметр v определяет канал поставки. В отличие от
классического семантического версионирования, здесь используется
потоковая модель обновлений, где конкретная версия не фиксируется
разработчиком напрямую, а определяется каналом.
Такой подход позволяет Google централизованно обновлять клиентские библиотеки без необходимости изменения кода на стороне потребителя API.
Weekly канал представляет собой основную линию поставки новых стабильных изменений. Его ключевая особенность заключается в регулярном обновлении с относительно низким риском регрессий.
Weekly канал включает:
Обновления в этом канале происходят регулярно, обычно с недельной периодичностью. Однако фактическая частота может варьироваться в зависимости от стабильности релизного цикла.
Weekly канал считается подходящим для production-сред, где допустим баланс между актуальностью и стабильностью. При этом:
Weekly канал используется, когда требуется:
Несмотря на стабильность, Weekly канал:
Beta канал предназначен для раннего доступа к функциональности, которая находится в активной разработке. Он обеспечивает максимально быстрый доступ к новым возможностям, но с повышенным уровнем нестабильности.
Beta канал может включать:
Ключевая особенность Beta канала заключается в отсутствии гарантий стабильного интерфейса:
Beta канал чаще всего применяется:
Weekly канал ориентирован на стабильность и минимизацию рисков. Beta канал, напротив, ориентирован на скорость доставки новых функций, даже ценой нестабильного поведения.
Weekly канал сохраняет обратную совместимость в пределах minor-изменений. Beta канал не гарантирует совместимость между релизами.
В системах, использующих Google Maps JavaScript API, часто применяется следующая схема:
Выбор канала осуществляется исключительно через параметр загрузки скрипта. Дополнительной конфигурации на уровне API не требуется.
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&v=weekly&libraries=places,geometry"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&v=beta&libraries=places,geometry"></script>
Параметр libraries остаётся независимым от канала и
подключает дополнительные модули, такие как:
places — работа с точками интереса;geometry — геометрические вычисления;drawing — инструменты рисования;visualization — визуализация данных.Дополнительные библиотеки API наследуют поведение основного канала.
В Weekly канале библиотеки:
В Beta канале:
Система событий в Google Maps JavaScript API чувствительна к изменениям в каналах, особенно в Beta.
clickdragzoom_changedbounds_changedВ Weekly канале поведение событий стабильно и предсказуемо. В Beta могут наблюдаться:
Переход между Weekly и Beta требует учета различий в стабильности.
Используется для:
Риски:
Применяется для стабилизации решений после тестирования:
Загрузка API через каналы влияет на стратегию кеширования:
Браузер получает скрипт как динамический ресурс, поэтому обновления могут применяться без изменения URL.
Использование каналов в Google Maps JavaScript API связано с рядом инженерных ограничений:
Beta канал дополнительно усиливает эти ограничения за счёт экспериментального характера функций.
При проектировании архитектуры, использующей каналы Weekly и Beta, часто применяется разделение уровней окружений:
Такой подход снижает вероятность того, что экспериментальные изменения повлияют на стабильность пользовательского опыта.
Особенность канальной модели в том, что обновление API происходит без модификации клиентского кода. Это означает:
Weekly канал минимизирует эффект таких изменений, Beta канал делает их частью нормального цикла разработки.