0% found this document useful (0 votes)
6 views13 pages

Chapter 2

Chapter 2 discusses various architectures for system integration, including monolithic, modular, service-oriented, and microservices architectures, highlighting their characteristics, advantages, and disadvantages. It emphasizes the importance of selecting the appropriate architecture based on project context, goals, and team dynamics. Additionally, the chapter explains how APIs facilitate communication within these architectures, particularly in microservices, which allow for independent and specialized service development.

Uploaded by

Jenny Chavez
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)
6 views13 pages

Chapter 2

Chapter 2 discusses various architectures for system integration, including monolithic, modular, service-oriented, and microservices architectures, highlighting their characteristics, advantages, and disadvantages. It emphasizes the importance of selecting the appropriate architecture based on project context, goals, and team dynamics. Additionally, the chapter explains how APIs facilitate communication within these architectures, particularly in microservices, which allow for independent and specialized service development.

Uploaded by

Jenny Chavez
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

Chapter 2.

Architectures for System Integration


Topic Outcomes
1. Differentiate between monolithic, modular, SOA, and microservices
architectures.
2. Evaluate the suitability of different architectural paradigms for specific
system integration challenges.
3. Understand how APIs enable integration and communication in modern
architectures.
4. Apply architectural principles to design systems that meet scalability,
flexibility, and maintainability goals.

Architectures for System Integration


System integration architectures are frameworks and design principles that enable

multiple software systems, applications, or components to communicate,

collaborate, and function as a unified whole. In today’s interconnected world,

organizations rely on various systems to handle diverse operations such as

customer management, inventory control, and financial processing. These systems

often need to share data and processes to deliver seamless functionality, requiring

integration. Integration architectures provide the blueprint to connect these

systems, ensuring interoperability, scalability, and efficient data exchange. They

address challenges such as differing technologies, platforms, and protocols by

offering structured approaches like monolithic, modular, service-oriented, and

microservices architectures.

The evolution of system integration architectures reflects the growing complexity

of business needs and technological advancements. Early approaches like

monolithic systems focused on simplicity and uniformity, while modular designs

allowed better scalability and adaptability. The emergence of Service-Oriented

Architecture (SOA) marked a shift toward reusable, loosely coupled services,

enabling large enterprises to integrate heterogeneous systems effectively. More


recently, microservices and APIs have gained prominence, offering a lightweight,

decentralized approach to integration tailored for modern, dynamic, and cloud-

based applications. These architectures empower organizations to build systems

that are robust, flexible, and capable of adapting to changing demands.

Developing a new application is all about risk, and selecting the right architecture

is an important step toward success. There are multiple options to consider such

as monolithic, service-oriented, and Microservices architecture, this article helps

you to understand monolithic architecture.

Monolithic vs. Modular Systems


What is monolithic software architecture?
Monolithic software architecture is an approach that builds a software system as a

single, indivisible, and self-contained unit. All the components and functionalities of

the system are tightly coupled and integrated into one executable or library.

Monolithic software architecture simplifies the development, deployment, and

execution of the software, as there is no need to manage multiple modules or

dependencies. However, it also makes the software more rigid, complex, and

difficult to modify, scale, and maintain. In software engineering, this describes a

single-tiered software application. Here, the user interface and the data access

code are combined into a single program from a single platform. A monolithic
application is self-contained and independent from other computing applications. It

is deployed as a single monolithic application.

Monolith is an ancient word that refers to a huge single block of stone. In software

engineering, a monolithic architecture refers to a single unit. The different

components of a monolithic application are combined into a single-tier software

application. Usually, a monolithic application consists of a database, server-side,

and client-side application. All the application’s parts are unified and all its

functions are managed in one place.

Components of monolithic applications are interconnected and tightly coupled,

which helps the software to be self-contained. All features and components are

developed in a single code base. This is a traditional solution for developing

software applications, but some developers find it outdated. However, we found

that a monolithic architecture is an ideal solution in some circumstances.

Pros of a monolithic architecture

Simpler development and deployment


All features are developed in a single codebase, which makes it easier for

deployment. With a monolithic architecture, developers don’t need to deploy

changes or updates separately, as they can do it at once.

Cross-cutting concerns
Most applications require fewer cross-cutting concerns, such as logging, rate-

limiting, authentication, authorization, etc. Monolithic applications incorporate

these concerns much easier due to their single code base. It’s easier to hook up

components to these concerns when everything runs in the same application.


Better performance
An app with a microservices architecture might need to make 50 API calls to 50

different microservices to load each screen, for example, which obviously results in

slower performance. Monolithic applications allow fast communication between

software components due to a single code base.

Cons of a monolithic architecture


Large Codebase
In course of time, more features are developed and their structure becomes

