0% found this document useful (0 votes)
57 views25 pages

EPDA

EPDA APU LEVEL 3 DOCUMENTATION

Uploaded by

alvin.jose.joshy
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)
57 views25 pages

EPDA

EPDA APU LEVEL 3 DOCUMENTATION

Uploaded by

alvin.jose.joshy
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/ 25

Student Name Alvin Jose Joshy

TP Number TP067879
Intake Code APD3F2405SE
Module Code (052024-KGT)
Module Title Enterprise Programming for Distributed
Application
Assessment Type Individual Assignment
Submission Date 09/08/2024
Lecturer Name Mr. Kau Guan Kiat

1|Page
Contents
PART 1............................................................................................................................................2
Introduction......................................................................................................................................2
(A) Architectural Evolution of Distributed Computing...................................................................4
(B) Types of Enterprise Applications and Architectures............................................................9
(C) REST Architecture in Distributed Web Applications........................................................13
Role of REST in Distributed Web Applications........................................................................14
Impact of REST on Quality Attributes......................................................................................16
Negative Effects of REST on Quality Attributes......................................................................16
Positive Effects of REST on Quality Attributes........................................................................17
(D) Comparison of REST Frameworks: Gin Gonic vs Django................................................19
Conclusion.....................................................................................................................................22
References......................................................................................................................................22

PART 1
Introduction

Distributed computing refers to when multiple computers or systems work together to achieve a
common goal by sharing resources or processing their tasks over a network (GeeksforGeeks,
2023). This allows the execution of tasks and processes that would be too complex for a single
computer or machine to handle efficiently. Distributed computing contains several key processes
such as resource sharing, scalability, fault tolerance, transparency, concurrency and
communication.

2|Page
Figure 1: Distributed Computing (Distributed Computing in Java 9, n.d.)

Expanding upon these concepts, resource sharing could refer to memory, storage or the
processing power to perform tasks in collaboration with others to solve tasks which are too
complex or require the handling of large volumes of data. Scalability refers to the fact that nodes,
a device within the larger network within the distributed system, can be added to increase the
systems overall capacity and performance. Fault tolerance is due to the numerous nodes that
exist within the system where in the event that some nodes fail to function properly, the system
as a whole can still complete its given functions without a drastic drop in performance, which
can be achieved through redundancy and replication of data and processes (GeeksforGeeks,
2024). Transparency is the concept which allows the user to interact with the system as if it was
a single entity, which could be achieved by hiding the location of resources (location
transparency) or hiding the impact of node failures (failure transparency) from the user.
Concurrency refers to the ability of the system to simultaneously execute multiple tasks through
various processors, improving efficiency. The concept of communication is so that the nodes in a
distributed system can coordinate with each other in order to synchronize their data and actions,
mainly achieved through network protocols and middleware.

Distributed computing offers numerous benefits such as increased reliability due to fault
tolerance which ensures that the system will remain operational in case of occasional node

3|Page
failures, the enhanced performance achieved by the distribution of tasks among multiple nodes,
the scalable nature of distributed computing which can allow the system to grow in proportion to
the growth in demand as well as the fact that it can adapt to different workloads and
environments by leveraging resources.

(A) Architectural Evolution of Distributed Computing

The evolution of distributed computing refers to the decentralization of systems over time from
centralized systems. During the 1950s to 1960s, large-scale data processing was left to
mainframe-based machines which were the beginnings of client-server architecture. As a decade
passed and as the early 1970s came by, an alternative to mainframe systems were found in the
form of cluster networks (GeeksforGeeks, 2022).

Figure 2: Old Mainframe system (Pargon, n.d.)

4|Page
Cluster computing involved a network of similar workstations or PCs, connected via a high-
speed local-area network, with each node running the same operating system to achieve
parallelism. Between 1967 and 1974, ARPANET was developed, enabling global message
exchange and remote hosting of services, independent of a fixed programming model. The
TCP/IP protocol, which supports datagram and stream-oriented communication over a packet-
switched network, also came into existence during this period (Thiruvathukal, 2005)

