diff --git a/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/03_Foundation.md b/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/03_Foundation.md index 5184a20cb..d55fe5bb5 100644 --- a/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/03_Foundation.md +++ b/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/03_Foundation.md @@ -43,6 +43,14 @@ implemented in an easier way. ## On-Demand vs. Continuously Reconciled +These are two paradigms in lifecycle management that are fundamental opposites. On the one side, changes can be triggered by a person or external system, the other is where the system itself can reconcile any changes by observing a source. The first can be done through a portal, CLI, or scripts, while the other requires that you install and maintain a set of agents whose behavior is defined by configuration or policy. + +When infrastructure is managed with on-demand solutions like scripts, either manually or through an automation pipeline, one of the benefits gained is immediate feedback. With a reconciliation process, one can rely on eventual consistency, which requires all changes to happen at the source. The GitOps principles call this the “desired state” and it should always be what the system tries to adhere to. This means that a continuously reconciled system is self-healing, while any on-demand model has no such guarantee. However, with the right tools, the on-demand model can be idempotent and more flexible. + +On-demand operations can also be more complex than a continuously reconciled one. Managing imperative pipelines and scripts can quickly grow out of proportion, putting cognitive load on the operator. The agents, Kubernetes controllers or operators, are usually singletons used for specific parts of the operation. This can result in a more stable architecture, with fewer variables and less bespoke solutions. It comes with it own sets of problems, like less granular control and debugging. + +In different terms, this can be described as “push versus pull” or “pipelines” versus "controllers". Neither model is wrong, and both have their benefits and disadvantages. There is also the option to go for a hybrid approach, where certain parts of the system are reconciled continuously, while others are not. + ## DSL vs. Programming Language ## Stateful vs. Stateless diff --git a/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/05_Conclusion.md b/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/05_Conclusion.md index e4908fcaa..aef5512c5 100644 --- a/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/05_Conclusion.md +++ b/tags/tag-infrastructure/initiatives/infrastructure-lifecycle/05_Conclusion.md @@ -10,5 +10,6 @@ feedback. Bruno Schaatsbergen (@bschaatsbergen) Thomas Schuetz (@thschue) +Roberth Strand (@roberthstrand) ## Reviewers