Створення дружнього до розробників 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 старі версії, зазвичай, підтримують:
До кінця 2025 року у Китаї планують налагодити масове виробництво нової технології зберігання даних –…
Один з лідерів у галузі штучного інтелекту, компанія OpenAI, планує запустити свою нову мовну модель…
Google тестує інструмент для вайб-кодування під назвою Opal. Поки він доступний користувачам лише в США…
Маркетплейс мобільних застосунків App Store оновив віковий рейтинг для програм. Додано нові рейтингові обмеження та…
Жительку Аризони, яка облаштувала у себе вдома ферму з 90 ноутбуків, допомагаючи північнокорейським ІТ-спеціалістам видавати…
На канал Android Canary, який прийшов на зміну Android Developer Preview і використовується для тестування…