Figure 3: Cluster Computing (Sinha & Sinha, 2021)

Following this era, the internet evolved significantly with the adoption of TCP/IP, transforming
it into a network of interconnected local networks. As the number of connected hosts grew at a
drastic scale in a relatively short period of time, centralized naming systems like HOSTS.TXT
proved insufficient for scalability. This led to the creation of the Domain Name System (DNS) in
1985, which could translate domain names into IP addresses. Additionally, early GUI-based

5|Page
computers using WIMP (windows, icons, menus, pointers) were developed, enabling PCs to be
more commonplace within households and providing consumers a way to browse the web, play
video games and so on (GeeksforGeeks, 2022).

In the 1980s and 1990s, the development of HyperText Transfer Protocol (HTTP) and
HyperText Markup Language (HTML) by Tim Berners-Lee at CERN led to the creation of the
first web browsers, websites, and web servers. This period saw the standardization of TCP/IP,
forming the foundation for the World Wide Web (WWW), which significantly increased the
number of Internet-connected hosts. As PC-based applications were being churned out at a rapid
rate, the complexity of their interactions grew, making communication between them
challenging. Network computing, with remote procedure calls (RPCs) over TCP/IP, became a
popular solution for software communication. Servers began providing resources identified by
Uniform Resource Locators (URLs). The need for different software applications to
communicate across diverse hardware and networks led to the concept of distributed computing
applications (GeeksforGeeks, 2022).

Peer-to-peer (P2P) computing is a distributed architecture where tasks are shared directly among
peers without a central coordinator, with each peer acting as both a client and a server. P2P
networking, popularized by Napster in 1999, enables decentralized internet operations. Grid
computing, introduced to manage multiple tasks collaboratively over a network, uses middleware
to allow computers to interact and perform tasks together. Between 1994 and 2000, x86
virtualization became effective, enhancing computing capabilities. Web services emerged,
allowing platform-independent communication via XML over the internet, enabling
interoperability between different systems like Java and Perl or Windows and Unix. P2P
networks, which often involve small groups of machines, enable resource sharing among nodes
that act as both consumers and providers. This contrasts with client-server models, where adding
more nodes can overload the server. Security in P2P networks is complex due to their dual role,
making them vulnerable to attacks such as denial of service. Most modern operating systems
now include software for implementing P2P networks (GeeksforGeeks, 2022).

6|Page
Figure 4: P2P network (Sinha & Sinha, 2021)

Cloud computing emerged from the integration of cluster technology, virtualization, and
middleware, enabling the management of resources and applications online without relying on
local hardware. This allows access from anywhere globally, with many providers offering
subscription-based services. Users benefit by not needing to maintain servers, purchase
additional storage, install software updates, or manage software licenses, as the cloud vendor
handles these tasks. Mobile computing enables the wireless transmission of data, including voice
and video, eliminating the need for physical connections to switches. Common mobile
computing devices include smart cards, smartphones, and tablets. The Internet of Things (IoT)
developed from mobile computing, utilizing sensors, processing capabilities, software, and other
technologies to connect and exchange data with other devices and systems over the internet
(Eliaçık, 2022).

7|Page
Figure 5: Cloud Computing (Why Cloud Computing Is a Key Enabler for Digital Government,
2021)

The evolution of Application Programming Interface (API) communication using the REST
model aimed to achieve scalability, flexibility, portability, caching, and security (History of a
REST API, n.d.). To implement these features consistently across all APIs, the need for a
common component arose, leading to the development of API management platforms. These
platforms have become essential in modern distributed systems. Alongside API evolution, the
concept of running multiple systems on a single computer through virtualization gained
prominence. This allowed one physical machine to operate as multiple virtual machines (VMs),
running concurrently. While this approach was beneficial, it did not optimize the host computer's
resource utilization. Today, various virtualization solutions are available, such as VMware

