Enterprise Computing - Development Flashcards
(66 cards)
What is a monorepo?
A single giant repository for all microservices; any commit triggers the production of multiple microservices.
What is a multirepo?
One repository per service; any commit triggers the production of a single service.
What is feature-based development?
Developers create long-lived feature branches based on project needs, which are merged into the main branch after weeks or months.
What is trunk-based development?
Developers primarily work on a single main branch, using short-lived branches merged back in minutes.
Why run commit tests locally?
Because others may have already committed changes causing the commit tests to now fail.
Why wait for commit tests?
Because it is important to have the devs present and focused, ready to fix failures immediately with a commit or revert.
Why avoid commits on a broken build?
It complicates debugging and leads to a culture where broken builds are tolerated.
Why should you never go home on a broken build?
Because devs soon forget the essential of changes made, and will have to remember them. Commit at least an hour before end of the work day, or first thing in the morning.
Why should you be prepared to revert?
Because it is important to get everything working quickly. If it cannot be fixed quickly, revert.
Why should you avoid commenting out tests?
Often, the start of a slippery slope to low quality. Either fix the code, modify the test, or delete the test.
What does taking responsibility for breakages involve?
Even if your tests pass, you’re responsible if others break; no one should have exclusive knowledge of parts of the codebase.
What three benefits does a version control system provide, according to Farley??
- A step back to safety.
- Share changes easily.
- Store changes somewhere safe.
What are the three models of version control described by Farley?
Mono-Repo: Everything in one big repository.
Multi-Repo: Independent things in separate repositories.
Multi-Repo’: Interdependent things in separate repositories.
According to Farley, why does a mono-repo have the three benefits that a version control system provides?
Because it is possible to step back safely by stepping back all components, store changes easily by changing any component, and store changes somewhere safe by saving all components/dependencies together.
According to Farley, why might a multi-repo not support version control benefits?
Because inter-component communication and version compatibility aren’t stored in the system.
What are two solutions to the multi-repo problem, according to Farley?
Build independently deployable components that have fixed, well-understood APIs, and have flexible, backwards/forwards compatible API’s.
Why do the solutions for the multi-repo problem support version control benefits, according to Farley?
They allow individual rollback (step back), coordinated updates (share changes), and separate storage (safe storage).
According to Farley, why is multi-repo’ considered the worst of all worlds?
Because components cannot be developed independently or deployed independently.
What is Continuous Integration (CI)?
CI is the practice of quickly integrating newly developed code with the rest of the application code, usually automated and producing a build artifact.
What are the four stages of traditional product delivery?
Alpha release, Beta release, Release Candidate, and Release.
What are the three environments used in modern feature delivery?
Development environment, Staging environment, Production environment.
What happens in the development environment?
A single team’s work is integrated and updated throughout a sprint.
What happens in the staging environment?
Multiple teams’ work is combined and updated at the end of a sprint.
What happens in the production environment?
The work of several teams is released to customers when the business decides it is right.