At the beginning of its design, CookUnity relied solely on manually created instances. The few application replicas had been generated from snapshots of others, so there was uncertainty about which components and dependencies were necessary for the application. Deploys were manual and, being a young company, the processes were undocumented. As a result, scaling in terms of development resources became increasingly challenging, as the onboarding process without documentation was complex. Additionally, identifying issues in production became an increasingly difficult task due to the lack of centralized monitoring services or application system logs. Lastly, CookUnity had AWS credits, which meant that the billing was oversized for their use case, and there were concerns about what would happen in the future if optimization wasn’t carried out.
- Migration to Docker and Kubernetes across all environments.
- Creation of Terraform infrastructure for versioning and change approval.
- Reduction of AWS billing by at least 50%.
- Complete automation of application deployment processes.
- Implementation of monitoring, including Application Performance Monitoring (APM) and resource consumption metrics.
- Centralization of a user directory to manage access to internal services.
- Migration of as much as possible to internal traffic using a VPN for development and Business Intelligence (BI).
The Craftech team joined forces with CookUnity and together we established a comprehensive native development stack within Kubernetes. The platform embraced Docker for its entire product lineup, both locally and in the cloud. Projects now benefit from reusable CI/CD configurations that are fully automated, enabling faster development with increased reliability.
We introduced a fully customized stack for monitoring and scaling, incorporating automatic notifications for both infrastructure and business metrics.
Furthermore, we centralized the entire logging stack for CookUnity, establishing a standardized logging approach. This streamlines troubleshooting for issues across production and development environments.