8|Page
Workstation, Microsoft Hyper-V, and Oracle Virtualization, each offering different features and
benefits for managing virtual environments.

As data from mobile computing and IoT services grew exponentially, real-time collection and
processing became challenging. This led to the development of edge computing, where client
data is processed at the network's edge, closer to where it is generated (Hamm et al., 2020). This
reduces latency by avoiding the need to send data to centralized data centers. Instead, data is
processed and analyzed near its source, such as on a corporate LAN. Fog computing emerged to
address bandwidth issues by aggregating data at certain access points rather than transmitting all
information through cloud channels. This distributed approach lowers costs and improves
efficiency. Companies like IBM have been instrumental in advancing fog computing.

Together, fog and edge computing extend the cloud computing model from centralized to
decentralized systems, enabling ultra-low service response times and increased bandwidth. This
hybrid approach enhances the ability to manage and process large volumes of data generated by
modern applications and devices.

(B) Types of Enterprise Applications and Architectures

Enterprise Applications:

Systems for customer relationship management, or CRM, are made to assist companies in
managing their contacts with both present and future clients. They offer solutions for managing
sales pipelines, keeping track of and organizing customer data, and automating a range of
workflow procedures. CRMs boost communication, improve customer service, and eventually
increase sales (What Is CRM (Customer Relationship Management)?, n.d.). Some examples are
Salesforce, Zoho CRM, and Microsoft Dynamics CRM, providing a number of functionalities
like sales forecasting, performance statistics, and contact management.

ERP systems are integrated software platforms that automate and manage essential business
operations within an organization, frequently in real time. Accounting, purchasing, project
management, and supply chain management are some of these procedures. ERPs provide a

9|Page
centralized database that guarantees data consistency and facilitates the making of well-informed
corporate choices, hence streamlining processes (Oracle, 2023). Prominent enterprise resource
planning (ERP) solutions are SAP ERP, Oracle ERP, and Microsoft Dynamics 365.

Systems for supply chain management, or SCM, are necessary to control the movement of
products, information, and money from the acquisition of raw materials to the delivery of
completed commodities. Features like order processing, supply chain planning, inventory
management, and logistics are all included in SCM software, which helps businesses streamline
their supply chains and cut expenses (GeeksforGeeks, 2023c). SCM solutions, such as SAP
SCM, Oracle SCM Cloud, and JDA Software, offer instruments to enhance productivity and
transparency throughout the whole supply chain.

Systems for managing employee data and HR procedures, including hiring, payroll, benefits
administration, training, and performance evaluation, are called human resource management
(HRM) systems. These systems guarantee legal compliance with employment regulations and
expedite HR tasks (Are You Ready to Adopt Innovative HRMS Tools to Pursue Transformative
HR Strategies?, n.d.). HRM systems, such as Workday, ADP, and BambooHR, provide
businesses with tools to better manage their workforces, increase employee engagement, and cut
down on administrative burdens.

Systems for business intelligence (BI) are made to evaluate corporate data and offer useful
insights to aid in decision-making. Features including data mining, process analysis, reporting,
and performance benchmarking are provided by BI tools. Organizations may monitor
performance, spot patterns, and make data-driven decisions with the aid of these solutions (What
Is Business Intelligence (BI)? | IBM, n.d.). Among the top BI programs, Tableau, Microsoft
Power BI, and QlikView are known for their data visualization features and user-friendliness.

Platforms known as content management systems (CMS) let users produce, manage, and edit
digital information—often without requiring a high level of technical expertise (What Is a
Content Management System (CMS)? | IBM, n.d.). CMS solutions, which come with capabilities
like workflow management and version control, are commonly used for managing websites,
digital assets, and documents. Popular content management systems (CMS) include WordPress,
Drupal, and Joomla.

10 | P a g e
Enterprise Application Architectures:

A classic method of software design known as monolithic architecture constructs the entire
program as a single, integrated entity. This design simplifies the initial development and
deployment process by integrating all the components of an application into a single codebase.
But as the program expands, it gets more complicated and challenging to maintain. Due to the
interdependencies between components, scaling and updating the system might be difficult
because any updates or changes necessitate redeploying the entire application, which could result
in downtime (Raj & Bhukya, 2023).

Monolithic architectures also have a lot of scalability problems since horizontal scaling, which
involves making several copies of the entire application, can be expensive and ineffective.
Monolithic systems' centralized control architecture can lead to bottlenecks, which impair
efficiency and make it more difficult to adjust to shifting business requirements. Owing to these
drawbacks, numerous companies have made the switch to more adaptable and modular designs,
including microservices and Service-Oriented Architecture (SOA), in order to get around the
problems that occur with monolithic systems (Raj & Bhukya, 2023).

By dividing software into reusable services, the architectural paradigm known as service-
oriented architecture, or SOA, aims to handle the complexity of contemporary enterprise
systems. These services use protocols like XML-based SOAP to connect over a network; an
Enterprise Service Bus (ESB) frequently facilitates this communication. Compared to monolithic
architectures, SOA enables the integration of several software components, resulting in more
flexible and scalable application designs (Raj & Bhukya, 2023).

A service in a service-oriented architecture (SOA) is a separate unit that carries out particular
business duties, which might be straightforward tasks or intricate procedures. High performance
and scalability are promoted by the smooth communication between services made possible by
the ESB's use as middleware. Large business systems can be made more manageable by using
SOA's modular design, which enables the independent development, deployment, and
maintenance of various services. In large businesses, where interoperability across several
services is essential, this flexibility is especially beneficial (Raj & Bhukya, 2023).

11 | P a g e
A more contemporary method of software design, microservices architecture has a number of
benefits over conventional SOA and monolithic structures. Applications under this architecture
are made up of discrete, stand-alone services that concentrate on particular business tasks. A
decentralized approach to application development is encouraged by the ability for each
microservice to be built, launched, and scaled independently. This architecture uses containers
for scalability and flexibility, which is in line with cloud-based deployment (Raj & Bhukya,
2023).

Compared to the intricate middleware frequently associated with SOA, microservices are more
basic and easier to manage since they interact via lightweight protocols like HTTP/REST and
JSON. Additionally, this design supports continuous integration and continuous deployment
(CI/CD) and is well-aligned with DevOps techniques. Microservices have been effectively
implemented by numerous companies, such as Netflix, Amazon, and Twitter, to improve their
scalability, flexibility, and resilience (Raj & Bhukya, 2023).

The switch to microservices can bring additional challenges despite its advantages, especially
when managing data consistency and inter-service communication. Furthermore, cautious
planning and execution are needed during the shift from traditional architectures to microservices
in order to prevent interference with already-running systems. Academic research on
microservices is still in its infancy; studies investigating best practices and comparisons with
SOA are now underway (Raj & Bhukya, 2023).

Software design patterns known as Event-Driven Architecture (EDA) let events—like user input,
sensor readings, or communications from other programs—dictate how a program operates.
Applications like Internet of Things (IoT) devices, financial services, and e-commerce platforms
that demand real-time processing and responsiveness are especially well-suited for it. The EDA
system is characterized by its high scalability and flexibility, as it responds to events by initiating
particular actions or processes. But maintaining consistency and controlling event flow can be
difficult, particularly in distributed systems (GeeksforGeeks, 2024a).

With N-Tier (or Layered) Architecture, an application is divided into logically separate layers,
each of which is in charge of handling a certain functionality. Presentation, business logic, data
access, and database layers are examples of common layers. Because of the architecture's
emphasis on concern separation, the system is simpler to create, run, and maintain. Enterprise

12 | P a g e
applications frequently employ N-Tier designs, which let several teams work independently on
various layers. Nevertheless, there may be a performance cost associated with this method, and
layer interaction management may become more complicated (Altvater, 2023).

