← Atlassian Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

Atlassian system design round focused entirely on building an authorization system from scratch, combining RBAC and ACL patterns. Pretty deep dive, they wanted the full picture: schema, evaluation logic, APIs, caching, audit logs. Left feeling like I covered maybe 70% of what they were actually looking for.

Questions Asked (6)

Q1

Design an authorization system that supports both role-based access control (RBAC) and resource-level ACLs, working across multiple resource types like spaces, pages, projects, and issues.

System DesignData ModelingTechnical Trade-offs
Author's notes

I started with the data model because that felt safest, laid out a users/groups/roles table and a separate permissions table linking subjects to resources.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a unified authorization model that combines RBAC and ACLs, and finally discuss data modeling, enforcement, and trade-offs. Focus on how permissions are evaluated across multiple resource types and how to handle inheritance and scalability.

Pro tip: Emphasize the importance of a centralized authorization service with caching and a clear permission evaluation order (e.g., explicit deny > explicit allow > role-based allow) to balance security and performance.

1. Clarify Requirements and Scope

Ask questions to understand scale, latency requirements, consistency needs, and whether permissions are hierarchical or flat. Identify key entities like users, groups, roles, resources, and actions.

2. Design the Authorization Model

Define a unified model that supports both RBAC (roles assigned to users/groups) and ACLs (direct permissions on resources). Consider using a policy language or graph-based representation to express permissions.

3. Data Modeling and Storage

Propose a schema for roles, permissions, resource hierarchies, and ACL entries. Discuss storage choices (SQL vs NoSQL) and indexing for efficient lookups.

4. Enforcement and Evaluation

Describe how permission checks are performed at runtime, including inheritance, conflict resolution, and caching strategies. Consider a centralized service vs distributed enforcement.

5. Trade-offs and Scalability

Discuss trade-offs between flexibility, performance, and complexity. Address scalability concerns like caching, sharding, and eventual consistency.

Key Points to Mention

  • Role hierarchy and inheritance to avoid role explosion
  • Resource hierarchy and permission inheritance (e.g., space -> page)
  • Explicit deny vs allow precedence and conflict resolution
  • Caching strategies (e.g., Redis) and cache invalidation
  • Centralized authorization service vs embedded checks
  • Auditability and logging for security and compliance

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

Q2

Walk through your permission evaluation algorithm. How do you resolve conflicts between role-based permissions and resource-level ACLs?

System DesignTechnical Trade-offs
Author's notes

This is where I stumbled.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining the overall permission evaluation flow, then dive into the conflict resolution strategy. Emphasize a clear precedence order (e.g., explicit deny > explicit allow > role-based allow) and justify it with security and usability trade-offs. Use a concrete example to illustrate how your algorithm handles a conflict.

Pro tip: Mention that you log all permission decisions with the reason (e.g., 'denied by resource ACL') to aid debugging and auditing—this shows you think about operability, not just correctness.

1. Define the evaluation order

Explain the sequence in which permissions are checked: first resource-level ACLs, then role-based permissions, with explicit denies taking precedence over allows.

2. Handle conflicts with precedence rules

Describe how you resolve conflicts: an explicit deny in an ACL overrides any role-based allow; if no explicit deny, an explicit allow in ACL grants access; otherwise fall back to role-based permissions.

3. Consider inheritance and hierarchy

Discuss how permissions propagate through resource hierarchies (e.g., project > repository) and how you merge ACLs and roles at each level.

4. Optimize for performance

Mention caching strategies (e.g., caching evaluated permissions per user-resource pair) and how you invalidate caches when permissions change.

5. Ensure auditability and testing

Highlight the importance of logging decisions and writing comprehensive tests for edge cases, such as conflicting ACLs and role changes.

Key Points to Mention

  • Explicit deny overrides any allow (security-first principle).
  • Role-based permissions are evaluated only if no explicit ACL rule matches.
  • Resource hierarchy and inheritance: permissions can be inherited from parent resources.
  • Caching evaluated permissions to reduce latency, with proper invalidation on updates.
  • Logging permission decisions with reasons for debugging and compliance.
  • Trade-offs: simplicity vs. flexibility, and performance vs. real-time accuracy.

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

Q3

What REST APIs would you expose for granting and revoking access, and for checking whether a user is authorized to perform an action?

