Replies: 7 comments 12 replies
-
Option: Use dependabot for updating base image dependencyWe previously had dependabot configured to automatically detect updates for our base docker image. However all dependabot PRs failed the linter due to not updating the changelog, so this didn't save us any effort. We could potentially save ourselves some time by reenabling this and loosening the changelog rules. |
Beta Was this translation helpful? Give feedback.
-
Option: avoid pinning the base image version in Dockerfiles@murdo-moj and @PriyaBasker23 suggested we could avoid pinning our Dockerfiles to a specific version of the If we do this without any additional changes, data-platform repo's container workflow wouldn't automatically trigger when we update the base image. We would still need to bump the version number of each container lambda (although we could write a script to bump all versions at once) |
Beta Was this translation helpful? Give feedback.
-
Option: avoid pinning lambda versions in terraform varsCurrently, we specify specific versions of the lambdas in a terraform file, application_variables.auto.tfvars.json - this is the reason we need to raise PRs against the modernisation-platform-environments repo in addition to the data-platform repo. If we removed this version file, we could skip the step of updating this version for each change, and the terraform would always deploy the latest images. We would need to be able to trigger the workflow without raising a PR, because we need to be able to update images even when no terraform code has changed. A drawback of this change would be we can no longer deploy old versions of the images to specific environments. Instead if we need to rollback a change, we would have to revert the PR that introduced it, thus creating a new image that can be deployed. |
Beta Was this translation helpful? Give feedback.
-
Option: separate out "application" deployments from "infrastructure" deploymentsCurrently all deployments go via the modernisation-platform-environments repo. The workflows in the data-platform repo only go as far as pushing images to ECR. Could we extend this to push images to lambda as well? I.e. once the PR is raised/approved/merged, the deployment requests are raised from the data-platform repo, without us having to go to |
Beta Was this translation helpful? Give feedback.
-
Implications for unit testingI recently added an additional workflow to data-platform to run unit tests based on what's changed. This has some quirks though. Because dependency management of the lambdas is done at a container level, and we (currently) run tests outside of docker, I made the decision to always run the tests against the latest version of the shared libraries (i.e. whatever is in the repo, not what is published as an image). This does the wrong thing if the dependency on the base image is not kept up to date, but becomes a non-issue if we pin to latest. |
Beta Was this translation helpful? Give feedback.
-
UpdateI think we have 4 complementary proposals here that we could implement some or all of.
Next stepsThe DPL subteam will discuss the above on the 10th October, and if we agree we will create tickets for us to implement the above suggestions. |
Beta Was this translation helpful? Give feedback.
-
Outcome following yesterdays meetingWe had a team meeting yesterday to go through the proposals in this discussion thread and agree the next way forward. Attending were @jemnery @LavMatt @mitchdawson1982 @PriyaBasker23 @tom-webber. Since there are a whole bunch of issues raised here, we will likely need to make multiple changes. So I reckon we can close off this discussion, with the action being that we will write up spike tickets for the things we want to investigate further during the alpha. We all agreed that we want to make changes to the deployment, and nobody wants to keep the current process 🚮 Meeting notes
Agreed spikesWe agreed to put the following spikes into the backlog, and prioritise the first two (will link in issues shortly):
|
Beta Was this translation helpful? Give feedback.
-
Context
We have a growing amount of code that supports the ingestion of data products.
daap-python-base
, that is used by all of our lambda containersProblem
Currently, when we modify any of this code, we have to go through a multi-step process:
Each of the first 3 stages adds delay to completing a user story, since each PR requires a review step, even if some of the reviews are just version number changes and changelog updates.
In practice, every time we update the shared library, we find we need to update multiple lambdas, which means either going through this process multiple times, or combining version updates for multiple lambdas into one PR.
Particularly while we are in alpha, we benefit from moving fast and experimenting, so we would like to remove as much friction from the deployment and review process as possible while being confident we are deploying something that works.
There are a few suggestions I will raise in comments, but the general theme of this discussion is: How might we streamline this process to reduce busywork and unhelpful blockers?
Beta Was this translation helpful? Give feedback.
All reactions