A technique to designing and developing applications that make full use of cloud environments
is called cloud-native architecture. In order to build scalable, resilient, and flexible systems, this
architecture often makes use of technologies like containers, microservices, continuous
integration/continuous delivery (CI/CD) pipelines, and automated management tools. Cloud-
native systems are perfect for contemporary distributed applications since they are built to
leverage cloud capabilities like high availability and dynamic scaling. But depending too much
on cloud service providers can result in vendor lock-in, and creating for cloud settings calls for
specialized knowledge (GeeksforGeeks, 2023b).

(C) REST Architecture in Distributed Web Applications

13 | P a g e
Role of REST in Distributed Web Applications

Figure 6: Architecture using RESTful API (Jbarcas, n.d.)

REST (Representational State Transfer) is a software architectural style extensively utilized for
integrating services and applications in distributed web environments. Introduced by Roy
Fielding in his Ph.D. dissertation, REST is characterized by six constraints that promote different
quality attributes (Khare, 2024). These constraints significantly influence the design and
functionality of distributed web applications, impacting attributes like interoperability and
modifiability positively while potentially affecting performance and reliability negatively.

14 | P a g e
In the realm of distributed web applications, RESTful services are essential for ensuring
interoperability and modifiability. The stateless nature and uniform interface of REST contribute
to the simplicity and flexibility of these services, allowing for independent evolution of client
and server components. This decoupling ensures that changes in one component do not
necessitate changes in another, enhancing the overall modifiability of the system (REST API:
What It Is, How It Works, Advantages and Disadvantages, n.d.).

However, the adoption of REST comes with its challenges. The stateless nature, while beneficial
for scalability and simplicity, can introduce performance issues. Each request must be
independently authenticated and authorized, potentially slowing down response times.
Furthermore, the lack of built-in caching mechanisms can negatively impact performance, as
caching is crucial for reducing server load and improving response times. Reliability can also be
a concern, as stateless communication complicates session management, potentially leading to
data inconsistencies and increased complexity in handling client state (REST API: What It Is,
How It Works, Advantages and Disadvantages, n.d.).

Despite these challenges, REST's positive impacts on interoperability, simplicity, and scalability
cannot be overlooked. The uniform interface constraint facilitates communication between
diverse components, making integration straightforward and effective. REST's stateless nature
and support for caching mechanisms also promote scalability, allowing servers to efficiently
handle numerous clients.

The technical literature and frameworks surrounding REST services shows its relevance and
widespread adoption in building SOA-based distributed systems. REST's principles have been
integrated into modern software architecture, driving project managers, architects, and evaluators
to consider the implications of transitioning towards an SOA paradigm. This has led to the
development of guidelines, tools, and approaches aimed at aiding architecture evaluation
activities, identifying risks related to quality attribute requirements, and ensuring the
effectiveness and efficiency of distributed web applications.

15 | P a g e
Impact of REST on Quality Attributes
REST significantly influences various quality attributes in web applications. Its adoption
positively affects interoperability and modifiability. By promoting a uniform interface and
decoupling client-server interactions, REST simplifies system interactions, making it easier to
understand, maintain, and modify the system. These attributes are crucial for the flexibility and
adaptability of distributed systems, allowing them to evolve with changing requirements
(O’Brien et al., 2007).

On the flip side, REST's impact on performance and reliability can be negative. Statelessness,
while beneficial for scalability, requires repeated authentication for each request, potentially
slowing down system response times. Additionally, the absence of built-in caching mechanisms
can further degrade performance. Reliability concerns arise from the complexities of managing
client state without server-side storage, increasing the risk of data inconsistencies (O’Brien et al.,
2007).

Architecture evaluators must carefully consider these tradeoffs when implementing REST in
distributed web applications. Understanding how REST design decisions impact quality
attributes is essential for ensuring that the system meets its performance, reliability, and security
requirements. Clear design considerations and tradeoffs are necessary to mitigate the negative
effects and enhance the system's overall quality.