API & IntegrationsSystem Design
Author's notes

Felt more comfortable here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scope: are you designing a general authorization service or one for a specific product like Atlassian? Then outline the core resources (grants, permissions) and operations (grant, revoke, check). Propose a RESTful API design with clear endpoints, methods, and payloads, and discuss important considerations like idempotency, consistency, and scalability.

Pro tip: Emphasize the importance of idempotency for grant/revoke operations and the need for low-latency, high-throughput authorization checks. Mention that you would consider caching and eventual consistency trade-offs, especially in a distributed system like Atlassian's.

1. Clarify Requirements and Scope

Ask clarifying questions to understand the context: Is this for a specific Atlassian product or a platform-wide service? What are the scale and latency requirements? Are there existing authorization models (e.g., RBAC, ABAC) to integrate with?

2. Define Core Resources and Operations

Identify the key resources: grants (user-resource-permission tuples) and permissions. Define the operations: grant access, revoke access, and check authorization. Consider batch operations for efficiency.

3. Design REST Endpoints

Propose endpoints like POST /grants for granting, DELETE /grants/{id} for revoking, and GET /authorization/check or POST /authorization/check for checking. Use appropriate HTTP methods, status codes, and payloads.

4. Address Non-Functional Requirements

Discuss idempotency (e.g., using idempotency keys), consistency (strong vs eventual), caching strategies for authorization checks, and scalability (sharding, read replicas).

5. Consider Security and Error Handling

Ensure authentication and authorization for the API itself, use HTTPS, validate inputs, and return meaningful error responses (e.g., 400, 401, 403, 404, 409).

Key Points to Mention

  • Use of standard HTTP methods and status codes (e.g., POST for grant, DELETE for revoke, GET for check).
  • Idempotency for grant/revoke operations to handle retries safely.
  • Batch endpoints for checking multiple permissions to reduce round trips.
  • Caching and eventual consistency for authorization checks to meet low-latency requirements.
  • Integration with existing authorization models (RBAC, ABAC) and identity providers.
  • Security considerations: API authentication, rate limiting, and audit logging.

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

Q4

How would you handle caching for permission checks, and what are the consistency trade-offs when group membership or roles change?

System DesignTechnical Trade-offs
Author's notes

Cache invalidation question in disguise.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining a layered caching strategy for permission checks, including where caches live (client, service, database) and how they are invalidated. Then discuss the consistency trade-offs between strong and eventual consistency, especially when group memberships or roles change, and propose mechanisms to balance performance and correctness.

Pro tip: Emphasize that permission caching should be tied to the sensitivity of the operation—use shorter TTLs or synchronous invalidation for high-risk actions, and consider a hybrid approach with event-driven invalidation for near-real-time consistency.

1. Identify caching layers and strategies

Describe where permission checks can be cached (e.g., client-side, API gateway, service-level, distributed cache) and common strategies like TTL-based, write-through, or refresh-ahead.

2. Define invalidation triggers

Explain how changes to group membership or roles trigger cache invalidation, such as via events, webhooks, or database triggers, and how to propagate invalidation across distributed caches.

3. Analyze consistency trade-offs

Compare strong consistency (e.g., synchronous invalidation, short TTLs) versus eventual consistency (e.g., longer TTLs, asynchronous invalidation) in terms of latency, load, and risk of stale permissions.

4. Propose a balanced solution

Suggest a hybrid approach that uses different caching policies based on operation sensitivity, and include monitoring and fallback mechanisms to handle invalidation failures.

5. Discuss real-world considerations

Mention scalability, fault tolerance, and how to handle cache stampedes or thundering herd problems during invalidation, especially in a large-scale system like Atlassian's.

Key Points to Mention

  • Cache invalidation strategies: TTL, event-driven, write-through, and their trade-offs
  • Consistency models: strong vs. eventual consistency and their impact on user experience and security
  • Distributed cache challenges: propagation delays, network partitions, and cache coherence
  • Performance vs. correctness: balancing latency reduction with the risk of stale permissions
  • Handling high-risk operations: using synchronous checks or shorter TTLs for sensitive actions
  • Monitoring and observability: tracking cache hit rates, invalidation latency, and stale permission incidents

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

Q5

What edge cases would you need to handle, such as deny overrides, permission inheritance across resource hierarchies, and real-time group membership changes?

