Представляємо esi - новий api для eve online - eve-ua, українська спільнота гравців eve online

Представляємо esi - новий api для eve online - eve-ua, українська спільнота гравців eve online

Примітка: даний девблог в першу чергу призначений для сторонніх розробників і технічно грамотних капсулёров. Якщо ви хочете пропустити жаргон, перейдіть де знайдете TL; DR

Передісторія

І так ми представляємо CREST, і це теж прорив. Він використовує, більш зрозумілий формат даних, спрощений інтерфейс і швидкий доступ до оперативного моделювання даних. Зрештою, це відкриває шлях для запису кінцевих точок, яке використовується всюди, але вперше в ігровій індустрії. Деякі роботи створені на базі нових можливостей CREST просто приголомшливі, і ми постійно чуємо про нові та інноваційних ідеях дуже багато з яких можуть бути реалізовані з використанням нових потужних можливостей CREST.

Також в ідеалі CREST планується зробити саме індексовані. Комбінація автоматично генеруються викликаються опцій і прикладів пов'язаних з кореневої структурою API забезпечує практично повну саме індексацію API. Це призвело до певних успіхів, і збір даних CREST API це, безумовно, хороший спосіб для користувачів вивчити його. Однак, виявлені і певні проблеми. Величезна частина даних не може бути індексовані поки не виконані певні ігрові умови, такі як правильне визначення корпоративних ролей або визначення власника цитаделі, і не всі ресурси коректно прив'язуються. Це досить важко пояснити чому у вас немає доступу до певних речей. Розробники CREST досі посилаються на сторонні протоколи для повного опису API. Це була смілива спроба, але цього явно недостатньо.

Тим часом, в цілому в ігровій індустрії ...

За останні кілька років, індустрія програмного забезпечення займалася розробкою різних і розглядом архітектури різних API. Спочатку з всі цього хаосу виникла стандартна схема JSON, а потім вже з неї специфікація Swagger. Це основний концепт ESI, давайте послухаємо що сам swagger говорить про себе:

Swagger ™ це програма, що використовується для опису і записи RESTful APIs. Специфікація swagger визначає набір файлів необхідних для опису певного API. Дані файли можуть бути використані системою Swagger-UI для відображення API і Swagger-Codegen для створення клієнтської частини на різних мовах. Додаткові утиліти також можуть отримувати перевагу від отриманих в результаті файлів, наприклад інструменти тестування.

Це той фундамент який ми вибрали для побудови EVE Swagger Interface, той каркас об'єднує частини специфікацій з численних служб Kubernetes в єдиний механізм, який в той же час займається маршрутизацією, аутентификацией, введенням / висновком даних, і багатьма іншими функціями.

Чим є ESI для нас?

Первинне індексування означає що всередині системи ми використовували інструкції Swagger'а для генерації наших APIs. Перший крок для створення або поновлення кінцевого результату будь-якого дії це створення або поновлення відповідної інструкції, що визначає всю нашу внутрішню структуру даних для обробки кінцевого результату, і це значить що протоколи даних завжди оновлені бо вони інтегровані з основною частиною коду кінцевого результату. Do not look now, but we might have solved this documentation gremlin. На додаток до всього інструменти Swagger дозволяють стороннім розробникам використовувати свій код для створення інтерфейсу для ESI API тією мовою який вони виберуть. Величезний шматок часу розробника який раніше витрачався на побудову інтерфейсу для CREST і XML API тепер звільнений з цієї шаблонної роботи. (Ми замінили вас на роботів, вибачте.)

Сумісність з основними шаблонами означає що ми використовували основні інструменти індустрії розробки. Ми постаралися додати по мінімуму спеціальних інструментів тільки там де без цього не обійтися, в іншому ж ми намагалися заміняти кастомниє речі на готові стандартні опенсорс рішення коли це було можливо. Ще ніколи EVE API не був такий легкий в обслуговуванні і масштабування, що відкриває й відкривають нові можливості. Невеликі патчі можуть відправлятися з комп'ютера розробника до його застосування в перебігу хвилин, і якщо це необхідно все зміни можуть бути з практично нульовою затримкою відкатані назад в будь-якому напрямку.

Горизонтальне масштабування - це витончене рішення яке ми запозичили у Kubernetes. Так як все ESI коди яких не потрібно бути спеціально запущеними на нашому сервері Транквіліті, а також не потрібно запуску на Google Cloud, ми можемо керувати підключенням нових ESI контейнерів на кожен результуючий базис якому це необхідно, і вимиканням цих компонентів коли вони більше не потрібні.

