At the recent San Francisco ACE last Thursday night, Atlassian's Dave Theodore and Ameya Phadnis presented "The Rate Limits of Atlassian Cloud".
One bit that was particularly interesting was around the new Burst API Rate Limit which is described thusly:
Burst API rate limiting in Jira Cloud controls how many requests a single tenant can send per second to a given REST API endpoint. This is a short term “spike” safeguard that is separate from the hourly, points based rate limit.
To put this in real terms - let's say one of your users has written a script to automatically sync all of their assigned tickets to a spreadsheet or something crazy like that. And let's say they share this script with all of their colleagues, and they start using it too.
So, this script probably calls the Get issue API endpoint. It's a pretty commonly used endpoint. Other users may have it in their scripts too. Many third-party Apps probably use that endpoint as well (more on this later).
Or maybe somebody has written bespoke integration between your company's internal tools and Jira. And it makes a LOT of calls. And a lot of people use it.
Welp.
If the people writing scripts are not aware of rate limits - they soon may be rudely introduced to them when their scripts break because they've overrun the limit for that one API endpoint.
That rate-limiting kicks in for ANY scripts or integrations that use that same endpoint, not just theirs. And any APPS! Now App Vendors probably have known about these rate limits for a while now, and know how do deal with them, but unfortunately I believe their access to that same API endpoint will still be rate-limited, so while the apps will work, they will be SLOWER.
Atlassian kindly offers some Best practices for handling rate limit responses: Things like checking for Retry/RateLimit headers, writing scripts with resiliency and automatic backoff, etc.
BUT HEY, you're a good Jira Admin. You're subscribed to the Jira Cloud Admins Group in the Community Forums. You can tell all your users about rate limits, but of course nobody is going to do anything until their stuff breaks.
But WAIT you can probably look in log files to see whose API tokens are making the most calls. You could head this off by finding those users and giving them a direct heads-up. Man, you could be ... PROACTIVE. NO WAY!
Well. I've got some:
Atlassian also thinks providing access to API token usage in logs is a good idea too. They think it's such a great idea, they want to charge you an additional $4 per user (well, depending on how many users you've got, from $3-4) to upgrade to Atlassian Guard Premium.
Check it out below - it's an actual feature, but only if you PAY MORE.
This provides organization admins with visibility into activities like which managed users have created an API token or what organizational resources are being accessed by managed and external users via API tokens.
That's right. Atlassian has imposed limits on your system, and then wants to charge you to help you avoid hitting those limits. Huh.
So then. I think it'd be super-cool if Atlassian made that kind of logging part of Atlas Guard Standard. Or hey, here's an idea, how about not charging for it AT ALL?
I went looking for some strategies on how to write scripts that handle rate-limiting, and found that (of course) on Data Center they have built out a dashboard and tons of controls that let you monitor and manage rate limits:
https://confluence.atlassian.com/adminjiraserver/improving-instance-stability-with-rate-limiting-983794911.html
Man, that's quite nice and based on that screenshot, the feature has been around since 2019!? So I guess if Atlassian ever wants to do things right on Cloud, they could uh, look at that for inspiration. (Alas, I fear that maybe the devs who worked on that feature may no longer be with the Company?)
And of course it'll probably be a Guard Premium feature. 😕😕
Darryl Lee
8 comments