DOH Flashcards

1
Q

What are “horse” organisations?

A

Highly dangerous code releases that are prone to catastrophic failure.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Why are lean and devops practices important?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are two important goals of IT organisations?

A
  1. Respond to the rapidly changing competitive landscape.
  2. Provide stable, reliable and secure services to the customer.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is manufacturing lead time and why is it important in lean?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is dark launching?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How is a dark launch implemented?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are feature flags?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the difference between dynamic and static feature flags?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the benefits of feature flags?

A
  1. Feature flags enable continuous delivery - the risk of long-lived branches and dreaded merge hell is reduced.
  2. Increase rate of product releases and engineering velocity - Test in production without risks and less buggy releases.
  3. Continuous experimentation - frequently validate changes and measure performance based on chosen KPIs.
  4. Risk mitigation - releases to a subset of users instead of big-bang releases.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the challenges of feature flags?

A
  1. Using feature flags can become complex especially with in-house solutions.
  2. Messy code and coordination - feature flags need to be cleaned up when they have served their purpose but when and by who?
  3. Technical dept - unused feature flags
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the pros and cons of storing feature flags in configuration files?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are the pros and cons of storing feature flags in a database?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Why is it a good idea to scope each feature flag to a single team?

A

To avoid overlap in accountability and confusion in ownership. The team is responsible for rollout, monitoring and retiring/cleanup of the flag.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Why should all feature flags not be treated the same?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is important to remember when doing percentage rollout?

A
  1. Maintain consistency - a specific user should see the same variation of the feature regardless of the number of times it is evaluated.
  2. Do not reach a point of no return - if the flag is still live then do not completely remove the option to go back.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is important to remember when implementing our own feature flag system?

A
  1. 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.
  2. Feature flag changes should be backward compatible - we should be able to go back to a previous flagging state.
  3. Treat feature flagging code as production code - should be clean and tested.
  4. Have a plan to remove old feature flags - but keep in mind that different flags have different sunsetting timelines depending on their purpose.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What is the definition of a technology value stream?

A

Typically defined as the process required to convert a business hypothesis into a technology enabled service that delivers value to the customer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What is development lead time?

A

The time from when the ticket was created to when the solution is in production. This is what the customer is experiencing.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Why is a problem to have long deployment lead times?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What are the three principles underpinning devops?

A
  1. Flow: fast flow from dev to ops to customer
  2. Feedback: fast feedback from customer to devs.
  3. Continual learning: high-trust culture that supports a dynamic, disciplined and scientific approach to experimentation and risk-taking.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Why is it important for work to be visible?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Why are small batch sizes important for flow?

A

Large batch sizes can result in a lot of WIP and larger variability in flow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What are the typical system constraints preventing short development lead time?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What describes the second way?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

What is the defining characteristics of a complex system?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

What conditions should be met in order to safely work on complex systems?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

What effect do feedforward and feedback loops have on system components?

A

Cause components within a system to reinforce or counteract each other.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

What is the difference between feedback and feedforward loops?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Why is feedback critical?

A

It allows us to steer. We must constantly validate between customer needs, out intentions and our implementations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

What does it mean to “swarm” problems?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Why is swarming necessary?

A
  • It prevents the problem from progressing downstream, where the cost and effort to repair increases exponentially and technical dept is allowed to accumulate.
  • It prevents the work center affected from starting new work, which can introduce new errors in the system.
  • If the problem is not addressed it can recur, requiring more fixes and work.
32
Q

Why does adding more inspection steps increase the likelihood of future failures?

A

The effectiveness of approval processes decreases as we push decision making further away from where the work is performed.

We need everyone in our value stream to find and fix problems in their area of control. We push quality and safety responsibilities and decision-making to where the work is performed.

33
Q

What two types of customers does “lean” define?

A
  • The external customer that pays for the product
  • The internal customer who receives and processes the work immediately after us.
34
Q

What is the focus of the thrid way?

A

Creating a culture of continual learning and experimentation. These are the principles that enable constant creation of individual knowledge, which in then turned into team and organisational knowledge.