System DesignAdaptability & Ambiguity
Author's notes

Rushed through this at the end.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging that edge cases are critical for a robust authorization system, then systematically walk through each category: deny overrides, inheritance, and real-time changes. For each, explain the challenge, propose a solution (e.g., explicit deny precedence, hierarchical evaluation, event-driven cache invalidation), and discuss trade-offs like consistency vs. performance.

Pro tip: Emphasize that deny overrides must be evaluated before allows, and that real-time group changes require a strategy for cache invalidation or event-driven updates to avoid stale permissions. Mention that Atlassian's scale demands a distributed, eventually consistent approach with careful conflict resolution.

1. Clarify requirements and scope

Ask about the specific authorization model (RBAC, ABAC), scale, consistency requirements, and whether real-time enforcement is needed. This shows you understand the problem context before diving into solutions.

2. Address deny overrides

Explain that deny rules must take precedence over allows, and describe how to implement this (e.g., evaluate denies first, use explicit deny flags). Discuss how to handle conflicting rules and ensure deny overrides are consistently applied.

3. Handle permission inheritance across hierarchies

Describe how permissions propagate down resource trees (e.g., project > board > issue). Discuss strategies like recursive evaluation, materialized paths, or precomputed effective permissions, and how to handle overrides at lower levels.

4. Manage real-time group membership changes

Explain how to keep permissions up-to-date when users are added/removed from groups. Propose solutions like event-driven cache invalidation, short TTLs, or a pub/sub system to propagate changes, and discuss consistency trade-offs.

5. Discuss trade-offs and scalability

Summarize the trade-offs between consistency, latency, and complexity. Mention how you would test edge cases and monitor for issues in production, showing a holistic engineering mindset.

Key Points to Mention

  • Explicit deny precedence: deny rules override allows, and must be evaluated first.
  • Hierarchical inheritance: permissions flow from parent to child resources, with possible overrides at lower levels.
  • Real-time updates: use event-driven architecture (e.g., Kafka, webhooks) to invalidate caches or update permissions immediately.
  • Consistency vs. availability: eventual consistency may be acceptable for some cases, but critical operations may need strong consistency.
  • Caching strategies: cache effective permissions with short TTLs or versioning to balance performance and freshness.
  • Auditability and testing: log permission decisions and test edge cases like circular group memberships or conflicting rules.

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

Q6

How would you design the audit logging component for this authorization system?

System DesignData Modeling
Author's notes

Honestly an afterthought in my prep.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and scope of the audit logging component, such as what events to log, retention policies, and compliance needs. Then propose a high-level architecture that ensures immutability, scalability, and efficient querying, and dive into data modeling and storage choices. Finally, discuss trade-offs and how the design integrates with the existing authorization system.

Pro tip: Emphasize that audit logs are often used for forensic analysis and compliance, so design for tamper-evidence and consider using append-only storage with cryptographic hashing. Also, mention the importance of separating audit logging from the main application flow to avoid performance bottlenecks.

1. Clarify Requirements

Ask questions to understand what events need to be logged (e.g., authentication, authorization decisions, resource access), who will consume the logs, retention period, and any compliance standards (e.g., SOC2, GDPR).

2. Define Data Model

Propose a schema for audit events that includes timestamp, actor, action, resource, outcome, and context. Consider using a structured format like JSON for flexibility and indexing.

3. Choose Storage and Architecture

Select a storage solution that supports high write throughput, immutability, and efficient querying, such as append-only logs, time-series databases, or cloud services like AWS CloudTrail. Discuss partitioning and indexing strategies.

4. Ensure Reliability and Security

Address how to guarantee log integrity (e.g., cryptographic hashing, write-once storage), access control for logs, and fault tolerance to prevent data loss.

5. Discuss Scalability and Querying

Explain how the design scales with increasing log volume and how to support efficient queries for auditing and analysis, possibly using a separate analytics store or search engine.

Key Points to Mention

  • Immutability and tamper-evidence (e.g., append-only, cryptographic hashing)
  • Data retention and lifecycle policies (e.g., archiving, deletion)
  • Performance impact on the authorization system (asynchronous logging)
  • Compliance and privacy considerations (e.g., PII redaction, GDPR)
  • Scalability and partitioning strategies for high-volume logs
  • Integration with monitoring and alerting systems for real-time detection

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