Negative Effects of REST on Quality Attributes


REST's stateless nature can lead to performance issues due to repeated authentication and
authorization checks for each request, potentially slowing down response times. The lack of
built-in caching mechanisms can further affect performance, as caching significantly improves
response times and reduces server load. Additionally, the uniform interface constraint, while
promoting simplicity and scalability, may limit the optimization of specific operations,
potentially impacting performance where tailored optimizations are required (O’Brien et al.,
2007).

Stateless communication in REST introduces reliability concerns, as the server does not maintain
client state between requests. This increases the complexity of managing session-related

16 | P a g e
information and can lead to data inconsistencies. The emphasis on a uniform interface can also
pose challenges for reliability, as it may restrict the flexibility needed to address specific
reliability requirements in complex distributed systems. Furthermore, inadequate documentation
and testing practices in REST-based systems can exacerbate reliability issues, making it
challenging to ensure consistent and error-free operation of services (Archip et al., 2018).

Figure 7: Code snippet showing statelessness of REST

Security can be compromised in REST architectures if proper measures are not implemented,
potentially leading to vulnerabilities such as data breaches and unauthorized access. Balancing
performance, reliability, and security requirements requires careful consideration to mitigate
these negative effects and ensure the overall quality of the system.

Positive Effects of REST on Quality Attributes


REST positively impacts several quality attributes, such as interoperability and modifiability, in
distributed systems. The uniform interface constraint enables different components to
communicate effectively, promoting interoperability. The architecture's decoupling of clients and
servers allows for the independent evolution of components, enhancing modifiability without
affecting the overall system.
17 | P a g e
Figure 8: Uniform interface in a RESTful API

The simplicity of REST interactions makes the system easier to understand and maintain,
improving modifiability and understandability. REST's stateless nature and cacheability support
scalability by allowing servers to handle a large number of clients efficiently. The emphasis on a
uniform interface provides flexibility in designing systems, enabling the addition of new
resources and functionalities without impacting existing components (Archip et al., 2018).

REST facilitates the integration of diverse systems and services by using standard protocols like
HTTP, making it easier to connect and communicate between different components. The focus
on resources and their unique identification through URIs enhances the clarity and consistency of
interactions, improving reliability and maintainability. While REST can have negative impacts
on performance, it also offers performance benefits by leveraging HTTP's caching mechanisms
and reducing server-side processing, leading to faster response times in certain scenarios.

18 | P a g e
In summary, REST's design constraints make systems adaptable to changing requirements and
environments, ensuring that quality attributes like modifiability and scalability are maintained
over time. Despite its challenges, REST's advantages in promoting interoperability, simplicity,
and scalability make it a foundational architectural style for distributed web applications.

(D) Comparison of REST Frameworks: Gin Gonic vs Django

Gin Gonic, commonly referred to as Gin, is a high-performance web framework written in Go


(Golang). It is designed to be lightweight, fast, and efficient, providing a minimalistic and
straightforward approach to web development. Gin offers a powerful routing mechanism,
middleware support, and a high-speed HTTP router capable of handling thousands of requests
per second (Gandhi, 2024). Its API is simple and intuitive, making it easy for developers to build
web applications quickly. Gin's design philosophy is focused around speed and simplicity,
allowing developers to focus on writing their application logic without having to be slowed down
by complex configurations or extensive boilerplate code.

Django is a high-level web framework written in Python that follows the "batteries-included"
philosophy. It provides a comprehensive set of built-in features, including an ORM (Object-
Relational Mapping) system, an administrative interface, authentication, URL routing, form
handling, and more. Django emphasizes rapid development and clean, pragmatic design,
allowing developers to build robust and scalable web applications with minimal effort. Its
powerful templating engine and built-in security features make it a preferred choice for
developing complex web applications. Django's extensive documentation and large community
support further enhance its appeal, making it a reliable and well-supported framework for web
development (GeeksforGeeks, 2024a).