blurred. The codebase gets cumbersome over time and becomes difficult to

understand and modify.

Technology Constraint
If there’s a need to add some new technology to your applications, developers may

face barriers to adoption. Adding new technology may require reconstructing the

whole application, which is costly and time-consuming.

Limited Agility
Every change requires full redeployment of the whole application. Thus, all

development teams have to wait until it’s done. Agility can be reduced greatly

when several teams are working on the same project.

Example:
A traditional e-commerce website built as a monolithic application might have:
 A single codebase that includes modules for user authentication, product
catalog, shopping cart, order processing, and payment.
 All parts of the application are interdependent and run as one large process.
Characteristics:
 If you want to update the payment system, you have to rebuild and redeploy
the entire application.
 A bug in one part (e.g., the shopping cart) could bring down the entire
application.
 Scaling is done as a whole—if traffic spikes, you have to scale the entire app,
not just the parts that need it.
The monolithic architecture isn’t outdated, and it is still an ideal solution in some

cases. Some giant companies still stay monolithic despite today’s popularity of

microservices. Monolithic architecture can be beneficial if you are at the founding

stage, you’re building an unproven product, and you have no experience with

microservices. This solution is perfect for startups that need to get a product up

and running as soon as possible. However, certain issues mentioned above come

with the monolithic approach.

What is modular software architecture?


Modular software architecture is an approach that divides a software system into

smaller, independent, and reusable units called modules. Each module has a well-

defined interface and functionality, and communicates with other modules through

standardized protocols or APIs. Modular software architecture allows developers to

build, test, deploy, and update each module separately, without affecting the rest

of the system. This enhances the modularity, flexibility, and extensibility of the

software, and makes it easier to adapt to changing requirements and technologies.

A similar benefit is maintainability. If you have a monolithic application like this,

where you have all these layouts on the left figure, and when you reach to dozens
and hundreds of layouts, it's going to be very hard to look at it and understand

what's going on. Instead, if you group those layouts based on what feature they're

in (based on the right image), now it will be so much easier. When you're looking

for something, you will find it there. It will never be a long list of weird names. And

that has a new added benefit, which is faster incremental compilation.

How to compare modular and monolithic software architecture?


To compare modular and monolithic software architecture, we can use four criteria:

performance, scalability, maintainability, and complexity. Generally, monolithic

software architecture has higher performance and lower complexity than modular

software architecture. However, modular software architecture is more scalable

and maintainable. Performance-wise, monolithic software architecture has less

overhead and latency in executing and communicating within a single unit.

Meanwhile, modular software architecture can optimize the design and

implementation of each module and the communication protocols to achieve high

performance. Scalability-wise, modular software architecture is more flexible as it

can easily add, remove, or replace modules to cope with changing workloads and

demands. Monolithic software architecture requires more resources and effort to

scale up or out the entire system, and may face limitations in terms of hardware or

software compatibility. In terms of maintainability, modular software architecture

allows developers to isolate, debug, and fix errors in each module without affecting

the rest of the system. It also enables faster and more frequent updates and

releases, as well as better code reuse and quality. Monolithic software architecture

makes it harder to identify, locate, and resolve issues in a large codebase. Finally,

modular software architecture has higher complexity than monolithic software

architecture as it involves more design decisions, coordination, and integration


among multiple modules and teams. It also requires more skills and tools to

manage the dependencies, configuration, and deployment of the modules.

Example:
The same e-commerce system built as a microservices architecture might have:
 A user service to handle authentication and profiles.
 A product service to manage the product catalog.
 A cart service to handle shopping carts.
 An order service to process and track orders.
 A payment service to process payments.
Each of these services can be built, deployed, and scaled independently.
Characteristics:
 If you want to update the payment system, you only redeploy the payment
service, not the whole system.
 If the cart service crashes, the rest of the system can still function.
 Scaling is more efficient—you can scale just the product service if that’s
where the traffic is highest.
Comparison Table
Feature Monolithic Architecture Modular Architecture
(Microservices)
Structure Single codebase and deployment Multiple smaller, independent
services
Scalability Scale the entire system Scale individual services as
needed
Maintena Difficult to isolate and fix issues Easier to maintain and
nce troubleshoot
Flexibility Hard to adopt new technologies or Easy to use different tech for
features each service
Risk One failure can bring down the Failures are isolated to
whole system individual services

Summary:
Monolithic Architecture: Everything is in one block, easier to start but harder to
scale and maintain.
Modular Architecture: Divides the system into independent parts, harder to build
initially but more flexible and robust in the long run.
How to choose between modular and monolithic software architecture?
The choice between monolithic and modular software architecture depends on the

context, goals, and constraints of each project. Generally speaking, if the system is

