Browse How We Build
Filters
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.
Scaling React server-side rendering in Jira Cloud
For the past 18 months, we’ve been iterating on and improving a React server-side rendering service to support the frontend in our cloud-hosted Jira offering. During this time, the service has grown fairly organically from a side-project spiking a proof-of-concept, to a performance-critical service with 24/7 on-call support. This isn’t the story of an ideal […]
Automated testing: 5 lessons from Atlassian’s Kubernetes team on testing infrastructure as code
Today, the infrastructure world is moving much faster than ever before. It’s easy to provision hundreds of servers in seconds and have them online and usable within minutes. With all of that power comes the ability to iterate faster – and the potential for more bugs, more incidents, and more stress. You’ve felt the pain […]
Using an event-driven architecture to improve Jira Software responsiveness
Imagine a team working remotely or collocated. The team is made up of engineers, architects, designers, and product managers, and they all use Jira Software to collaborate on their day-to-day work. However, every time one of them updates an issue, project, or board, their fellow team members do not see the change instantaneously. Instead they […]
Java debugging at scale: when rare events become commonplace
As an individual contributor at Atlassian, one aspect of my job is resolving bugs in production. This can be a challenging and enjoyable form of problem solving. I recently helped understand and fix an intermittent problem with Jira Cloud. It was an interesting tale, not just because of the root cause we finally uncovered, but […]
A look at Trello: adopting GraphQL and Apollo in a legacy application
Trello is currently undergoing a big technological shift on the frontend, and an important part of this shift has been our approach to incrementally adopting GraphQL. We’ve used a client-side GraphQL schema (in a creative way) to quickly unlock the benefits of GraphQL. If you’re considering moving to GraphQL in your product, then this would […]
How we built our cloud migration strategy for Confluence
Our journey toward a better migration path for customers.
Our not-so-magic journey scaling low latency, multi-region services on AWS
Engineering stateless, high-availability cloud services comes with juuuuuuust a few challenges. Here’s how we (eventually) slayed the dragon.
Using spec-first API development for speed and sanity
An implementation-first approach to API development is all well and good… but might spec-first be even better?
