Version Control in mono-repos
Use Pull-Request flow
Explicitly declare and isolate dependencies (docker, maven, npm, composer)
separate config from deployment
Centralize deployment workflow and steps (testing, db migration, build, staging, pre-production, production)
Use Declarative formats to describe build/deployment
containerize with OCI Images (Docker)
Minimize divergence between development and production, enabling continuous deployment for maximum agility.
scale up and out without significant changes to tooling, architecture, or development practices.
Execute Apps/Deployments as one or more processes, processed should be empheremal
Ingenious technology principles gear towards reliability in all levels, and follows SRE practices:
“We can characterize the health of a service from the most basic requirements needed for a system to function as a service at all to the higher levels of function…” – Site Reliability Engineering Book
Highly reliable, scalable, and flexible cloud environment using Google Cloud and Kubernetes
Unified System and Application Monitoring using Prometheus, Grafana and Stackdriver Monitoring
Alerting-System, On-Call Duty, and structured incident response using PagerDuty
Postmortem analysis for inducing learning cycles
Focus on reliable and reproducible release processes
Capacity planning leveraging dynamic cloud environment
Rigorous focus on software quality, and testing strategies
Efficient product & project management and development