Comments (1)
(Picking this up because it's worth expanding on the comment, on the assumption that these discussions haven't continued somewhere I haven't got access to)
The example is this:
...high-risk deployments are seen more often in the serverless architecture[...] This is due to a combination of
[Function->Queue->Function->Persistience (not as a golden source, but distributed with an eventual consistency) ] * N
in the workflow implementation. In some cases, it might not be viable or cost-effective to implement a safe rollback functionality that covers all possibilities - data changes in flight and the state of the records in the system. In such circumstances, the only feasible approach could be to make the data workflows idempotent, release more often and smaller changes to de-risk, and "move codebase forward" in case of a bug or an issue.
Let's say we've got a bunch of components at version 42 currently running in production, and we're following AWS guidelines about function aliases. If we release version 43 of all those components as PROD
, we know there'll be data from version 42 kicking about in queues when those new components go live. That means version 43 has to be able to handle version 42 data correctly anyway. The easy way to do that is for version 43 of each component to include all the v42 code paths, which it knows to call because of schema versions on the data itself.
For extra added fun, it's perfectly possible that some elements early in a chain will see PROD
as v43, while later ones will see it as v42 - I don't know enough about how atomic or monotonic lambda alias updates are to rule that out. Assuming eventual consistency there is the safer option. So we may well need to handle the situation where v42 components need to handle data produced by v43 components. And that means we need rules about backward and forward data schema compatibility within components that look a lot like how you'd handle database migrations for zero downtime.
Does all that make sense, or am I off-base? Do we have concrete examples of this to pull from?
from software-engineering-quality-framework.
Related Issues (20)
- Add the Python code and configuration for the performance testing case study?
- Uplift the maturity-review template to use the DMAIC model
- inclusive-language.md: should we add "tribe"?
- Create a quickstart.md page HOT 1
- Clear position on resilience of SaaS engineering tooling HOT 1
- Rework the bastion-only info route guide
- Markdown links checker keeps failing with 403s on docs.github.com
- Add worked examples for code repository commit signing HOT 5
- Guidance around Infrastructure as Code approaches
- Add link to NHSD Accessibility checklist on appropriate pages (quality checks, review and continuous-integration)
- add guidance around deployment patterns
- Add guidance around game days
- Publishing/Open Source guidance too strict HOT 2
- Expand the Performance Testing page with more advice HOT 1
- Bump markdown-cli to v0.39.0
- Bump github markdown-check-links version to 1.0.15
- Dead link - https://digital.nhs.uk/developer/nhs-digital-architecture/principles/adopt-appropriate-cyber-security-standards
- Dead link - https://owasp.org/www-project-zap/
- Branch protection guidance wording
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from software-engineering-quality-framework.