DOH Flashcards
What are “horse” organisations?
Highly dangerous code releases that are prone to catastrophic failure.
Why are lean and devops practices important?
The time required to develop new functionality with lean drop from years to weeks or months. However, without devops, deployment into production would still represent a risk factor and could take a long time.
Organisations able to utilize practices from both areas are able to perform experiments to test business ideas, discovering which ideas create the most value, which are further developed and safely deployed into production.
Competitive advantage relies on fast time to market and relentless experimentation.
What are two important goals of IT organisations?
- Respond to the rapidly changing competitive landscape.
- Provide stable, reliable and secure services to the customer.
What is manufacturing lead time and why is it important in lean?
Lead time is the time required to convert raw materials into finished goods. And it was the best predictor of quality, customer satisfaction, and employee happiness.
One of the best indicators of short lead times is small batch sizes of work.
What is dark launching?
A process that allows us to release production-ready software features to a small group of users while hiding them from the rest of the user base prior to a full release.
A dark launch can also include deploying code to a production environment but without exposing it to any production traffic.
How is a dark launch implemented?
We start by wrapping the new feature in a feature flag. This decouples the deployment from the release. However, this also increases technical dept if the feature flags are not managed properly.
What are feature flags?
Feature flags can turn functionalities on or off in order to safely test in production by separating code deployment from feature release.
A feature flag ranges from a simple IF statement to more complex decision trees, which act upon different variables.
What are the difference between dynamic and static feature flags?
Dynamic feature flags can be changed at runtime.
Static feature flags can only be changed with a code change or updated configuration file.
Dynamism refers to how much we need to modify a flag in its lifetime.
What are the benefits of feature flags?
- Feature flags enable continuous delivery - the risk of long-lived branches and dreaded merge hell is reduced.
- Increase rate of product releases and engineering velocity - Test in production without risks and less buggy releases.
- Continuous experimentation - frequently validate changes and measure performance based on chosen KPIs.
- Risk mitigation - releases to a subset of users instead of big-bang releases.
What are the challenges of feature flags?
- Using feature flags can become complex especially with in-house solutions.
- Messy code and coordination - feature flags need to be cleaned up when they have served their purpose but when and by who?
- Technical dept - unused feature flags
What are the pros and cons of storing feature flags in configuration files?
Its a simple implementation method, a configuration file is usually used to store application settings and some feature flags fall into this category.
However, it requires a redeploy each time and feature flag is activated or deactivated. Additionally, flags cannot be context specific they are either on or off for all users.
The distinction between short- and long-lived flags influence how we go about implementing its toggle point.
What are the pros and cons of storing feature flags in a database?
Its convenient since the settings can be updated often and easily. This also means that product teams can change flags and not only developers.
However, when we scale and use more dynamic feature flags then quick solutions fall short, since it requires more complex segmenting and controlled rollouts logic to be implemented in-house.
Why is it a good idea to scope each feature flag to a single team?
To avoid overlap in accountability and confusion in ownership. The team is responsible for rollout, monitoring and retiring/cleanup of the flag.
Why should all feature flags not be treated the same?
Feature flags can generally have many purposes.
1. Release toggles should be managed by developers
2. A/B testing flags should be managed by product teams.
3. Kill switches should be managed by the ops team.
Etc.
What is important to remember when doing percentage rollout?
- Maintain consistency - a specific user should see the same variation of the feature regardless of the number of times it is evaluated.
- Do not reach a point of no return - if the flag is still live then do not completely remove the option to go back.
What is important to remember when implementing our own feature flag system?
- Do not make it a single point of failure - the flagging system should not be on the critical path and needs to be graceful degradation path.
- Feature flag changes should be backward compatible - we should be able to go back to a previous flagging state.
- Treat feature flagging code as production code - should be clean and tested.
- Have a plan to remove old feature flags - but keep in mind that different flags have different sunsetting timelines depending on their purpose.
What is the definition of a technology value stream?
Typically defined as the process required to convert a business hypothesis into a technology enabled service that delivers value to the customer.
What is development lead time?
The time from when the ticket was created to when the solution is in production. This is what the customer is experiencing.
Why is a problem to have long deployment lead times?
Heroics are required at almost every stage of the value stream. Everything need to be merged together and work together which can result in bug fixes and investigations that can take days and then have to be tested again.
What are the three principles underpinning devops?
- Flow: fast flow from dev to ops to customer
- Feedback: fast feedback from customer to devs.
- Continual learning: high-trust culture that supports a dynamic, disciplined and scientific approach to experimentation and risk-taking.
Why is it important for work to be visible?
In order for us to have an overview of where the downstream flow is good and where it is stalled. Otherwise, work might be stalled or bounce between departments without/few people knowing it.
It is also easier to prioritize the work that are available.
Why are small batch sizes important for flow?
Large batch sizes can result in a lot of WIP and larger variability in flow.
What are the typical system constraints preventing short development lead time?
- Environment creation - creating production and testing environment each time we develop something.
- Code deployment - long deploys
- Test setup - long tests and many required manual tests without automation
- Tight architecture - require many meetings in order to change code because the architecture is non extensible hence teams do not have autonomy to change what they need
What describes the second way?
The second way enable fast and constant feedback from right to left at all stages of the value stream.
We make our system of work safer by creating fast, frequent and high-quality information flow throughout the value stream.
What is the defining characteristics of a complex system?
It defies any single person’s ability to see the system as whole and understand how all the pieces fit together.
Complex systems typically have a high degree of interconnectedness of tightly coupled components, and system-level behavior cannot be explained in terms of the behavior of the system components.
Another observed characteristic: doing the same thing twice does not necessary result in the same outcome.
What conditions should be met in order to safely work on complex systems?
- Complex work is managed so that problems in design and operations are revealed.
- Problems are swarmed and solved, resulting in quick construction of new knowledge.
- New local knowledge is exploited globally throughout the organization.
- Leaders create other leaders who continually grow these types of capabilities.
What effect do feedforward and feedback loops have on system components?
Cause components within a system to reinforce or counteract each other.
What is the difference between feedback and feedforward loops?
Feedback is in relation to the past. We receive feed that customers use our service less efficiently because of xyz. Feedforward is looking into the future with suggestions on how customers can use the service more efficiently.
Why is feedback critical?
It allows us to steer. We must constantly validate between customer needs, out intentions and our implementations.
What does it mean to “swarm” problems?
Contain the porblems before they can spread and to diagnose and treat the problems so that they cannot recur. By doing this we build knowledge about how to manage the systems for doing our work, converting ignorance into knowledge.