We advocate Cloud native computing as the approach in software development that utilizes cloud computing to build and run scalable applications in modern, dynamic environments - such as public, private, and hybrid clouds.
Technologies such as containers, microservices, serverless functions and immutable infrastructure deployed via declarative code are common elements of our architectural style.
From our point of view, choosing anti-fragile concepts is a rational choice when it comes to cloud computing. It requires a completely new attitude of viewing failure. In fact, fault tolerant systems often lead to long delivery cycles and a high degree of complexity which raise the likelihood of failure and create fragile systems.
Faults are inevitable, regardless of how extensively you test the software before deploying it. That's why we endorse Chaos Engineering as the practice of injecting faults into a system before they occur naturally. By embracing this approach, we ensure that constantly evolving systems attain the resilience required, allowing us to uncover and rectify unforeseen failure scenarios before they impact users.
We adopt GitOps as a fundamental approach to manage code-based infrastructure and operational procedures. It’s an evolution of Infrastructure as Code (IaC) and a DevOps best practice that leverages Git as the single source of truth, and control mechanism for creating, updating, and deleting system architecture. In other words, we rely on Git pull requests to validate and automatically deploy system infrastructure modifications. Whenever pull requests are approved and merged, the live infrastructure is automatically reconfigured and synchronized to reflect the repository's state. This seamless workflow of syncing changes through pull requests lies at the heart of our GitOps philosophy.