Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this was more correlation than causation.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We had an increase in UI deployments because we had a bunch of smaller UI tasks.

- 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
Comment on lines +31 to +34
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should be included in the negative consequences section.



## 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
Loading