# **🦩Flamingo Home Assignment - DevOps Engineer** ## We’d like to get a sense of how you approach cloud infrastructure, containerization, and deployment automation. This assignment is not tied to Flamingo’s domain; feel free to use any lightweight setup or example application that makes it easier for you to demonstrate your skills. **📌 Practical Part** ### **Objective** #### Package and deploy [**FleetDM**](https://fleetdm.com/) to a local Kubernetes cluster using Helm. #### **1. Helm Chart** Create a public Helm chart that deploys: - FleetDM Server - MySQL - Redis #### **2. Local cluster** Include a `Makefile` with the following targets: - `make cluster` — create local cluster (Minikube or Kind) - `make install` — install the Helm chart - `make uninstall` — remove all deployed resources #### **3. Documentation** Provide a `README.md` that includes: - Installation & teardown instructions - Verification steps to confirm FleetDM, MySQL, and Redis are operational #### **4. Enhancements** - Set up a basic CI pipeline to release new Helm chart versions. - Expose the FleetDM UI and ensure that FleetDM is reachable by `agents` - Automatically run `fleet prepare db` on fresh install ## **📌 Theoretical Part** **Architectural Design Document for “Company Inc.”** **Objective** 1. A **1–2 page, well-structured architectural design document** (PDF or similar). 2. A **High-Level Diagram (HLD)** of the architecture (using draw.io, Lucidchart, etc.) illustrating the overall infrastructure design. **Task Overview** Company Inc. is a small startup developing a web application and planning to deploy it on a major cloud provider (AWS or GCP). They have limited cloud experience and seek expertise to design a robust, scalable, secure, and cost-effective infrastructure. They are particularly interested in leveraging managed Kubernetes and following best practices. ### **Application Details** - **Type:** Web application with a REST API backend and a single-page application (SPA) frontend. - **Technology Stack:** Backend: Python/Flask; Frontend: React; Database: MongoDB. - **Traffic:** Initially low (a few hundred users/day), but expected to grow rapidly to millions of users. - **Data:** Sensitive user data is handled, requiring strong security measures. - **Deployment Frequency:** Continuous Integration and Continuous Delivery (CI/CD) is required. ### **Assignment Requirements** #### **1. Cloud Environment Structure** - Recommend the optimal number and purpose of AWS accounts / GCP projects for Innovate Inc., considering best practices for isolation, billing, and management. - Justify the choice of provider and the environmental structure. #### **2. Network Design** - Design the Virtual Private Cloud (VPC) architecture. - Describe how the network will be secured (firewalls, security groups, private/public subnets, etc.). #### **3. Compute Platform** - Detail how managed Kubernetes Service (EKS for AWS / GKE for GCP) will be leveraged to deploy and manage the application. - Describe the approach to node groups, scaling policies (horizontal & vertical), and resource allocation within the cluster. - Explain the containerization strategy, including: - Image building process - Container registry management - Deployment pipelines (CI/CD integration) #### **4. Database** - Recommend the appropriate managed MongoDB service and justify the choice. - Outline the approach to: - Automated backups - High availability (multi-AZ/replicas) - Disaster recovery strategy We value your time and want to gain a clear understanding of how you approach DevOps tasks in a clean, thoughtful, and structured manner. **Good luck, and happy deploying\! 🦩**