SHARE YOUR FANFEST EXPERIENCE! #evefanfest #EVEXV and
[email protected]
ESI - State of the API
Since last year • 1,631 commits to ESI repositories • 48,611 lines inserted • 20,768 lines improved (deleted) • Average of ~4.5 commits per day
esi-lib esi-go-replies esub
esi-router esi-scripts
esi-go-router esi-endpoints (34)
1% 20%
46%
8%
8% 3% 15%
ESI Design
How ESI works esi-router API requests
esi-swagger-ui
Google L7 LBs esi-go-router Google CDN esi-endpoint
Sols
Google PubSub
data_relay
esi-go-replies EVE DB
data
if data is static or self-contained
interproc
esi-replies
How ESI works now esi-router API requests
esi-swagger-ui
Google L7 LBs
to AWS (X-ESI-AB-Test)
esi-go-router Google CDN esi-endpoint
Sols
EVE DB
Google PubSub
esub esi-go-replies
data
if data is static or self-contained
Community driven development
ESI Issues • https://github.com/ccpgames/esi-issues • A platform to submit bugs and feature requests for ESI • A center for important information such as: • ESI’s changelog & FAQ • What types of changes constitute a version increase • XML -> ESI and CREST -> ESI route mappings
ESI Issues Cont… • Currently 274 open issues • 73 of which are reported bugs • 152 of which are feature requests
ESI Issues Cont…
Open
Closed
Closed issues: 417 - Created issues: 692 40% 60%
ESI Issues Cont… • If a label has been applied it has at least been looked at
• Give a thumbs up on issues that you care about:
• Bugs have higher priority than feature requests • XML API and CREST parity have had higher priorities than anything else
• If you find duplicates please comment on the issue about it!
ESI Client Optimizations • Use ETags when possible • HEAD requests (coming soon) • Minimize connections • Use HTTP2
ESI Cache • Started as Redis • Redis has terrible clustering, switched to Cassandra • Cassandra uses way too many resources, switched to memcached • Happy with memcached at the moment
ESI Swagger UI v3 • Open source - https://github.com/ccpgames/esi-swagger-ui • Fork of official SwaggerUI - https://swagger-api/swagger-ui • Contributions are more than welcomed • Open UI bugs on the ESI-swagger-ui repo
ESI Error Limit • We still don’t have a rate limit, thanks to our community • The monolith does rate limit some actions, as determined by game design • If you generate 100 or more 4xx or 5xx responses, all future requests will be denied until the end of the 60 second window • Redirects also count against your error limit (http -> https, missing trailing /)
Speed of Development • Moon mining ledgers - October 24th with Lifeblood
• Upwell 2.0 - February 13th • Added 6 attributes to /v2/corporations/{corporation_id}/structures/
XMLAPI & CREST Parity • A lot of effort this year to get ESI at feature parity with XMLAPI and CREST • All XMLAPI and CREST routes have had counterparts since January 3rd • One esi-issue staged for release and then we can declare full parity:
• Will add endpoints for contact and alliance labels • XML_to_ESI.md and CREST_to_ESI.md can be your guide (esi-issues)
XMLAPI & CREST Parity Cont… • We did not bring anything over that was an unintentional bug • Crest route /market/{region_id}/sell (or buy) returned structure names • Crest industry index returned with full precision • ESI gets data from the running simulation, XMLAPI used the database directly • Example: colors for EVE mail labels represented as bitmasks, in ESI returned as actual HEX values • Data structured differently in ESI than XMLAPI because of this • Effort made to not have redundant data in ESI
Retirement of XMLAPI and CREST
Retirement of XMLAPI and CREST
ESI Statistics
ESI Statistics • Average of around 100 million requests per day • Spikes in usage around large in-game events like burn Jita
ESI Future
Reminder - How ESI works now esi-router API requests
esi-swagger-ui
Google L7 LBs
to AWS (X-ESI-AB-Test)
esi-go-router Google CDN esi-endpoint
Sols
EVE DB
Google PubSub
esub esi-go-replies
data
if data is static or self-contained
ESI Future esi-router API requests
AWS ALB
esi-go-router
esi-endpoint
Sols
EVE DB
AMQP
esi-swagger-ui
data
if data is static or self-contained
ESI Future Cont…
Inside esi-lib
API requests
validate request
datasource alive
ensure json
valid response
valid auth token
endpoint func
Gunicorn
Flask Worker
Flask Request
prep data_relay
get/set cache
ESI Future Cont… API requests
AlwaysJSON
RequestMetric
Cached
Authenticated
StandardHeaders
Uncached
SwaggerValidated
ESI-Endpoint
…because of Falcon
ESI Websockets
ESI Websockets • Websockets between go-router and endpoints added Oct 24, 2017 • This provides the groundwork for websocket endpoints • Looking at opening up websockets for location endpoints, possibly killmails • Fairly happy with websocket performance in the ESI routers
Staying up to date
ESI Communication • Tweetfleet Slack - #ESI channel • Direct communication with ESI and 3rd party developers • Join through https://www.fuzzwork.co.uk/tweetfleet-slack-invites/ • Currently 789 members • Third party developer blogs • https://developers.eveonline.com • Twitter • Follow @TeamTechCo, @CCP_SnowedIn, @CCP_Zoetrope for outage alerts and minor announcements before they make it into the changelog.md
Special Thanks
Special Thanks • Beryl Slanjava • Croakroach
• Golden Gnu • Lucia Denniard
• Steve Ronuken • Carbon Alabel
• Saeka Tyr • David Davaham
• Catherine Solenne • Chingy Chonga
• Blacksmoke16 • Diana Olympos
• Christy Cloud
• Aurora Morgan
ESI @ Fanfest • ESI Roundtable @ 16:00 in Amarr • ESI Third Party Developers’ Perspectives @ 17:00 in Serenity