Monoliths Flashcards
What is a monolithic system?
A single program run by a single process formed from a collection of modules that communicate by procedure calls.
Why is it easy to develop a monolith?
All code is in one place and in one language, allowing the team to leverage their existing skills, tools, and experience.
Why is it easy to test a monolithic system?
Testing can be done on a single executable with automated test suites, and debugging is straightforward.
How can a monolithic system be scaled?
Through vertical scaling, which involves replacing an existing machine with a more powerful one.
What type of database does a monolithic enterprise typically use?
A centralised database
Why is a centralised database important?
It ensures the accuracy, completeness, and consistency of data.
What are the possible outcomes of a database transaction?
A transaction either commits (completes successfully) or aborts (fails and is rolled back).
What does ACID stand for?
Atomicity, Consistency, Isolation, Durability
What is Atomicity in ACID transactions?
Transactions must succeed or fail completely, even in case of system failures.
What is Consistency in ACID transactions?
A transaction starts and ends with the database in a consistent state.
What is Isolation in ACID transactions?
Concurrent transactions must behave as if executed sequentially.
What is Durability in ACID transactions?
Once a transaction completes successfully, its effects persist even after system failures.
What is the meaning of ‘Plan to Throw One Away’ in software development?
Teams should anticipate discarding and rebuilding their first monolithic MVP to incorporate lessons learned.
What is Gall’s Law?
Successful complex systems evolve from simpler ones rather than being designed from scratch.
What is YAGNI (You Aren’t Gonna Need It)?
A principle from extreme programming (XP) stating that programmers should not add functionality until it is needed.
What is Conway’s Law?
An organization’s system design will mirror its internal communication structure.
What is ‘Eating Your Own Dogfood’?
The practice of using one’s own products to test and improve them from a customer perspective.
What did eBay V2 architecture consist of?
A single 3.4 million line-of-code C++ library that hit the 16k method limit per class.
What is the lesson from the evolution of eBay’s architecture?
No one starts with microservices, but at scale, everyone moves to them. However, most (99%) never reach that scale.
What architecture is appropriate for a startup phase?
A monolithic one that is ‘just enough’ to meet evolving customer needs as cheaply as possible.
What does ‘just enough’ architecture look like?
It uses simple, familiar technology, often a rapid prototyping framework (Ruby, Rails, PHP, etc.).
Why should one buy software instead of building it?
Because buying is faster, cheaper, and often better—open source is preferred.
What architecture is appropriate for the scaling phase of an enterprise?
A microservices-based architecture where teams can develop and deploy independently.
How should incremental changes be made?
As small as possible, maintaining backward and forward compatibility.