Inside Atlassian

How We Build

Article in 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, […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

Migrating the Atlassian Identity Platform to AWS

Getting features out the door and cleaning up significant architectural tech debt are not mutually exclusive

Article in How We Build

Improving performance through better architecture

A deep dive into React Resource Router and its impact on the Jira Cloud experience.

Article in How We Build

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 […]

Article in How We Build

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 […]

Article in How We Build

Best practices for change management in the age of DevOps

Insights and advice from Atlassian software engineering leaders.

Article in How We Build

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 […]

Article in How We Build

How to export Kubernetes events for observability and alerting

A hidden gem in Kubernetes might be holding a lot of information.