← Remitly Interview Insights

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

Senior
Jul 2026

Summary

System design round at Remitly where they had me whiteboard a full past project from scratch. Pretty intense scope for a single session, covering everything from architecture to post-mortems.

Questions Asked (5)

Q1

Walk through the end-to-end architecture of a project you led. Cover the major components, how data flows through the system, your storage decisions, and any external dependencies you had to manage.

System DesignTechnical Trade-offs
Author's notes

I picked a project I knew well but I think I front-loaded too much on the happy path and they had to keep nudging me toward the failure cases.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Choose a project where you made significant architectural decisions and can clearly articulate the reasoning behind them. Structure your answer by first giving a high-level overview, then diving into components, data flow, storage choices, and external dependencies, while highlighting trade-offs and your specific contributions.

Pro tip: Quantify the impact of your architectural decisions (e.g., latency reduction, cost savings) and be prepared to discuss what you would do differently today. This shows maturity and a growth mindset.

1. Set the context and scope

Briefly describe the project's purpose, your role, the team size, and the key requirements or constraints that shaped the architecture.

2. Outline the high-level architecture

Present a simple diagram or verbal overview of the major components (e.g., clients, services, databases, queues) and how they interact.

3. Explain data flow and storage decisions

Walk through how data moves through the system, including ingestion, processing, and storage. Justify your choice of databases, caches, or data models based on access patterns and scalability needs.

4. Discuss external dependencies and trade-offs

Cover third-party services, APIs, or infrastructure you relied on, and explain how you managed risks (e.g., fallbacks, retries). Highlight key trade-offs you made and why.

5. Summarize outcomes and lessons learned

Conclude with the results (e.g., performance metrics, business impact) and reflect on what you would improve or change in hindsight.

Key Points to Mention

  • Scalability and performance considerations (e.g., horizontal scaling, caching, load balancing)
  • Data consistency and availability trade-offs (e.g., CAP theorem, eventual consistency)
  • Choice of storage technologies (e.g., SQL vs NoSQL, data partitioning, indexing)
  • External dependency management (e.g., rate limiting, circuit breakers, fallback strategies)
  • Monitoring, logging, and alerting for system health
  • Security and compliance considerations (e.g., encryption, authentication, PCI DSS for payments)

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

Q2

What were the key trade-offs in your design? For example, how did you think about consistency versus availability, or latency versus cost?

Technical Trade-offsSystem Design
Author's notes

This is where it got interesting.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Pick a specific system or feature you designed and walk through the key trade-offs you considered, focusing on how you balanced competing priorities like consistency vs. availability or latency vs. cost. Explain the rationale behind your decisions, the alternatives you rejected, and the outcomes, tying them to business goals and user impact.

Pro tip: Quantify the trade-offs with concrete numbers (e.g., 'We accepted 200ms extra latency to save 30% on infrastructure costs') and mention how you validated the decision through metrics or A/B tests. This shows you think in terms of measurable impact, not just theory.

1. Set the context

Briefly describe the system or feature you designed, its purpose, and the scale or constraints that made trade-offs necessary.

2. Identify the key trade-off dimensions

Name the specific trade-offs you faced, such as consistency vs. availability, latency vs. cost, or simplicity vs. flexibility.

3. Explain your decision and rationale

State which option you chose and why, referencing business requirements, user needs, or technical constraints.

4. Discuss alternatives and consequences

Mention the alternatives you considered, why you rejected them, and the short- and long-term consequences of your choice.

5. Reflect on outcomes and lessons

Share the results (e.g., metrics, user feedback) and what you learned or would do differently next time.

Key Points to Mention

  • CAP theorem and when you prioritized consistency over availability (or vice versa) in a distributed system
  • Latency vs. cost trade-offs, such as using caching, CDNs, or cheaper storage tiers
  • How you aligned technical decisions with business goals (e.g., compliance, user experience, scalability)
  • Specific technologies or patterns you chose (e.g., eventual consistency, read replicas, async processing) and why
  • Metrics or validation methods you used to confirm the trade-off was correct (e.g., performance benchmarks, cost analysis)
  • Any regrets or future improvements, showing self-awareness and continuous learning

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

Q3

How did you handle scaling and failure recovery in this system?

System DesignRoot Cause Analysis
Author's notes

Felt more comfortable here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by briefly describing the system and its scale to set context. Then walk through specific scaling strategies you implemented and how you designed for failure recovery, using concrete examples and metrics. Conclude with lessons learned and how you would improve it today.

Pro tip: Quantify the impact of your scaling and recovery efforts with metrics like uptime, latency reduction, or cost savings. Also, mention trade-offs you considered, showing you understand that scaling and reliability involve balancing competing concerns.

1. Set the context

Briefly describe the system, its purpose, and the scale it needed to handle (e.g., requests per second, data volume, user base). This helps the interviewer understand the challenges you faced.

