L4 - Monoliths Flashcards
What is Monolothic software architecture?
A modular way of building software whereby the software functionality is split into modules and built by developing and integrating the modules into one another.
This results in a single, centralised piece of software.
What are the pros and cons of Monolithic architecture?
Pros:
- Easier management and maintenance due to centralised components.
Cons:
- Single point of failure
Explain how Alexa is an example of Monolithic software architecture, and give the modules that it consists of…
Amazon Alexa is monolithic due to being made up of centralised modules of functionality.
Modules include: Knowledge Engine, speech to text, text to speech, Alexa.
Define each of the modules in Amazon Alexa…
Knowledge Engine: Provides question answering capabilities.
Speech to text: Enables Alexa to comprehend speech input from user.
Text to speech: Enables Alexa to respond to user instructions.
Alexa: Encapsulates other modules.
Explain 4 advantages of using Monolithic architecture…
Development: One language in one project is simply and easy to manage.
Testing: Central search space makes it easier to debug, test and locate errors.
Scaling: Scale vertically. This means once the system running the software can’t cope with the workload, the software can be transported to a more powerful system.
Databases: Monolithic systems often communicated with a single database. This makes database management simpler and easier.
What type of database do monolithic systems often utilise?
Centralised.
Define a database transaction…
A client interaction with a database.
Define the Commit and Abort transactions…
Commit -> A successful commit to the database in which the new state of the database is saved.
Abort -> A failure to commit a database change, resulting in reverting back to the prior state.
What are the ACID database properties?
Atomicity: Commits finish an entire transaction in it’s entirety, or rolls back to the prior state. There is no in between.
Consistency: Any change maintains data integrity or it cancelled entirely.
Isolation: Transactions should happen in isolation of one another to prevent concurrency issues such as race condition. This can be done via locking the contact point of the database.
Durability: Effects of transactions have to persist, even in the case of system failure.
What is a way to ensure Isolation when communication with a database?
Perform locking on the database to prevent concurrency issues such as a race condition.