35
Q

What three types of organization cultures can we summarize?

A
  • Pathological: large amounts of fear and threat. People hoard information. Failure is hidden.
  • Bureaucratic: rules and processes, often to help individual departments maintain their turf. Failure is processed through a system of judgement.
  • Generative: actively seeking and sharing information to better enable the achieve its mission. Failure results in reflection and genuine inquiry.
36
Q

How do generative organisations respond to failures?

A

When accidents and failures occur, instead of looking for human error they look for how we can redesign the system to prevent the accident for happening again.

37
Q

What happens to processes over time in the absence of improvements?

A

Due to chaos and lack of order processes degrade over time.

“Even more important than daily work is the improvement of daily work” - Mike Orzen, Lean IT.

38
Q

Why is tension important?

A

Lower-performing organizations buffer themselves from disruptions and might even increase WIP in order to ensure that work centers do not go idle.

High-performing organizations introduce tension to increase performance and improve resilience (antifragility). Instead of fearing idle work centers they take the opportunity to experiment to improve performance and safety.

39
Q

Why is top-down leadership not effective?

A

Traditional leaders were expected to make the correct decisions. There is significant evidence that greatness is not achieved by leaders making the correct decisions - instead leaders should create conditions so their team can discover greatness in their daily work.

Top-down transformations are possible, but they require highest level of management and susitained focus on the outcome.

40
Q

What does the ‘greenfield vs brownfield’ software categorization mean?

A

Term originally used for urban planning and building projects. Greenfield is underdeveloped land and brownfield is developing on contaminated land.

Greenfield projects are often pilots to demonstrate feasibility.

Brownfield are existing software serving actual customers and come with technical dept.

41
Q

What are the ideal phases used by change agents to build and expand their coalition and base of support?

A
  1. Find innovators and early adopters: focus on teams who actually want to help. Ideally, these are also people with influence.
  2. Build critical mass and silent majority
  3. Identitfy the holdouts: high profile influential detractors who are most likely to resist.
42
Q

Why is it important to identify all members of a value stream when selecting a service for a devops initiative?

A

In value streams of any complexity, no one person knows all the work that must be performed in order to create value for the customer. We need to understand HOW value is being created in order to know if any areas in our value stream jeopardizing our goals of fast flow, short lead times and reliable customer outcomes.

43
Q

What is a process block?

A

When documenting value stream activities at the high level, we can use process blocks in a diagram. They should include: lead time (received task -> customer received outcome), process time (how long it took to complete the task) and %C/A (% Complete and/or Accurate) as measured by the downstream customers of the output.

44
Q

Why should planning horizons and iteration intervals be short for devops teams?

A
  • Flexibility to reprioritize and replan quickly
  • Decrease the delay between work expended and improvement realized.
  • Faster learning generated from the first iteration
  • Less risk that the project is killed before we can generate outcomes.
45
Q

What are non-functional requirements (NFRs)?

A

Sometimes referred to as the “ilities”: maintainability, scalability, reliability, testability, deployability and security.

46
Q

What is Conway’s Law?

A

Organizations whcih design systems… are constrained to produce designs which are copies of the communication structures of these organizations.

If you have four groups working on a compiler, you will get a 4-pass compiler.

47
Q

How many primary organizational structures is described by Dr. Roberto Fernandez?

A

Three:
- Functional-oriented organisations
- Matrix-oriented organisations
- Market-oriented organisations

48
Q

What is a functional-oriented organisation?

A

Optimise for expertise, division of labor and reducing cost. Often have a tall hierarchical organisational structure. These organisations centralise expertice: fx server admins, db admins, network admins etc.

49
Q

What is a matrix-oriented organisation?

A

Attempt to combine functional and market orientation. Often result in complicated organisational structures, and sometimes achieve neither benefits of the functional or the market oriented organsation structure.

50
Q

What is a market-oriented organisation?

A

Optimise for responding quickly to customer needs. Tend to be flat, composed of multiple cross-functional disciplines.

51
Q

Can we reorganize ourselves to continous improvement and adaptiveness?

A

