Unit 1 CC
Unit 1 CC
Unit 1 CC
Conclusion:
Distributed systems are becoming increasingly popular due to their high availability,
scalability, and fault tolerance. However, they also present some challenges that must be
addressed. By understanding the characteristics and challenges of distributed systems,
developers can design and implement effective distributed systems that meet the needs of
their users.
Distributed systems are used in a wide range of applications. Here are some
examples of distributed systems:
1. Social media: Social media platforms such as Facebook, Twitter, and Instagram use
distributed systems to handle the large volume of data generated by their users.
2. Telecommunication networks: Telephone networks and cellular networks are
examples of distributed systems that allow users to communicate with each other over
long distances.
3. Cloud computing: Cloud computing is a distributed system that provides on-demand
access to computing resources such as servers, storage, and applications.
4. Distributed databases: Distributed databases are databases that are spread across
multiple computers and are used to store large amounts of data.
5. Distributed file systems: Distributed file systems are file systems that are spread
across multiple computers and are used to store and manage large files.
• the emergence of ubiquitous computing coupled with the desire to support user
mobility in distributed systems.
Distributed computing refers to a system where processing and data storage is distributed
across multiple devices or systems, rather than being handled by a single central device.
In this article we will see Distributed Computing System Models.
Types of Distributed Computing System Models
Physical Model
A physical model is basically a representation of the underlying hardware elements of a
distributed system. It encompasses the hardware composition of a distributed system in
terms of computers and other devices and their interconnections. It is primarily used to
design, manage, implement and determine the performance of a distributed system. A
physical model majorly consists of the following components:
Nodes – Nodes are the end devices that have the ability of processing data, executing
tasks and communicating with the other nodes. These end devices are generally the
computers at the user end or can be servers, workstations etc. Nodes provision the
distributed system with an interface in the presentation layer that enables the user to
interact with other back-end devices, or nodes, that can be used for storage and
database services, or processing, web browsing etc. Each node has an Operating
System, execution environment and different middleware requirements that facilitate
communication and other vital tasks.
Links – Links are the communication channels between different nodes and
intermediate devices. These may be wired or wireless. Wired links or physical media
are implemented using copper wires, fibre optic cables etc. The choice of the medium
depends on the environmental conditions and the requirements. Generally, physical
links are required for high performance and real-time computing. Different
connection types that can be implemented are as follows:
Point-to-point links – It establishes a connection and allows data transfer
between only two nodes.
Broadcast links – It enables a single node to transmit data to multiple nodes
simultaneously.
Multi-Access links – Multiple nodes share the same communication channel to
transfer data. Requires protocols to avoid interference while transmission.
Middleware – These are the software’s installed and executed on the nodes. By
running middleware on each node, the distributed computing system achieves a
decentralised control and decision-making. It handles various tasks like
communication with other nodes, resource management, fault tolerance,
synchronisation of different nodes and security to prevent malicious and unauthorised
access.
Network Topology – This defines the arrangement of nodes and links in the
distributed computing system. The most common network topologies that are
implemented are bus, star, mesh, ring or hybrid. Choice of topology is done by
determining the exact use cases and the requirements.
Communication Protocols – Communication protocols are the set rules and
procedures for transmitting data from in the links. Examples of these protocols
include TCP, UDP, HTTPS, MQTT etc. These allow the nodes to communicate and
interpret the data.
Architectural Model
Architectural model in distributed computing system is the overall design and structure
of the system, and how its different components are organised to interact with each other
and provide the desired functionalities. It is an overview of the system, on how will the
development, deployment and operations take place. Construction of a good architectural
model is required for efficient cost usage, and highly improved scalability of the
applications. The key aspects of architectural model are –
Client-Server model – It is a centralised approach in which the clients initiate
requests for services and severs respond by providing those services. It mainly works
on the request-response model where the client sends a request to the server and the
server processes it, and responds to the client accordingly. It can be achieved by using
TCP/IP, HTTP protocols on the transport layer. This is mainly used in web services,
cloud computing, database management systems etc.
Peer-to-peer model – It is a decentralised approach in which all the distributed
computing nodes, known as peers, are all the same in terms of computing capabilities
and can both request as well as provide services to other peers. It is a highly scalable
model because the peers can join and leave the system dynamically, which makes it
an ad-hoc form of network. The resources are distributed and the peers need to look
out for the required resources as and when required. The communication is directly
done amongst the peers without any intermediaries according to some set rules and
procedures defined in the P2P networks. The best example of this type of computing
is BitTorrent.
Layered model – It involves organising the system into multiple layers, where each
layer will provision a specific service. Each layer communicated with the adjacent
layers using certain well-defined protocols without affecting the integrity of the
system. A hierarchical structure is obtained where each layer abstracts the underlying
complexity of lower layers.
Micro-services model – In this system, a complex application or task, is decomposed
into multiple independent tasks and these services running on different servers. Each
service performs only a single function and is focussed on a specific business-
capability. This makes the overall system more maintainable, scalable and easier to
understand. Services can be independently developed, deployed and scaled without
affecting the ongoing services.
Fundamental Model
The fundamental model in a distributed computing system is a broad conceptual
framework that helps in understanding the key aspects of the distributed systems. These
are concerned with more formal description of properties that are generally common in
all architectural models. It represents the essential components that are required to
understand a distributed system’s behaviour. Three fundamental models are as follows:
Interaction Model – Distributed computing systems are full of many processes
interacting with each other in highly complex ways. Interaction model provides a
framework to understand the mechanisms and patterns that are used for
communication and coordination among various processes. Different components that
are important in this model are –
Message Passing – It deals with passing messages that may contain, data,
instructions, a service request, or process synchronisation between different
computing nodes. It may be synchronous or asynchronous depending on the
types of tasks and processes.
Publish/Subscribe Systems – Also known as pub/sub system. In this the
publishing process can publish a message over a topic and the processes that
are subscribed to that topic can take it up and execute the process for
themselves. It is more important in an event-driven architecture.
Remote Procedure Call (RPC) – It is a communication paradigm that has an ability
to invoke a new process or a method on a remote process as if it were a local
procedure call. The client process makes a procedure call using R
PC and then the message is passed to the required server process using
communication protocols. These message passing protocols are abstracted and the
result once obtained from the server process, is sent back to the client process to
continue execution.
Failure Model – This model addresses the faults and failures that occur in the
distributed computing system. It provides a framework to identify and rectify the
faults that occur or may occur in the system. Fault tolerance mechanisms are
implemented so as to handle failures by replication and error detection and recovery
methods. Different failures that may occur are:
Crash failures – A process or node unexpectedly stops functioning.
Omission failures – It involves a loss of message, resulting in absence of
required communication.
Timing failures – The process deviates from its expected time quantum and
may lead to delays or unsynchronised response times.
Byzantine failures – The process may send malicious or unexpected
messages that conflict with the set protocols.
Security Model – Distributed computing systems may suffer malicious attacks,
unauthorised access and data breaches. Security model provides a framework for
understanding the security requirements, threats, vulnerabilities, and mechanisms to
safeguard the system and its resources. Various aspects that are vital in the security
model are –
Authentication – It verifies the identity of the users accessing the system. It
ensures that only the authorised and trusted entities get access. It involves –
Password-based authentication – Users provide a unique password
to prove their identity.
Public-key cryptography – Entities possess a private key and a
corresponding public key, allowing verification of their authenticity.
Multi-factor authentication – Multiple factors, such as passwords,
biometrics, or security tokens, are used to validate identity.
Encryption – It is the process of transforming data into a format that is
unreadable without a decryption key. It protects sensitive information from
unauthorized access or disclosure.
Cloud computing means storing and accessing the data and programs on remote servers
that are hosted on the internet instead of the computer’s hard drive or local server. Cloud
computing is also referred to as Internet-based computing, it is a technology where the
resource is provided as a service through the Internet to the user. The data which is
stored can be files, images, documents, or any other storable document.
Some operations which can be performed with cloud computing are –
1. Storage, backup, and recovery of data
2. Delivery of software on demand
3. Development of new applications and services
4. Streaming videos and audio
Public Cloud
Public cloud is cloud model which can be access by anyone they can also use their services,
but ownership and control are under the hand of third party(service provider). For example,
Google App Engine.
Private Cloud
Private cloud is a deployment model in which ownership , control and ability to access
systems and services belongs to specific user or community. The cost developing and
managing high in comparison of public cloud. There is no need to share your hardware with
anyone else. It is also called the “internal cloud” The private cloud gives greater flexibility of
control over cloud resources. Example: VMware , Red Hat etc.
Hybrid Cloud
Hybrid cloud is hybrid of public and private cloud. Both cloud world is bridged by the
proprietary software. Hybrid cloud computing gives the best of both worlds. Organisation
can move data and application between different cloud using combination of two or more
deployment methods, depending upon their need. Example: Rackspace, Threat Stack etc
Community Cloud
Multi-Cloud
Multi-cloud is similar to the hybrid cloud deployment approach, which combines public and
private cloud resources. Instead of merging private and public clouds, multi-cloud uses many
public clouds. Although public cloud providers provide numerous tools to improve the
reliability of their services, mishaps still occur. It’s quite rare that two distinct clouds would
have an incident at the same moment. As a result, multi-cloud deployment improves the high
availability of your services even more. Example : Google Cloud Platform (GCP)
Software as a Service(SaaS)
Advantages of SaaS
Disadvantages of SaaS :
1. Limited customization: SaaS solutions are typically not as customizable
as on-premises software, meaning that users may have to work within the
constraints of the SaaS provider’s platform and may not be able to tailor
the software to their specific needs.
2. Dependence on internet connectivity: SaaS solutions are typically cloud-
based, which means that they require a stable internet connection to
function properly. This can be problematic for users in areas with poor
connectivity or for those who need to access the software in offline
environments.
3. Security concerns: SaaS providers are responsible for maintaining the
security of the data stored on their servers, but there is still a risk of data
breaches or other security incidents.
4. Limited control over data: SaaS providers may have access to a user’s
data, which can be a concern for organizations that need to maintain strict
control over their data for regulatory or other reasons.
Platform as a Service
Infrastructure as a Service
Anything as a Service
Function as a Service :
FaaS is a type of cloud computing service. It provides a platform for its users or
customers to develop, compute, run and deploy the code or entire application as
functions. It allows the user to entirely develop the code and update it at any
time without worrying about the maintenance of the underlying infrastructure.
The developed code can be executed with response to the specific event. It is
also as same as PaaS.
FaaS is an event-driven execution model. It is implemented in the serverless
container. When the application is developed completely, the user will now
trigger the event to execute the code. Now, the triggered event makes response
and activates the servers to execute it. The servers are nothing but the Linux
servers or any other servers which is managed by the vendor completely.
Customer does not have clue about any servers which is why they do not need
to maintain the server hence it is serverless architecture.
Both PaaS and FaaS are providing the same functionality but there is still some
differentiation in terms of Scalability and Cost.
FaaS, provides auto-scaling up and scaling down depending upon the demand.
PaaS also provides scalability but here users have to configure the scaling
parameter depending upon the demand.
In FaaS, users only have to pay for the number of execution time happened. In
PaaS, users have to pay for the amount based on pay-as-you-go price regardless
of how much or less they use.
Advantages of FaaS :
Highly Scalable: Auto scaling is done by the provider depending upon the
demand.
Cost-Effective: Pay only for the number of events executed.
Code Simplification: FaaS allows the users to upload the entire
application all at once. It allows you to write code for independent
functions or similar to those functions.
Maintenance of code is enough and no need to worry about the servers.
Functions can be written in any programming language.
Less control over the system.
The various companies providing Function as a Service are Amazon Web
Services – Firecracker, Google – Kubernetes, Oracle – Fn, Apache OpenWhisk
– IBM, OpenFaaS,
Disadvantages of FaaS :
1. Cold start latency: Since FaaS functions are event-triggered, the first
request to a new function may experience increased latency as the
function container is created and initialized.
2. Limited control over infrastructure: FaaS providers typically manage the
underlying infrastructure and take care of maintenance and updates, but
this can also mean that users have less control over the environment and
may not be able to make certain customizations.
3. Security concerns: Users are responsible for securing their own data and
applications, which can be a significant undertaking.
4. Limited scalability: FaaS functions may not be able to handle high traffic
or large number of requests.
Risk Related to Cloud Computing
There are several security risks to consider when making the switch to cloud computing.
Some of the top security risks of cloud computing include:
1. Limited visibility into network operations
2. Malware
3. Compliance
4. Data Leakage
5. Inadequate due diligence
6. Data breaches
7. Poor application programming interface (API)
Let’s take a closer look at these risks.
1. Limited visibility into network operations
When moving workloads and assets to the cloud, organizations forfeit a certain level of
visibility into network operations. This is because the responsibility of managing some of the
systems and policies shifts to the cloud service provider. Depending on the type of service
model being used, the shift of responsibility may vary in scope. As a result, organizations
must be able to monitor their network infrastructure without the use of network-based
monitoring and logging.
2. Malware
By moving large amounts of sensitive data to an internet-connected cloud environment,
organizations are opening themselves up to additional cyber threats. Malware attacks are a
common threat to cloud security, with studies showing that nearly 90% of organizations are
more likely to experience data breaches as cloud usage increases. As cybercriminals continue
to become increasingly savvy with their attack delivery methods, organizations must be
aware of the evolving threat landscape.
3. Compliance
Data privacy is becoming a growing concern, and as a result, compliance regulations and
industry standards such as GDPR, HIPAA, and PCI DSS are becoming more stringent. One
of the keys to ensuring ongoing compliance is by overseeing who can access data and what
exactly they can do with that access. Cloud systems typically allow for large-scale user
access, so if the proper security measures (ie. access controls) aren’t in place, it can be
difficult to monitor access across the network.
4. Data Leakage
Data leakage is a growing concern for organizations, with over 60% citing it as their biggest
cloud security concern. As previously mentioned, cloud computing requires organizations to
give up some of their control to the CSP. This can mean that the security of some of your
organization’s critical data may fall into the hands of someone outside of your IT department.
If the cloud service provider experiences a breach or attack, your organization will not only
lose its data and intellectual property but will also be held responsible for any resulting
damages.
5. Inadequate due diligence
The move to the cloud should not be taken lightly. Similar to a third-party vendor, when
working with a cloud service provider, it’s important to conduct thorough due diligence to
ensure that your organization has a complete understanding of the scope of work needed to
successfully and efficiently move to the cloud. In many cases, organizations are unaware of
how much work is involved in a transition and the cloud service provider’s security measures
are often overlooked.
6. Data breaches
One of the most impactful security risks the cloud faces is the potential for a data breach.
These are a result of poor security measures that allow malicious actors to gain access to
sensitive data across cloud servers. One breach could cost an organization millions of dollars,
alongside a blow to an organization’s reputation and the potential for legal liability.
7. Poor API
If the cloud has poor application program interfaces (API), then servers run the risk of having
data unwillingly exposed. When it comes to API, malicious actors will employ several
strategies such as brute force attacks and denial-of-service attacks in order to weaken the
integrity of the system.