Skip to content

Commit

Permalink
ADR14: ArgoCD as Candidate for a Continous Deployment System
Browse files Browse the repository at this point in the history
  • Loading branch information
tarrow committed Dec 7, 2024
1 parent c0f9753 commit 1d9aab2
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
61 changes: 61 additions & 0 deletions doc/adr/0014-argocd-candidate-for-cd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# 14) ArgoCD as Candidate for a Continous Deployment System {#adr_0014}
Date: 2024-12-05

## Status
accepted

## Context
Our infrastructure was using a helmfile based system for managing deployments in our local development, staging and production environments.

We have migrated the Platform UI, Platform API and redis clusters to an argocd based workflow to evaluate it as a future technological choice. We have also deployed our first new service `redis-2`.

This evaluation was undertaken to address the following key concerns and target these objectives:
- Need for consistent and reproducible deployment processes
- A desire to more comprehensively implement GitOps principles
- Challenges with the helmfile workflow including
- Uncertainly about the quality of the helmfile software and development direction
- Issues with each engineer maintaining a suitable deployment envionment on their development laptop
- A secure deployment system less reliant on many engineers and services with high level access to the cluster
- A desire for easy observability of if the cluster is in sync with the state defined in git
- A need for a quicker and lower friction deployment process to minimise context switching of developers

Currently:
- Three services have been migrated to argo
- One new service never deployed using helmfile has been deployed to argo
- All remaining services are using helmfile

We have experienced:
- Deploying new images of existing services has worked smoothly and been relatively transparent to engineers
- A sustained low cycle time and increased number of deployments for the migrated services
- Checking the status of deployed services using the argo dashboard is convenient
- Local development and testing of ArgoCD deployed services is less trivial than with helmfile
- Releasing and using new helm charts for services we manage has caused engineers higher friction than helmfile
- Deploying new services required some onboarding even for senior engineers
- Generation of values files for the migrated redis service was confusing to engineers who didn't build this system


## Decision
We will maintain the current hybrid state for the immediate future.
Pause further service migration while we iterate on the working mode of the existing ArgoCD deployed services to make it efficient
We remain open to proposed alternative directions for continuous deployment strategies

## Consequences
### Positive
- Better visibility into deployment states
- Better alignment with GitOps principles
- Reduced manual actions and their associated variability

### Negative
- Increased complexity while we iterate on an efficient working mode
- Temporary mainentance of two parallel deployment systems
- Increased training required for team members

## Potential Risks
- Inconsistency of managing multiple deployment systems for an extended time
- Learning curve may prove frustrating to the engineering team
- Potential drift patterns for configuring different environments

## Mitigation
- Continued written documentation efforts
- Encourage all team-members to ask for help early if they encounter issues
- All team members to take part in the iterative improvement of the ArgoCD system
1 change: 1 addition & 0 deletions doc/adr/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Current ADRs include:
- [11) Handling FQDNs](0011-handling-fqdns.md)
- [12) Stop versioning terraform modules with git](0012-stop-versioning-terraform-modules-with-git.md)
- [13) Use aliases to combine ES indices](0013-use-aliases-to-combine-es-indices.md)
- [14) ArgoCD as Candidate for a Continous Deployment System](0014-argocd-candidate-for-cd.md)
<!-- toc-end -->

---
Expand Down

0 comments on commit 1d9aab2

Please sign in to comment.