Створення дружнього до розробників API означає пришвидшення інтеграції, економію ресурсів і підтримку високої репутації компанії. У Favbet Tech навчилися тонко балансувати між технічною досконалістю та зручністю. У компанії знають: навіть такі дрібниці, як детально продумані повідомлення про помилки чи суворо стандартизовані назви, можуть значно полегшити життя розробникам.
У партнерському проєкті CTO Favbet Tech Андрій Черниш розповідає про підхід компанії до проєктування якісних API, ділиться кейсами з практики компанії та порадами, як уникнути типових помилок і зробити API зручним для всіх, в тому числі й розробників.
Дружній до розробників API – це інтерфейс, з яким легко працювати. Він інтуїтивний, передбачуваний і економить час.
«На мою думку, дружнім можна назвати той API, з яким розробникам легко, швидко і зручно працювати. Це стосується як REST, так і GraphQL, gRPC чи будь-яких інших API».
Є певні нюанси, від яких залежить, чи буде API дружнім.
Звідси – базові правила, яких важливо дотримуватись під час створення API:
Коли відбувається інтеграція з чужим API, результат дуже залежить від якості цього API. Якщо він добре реалізований і задокументований — проблем менше. Проте ситуація часто інша.
«У нашій компанії є внутрішні стандарти щодо якості API. Щоб пояснити, наведу приклад із досвіду іншої компанії — Uber. Ще близько десяти років тому у них існувало правило: кожен сервіс повинен відповідати суворим вимогам щодо швидкодії та якості. Це стосувалося навіть внутрішніх API. Такий підхід допомагав забезпечити стабільність і надійність у роботі. Uber також вимагав, щоб їхні партнери дотримувалися аналогічного рівня — наприклад, швидко відповідали на запити. Ми не настільки жорсткі у своїх вимогах, але все ж дотримуємося високих стандартів як всередині компанії, так і з зовнішніми API»
Ось найтиповіші проблеми при роботі з чужими API:
Створення API – це не лише про код, а й продуманий дизайн.
Андрій Черниш: «Все починається зі збору вимог. Перш за все, потрібно чітко розуміти, навіщо ми створюємо цей API — яка в нього мета і хто його буде використовувати. Це базовий принцип — знай свого користувача. Мова не лише про технічну верифікацію, а й про розуміння реальних потреб та проблем, які API має вирішити.
Далі ми формулюємо вимоги: функціональні (тобто бізнес-сценарії, які мають бути реалізовані через API) та нефункціональні (наприклад, захист від DDoS-атак, стабільність, швидкодія, обмеження навантаження, очікувана затримка у відповідях тощо), стабільність, швидкодія, обмеження навантаження, очікувана затримка у відповідях тощо.
Ці нефункціональні вимоги лягають в основу SLA (Service Level Agreements) — угод про рівень обслуговування, які визначають, що і як повинно працювати.
Коли всі ці вимоги зібрані й узгоджені, ми переходимо до проєктування самого API: що саме він робить, як виглядатимуть його запити й відповіді, які будуть ендпоінти тощо».
Ось ключові етапи:
Розробка добре структурованого, зручного у використанні та якісно задокументованого API має кілька важливих переваг.
Андрій Черниш: «По-перше, інтеграція з таким API проходить набагато швидше. Кількість повторних уточнень, непорозумінь та переписок (так званих «ітерацій back-and-forth») значно зменшується. Це означає менше витрат — як з боку команди, яка розробила API, так і з боку партнерів, які з ним працюють.
По-друге, це скорочує time-to-market — час, необхідний для запуску нового продукту або функції. Якщо компанія витрачає менше часу на технічну інтеграцію, вона швидше рухається вперед у бізнесі. Але є ще один важливий аспект — бізнес-репутація. Якщо ваш API зручний, швидкий в інтеграції, з ним легко працювати — про це дізнаються інші».
Якщо говорити про публічний API для зовнішніх інтеграцій з продуктом, то дружній до розробників API пришвидшує інтеграцію партнерів, зменшує витрати на підтримку, полегшує масштабування та версіонування та скорочує time-to-market.
Що стосується внутрішніх API, то від створення зручного API вони отримують таки переваги:
Хороша документація – це основа хорошого API. Вона має бути структурованою, зручною для розробника і містити всю необхідну інформацію для інтеграції.
Поради від Андрія Черниша:
Андрій Черниш: «Якщо документацію пишуть розробники вручну, вона майже завжди втрачає актуальність — хтось щось забув, десь не оновив, і виникає проблема. Тому важливо інвестувати в автоматичну генерацію документації. При наявності контракту це умовно легко реалізувати. Наприклад, якщо ми працюємо з REST API, то завжди намагаємося використовувати OpenAPI як стандарт опису.
Ми застосовуємо підхід API-first: спочатку описуємо API у YAML-файлі, а потім генеруємо документацію на його основі. До неї можна додавати додаткову інформацію про помилки, деталі запитів тощо. Але ключове — типи вхідних і вихідних даних генеруються автоматично. На мою думку, усе, що можна автоматизувати — треба автоматизувати», – вважає він.
Як підтримувати актуальність документації:
У Favbet Tech зазвичай використовують Confluence, але також мають власний портал для розробників на основі Backstage.io — це open-source інструмент, створений компанією Spotify. На базі цієї платформи можна побудувати єдиний портал для розробників, де вони матимуть доступ до усього необхідного: документації, шаблонів для створення сервісів, процесів релізу, CI/CD тощо.
OAuth 2.0 – стандарт авторизації, який дозволяє застосункам отримувати доступ до даних без передачі паролів. Той, хто впроваджує OAuth 2.0, надає токен, який можна використовувати для авторизації. Він має обмежений термін дії, його можна валідувати, анулювати або оновити, що дуже зручно.
Якщо потрібно інтегруватися з системою, яка використовує OAuth 2.0, нема потреби створювати користувачів і зберігати паролі у власній системі. Це значно спрощує інтеграцію. З іншого боку, це ще й вигідно з погляду безпеки: OAuth покращує Developer Experience, особливо коли йдеться про роботу з чутливими даними.
Для користувача це теж зручно: достатньо натиснути кнопку «Увійти через Google/Facebook» — і він уже авторизований.
Покращення Developer Experience з OAuth 2.0:
Щоб API був зручним, у Favbet Tech його тестують комплексно: тут відбувається тестування документації, інтеграційне тестування, юзабіліті-тестування та тестування версійності.
Компанія приділяє велику увагу зворотному звʼязку та слідкує за аналітикою використання. Але також Favbet Tech пропонує Developer Sandbox – середовище для експериментів розробників без обмежень. Зворотний зв’язок збирають так:
Грамотне версіонування дозволяє впроваджувати зміни в API, не порушуючи роботу тих, хто вже з ним інтегрувався.
Андрій Черниш: «Коли ми говоримо про нову версію API, зазвичай маємо на увазі мажорні (суттєві) зміни, які змінюють як сам API, так і процеси, що базуються на ньому. Ми розвиваємо продукт, адаптуємо його під нові потреби, регуляції, запити партнерів. Але просто взяти і змінити API не можна, якщо з ним уже працюють інші системи. Тому ми створюємо нову версію API, яка працює паралельно з попередньою.
Наприклад, ми використовуємо підхід версіонування через URL: /api/v1/…, /api/v2/… тощо. У документації це теж відображено — можна обрати версію і переглянути її опис окремо. Зазвичай ми попереджаємо партнерів заздалегідь — приблизно за пів року. Ми готуємо дизайн, реалізуємо нову версію, тестуємо її, відкриваємо тестове середовище. Після релізу ми підтримуємо обидві версії одночасно впродовж 1–2 років. Це дає партнерам час для планування, внесення змін у свої roadmap і спокійний перехід на нову версію. Ми також намагаємося зберігати зворотну сумісність навіть у новій версії».
У документації мають бути чітко описані:
Це важливо, бо API — це, по суті, спосіб комунікації між розробниками. Крім того, такі зміни мають бути узгоджені з партнерами згідно з SLA (Service Level Agreement).
У SLA неодмінно мусить бути прописано:
У Favbet Tech старі версії, зазвичай, підтримують:
Китайські компанії-розробники чат-ботів тимчасово відключили в них функції розпізнавання зображень, щоб завадити випускникам списувати під…
До кінця червня в мобільному застосунку Резерв+ з'явиться функція оплати штрафів ТЦК. Це звільнить громадян…
Компанія Anthropic представила спеціалізовану модель штучного інтелекту Claude Gov, розроблену для клієнтів зі сфери національної…
Стартап Anysphere випустив Cursor 1.0 — першу стабільну версію нового редактора коду на базі штучного…
Sigma Software, що є підрозділом Sigma Software Group, заявила про зміну генерального директора. Компанію очолить…
Microsoft готує додати у Windows 11 новий «легкий» текстовий редактор Edit. Він важить всього 230…