NO! What is decisive is not the form of the organisation, but how people act and react. It is the habits and capabilities in people and the workforce that lead to succes.

But structure and culture helps (personally)

52
Q

What is one of the largest challenges as organisations grow?

A

Maintaining effective communication and coordination between people and teams. Often when people and teams reside on different floors, buildings etc. creating and maintaining a shared understanding and mutual trust becomes more difficult, impeding effective collaboration.

53
Q

What is a bounded context and why are they important?

A

A bounded context is simply the boundary within a domain where a particular domain model applies.

Bounded contexts ensure that services are compartmentalized and have well-defined interfaces, which also enables easier testing.

Observation former engineering director for google app engine: organisations with service-oriented architectures have incredible flexibility and scalability. Many developers in small teams can still be incredibly productive.

54
Q

What are the factors in the twelve-factor methodology?

A
  1. Codebase: One codebase tracked in revision control, many deploys.
  2. Dependencies: Explicitly declare and isolate dependencies.
  3. Config: Store config in the environment.
  4. Backing services: Treat backing services as attached resources.
  5. Build, release, run: Strictly separate build and run stages.
  6. Porcesses: Execute the app as one or more stateless processes.
  7. Port binding: Export services via port binding.
  8. Concurrency: Scale out via the process model.
  9. Disposability: Maximize robustness with fast startup and graceful shutdown.
  10. Dev/prod parity: Deep development, staging and production as similar as possible.
  11. Logs: Treat logs as event streams.
  12. Admin processes: Run admin/management tasks as one-off processes.
55
Q

Why is the one codebase, one application principle in the 12-factor app important?

A

Important to maintain a good lead-time.

The single codebase for an application is used to produce any number of immutable releases that are destined for different environments.

Following this particular discipline forces teams to analyze the seams of their application and potentially identify monoliths that should be split off into microservices.

Multiple applications within a single codebase can get ugly for a number of reasons. Conway’s law states that the organization of a team will eventually be reflected in the architecture of the product that team builds. Dysfunction, poor organization, and lack of discipline among teams usually results in the same dysfunction or lack of discipline in the code.

One codebase, one application does not mean you’re not allowed to share code across multiple applications; it just means that the shared code is yet another codebase.

56
Q

Why are dependency management important in the 12-factor app?

A

One benefit of explicit dependency declaration is that it simplifies setup for developers new to the app. The new developer can check out the app’s codebase onto their development machine, requiring only the language runtime and dependency manager installed as prerequisites. They will be able to set up everything needed to run the app’s code with a deterministic build command.

Twelve-factor apps also do not rely on the implicit existence of any system tools. If the app needs to shell out to a system tool, that tool should be vendored into the app.

57
Q

What is a config and why should it be stored in the environment?

A

An app’s config is everything that is likely to change between deploys (staging, production, developer environments, etc.). Including: resource handlers, credentials and per-deploy values such as canonical hostname for the deploy.

The twelve-factor app requires strict separation of config from code. Configs varies substantially across deploys, code does not.

The twelve-factor app stores config in environment variables. Unlike config files, there is little chance of them being checked into the code repo accidently. And they are language- and OS-agnostic.

In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime (dev, test, prod, staging, qa, demo, etc.).

58
Q

What is a cononical name (CNAME)?

A

Its a properly denoted host name of computers or a network server. CNAME is a record in the DNS database that indicates the true host name of a computer associated with its aliases.

A machine’s host name could be “barkley.example.com”, but because it runs the web and FTP services for the domain “example.com”, it could have canonical names of “www.example.com” and “ftp.example.com”.

59
Q

What is a backing service?

A

Any service the app consumes over the network as part of its normal operation: datastores such as MySql, messaging/queueing systems, SMTP services for outbound email and caching systems such as memcached.

60
Q

Why should backing services be treated as attached resources?

A

By accessing backing services as attached resources via a URL or other locator/credentials in the config. We can swap backing services in the config without changing the app’s gode.

61
Q

How is a codebase transformed into a (non-development) deploy?

A

