What are distributed systems?
A distributed system is simply any environment where multiple computers or devices are working on a variety of tasks and components, all spread across a network. Components within distributed systems split up the work, coordinating efforts to complete a given job more efficiently than if only a single device ran it.
What are important design issues that have to be considered when it comes to distributed systems?
What types of attacks must a distributed systems defend itself against?
. Interception, where an attacker intercepts communication between parts of the system so that there is a loss of confidentiality.
What are the two types of interactions between a components in a distributed system?
What are the layers in a client/server system?
What are the architectural styles that can support critical non funcational requirements?
What are some implementation factors of SaaS?
· Branding, where users from each organisation, are presented with an interface that reflects their own organisation.
· Business rules and workflows, where each organisation defines its own rules that govern the use of the service and its data.
· Database extensions, where each organisation defines how the generic service data model is extended to meet its specific needs.
· Access control, where service customers create individual accounts for their staff and define the resources and functions that are accessible to each of their users.
· Multi-tenancy is a situation in which many different users access the same system and the system architecture is defined to allow the efficient sharing of system resources.
· It must appear to each user that they have the sole use of the system.
· Multi-tenancy involves designing the system so that there is an absolute separation between the system functionality and the system data.
· Develop applications where each component is implemented as a simple stateless service that may be run on any server.
· Design the system using asynchronous interaction so that the application does not have to wait for the result of an interaction (such as a read request).
· Manage resources, such as network and database connections, as a pool so that no single server is likely to run out of resources.
· Design your database to allow fine-grain locking. That is, do not lock out whole records in the database when only part of a record is in use.