Despite being built on different programming languages and catering to different development
philosophies, Gin and Django share some similarities. Both frameworks provide robust routing
mechanisms that allow developers to define URL patterns and handle HTTP requests efficiently.
They support middleware, enabling developers to add functionality such as logging,
authentication, and error handling to their applications. Both Gin and Django also prioritize

19 | P a g e
performance and scalability, making them suitable choices for building high-traffic web
applications. Additionally, both frameworks have active communities and comprehensive
documentation, ensuring that developers have access to support and resources.

The primary differences between Gin Gonic and Django stem from their design philosophies and
the languages they are built on. Gin, being a Go framework, focuses on minimalism and
performance. It is lightweight and fast, with a simple API that allows for rapid development.
However, it lacks the extensive built-in features that Django offers, requiring developers to
integrate additional libraries for functionalities like ORM and form handling (Django Vs Gin
Gonic | What Are the Differences?, 2020).

In contrast, Django's "batteries-included" approach provides numerous built-in features, reducing


the need for external libraries and offering a more integrated development experience. Django's
Python-based ecosystem is known for its ease of use and readability, making it accessible to
developers of all skill levels. However, this comprehensive feature set can sometimes result in a
steeper learning curve and slower performance compared to Gin (Django Vs Gin Gonic | What
Are the Differences?, 2020).

Another significant difference is the target use cases for each framework. Gin is ideal for
developers who prioritize performance and need a lightweight framework for building high-
speed, scalable web applications. Django, on the other hand, is suited for projects that require a
robust and feature-rich framework, such as content management systems, e-commerce sites, and
complex web applications (Django Vs Gin Gonic | What Are the Differences?, 2020).

Gin Gonic and Django are both powerful web frameworks that offer unique advantages
depending on the development requirements. Gin excels in performance and simplicity, making
it a great choice for high-speed web applications. Django provides a comprehensive set of built-
in features and a robust development environment, ideal for building complex and feature-rich
applications. Understanding the strengths and limitations of each framework allows developers
to choose the one that best fits their project's needs and goals.

20 | P a g e
Figure 9: Creating a GET endpoint at /items that returns a static list of items in JSON format.

Figure 10: Sets up a GET endpoint at /api/items/ using Django REST framework

21 | P a g e
Conclusion

References
1. GeeksforGeeks. (2023, March 30). What is Distributed Computing? GeeksforGeeks.

https://www.geeksforgeeks.org/what-is-distributed-computing/

2. GeeksforGeeks. (2024, August 1). Fault tolerance in distributed system. GeeksforGeeks.

https://www.geeksforgeeks.org/fault-tolerance-in-distributed-system/

3. Thiruvathukal, G. (2005). Guest Editors’ introduction: Cluster Computing. Computing in

Science & Engineering, 7(2), 11–13. https://doi.org/10.1109/mcse.2005.33

4. Eliaçık, E. (2022, July 29). What is mobile computing with examples? (2022) -

Dataconomy. Dataconomy. https://dataconomy.com/2022/07/29/what-is-mobile-

computing/

5. History of a REST API. (n.d.). https://restful-api.dev/rest-api-history/

6. Hamm, A., Willner, A., & Schieferdecker, I. (2020). Edge Computing: A Comprehensive

Survey of Current Initiatives and a Roadmap for a Sustainable Edge Computing

Development. Edge Computing: A Comprehensive Survey of Current Initiatives and a

Roadmap for a Sustainable Edge Computing Development, 694–709.

https://doi.org/10.30844/wi_2020_g1-hamm

7. Khare, P. (2024, February 20). Understanding REST: A Comprehensive Guide to

Representational State Transfer. Medium.

https://medium.com/illumination/understanding-rest-a-comprehensive-guide-to-

representational-state-transfer-4b05908e06c6

8. REST API: what it is, how it works, advantages and disadvantages. (n.d.).

