пятница, 24 декабря 2010 г.

Мучительное создание API

Создавая свой (или правильнее "своё"?) REST API, мы допустили две серьезные ошибки.


Во-первых, один из программистов захотел использовать API для внутреннего проекта. Просто потому, что там был один метод, который сразу делал всё, что ему нужно. А иначе ему пришлось бы напрямую вызывать несколько веб-сервисов.

И я, и мой начальник, и архитектор этого очень не хотели. Зачем добавлять в цепочку лишний сервис, который не содержит особо никакой логики, да ещё и понапрасну тратит время на аутентификацию и сбор статистики? Ведь это всё происходит внутри одной фирмы, и нет никаких особых требований по защите информации. Но этот дядька - один из наших самых уважаемых специалистов, и в конце концов все плюнули и согласились.

В результате получилась "смесь бульдога с носорогом". На самом деле даже неправильно называть этот сервис "API", скорее это какой-то "Агрегатор". Веб-сервисы нижнего уровня возвращают кучу информации, не нужна нашим партнерам, поэтому API её игнорирует. Но дядьке, как позже оказалось, таки кое-чего не хватает, поэтому ему приходится снова запрашивать у других сервисов информацию, которую те на самом деле уже возвращали.


Вторая проблема. Начальник отдал это проект новому, молодому программисту. Идея была такая: у новичка займет много времени разобраться со существующими проектами, а вот если начать разработку с нуля, то он начнет выдавать результаты чуть ли ни с первых же дней работы. Так-то оно так, но API - это особый проект. Это - шлюз для доступа к большинству существующих веб-сервисов, поэтому, чтобы его создать, нужно хорошо понимать, как работает вся система.

И ещё желательно дать всем параметрам и методам красивые, понятные названия (по возможности совпадающие с теми, которые мы уже используем), и предусмотреть добавление новых возможностей в будущем. Эта - непростая задача, и, наверное, её вообще должны решать аналитики, а не программисты. Ведь, создав интерфейс, ты должен будешь его поддерживать по-крайней мере несколько лет.

Новичок справился с технической частью, но в плане красоты и гибкости получилось ужасно. Он как бы нарочно использовал немного не такие термины, как у нас принято. Я злился, делал ему замечания, но потом плюнул: он отвечает за проект, пусть потом сам мучается. And guess what? Парня сократили, и теперь с этим ненавистным проектом мучаюсь я :)

5 комментариев:

Sergey Eremenko комментирует...

да, так обычно и бывает ) все надо документировать и делать правильно на любой стадии развития проекта

Bashir Magomedov комментирует...

Валентин, привет!
Слушай, немного мимо кассы, но есть один вопрос :) Я вознамерился получать ученические права, и как-то не понял с их сайта, можно-ли это сделать tier1-нщикам или нет. Т.е. можно-ли через сайт зарегестрироваться и завместо UK passport послать им копию моего орластого?

Bashir Magomedov комментирует...

И вообще можно-ли обойтись без отправлений документов по почте? А-то как-то боязно делать это :(

Valik комментирует...

Я делал 3 года назад, тогда вроде нельзя было регистрироваться на сайте. Чтобы было не так стрёмно, я тогда сам отвез паспорт в отделение DLVA в Уимблдоне (вместо того, чтобы идти в PostOffice). Но всё равно потом они сами шлют твой паспорт в Swansee, и возвращают назад обычной почтой. Конечно, боязно, а что делать... Не знаю, может, можно дать им предоплаченный конверт курьерской службы.

Bashir Magomedov комментирует...

Спасибо! Я выяснил, что с недавнего времени, британцам достаточно отправить номер своего паспорта и даже сканы не нужны. А нам, сирым, пока по почте, причем оригиналы :) Волков бояться в лес не ходить. Буду отправлять наверное :)

Ratings by outbrain