Well, you asked for it. No, you really did.
Last November, I attempted to write an article on using a CDN with Jira Data Center. I planned to use this with Cloudflare's CDN. However, I could not get it to work as I wanted it to - for reasons I'll go into later. As we all know, it failed, and I realized my mistake too late to be able to write up an alternate article. So I ended up taking a week off to rest and recharge. And...I didn't come back to this.
But I'm trying to engage more with readers on Social media, so I figured I'd throw up a quick poll to see what this week's topic should be. And there's the CDN...again. So let's get into this.
So, let's say you (and your Jira servers) are based in the United States. But you have users on your system from India, Europe, the Middle East, China - basically all over the world. And everyone not in the United States is complaining that Jira is slow and painful to use. You cannot bring the Jira system closer to them without impacting your US users, which is the majority. But this slowness is starting to impact the other countries' work.
This problem is where a CDN can help. It won't make it as if the Jira is in their country, but by caching and staging the static resources (those that don't often change when Jira loads a page), it can make the page load that much faster. It will also stop your system from serving these resources as often, which will save a bit of load on your system. Now that you know why you'd want one let's dig into how to set one up.
So to get started, you will have a couple of prereqs to satisfy. In no particular order, they are:
This is one of the features you get with Data Center over Server. Under the Admin Console's System section, you'll notice a new entry for "Content Delivery Network." It will be under the "Advanced" section of the right-hand menu. Or you can search for it by clicking "." (period) on your keyboard from anywhere in the Admin Console, and typing "Content" into the search bar.
When you click on it, you should see a page like this. If you see this, Jira is ready for a CDN.
If your Jira system is behind a firewall, your CDN will never be able to see it, and therefore it will never be able to serve data to help your Jira system. This concept might go without saying, but sometimes people miss the simple details. So, you will need an internet-facing load balancer.
"But I don't want public access to my Jira instance." And honestly, too right! Having as many safeguards between your Jira instance and hackers is a great concept. But...it's not going to get you out of this requirement.
However, Atlassian has provided details in their documentation to tell you how to allow your internet-facing load balancer only to serve static data. That way, you aren't leaking potentially secure data online.
So - just putting this out there - I'm a Jira Expert. Not a CDN Expert. However, from my research, it appears CDN's come in two flavors. They'll either stand entirely in front of your system and pass back any dynamic content it needs from your Jira. Or it will stand beside your Jira Instance and serve the data your system tells it to. The easiest way to tell which type you have is to look at the URL you use to access the CDN.
If your CDN wants to use your primary URL, it will be the first type of CDN. This is the type I attempted to use back in November - which isn't going to go well for how Atlassian wants this to be set up.
It's the second type of CDN we want. This CDN will ask for your primary URL as a parameter but give you a secondary one to serve static Data. For this Proof of Concept, I'm using Amazon CloudFront, but I'd be stunned if Azure and Google didn't have a competing offering.
I'm going to assume you have your internet-facing load balancer and Data Center license taken care of and focus on setting up the CDN now. Thankfully, Atlassian has already provided a full CloudFormation Template to configure AWS Cloudfront for you.
You'll want to download this template to your local system. You can do this by doing a "git clone" operation or copying the text and pasting it into a text editor, then saving it to the correct name.
Once you have the template downloaded to your local machine, you'll need to go to AWS CloudFormation's Console, and click "Create Stack" -> "With new resources (standard)"
You'll then see a page like this where you upload your template. You will need to set the settings as such:
Click Next, and you will be given some more options.
After this, it will give you some advanced options - however, these are all optional and can be skipped if needed. The last page will detail your settings and ask you one last time if you are ready. If so, scroll down and click "Create Stack"
After this, it will give you some advanced options - however, these are optional and can be skipped if needed. The last page will detail your settings and ask you one last time if you are ready. If so, scroll down and click "Create Stack." After about five minutes, your CDN will be created, and you'll be given a URL for your CloudFront CDN.
Copy that URL, then go back to your Jira instance. Under the "Content Delivery Network" page on the Admin Console, click the "Settings" tab. Once there, click "On," then paste your URL into the bar. Then click "Validate." Once validated, you'll get a "Connected" confirmation, then you can click "Save Settings."
Now click "F12" on your keyboard, go to the "Network" Tab of your Developer's tools, and click Refresh on the webpage. If setup correctly, you should see content being served from your CDN.
If so, you can find this and many more guides, how-to's, and articles about Jira and Jira Administration at https://thejiraguy.com. In fact, I post there a full week earlier, when means you can go ahead and read this week's article about the differences Jira Server Admins can expect as they migrate to Cloud. You can also catch up to me on Facebook, Twitter, or LinkedIn to catch the latest news, articles, and musings from me! And until next time, Have you updated your Jira issues today?