https://global.thepower.education/blog/rest-api-what-it-is
22 | P a g e
9. Archip, A., Amarandei, C., Herghelegiu, P., Mironeanu, C., & Serban, E. (2018).

RESTful Web Services – A Question of Standards. RESTful Web Services – a Question

of Standards. https://doi.org/10.1109/icstcc.2018.8540763

10. O’Brien, L., Merson, P., & Bass, L. (2007). Quality Attributes for Service-Oriented

Architectures. Quality Attributes for Service-Oriented Architectures.

https://doi.org/10.1109/sdsoa.2007.10

11. Gandhi, A. (2024, April 11). Leveraging Gin-Gonic for efficient web development in

Golang. Medium. https://arpitgandhi.medium.com/leveraging-gin-gonic-for-efficient-

web-development-in-golang-fe6078fe8e7f#:~:text=Gin-Gonic%20is%20a%20versatile

%20web%20framework%20that%20empowers,it%20a%20preferred%20choice%20for

%20many%20Go%20developers.

12. GeeksforGeeks. (2024a, April 5). What is Django Web Framework? GeeksforGeeks.

https://www.geeksforgeeks.org/what-is-django-web-framework/

13. Django vs Gin Gonic | What are the differences? (2020, August 16). StackShare.

https://stackshare.io/stackups/django-vs-gin-gonic

14. GeeksforGeeks. (2024a, March 12). Event-Driven Architecture System design.

GeeksforGeeks. https://www.geeksforgeeks.org/event-driven-architecture-system-design/

15. Altvater, A. (2023, March 19). What is N-Tier Architecture? How It Works, Examples,

Tutorials, and More. Stackify. https://stackify.com/n-tier-architecture/

16. GeeksforGeeks. (2023b, June 14). Cloud-Native architecture. GeeksforGeeks.

https://www.geeksforgeeks.org/cloud-native-architecture/

17. What is CRM (Customer Relationship Management)? (n.d.). Salesforce.

https://www.salesforce.com/au/crm/what-is-crm/

23 | P a g e
18. Oracle. (2023, September 21). What is ERP? https://www.oracle.com/erp/what-is-erp/

19. GeeksforGeeks. (2023c, August 4). What is Supply Chain Management and How it

Works? GeeksforGeeks. https://www.geeksforgeeks.org/supply-chain-management/

20. Are you ready to adopt innovative HRMS tools to pursue transformative HR strategies?

(n.d.). https://www.oracle.com/my/human-capital-management/hrms/

21. What is Business intelligence (BI)? | IBM. (n.d.). https://www.ibm.com/topics/business-

intelligence

22. What is a Content Management System (CMS)? | IBM. (n.d.).

https://www.ibm.com/topics/content-management-system

23. Distributed Computing in Java 9. (n.d.). https://subscription.packtpub.com/book/cloud-

and-networking/9781787126992/1/ch01lvl1sec9/distributed-computing

24. Pargon. (n.d.). Mainframe computer. Flickr.

https://www.flickr.com/photos/pargon/2444943158/in/photostream/

25. Sinha, R., & Sinha, R. (2021, August 19). Cluster Computing: definition, architecture,

and algorithms. India’s Best Cloud Hosting Service Provider |.

https://www.esds.co.in/blog/cluster-computing-definition-architecture-and-algorithms/

26. Windows Server 2019 Administration Fundamentals - Second Edition. (n.d.).

https://subscription.packtpub.com/book/cloud-and-networking/9781838550912/1/

ch01lvl1sec02/understanding-computer-networks

27. Why cloud computing is a key enabler for digital government. (2021, June 23).

Development Asia. https://development.asia/explainer/why-cloud-computing-key-

enabler-digital-government

24 | P a g e
28. Jbarcas. (n.d.). GitHub - jbarcas/distributed-database-architecture: RESTful API on top

of a distributed database architecture with synchronized partitions using RocksDB and

Node.js. GitHub. https://github.com/jbarcas/distributed-database-architecture

25 | P a g e

You might also like