Scenario Your company manages a legacy monolithic application developed in Java (Spring Boot), currently deployed on a VM with Tomcat and managed manually. The application is business-critical and receives frequent updates. The team has decided to:
- Containerize the application.
- Deploy it on Kubernetes.
- Adopt DevOps practices to improve the software lifecycle. Candidate Objectives The candidate should describe how they would approach the project, covering the following areas:
- Containerization
- How would you structure the Dockerfile?
- How would you handle external configurations (e.g., environment variables, secrets)?
- How would you optimize the image for production?
- Deployment on Kubernetes
- Which kind of manifests would you create? (Deployment, Service, ConfigMap, Secret, Ingress, etc.)
- How would you manage scalability and high availability?
- How would you monitor the application's health?
- DevOps Practices
- How would you set up a CI/CD pipeline?
- How would you handle automated testing and versioning?
- How would you implement rollback in case of failure?
- Observability & Logging
- Which tools would you use for logging and monitoring?
- How would you ensure end-to-end visibility? C2 General
- Security & Compliance
- How would you securely manage secrets?
- How would you implement access control on Kubernetes?
- How would you ensure compliance? The application includes a module that communicates with a PostgreSQL database. How would you manage data persistence on Kubernetes? And backups? Evaluation Criteria
- Ability to abstract and design solutions.
- Knowledge of tools and DevOps best practices.
- Approach to security and resilience.
- Communication and clarity of explanation.