Читання / запис. звичайно ми плануємо зробити читабельні API результуючі майже як в CREST, включаючи ті які проблематичні навіть зараз, це буде так само просто як відправити е мейл. Загалом це як CREST тільки краще.

Так що щодо старих XML API і CREST?

Ще рано панікувати. Ми прийшли сюди не для того щоб оголосити про те що ми негайно знищимо всі ваші програми і вам необхідно негайно переписати весь код, але ми вважаємо за потрібне обговорити приведення коду в порядок і його фрагментованість. Підтримка трійки API зі схожою. але не пересічних функціоналом збільшує технічну складність створення робочих EVE API моделей, і це забирає час у тих. групи які вони б витратили на розробку нових інструментів і обслуговування нового інструментарію. Все це зменшує гнучкість і збільшує нестабільність, і це не є добре в плані довгострокового розвитку.

Як тільки ми відтворимо всі поточні можливості CREST і XML API в ESI, ми відразу ж закриємо обидва цих сервісу. Ми запланували 18 місяців від релізу цього блогу до досягнення ESI необхідного функціоналу та ми будемо працювати з розробника додатків для апгрейда їх продуктів. Видалення необхідності використання XML API наша головна мета. Ми будемо стежити за використання XML API і CREST для ідентифікації та допомоги розробникам сторонніх програм в їх переході на нову систему.

Це буде акуратний і планомірний відхід від старої системи. Першим кроком цього процесу є те, що з моменту виходу цього блогу, CREST і XML API офіційно знаходяться тільки в режимі підтримки в робочому стані.

Ми будемо продовжувати випускати оновлення для захисту даних і виправлення критичних помилок до них, але все нові запити будуть виконуватися ESI API.

ранній доступ

Протягом останнього місяця ми щільно працювали з декількома активними членами спільноти розробників сторонніх сервісів для EVE, включаючи:

Ми взаємодіяли з цими командами. так само як і з фокус групами. для отримання відгуків на ранніі етапи розвитку проекту і деякі початкові проектні рішення. Нижче ви можете побачити що вони можуть зараз сказати про свої враження:

Введення ESI, як нового API, досить близько до того як працює CREST, тому перехід на нову систему має пройти досить таки легко. Також це вирішує проблему головного "лякала" розробників API додатків для EVE. Нестачі документації і прикладів. Використання Swagger полегшить роботу з API, і прибере проблему деяких невідповідностей зі списку проблем розробників. Нарешті відкрита можливість відправляти EVEMail, так само як і отримувати їх, це великий прорив, що допускає можливість створювати деякі автоматизовані сервіси. що раніше було неможливо.
- Steve Ronuken

ESI це рішення проблеми над якою CCP билося кілька років: можливість швидко та легко оновлювати API для сторонніх розробників. Останні кілька тижнів розробники з котороми я працював показували якийсь ESI адаптується, а також ка в нього легко додавати нові можливості. Я знаю безліч сторонніх розробників не надто радіють перспективі переписування безлічі своїх утиліт, і я один з них, але це та ціна яку доведеться заплатити за технічний прогрес. CCP веде від технічної відсталості і веде нас в напрямку технічного прогресу. EveWho.com вже використовує утиліти на базі ESI і я тихо радію результатами їх роботи.
- Squizz Caphinator

EVE Swagger Interface об'єднує можливості XML AP з інноваціями CREST в той час як введення в документацію є офіційною фичей. CREST'о подібні системи дозволили людям робити чудові речі з динамічними мовами (маються на увазі мови програмування. Я так думаю - прим. Пер.), ESI ближче тим з нас хто любить використовувати статичні мови; надаючи більш строгий дозволений інтерфейс і покращуючи призначені для користувача аспекти CREST. Я вірю що цей проект прекрасна можливість подальшого поліпшення CREST, модернізації XML API, і розробка додатків для EVE стане більш доступна для новачків.
- Lucia Denniard

Новий API приходить в EVE, його звуть ESI. Він ґрунтується на OpenAPI Specification, повністю документований і зробить ваше життя простіше якщо ви захочете зробити додаток для EVE Online. Він буде вводитися протягом декількох місяців, і вже зараз обробляє до 4,5 мільйонів запитів в день.

У славне майбутнє!

PS: якщо вас все ще цікавить дизайн ESI, загляньте в наступний блог Introducing the ESI API.

Схожі статті