small, simple, and stable, monolithic architecture may be more efficient; whereas if

the system is complex and dynamic, modular architecture may be more suitable.

The team size and culture can also impact the choice: a small, cohesive team may

prefer monolithic architecture, while a large, diverse team may opt for modular.

Additionally, if the technology and environment are homogeneous and stable,

monolithic architecture may be more compatible; however, if the technology and

environment are heterogeneous and evolving, modular architecture may be more

adaptable.

Service-oriented architecture?
Service-oriented architecture (SOA) is a method of software development that

uses software components called services to create business applications. Each

service provides a business capability, and services can also communicate with

each other across platforms and languages. Developers use SOA to reuse services

in different systems or combine several independent services to perform complex

tasks.

For example, multiple business processes in an organization require the user

authentication functionality. Instead of rewriting the authentication code for all

business processes, you can create a single authentication service and reuse it for

all applications. Similarly, almost all systems across a healthcare organization,

such as patient management systems and electronic health record (EHR) systems,

need to register patients. These systems can call a single, common service to

perform the patient registration task.


Service-Oriented Architecture (SOA) is a style of software design where services

are provided to the other components by application components, through a

communication protocol over a network. Its principles are independent of vendors

and other technologies. In service-oriented architecture, a number of services

communicate with each other, in one of two ways: through passing data or through

two or more services coordinating an activity.

Service-Oriented Architecture Patterns

There are three roles in each of the Service-Oriented Architecture building blocks:

service provider; service broker, service registry, service repository; and

service requester/consumer.

The service provider works in conjunction with the service registry, debating the

whys and how’s of the services being offered, such as security, availability, what to

charge, and more. This role also determines the service category and if there need

to be any trading agreements.

The service broker makes information regarding the service available to those

requesting it. The scope of the broker is determined by whoever implements it.
The service requester locates entries in the broker registry and then binds them to

the service provider. They may or may not be able to access multiple services; that

depends on the capability of the service requester.

Implementing Service-Oriented Architecture


When it comes to implementing service-oriented architecture (SOA), there is a

wide range of technologies that can be used, depending on what your end goal is

and what you’re trying to accomplish.

Typically, Service-Oriented Architecture is implemented with web services, which

makes the “functional building blocks accessible over standard internet protocols.”

An example of a web service standard is SOAP, which stands for Simple Object

Access Protocol. In a nutshell, SOAP “is a messaging protocol specification for

exchanging structured information in the implementation of web services in

computer networks. Although SOAP wasn’t well-received at first, since 2003 it has

gained more popularity and is becoming more widely used and accepted. Other

options for implementing Service-Oriented Architecture include Jini, COBRA, or

REST.
It’s important to note that architectures can “operate independently of specific

technologies,” which means they can be implemented in a variety of ways,

including messaging, such as ActiveMQ; Apache Thrift; and SORCER.

Microservices and APIs


Microservices and APIs are two approaches to modular software design. Modular

programming aims to design smaller software components that interact with each

other to perform complex functions. This is more efficient than designing software

as one large codebase for all functions. Microservices are an architectural

approach that composes software into small, independent, highly specialized

services. Each microservice solves a single problem or performs a specific task.

In contrast, an API is a contract of communication between two software

components. APIs specify the data that the software component needs to perform

a function, as well as the expected response. Microservices communicate with

each other using APIs. However, developers also use third-party APIs to integrate

preexisting functionality into their code.

A microservice contains all the code required for a particular application function.

An API is a communication mechanism to access that function. Microservices

expose functionality via APIs so other microservices can use them when required.

How microservices work


Microservice architecture is the evolution of the service-oriented architecture

(SOA). Developers decompose an entire application into individual functions that

run as small, standalone programs. The microservices interact with each other to

perform more complex tasks.

For example, a ridesharing app could have multiple loosely coupled services, such

as ones that retrieve geolocational data, process payments, or send alerts. When a
user hails a ride on the app, all the microservices would work together to help the

user find a driver and make the payment.

How APIs work


APIs are an interface that allow any two software components to exchange

information. An API specifies the communication contract. Developers use the

contract to access specific functionality or data from third-party code.

For example, a ridesharing app could use a payment API by passing customer

credit card details to the API. The code behind the API could securely deduct the

payment from the card and return a success or failure response to the ridesharing

app.

APIs are interfaces for exposing the functionality inside of software components

and applications, whereas microservices is really an architectural approach to

software development.

APIs are actually an essential part of a microservice architecture. Each

microservice in the architecture will have its own API. The API sits in front of the

microservice and allows communication between the different components of the

microservice architecture.
A microservice architecture likely contains many APIs, though APIs can also be

used for other purposes without being a part of a microservice architecture. This is

likely where the confusion comes from when comparing the two.

You might also like