How We Build
Atlassian Engineering’s handbook: a guide for autonomous teams
At Atlassian, we’ve found that the key ingredients to empower autonomous teams are ownership, trust, and a common language. We want every team to own our customers’ success. As opposed to a static command and control model, we start from a position of trust in every team and continually work together to verify the quality, […]
Atlassian’s Cloud Engineering Overview
People. That is my leadership strategy – pure and simple. Find amazing people. Give them tools, frameworks, teammates, autonomy, and a mission. Do everything in my power to help them do their best work. Over the last five years, we’ve done just that – created an amazing engineering team to help propel us forward on […]
Caching JQL search in Jira Cloud
Jira Cloud poses some unique database scaling challenges, due to high query complexity causing high database load and slow queries. Queries run against the database are often highly repetitive and on the surface very cachable, but are not currently being cached. Horizontal scaling is the main technique being applied to services within Jira Cloud to […]
Performance in Jira front-end: solving bundle duplicates with Webpack and yarn
This is the third and final blog in our series on our recent work reducing the amount of JavaScript downloaded from the Jira cloud front-end (Read part 1 and part 2). This blog describes the work that was done to create a Webpack plugin to de-duplicate transitive dependencies. We found that this plugin delivers about […]
Performance in Jira front-end: using modern bundles to improve load time
This is the second blog in our three-part series covering some recent work in Jira cloud front-end to reduce the amount of JavaScript that’s downloaded when loading pages. Part 1 focused on the process of discovering and implementing a relatively small performance fix with a significant impact. In this blog, we will discuss the results […]
Performance in Jira front-end: the story of a single line of code
At Atlassian, we are continuously working to improve the performance of Jira Cloud. This is something we’ve mentioned a number of times in the past: backend improvements found through profiling, changing serialization formats, introducing server-side rendering, and improving our React architecture. This is the first in a series of three blogs focusing on the front-end […]
Scaling, rearchitecting, and decomposing Confluence Cloud
This blog covers the journey of Confluence Cloud – the team workspace for collaboration and knowledge sharing used by thousands of companies – and how we aim to take it to the next level, with scale, performance, and resilience as the key motivators. Moving Confluence to a stateless multi-tenant architecture In 2015, Atlassian started a […]
Scaling Bitbucket’s Database
Bitbucket’s usage is growing Two services at the core of Bitbucket are gu-bb and gu-api, responsible for serving the Bitbucket website and our public REST API. These services are built on the Django web framework, serving millions of requests every hour. On average, each of these requests represents over 10 database queries, putting significant load […]
Migrating the Atlassian Identity Platform to AWS
Getting features out the door and cleaning up significant architectural tech debt are not mutually exclusive
Improving performance through better architecture
A deep dive into React Resource Router and its impact on the Jira Cloud experience.
Solving distributed consistency with Git: how we built Bitbucket Smart Mirror Farms
Many Bitbucket Server customers have development teams spread across the globe. Over the years, we’ve heard from many of them, asking us if we could speed up Git operations for their remote teams. In 2015, we gave customers this capability with Bitbucket Smart Mirrors. Smart Mirrors are a read-only replica of a primary or upstream […]
What does a Product Growth engineer work on?
Atlassian has many different software development teams within our Engineering organization. Some teams focus on products such as Jira, Confluence, or Bitbucket. Many others work on platform-focused capabilities or infrastructure shared between products. In this blog post, we’re going to focus on the Growth team at Atlassian. We’ll explain how the Growth team operates using […]
Best practices for change management in the age of DevOps
Insights and advice from Atlassian software engineering leaders.
Using Protobuf to make Jira Cloud faster
Atlassian’s mission is to help unleash the potential of every team, and a critical part of that is to create a world-class cloud platform that can support the needs of our largest customers. For Jira, this means supporting massive numbers of Issues in a single Jira site. A significant part of Jira functionality is implemented […]
How to export Kubernetes events for observability and alerting
A hidden gem in Kubernetes might be holding a lot of information.
