0% found this document useful (0 votes)
12 views

SEN303

The document discusses distributed systems and microservices, highlighting their characteristics, benefits, and challenges. It explains decentralization, scalability, and the architecture of microservices, emphasizing their independent nature and communication methods. Additionally, it addresses testing challenges unique to these systems, such as network variability, service interdependencies, and the need for effective monitoring.

Uploaded by

david.adeleye36
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

SEN303

The document discusses distributed systems and microservices, highlighting their characteristics, benefits, and challenges. It explains decentralization, scalability, and the architecture of microservices, emphasizing their independent nature and communication methods. Additionally, it addresses testing challenges unique to these systems, such as network variability, service interdependencies, and the need for effective monitoring.

Uploaded by

david.adeleye36
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

DISTRIBUTED SYSTEMS AND MICROSERVICES

GROUP 3 MEMBERS

BAMIDELE ISAAC : BU221019

ANTHONY OKOH: BU221017

ADELEYE DAVID: BU21SEN1016

IDARA EVANS: BU22SEN1030

OLAMILEKAN DANIEL:BU22SEN1059

TEJIRI VALENTINE: BU22IFT1003

A distributed system is a collection of independent computers or


nodes that appear to users asa single coherent system.

These nodes work together, communicate over a network,


andcoordinate their activities to achieve a common goal by sharing
resources, data, and tasks. They are Decentralized, they are
Autonomous (meaning they work individually without the needfor a
central control system) and they share resources

Due to their decentralization they are in constant communication


with each other

What’s Decentralization?

This is when components of a system are spread over a network


toenable flexibility and scalability. Scalability refers to the ability of a
software system to adapt to increased demands, whether interms of
performance, maintenance, availability, or capacity. It can also be
defined as the property of a system to handle a growing amount of
work byadding resources, such as hardware, network bandwidth, or
processing power, withoutcompromising its functionality or
efficiency.

A few ways to achieve scalability include:

Horizontal scaling: Adding more servers or nodes to distribute the


workload, allowing thesystem to handle increased traffic or data
volume.

Vertical scaling: Increasing the resources of individual servers, such


as CPU, memory, or storage, to improve performance.

Load balancing: Distributing incoming traffic across multiple servers


to ensure no single point of failure and optimize resource utilization.

Caching: Storing frequently accessed data in a faster, more accessible


location to reduce theload on primary storage and improve response
times.

Scalability is essential in software development as it enables systems


to:

Sustain growth: Accommodate increasing user bases, data volumes,


or transaction rateswithout compromising performance.

Adapt to changing requirements: Easily integrate new features or


services without requiringsignificant redesign or rearchitecture.

Reduce costs: Minimize the need for expensive hardware upgrades


or infrastructure overhauls.
Improve maintainability: Simplify system management and
troubleshooting by reducing thecomplexity of individual
components.

scalability is often evaluated based on factors such as:

Performance: The system’s ability to handle increased workload


without degrading responsetimes.

Availability: The system’s ability to remain operational and


accessible during periods of highdemand or unexpected failures.

Flexibility: The system’s ability to adapt to changing requirements,


such as new features orservices, without significant redesign or
rearchitecture.

Cost-effectiveness: The system’s ability to scale efficiently,


minimizing the need for expensivehardware upgrades or
infrastructure overhauls.

Examples of distributed systems

Microservices Architecture: Breaking down a monolithic application


into smaller, independentservices that communicate with each
other.

What’s a microservice?

Microservices is an architectural style that structures an application


as a collection of small, independent services, each responsible for a
specific business capability.

These servicescommunicate with each other over a network, using


lightweight protocols, to provide completefunctionality.

Key Characteristics of these services include:


Loose Coupling: Microservices are designed to be independent, with
minimal dependenciesbetween them.

Autonomy: Each microservice is responsible for its own business


logic and data storage.

Organized around Business Capabilities: Microservices are designed


around specific businessfunctions, making it easier to understand
and maintain.

Scaling: Microservices can be scaled independently, allowing for


more efficient use ofresources.

Decentralized Data Management: Each microservice manages its


own data, reducing the need for centralized data management.

Service Discovery: Microservices use service discovery mechanisms


to find and communicate with each other.

Lightweight Communication: Microservices use lightweight


protocols, such as HTTP ormessage queues, for communication.

Why use Microservices?

Faster Development: Microservices enable teams to develop and


deploy services independently, reducing code interdependency.

Improved Readability and Modularity: Microservices promote


modular code, making it easier tounderstand and maintain.

Increased Scalability: Microservices can be scaled independently,


allowing for more efficientuse of resources.

Resilience: If one microservice experiences issues, others can


continue to function, reducing theimpact on the overall system.

Some real world Microservices include :


Uber: Uber implements microservices for ride-hailing, payment
processing, and driver management.

Some of these include

API Gateway: Acts as an entry point for clients to forward requests to


appropriate microservices, providing features like security, load
balancing, and routing

Passenger Management: A microservice responsible for managing


passenger-related data andfunctionality

Billing: A microservice responsible for handling billing and payment-


related functionality.

And other Microservices

Netflix: Netflix implements microservices for its streaming service,


including services for content delivery, user authentication, and
recommendation algorithms.

Distributed systems and Microservices pose various testing


challenges which are unique due to their complex nature

Some key difficulties in testing these systems and services include :

Network Variability:

Distributed systems and microservices are spread across multiple


servers and locations, introducing network delays, packet loss, and
varying network conditions.

This makes it essential to build tests that can simulate and manage
network variability to ensure system resilience.

Service Interdependencies:
Microservices interact with each other, and testing individual
services in isolation may not reveal issues that arise from these
interactions.

Therefore, it’s crucial to develop tests that examine service-to-


service communication and data exchange.

Scalability and Load Handling:

Distributed systems and microservices must be able to scale and


handle increased loads. Testing these systems requires simulating
various load scenarios and ensuring that services can adapt and
respond accordingly.

Data Management and Consistency:

Distributed systems and microservices often involve distributed data


storage and replication.

Testing these systems requires ensuring data consistency and


integrity across nodes and services.

Monitoring and Observability:

With distributed systems and microservices, it’s challenging to


monitor and observe system behavior in real-time.

Developing effective monitoring strategies and tools is essential for


identifying issues and troubleshooting problems.

End-to-End Testing:

Testing distributed systems and microservices requires end-to-end


testing, which involves simulating real-world scenarios and testing
the entire system, including service interactions and data flow.

“Shift-Left Testing”:
With microservices, testing must occur earlier in the development
cycle (shift-left) to ensure that services are thoroughly tested before
integration.

This requires adopting agile testing practices and incorporating


testing into the continuous integration and continuous deployment
(CI/CD) pipeline.

Contract Testing:

As microservices interact with each other, contract testing becomes


essential to ensure that services adhere to agreed-upon interfaces
and data formats.

This helps identify issues early on and prevents integration problems.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy