← Atlassian Interview Insights

Atlassian·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

Atlassian system design round focused entirely on a Tag System, and the interviewer was clearly not here for hand-wavy answers. Every design decision got interrogated at the API level, which I was not fully prepared for.

Questions Asked (4)

Q1

Design a Tag System that supports creating tags, associating them with objects, deleting them, and searching by tag.

System DesignAPI & IntegrationsData Modeling
Author's notes

I started with the data model which felt safe, tag table, join table for tag-to-object associations, nothing crazy.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a data model with a many-to-many relationship between tags and objects, and design APIs for CRUD operations and search. Discuss indexing strategies, consistency, and performance trade-offs for high-scale scenarios.

Pro tip: Emphasize how your design handles tag deletions and renames without breaking existing associations, and consider using a graph or inverted index for efficient tag-based searches.

1. Clarify Requirements

Ask about scale (number of tags, objects, queries per second), consistency needs, and whether tags are hierarchical or flat. Confirm if search should support multiple tags (AND/OR) and if tag suggestions are needed.

2. Design Data Model

Propose a schema with a tags table (id, name, metadata) and a taggings table (tag_id, object_id, object_type) to support many-to-many relationships. Consider using a graph database if relationships are complex.

3. Define APIs

Outline RESTful endpoints: POST /tags, POST /objects/{id}/tags, DELETE /objects/{id}/tags/{tag}, GET /objects?tag={tag}. Include bulk operations and pagination for search results.

4. Address Scalability and Performance

Discuss indexing (e.g., B-tree on tag name, inverted index for tag-object mapping), caching frequent queries, and sharding by object type or tag. Consider eventual consistency for high availability.

5. Handle Edge Cases and Trade-offs

Cover tag deletion (cascade or soft delete), renaming, and permission checks. Compare SQL vs NoSQL vs graph DB, and explain your choice based on requirements.

Key Points to Mention

  • Many-to-many relationship modeling with a junction table
  • Indexing strategies for fast tag lookup and object retrieval
  • API design for CRUD and search, including pagination and filtering
  • Scalability considerations: sharding, caching, and read replicas
  • Consistency models and handling concurrent updates
  • Trade-offs between SQL, NoSQL, and graph databases for tag systems

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

For each API operation in your tag system, what HTTP verb and URL pattern would you use, and how do you handle idempotency and error semantics?

API & IntegrationsTechnical Trade-offs
Author's notes

This is where I got tripped up.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by mapping each operation to a RESTful verb and URL pattern, emphasizing resource-oriented design. Then explain idempotency guarantees for each verb and how you handle errors with appropriate status codes and consistent error bodies. Use a concrete example from a tag system to illustrate.

Pro tip: Mention that idempotency is not just about HTTP verbs but also about how you handle retries and duplicate requests, e.g., using idempotency keys for POST. Also, highlight that error responses should include a machine-readable code and human-readable message for better debugging.

1. Identify operations and map to HTTP verbs

List the CRUD operations for tags (create, read, update, delete, list) and assign the appropriate HTTP verb (POST, GET, PUT/PATCH, DELETE).

2. Define URL patterns

Design resource-oriented URLs, e.g., /tags for collection and /tags/{id} for individual resources, ensuring consistency and predictability.

3. Explain idempotency for each operation

Clarify which verbs are idempotent (GET, PUT, DELETE) and which are not (POST), and discuss strategies to make non-idempotent operations safe, such as idempotency keys.

4. Describe error semantics

Outline how to use HTTP status codes (e.g., 400, 404, 409, 500) and provide a consistent error response format with details like error code, message, and optional metadata.

5. Illustrate with a concrete example

Walk through a specific tag operation (e.g., creating a tag) to show the verb, URL, idempotency handling, and error responses in action.

Key Points to Mention

  • Resource-oriented design and proper use of HTTP verbs
  • Idempotency of GET, PUT, DELETE vs. non-idempotency of POST
  • Use of idempotency keys for POST to prevent duplicate resource creation
  • Appropriate HTTP status codes for success and error scenarios
  • Consistent error response structure with error codes and messages
  • Handling of concurrent updates (e.g., using ETags or versioning)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

How would you implement tag-based search at scale, and what indexing strategy would you use?

System DesignTechnical Trade-offs
Author's notes

Went with an inverted index approach and mentioned Elasticsearch as an option.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements like scale, query patterns, and consistency needs. Then propose an inverted index mapping tags to document IDs, discuss sharding and replication for scalability, and compare storage options like Elasticsearch vs. custom solutions. Finally, address trade-offs around write vs. read performance and consistency.

Pro tip: Mention how Atlassian's products like Jira and Confluence handle tag-based search, and emphasize the importance of monitoring and iterating on the index design based on real usage patterns.

1. Clarify Requirements

Ask about scale (number of documents, tags, queries per second), query patterns (single tag, multiple tags, boolean logic), and consistency requirements (eventual vs. strong).

2. Design Index Structure

Propose an inverted index where each tag maps to a posting list of document IDs. Discuss compression techniques like delta encoding and skip lists for efficient intersection.

3. Scale the Index

Explain sharding strategies (e.g., by document ID or tag) and replication for fault tolerance. Consider using a distributed search engine like Elasticsearch or building on top of a KV store.

4. Address Trade-offs

Discuss trade-offs between write and read performance, consistency models, and storage overhead. Mention caching frequent queries and using bloom filters for quick negative checks.

5. Operational Considerations

Cover monitoring, reindexing strategies, and handling updates/deletes. Emphasize the need for a feedback loop to optimize based on real query patterns.

Key Points to Mention

  • Inverted index and posting lists
  • Sharding and replication for horizontal scalability
  • Trade-offs between consistency and availability (CAP theorem)
  • Use of existing technologies like Elasticsearch, Solr, or custom solutions
  • Caching and bloom filters for performance
  • Handling updates and deletes in an append-only index

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

How would you handle rate limiting and authorization for the tag APIs?

API & IntegrationsSystem Design
Author's notes

Honestly came at the end and I was a bit fried by then.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and constraints of the tag APIs, then propose a layered approach that combines authentication, authorization, and rate limiting. Emphasize scalability, security, and alignment with Atlassian's platform standards, and discuss trade-offs of different strategies.

Pro tip: Mention Atlassian's existing API gateway and identity services (e.g., OAuth 2.0, API tokens) to show familiarity with their ecosystem, and highlight the importance of per-user and per-app rate limits to prevent abuse while ensuring fair usage.

1. Clarify Requirements

Ask about expected traffic patterns, client types (internal vs external), and security requirements to tailor the solution.

2. Design Authorization

Implement OAuth 2.0 scopes and role-based access control (RBAC) to ensure only authorized users/apps can perform tag operations.

3. Implement Rate Limiting

Use a distributed rate limiter (e.g., Redis) with sliding window or token bucket algorithms, applying limits per user, per app, and globally.

4. Integrate with API Gateway

Leverage Atlassian's API gateway for centralized auth and rate limiting, ensuring consistency and reducing duplication.

5. Monitor and Iterate

Set up monitoring and alerting for rate limit breaches and auth failures, and adjust limits based on usage data.

Key Points to Mention

  • OAuth 2.0 scopes and token validation for authorization
  • Role-based access control (RBAC) for tag operations
  • Rate limiting algorithms: token bucket, sliding window
  • Distributed rate limiting using Redis or similar
  • Per-user, per-app, and global rate limits
  • Integration with API gateway and monitoring tools

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.