2. Explain scaling strategies

Detail how you scaled the system, such as horizontal scaling, sharding, caching, or load balancing. Mention specific technologies and why you chose them.

3. Describe failure recovery mechanisms

Outline how you ensured high availability and disaster recovery, including redundancy, failover, backups, and monitoring. Give examples of failures you handled and the recovery process.

4. Highlight trade-offs and decisions

Discuss key trade-offs you made, such as consistency vs. availability, cost vs. performance, and how you validated your choices.

5. Share results and lessons learned

Quantify the outcomes (e.g., improved uptime, reduced latency) and reflect on what you would do differently or improve in the future.

Key Points to Mention

  • Horizontal scaling and auto-scaling groups
  • Database sharding or partitioning strategies
  • Caching layers (e.g., Redis, CDN) to reduce load
  • Load balancing and health checks
  • Redundancy and failover across availability zones
  • Monitoring, alerting, and incident response processes

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

Q4

How did you test, monitor, and iterate on the design over time?

System DesignTechnical Trade-offs
Author's notes

Monitoring I could talk about forever so I maybe over-indexed there.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Structure your answer around a specific project where you implemented testing, monitoring, and iteration. Highlight how you used metrics and feedback to drive design improvements, and emphasize trade-offs you made. Keep it concise and focused on the impact of your actions.

Pro tip: Quantify the impact of your iterations with metrics (e.g., 'reduced latency by 30%') and mention how you balanced short-term fixes with long-term architectural improvements. This shows you think like a senior engineer.

1. Set the Context

Briefly describe the project, your role, and the initial design goals. Mention any constraints or requirements that influenced your approach.

2. Testing Strategy

Explain how you tested the design: unit tests, integration tests, load tests, chaos engineering, etc. Highlight any automated testing pipelines and how they ensured correctness and performance.

3. Monitoring and Observability

Describe the monitoring tools and metrics you used (e.g., Prometheus, Grafana, logging, tracing). Explain how you set up alerts and dashboards to track system health and user experience.

4. Iteration Based on Data

Discuss how you analyzed monitoring data and user feedback to identify areas for improvement. Give examples of specific iterations you made and the trade-offs involved.

5. Outcome and Learnings

Summarize the results of your iterations (e.g., improved performance, reduced errors) and what you learned. Mention any long-term changes you implemented.

Key Points to Mention

  • Automated testing (unit, integration, end-to-end) and CI/CD pipelines
  • Monitoring tools (e.g., Prometheus, Grafana, ELK stack) and key metrics (latency, error rates, throughput)
  • A/B testing or canary deployments to validate design changes
  • Trade-offs between performance, scalability, and maintainability
  • Incident response and post-mortems to drive improvements
  • User feedback loops and how they influenced design decisions

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

Q5

If you were rebuilding this system from scratch today, what would you change?

System DesignAdaptability & Ambiguity
Author's notes

Classic closer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's current purpose, constraints, and scale, then propose changes that address the biggest pain points while preserving what works. Frame your answer around trade-offs, not just a wish list, and tie improvements to business goals like reliability, scalability, or developer velocity.

Pro tip: Acknowledge that a rebuild is rarely greenfield: data migration, backward compatibility, and incremental delivery matter as much as the new architecture. Show you'd validate assumptions with metrics before committing to a rewrite.

1. Clarify scope and constraints

Ask about the system's current scale, SLAs, team size, and business criticality to ground your answer in reality. Confirm whether 'rebuild' means a full rewrite or an incremental evolution.

2. Identify pain points and root causes

Reference specific issues like scaling bottlenecks, deployment friction, or data consistency problems, and explain why they exist. Avoid generic complaints; tie each to an observable symptom.

3. Propose targeted changes with trade-offs

Suggest architectural or process improvements (e.g., modular services, event-driven patterns, better observability) and explicitly state what you'd gain and what you'd sacrifice. Prioritize changes by impact and effort.

4. Address migration and risk

Outline a phased approach: strangler pattern, dual writes, feature flags, and rollback plans. Show awareness of data migration, backward compatibility, and operational continuity.

5. Tie back to business outcomes

Connect your proposed changes to measurable improvements like reduced latency, faster feature delivery, or lower operational cost. Emphasize iterative delivery over a big-bang rewrite.

Key Points to Mention

  • Trade-offs between consistency, availability, and latency (CAP theorem) in the new design
  • Incremental migration strategies like strangler fig or branch by abstraction to avoid downtime
  • Observability and monitoring as first-class concerns (logging, metrics, tracing)
  • Domain-driven design or bounded contexts to decouple services and enable team autonomy
  • Cost and operational complexity of the proposed changes, including team learning curve
  • Backward compatibility and data migration challenges when replacing legacy components

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