Все гениальное — просто, а простая интеграция — гениальна
Допустим, есть у Вас веб-сервис, или просто сайт, который делает много, но не все. И есть другие хорошие сервисы, которые умеют делать именно то, чего Вам не хватает, и делают это очень хорошо. Плюс имеют большую аудиторию и социальную среду для быстрого распространения контента. Что напрашивается? Правильно: использовать функционал (и хостинг!) стороннего сервиса и интегрировать с ним Ваш сайт.
Обычно подобные сервисы предлагают для этого специальный интерфейс, который известен, как API. Прекрасно! Но есть одно “но”. Иногда API меняется, и внедренная интеграция перестает работать. Все ведь знают, что бывает с многочисленными клиентами ICQ, когда сама ICQ меняет протокол? Конечно, любой сервис понимает, что API будет использован армией поклонников, и о них надо заботиться. Но, API надо, во-первых создать (время и инвестиции!), а во-вторых, в реальном мире иногда возникают объективные причины для его модификации.
Есть ли возможность избавиться от этой головной боли? Да! При умном подходе ее иногда можно найти.
Фокус в том, что для интеграции нужно использовать, в перую очередь, фундаментальные особенности контента. Если контент не может существовать без каких-либо атрибутов по определению, то необходимо использовать именно их, без создания дополнительных “наворотов”. Это будет в разы надежнее, чем специально созданный интерфейс.
Приведу простой и очень элегантный пример: интеграция сервиса фото-блоггинга Flickr и сервиса для путешественников Dopplr.
Flickr отдельно
Flickr предоставляет возможность фотографам публиковать цифровые снимки, добавляя к ним названия, описания, теги и прочее. Фотографии можно также группировать в коллекции и альбомы. Я, к примеру, публикую фото не поштучно, а пачками — после очередной поездки или фотосессии. Поэтому всю мою коллекцию можно увидеть, как набор альбомов.
Однако, все эти названия, теги и альбомы создаются вручную, в то время, как у цифровых фото есть фундаментальные атрибуты вшитые в сам формат: дата съемки, информация о камере, а иногда и гео-теги.
Dopplr отдельно
Dopplr позволяет путешественникам публиковать информацию о поездках и делиться впечатлениями. При публикации путешествия сервис просит пользователя указать точные даты его начала и окончания. На первый взгляд, это может показаться лишним: мне сначала было неохота вспоминать, когда я последний раз ездил в Москву, к примеру.
Но в этом есть своя польза: другие люди, которые будут читать Ваши отзывы будут очень заинтересованы в том, когда эти отзывы оставлены. К примеру, если вы рекомендуете отель или ресторан, важно знать, как давно там было так хорошо, как Вы пишете.
Кроме этого, такой подход оказался очень удачным для интеграции.
А теперь все вместе
Когда пользователь Dopplr сообщает сервису, что у него есть профиль на Flickr, происходит волшебство: в профиле пользователя автоматически появляются фотографии, сгруппированные по поездкам.
Не надо идти и выбирать фото, которые Вы хотите продемонстрировать. Не надо даже указать связь с альбомом Flickr, тем более, что фотографии могут быть и не собраны в альбом. Dopplr просто берет Ваш фото-блог и находит в нем все снимки, которые были сделаны в период поездки. Обращаю внимание: не опубликованы в блоге в нужный период, а снятые в нужный период. Даже если Вы опубликуете фото через полгода после путешествия, Dopplr самостоятельно свяжет их с уже известной ему поездкой.
Как это выглядит, можно посмотреть в моем профиле на Dopplr.
По-моему, это пример, достойный подражания. Интеграция происходит даже почти без участия пользователя, и риск ошибки — минимален. В самом деле, если 24 января я был в Порстмуте, то где же еще я мог сделать фотографии в этот же день?
Резюмируем
Преимущества подхода:
- меньше вложений в создание API и более быстрый его запуск
- снижение риска технических проблем из-за изменения API или его недоступности
- меньше “работы” для пользователя
Недостатки подхода:
- меньше гибкости, так как система пытается думать за пользователя
Уверен, что во многих случаях преимущества перевесят недостатки. Поэтому, если соберетесь делать интеграцию, хорошенько подумайте о ее цели и особенностях данных. Возможно, и Вас осенит гениальная в своей простоте идея!