Through three stages:
1. Build: fetches dependencies and compiles binaries and assets.
2. Release: takes the build and combines it with the deploy’s current config.
3. Run: runs the app in the execution environment by launching a set of the app’s processes against a selected release.

62
Q

Why should an app be executed as one or more stateless processes?

A

Tweleve-factor processes are stateless and share nothing. Any data that needs to persist must be stored in a stateful backing service, typically a database, or fx memcache or redis (fx for user session with time-expiration).

When a process is stateless, instances can be added and removed to address a particular load burden at a given point in time. Since each process operates independently, statelessness prevents unintended side effects.

63
Q

Why should services be exported using port binding?

A

The reasoning is that domain names and associated IP addresses can be assigned on-the-fly by manual manipulation and automated service discovery mechanisms. Thus, using them as a point of reference is unreliable. However, exposing a service or application to the network according to port number is more reliable and easier to manage.

64
Q

Why should we scale out via the process model?

A

In the twelve-factor app, processes are a first class citizen. The process model shines when it comes time to scale out. The share-nothing, horizontally partitionable nature of twelve-factor app processes means that adding more concurrency is a simple and reliable operation.

65
Q

Why should apps be disposable (able to start and stop at a moments notice)?

A

Facilitates fast elastic scaling, rapid deployment of code or config changes, and robustness of production deploys.

66
Q

Why should apps be disposable (able to start and stop at a moments notice)?

A

Facilitates fast elastic scaling, rapid deployment of code or config changes, and robustness of production deploys.

In terms of shutdown, disposability advocates ensuring that all database connections and other network resources are terminated properly and that all shutdown activity is logged

67
Q

Why should we keep development, staging and production as similar as possible?

A

The twelve-factor app is designed for continuous deployment by keeping the gap between development and production small. Looking at the three gaps described above:
- Make the time gap small: a developer may write code and have it deployed hours or even just minutes later.
- Make the personnel gap small: developers who wrote code are closely involved in deploying it and watching its behavior in production.
- Make the tools gap small: keep development and production as similar as possible.

68
Q

Why should logs be treated as event streams?

A

The Logs principle advocates sending log data in a stream that a variety of interested consumers can access. The process for routing log data needs to be separate from processing log data.

69
Q

Why should admin/management tasks be ran as one-off processes?

A

The principle of Admin Processes states that admin processes are first-class citizens in the software development lifecycle and need to be treated as such.

70
Q

What are the overall aspects included in the concept continous delivery?

A

Automated deployment pipeline, automated tests that ensure we are in a deployable state, having developers trunk daily, and architecture environments and code to enable low-risk releases.

71
Q

Why should infrastructure be easier to rebuild than to repair?

A
  • We can quickly rebuild if something goes wrong instead of repairing.
  • Repeatable environment creation systems, allows easier increase in capacity (horizontal scaling).
  • Easier to restore in case of catastrophic failure (instead of having to replicate years of undocumented work).
72
Q

What is immutable infrastructure?

A

We create new virtual machines or containers from the automated build mechanism and deploy them into production, destroying the old ones or taking them out of rotation.

Manual changes to the production environment are no longer allowed - the only way changes can be made is to put the changes into version control and re-create the code and environments from scratch.

73
Q

What did Gary Gruver observe about automated testing and price?

A

Without automated testing, the more code we write the more time and money is required to test our code - in most cases this is a totally unscalable business model.

74
Q

Why are automated build and test processes that run in dedicated environments necessary for a working deployment pipeline?

A
  • The build and test processes can run all the time, independent of work habits.
  • A segregated build and test process ensures we understand all the dependencies required to build, package, run and test our code (no it ran on my PC situations).
  • We can package the application to enable repeatable installation of code and configurations into an environment.
  • Environments can be made more production-like in a consistent and repeatable way (compiler versions, debugging flags etc. are removed).
75
Q

What are the three capabilities required for continuous delivery?

A
  • Comprehensive and reliable set of automated tests that validate we are in a deployable state.
  • A culture that stops the production line when validation tests fail.
  • Developers working in small batches on trunk rather than long-lived feature branches.