Sobes.tech
Middle+ — Principal

Detailed infrastructure design of a Dropbox clone service

livecode

Task condition

The company plans to create a service similar in functionality to DropBox, aimed at users worldwide (Europe, USA, Asia, etc.). The application consists of a set of microservices, each implementing a separate business process (e.g., payment service, user management service, file handling service, etc.). Data is stored using PostgreSQL, files are stored in an object storage compatible with S3, and communication between microservices is organized through a queue.

The source repository contains:

  • 10 directories, each containing the code for a separate microservice and a Dockerfile for its build;
  • a docker-compose.yml file in the root, allowing to run a local environment with all microservices, PostgreSQL, a queue, and S3-compatible storage.

Non-functional business requirements:

  1. High availability – SLA of at least 99.99%.
  2. Load resilience – the system must withstand both constant high load and short-term peak loads.
  3. Low latency – minimal latency is required both within the region and for users from different regions.
  4. Security and confidentiality – protection of data from unauthorized access.
  5. Cost efficiency – infrastructure should be cost-effective, without excessive expenses.
  6. Failover and DR – in case of a failure of an entire data center or region, the service should remain accessible and data integrity should be maintained.

Your role is the DevOps team leader. You are required to prepare:

  1. Production environment project – propose a complete infrastructure scheme considering all the listed requirements. Clearly specify the cloud services, tools, and approaches used.
  2. Staging environment project – develop a version as close as possible to production but significantly cheaper. Describe which components will be simplified or excluded and why.
  3. Infrastructure management – choose methods and tools for automating deployment and support of the infrastructure.
  4. Feedback – identify tools and practices that allow developers and business to monitor system operation in different environments and make decisions on its optimization.
  5. Performance assessment – describe approaches and metrics that help measure the efficiency of server resource usage, as well as ways to reduce delays when working with files.