Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

enterprise slides

Download as pdf or txt
Download as pdf or txt
You are on page 1of 318

Enterprise Computing:

a retrospective
What is Enterprise computing?

- Large organization such as multinational corporation,


university, hospital, research laboratory, or government
organization require special computing solutions because
of its size

- Enterprise computing—use of computers in networks that


encompass variety of operating systems, protocols, and
network architectures
- The use of computers for enterprise data processing began
in the 60s with the early mainframe computers.
- Over the years enterprise computing paradigms have
changed dramatically with the emergence of new
technology
- The advent of the PC in the 80s led to the replacement of
large mainframe computers by client-server systems.
- The rise of the internet in the 90s saw the client-server
model give way to web-based enterprise applications and
customer-facing ecommerce platforms.
- With each of these advances, enterprise systems have
dramatically improved in terms of scale and ubiquity of
access at expense of complexity & cost.
Enterprise
Enterprise Information

● Information gathered in the ongoing operations of an


enterprise-sized organization

- Business intelligence

- Business process management

- Business process automation

● Collected, combined, and analyzed over time


● Allows managers to make better decisions
Information System
● Set of hardware, software, data, people, and procedures
that work together to produce information
● Functional Unit - Individual operating entity, which can
include departments, centers, and divisions
Information Systems

● Transaction Processing System (TPS) - Captures and


processes data from day-to-day transactions
● Management Information System (MIS) - Generates
accurate, timely, and organized information so managers
can track progress and make decisions
● Decision Support System (DSS) - Helps users analyze data
and make decisions
● Customer Relationship Management (CRM) - Manages
information about customers, interactions with customers,
past purchases, and interests
● Human Resource Management Software (HRMS) -
manages human resource functions
Mainframe Architecture
Mainframe

- Older than C, C++


- Extremely powerful
- Robust computing system
Businesses today rely on the mainframe to:

- Perform large-scale transaction processing


- Support thousands of users and application programs concurrently
accessing numerous resources
- When you go to an ATM and swipe you card, you access your data
among the numerous in store and proceed with your transaction
- A database is at a centralised location but there are thousands of
ATM
- Highly available
- Manage terabytes of information in databases
- Handle large-bandwidth communication
- Mission-critical operations
- When you send money, recipient should receive it immediately
Mainframe Characteristics

● Backward Compatibility
● Hot swapping of hardwares and softwares
○ Parts can be changed without downtime
● Reliability, availability, and serviceability (RAS)
● Scalability
○ The degree to which the IT organization can add capacity
without disruption to normal business processes or without
incurring excessive overhead (nonproductive processing) is
largely determined by the scalability of the particular
computing platform.
Goal-Line Technology

- First implemented in 2014 World Cup


- 14 high speed cameras
- Clearly indicates whether the ball has
fully crossed the line
- Helps referee in taking their final decision
- Match officials receive signal on their
watches
- Mainframe technology in the backend
analyses and informs if it is a goal or not,
in a fraction of seconds
Mainframe Architecture
● Terminal-based user interface would display screens
controlled by the mainframe server using the ‘virtual
telecommunications access method’ (VTAM)
● Terminals communicated with the mainframe using the
‘systems network architecture’ (SNA) protocol
● Storage subsystem in mainframes, called ‘virtual
storage access mechanism’ (VSAM),
● CICS leveraged facilities of the VSAM layer and
implemented commit and rollback protocols to support
atomic transactions in a multi-user environment. (Either
all or none)
● Could run many independent ‘guest’ operating systems,
● Limited CPU power, generous I/O bandwidth
● Batch Architecture
○ In a batch system, if one deposited money in a bank account it
would usually not show up in the balance until the next day after
the ‘end of day’ batch jobs had run!
○ If there was incorrect data entry, a number of corrective measures
would have to be triggered, rather than the immediate data
validations we are now so used to.
● Support for hardware fault tolerance included automatic
migration of jobs if CPUs or memory units failed, as well as
software fault tolerance
● Fine-grained resource measurement, monitoring and error
diagnostic capabilities; once again becoming essential for
cloud computing platforms.
Client-Server Technology

Distributed application architecture that distributes tasks or workloads


between a client, the one who requests services or resources and server,
the one that provides services or resources.

Example: DNS
Why shift to Client-Server?

● Technically and economically feasible


● Communication is faster, easier and less costly with C/S
technology
● Flatter orgs. need more decentralized from of computing
● Cheaper
Client

● Client machines are generally single-user workstations


providing a user-friendly interface to the end user
● Client-based stations generally present the type of graphical
interface that is most comfortable to users, including the use
of windows and a mouse
● Example: Microsoft Windows
● Client-based applications are tailored for ease of use and
include such familiar tools as the spreadsheet
Server

● Each server provides a set of shared services to the clients


● Most common type of server currently is the database server,
usually controlling a relational database
● Enables many clients to share access to the same database
Client-Server Applications

- It is the communications software that enables client and server


to interoperate
- Actual functions performed by the application can be split up
between client and server in a way that optimizes the use of
resources
- The design of the user interface on the client machine is critical
- There is heavy emphasis on providing a graphical user interface
(GUI) that is easy to use, easy to learn, yet powerful and flexible
Traditional two-tier architecture

● Client (tier 1) manages user interface and runs


applications
● Server (tier 2) holds database and DBMS
Advantages

• wider access to existing databases

• increased performance

• possible reduction in hardware costs

• reduction in communication costs


Two-tier problems

- Client has to do everything


- Significant client side administration overhead
- DBs aren’t meant to handle large numbers of transient
connections (connections are often more expensive than
the db transaction being done)
- Good only for infrequently used apps
Three-tier architecture

Client: Interfaces with the user

Server : Implements Business Logic

: Implements Middleware

Database : Persistently stores data

:Retrieves stored data


Advantages

● Separation business logic from database functions → easier to


implement load balancing
● Easier to modify/replace one tier without affecting others
● Server can manage database connections efficiently
● Client can focus on business logic
● Application maintenance centralized
● Running server on high performance hardware can improve
client perceived performance
Client Server Architecture
● By leveraging the computing power on desktop computers to
perform validations and other logic, ‘online’ systems became
possible
● Rich GUI
● Cheaper Alternative
● But did not scale
3-Tier Architectures with TP Monitors

Why did client-server architectures fail to scale for high volume


transaction processing?

Not because the CPUs were inferior to mainframes.

Client-server architectures had no virtual machine layer or job


control systems to control access to limited resources such as CPU
and disk.
● TP monitors - First example of Middleware
● Sat between clients and a database server to manage
access to scarce server resources, essentially by queuing
client requests
Essential lessons from 3-tier model

(a) clear separation of user interface and business logic

(b) load balancing using request queuing to support high


transaction volumes
Chapter 1 done!
Enterprise Computing:
a retrospective
What is Enterprise computing?

- Large organization such as multinational corporation,


university, hospital, research laboratory, or government
organization require special computing solutions because
of its size

- Enterprise computing—use of computers in networks that


encompass variety of operating systems, protocols, and
network architectures
- The use of computers for enterprise data processing began
in the 60s with the early mainframe computers.
- Over the years enterprise computing paradigms have
changed dramatically with the emergence of new
technology
- The advent of the PC in the 80s led to the replacement of
large mainframe computers by client-server systems.
- The rise of the internet in the 90s saw the client-server
model give way to web-based enterprise applications and
customer-facing ecommerce platforms.
- With each of these advances, enterprise systems have
dramatically improved in terms of scale and ubiquity of
access at expense of complexity & cost.
Enterprise
Enterprise Information

● Information gathered in the ongoing operations of an


enterprise-sized organization

- Business intelligence

- Business process management

- Business process automation

● Collected, combined, and analyzed over time


● Allows managers to make better decisions
Information System
● Set of hardware, software, data, people, and procedures
that work together to produce information
● Functional Unit - Individual operating entity, which can
include departments, centers, and divisions
Information Systems

● Transaction Processing System (TPS) - Captures and


processes data from day-to-day transactions
● Management Information System (MIS) - Generates
accurate, timely, and organized information so managers
can track progress and make decisions
● Decision Support System (DSS) - Helps users analyze data
and make decisions
● Customer Relationship Management (CRM) - Manages
information about customers, interactions with customers,
past purchases, and interests
● Human Resource Management Software (HRMS) -
manages human resource functions
Mainframe Architecture
Mainframe

- Older than C, C++


- Extremely powerful
- Robust computing system
Businesses today rely on the mainframe to:

- Perform large-scale transaction processing


- Support thousands of users and application programs concurrently
accessing numerous resources
- When you go to an ATM and swipe you card, you access your data
among the numerous in store and proceed with your transaction
- A database is at a centralised location but there are thousands of
ATM
- Highly available
- Manage terabytes of information in databases
- Handle large-bandwidth communication
- Mission-critical operations
- When you send money, recipient should receive it immediately
Mainframe Characteristics

● Backward Compatibility
● Hot swapping of hardwares and softwares
○ Parts can be changed without downtime
● Reliability, availability, and serviceability (RAS)
● Scalability
○ The degree to which the IT organization can add capacity
without disruption to normal business processes or without
incurring excessive overhead (nonproductive processing) is
largely determined by the scalability of the particular
computing platform.
Goal-Line Technology

- First implemented in 2014 World Cup


- 14 high speed cameras
- Clearly indicates whether the ball has
fully crossed the line
- Helps referee in taking their final decision
- Match officials receive signal on their
watches
- Mainframe technology in the backend
analyses and informs if it is a goal or not,
in a fraction of seconds
Mainframe Architecture
● Terminal-based user interface would display screens
controlled by the mainframe server using the ‘virtual
telecommunications access method’ (VTAM)
● Terminals communicated with the mainframe using the
‘systems network architecture’ (SNA) protocol
● Storage subsystem in mainframes, called ‘virtual
storage access mechanism’ (VSAM),
● CICS leveraged facilities of the VSAM layer and
implemented commit and rollback protocols to support
atomic transactions in a multi-user environment. (Either
all or none)
● Could run many independent ‘guest’ operating systems,
● Limited CPU power, generous I/O bandwidth
● Batch Architecture
○ In a batch system, if one deposited money in a bank account it
would usually not show up in the balance until the next day after
the ‘end of day’ batch jobs had run!
○ If there was incorrect data entry, a number of corrective measures
would have to be triggered, rather than the immediate data
validations we are now so used to.
● Support for hardware fault tolerance included automatic
migration of jobs if CPUs or memory units failed, as well as
software fault tolerance
● Fine-grained resource measurement, monitoring and error
diagnostic capabilities; once again becoming essential for
cloud computing platforms.
Client-Server Technology

Distributed application architecture that distributes tasks or workloads


between a client, the one who requests services or resources and server,
the one that provides services or resources.

Example: DNS
Why shift to Client-Server?

● Technically and economically feasible


● Communication is faster, easier and less costly with C/S
technology
● Flatter orgs. need more decentralized from of computing
● Cheaper
Client

● Client machines are generally single-user workstations


providing a user-friendly interface to the end user
● Client-based stations generally present the type of graphical
interface that is most comfortable to users, including the use
of windows and a mouse
● Example: Microsoft Windows
● Client-based applications are tailored for ease of use and
include such familiar tools as the spreadsheet
Server

● Each server provides a set of shared services to the clients


● Most common type of server currently is the database server,
usually controlling a relational database
● Enables many clients to share access to the same database
Client-Server Applications

- It is the communications software that enables client and server


to interoperate
- Actual functions performed by the application can be split up
between client and server in a way that optimizes the use of
resources
- The design of the user interface on the client machine is critical
- There is heavy emphasis on providing a graphical user interface
(GUI) that is easy to use, easy to learn, yet powerful and flexible
Traditional two-tier architecture

● Client (tier 1) manages user interface and runs


applications
● Server (tier 2) holds database and DBMS
Advantages

• wider access to existing databases

• increased performance

• possible reduction in hardware costs

• reduction in communication costs


Two-tier problems

- Client has to do everything


- Significant client side administration overhead
- DBs aren’t meant to handle large numbers of transient
connections (connections are often more expensive than
the db transaction being done)
- Good only for infrequently used apps
Three-tier architecture

Client: Interfaces with the user

Server : Implements Business Logic

: Implements Middleware

Database : Persistently stores data

:Retrieves stored data


Advantages

● Separation business logic from database functions → easier to


implement load balancing
● Easier to modify/replace one tier without affecting others
● Server can manage database connections efficiently
● Client can focus on business logic
● Application maintenance centralized
● Running server on high performance hardware can improve
client perceived performance
Client Server Architecture
● By leveraging the computing power on desktop computers to
perform validations and other logic, ‘online’ systems became
possible
● Rich GUI
● Cheaper Alternative
● But did not scale
3-Tier Architectures with TP Monitors

Why did client-server architectures fail to scale for high volume


transaction processing?

Not because the CPUs were inferior to mainframes.

Client-server architectures had no virtual machine layer or job


control systems to control access to limited resources such as CPU
and disk.
● TP monitors - First example of Middleware
● Sat between clients and a database server to manage
access to scarce server resources, essentially by queuing
client requests
Essential lessons from 3-tier model

(a) clear separation of user interface and business logic

(b) load balancing using request queuing to support high


transaction volumes
Chapter 1 done!
Evolution of computing
Birth of Internet

● As a communication infrastructure for data sharing between


large government research labs in the US
● Grew to include academic institutions across the world
● Development of the NCSA Mosaic web-browser in 1993
sparked the rapid expansion
● Platform for sharing documents, using the HTTP protocol and
HTML markup languages
● Information ‘published’ over the internet could be accessed
anonymously by the public at large, giving rise to the ‘world
wide web’
INTERNET TECHNOLOGY
AND
WEB-ENABLED APPLICATIONS

● Internet-based applications rely


fundamentally on HTTP, and HTML
● HTTPD - software or process running on a
server that listens for incoming HTTP
requests and responds with the requested
web pages
○ also commonly associated with the Apache
HTTP Server
● Apache web server - also marked the first
widespread use of open source software by
enterprise IT departments.
● Server returns data either retrieved directly
from a file system path or computed by a
server program initiated to respond to the
request.
● CGI (common gateway interface) protocol
is used by the web server to launch server
programs and communicate with them, i.e.
pass parameters and accept their results
● Through the late 90s, HTTP protocol,
together with features available in
HTML, presented the opportunity to
develop browser-based (or ‘web-
enabled’) interfaces to legacy systems
● Useful for accessing mainframe
applications that otherwise could be
accessed only from dedicated terminals
● ‘Screen scraping’ programs - developed
to communicate with the mainframe by
emulating a terminal program and
passing results back and forth to a web
server via CGI
● Possible to publish information residing
in legacy systems directly to the then
nascent world wide web
● Disadvantage -relatively limited user
interface behavior that could be created
Web Server

● Function: A web server's primary function is to handle HTTP


requests and serve static web content (HTML, CSS, images, etc.)
to clients. It responds to client requests by returning pre-existing
files stored on the server's file system.

● Features: Web servers focus on efficient content delivery and may


provide additional features like caching, compression, and basic
security configurations (e.g., SSL/TLS encryption).
WEB APPLICATION SERVERS

● Function: A web application server is designed to execute dynamic web


applications by processing server-side code and interacting with databases
or other external systems. It handles HTTP requests, executes application
logic, and generates dynamic content to be sent back to clients.

● Features: Web application servers offer advanced features for application


development and deployment, such as support for server-side scripting
languages (e.g., PHP, Python, Java), session management, transaction
processing, database connectivity, and integration with messaging
systems.
● Invention of the Java language
● Designed to be portable across machine architectures with
its interpreted yet efficient execution model
● Made possible alternative approaches to execute
application functionality inside the web-server process,
leading to the birth of the ‘application server’ architecture
● Traditionally, web servers were responsible for serving
static content and handling basic HTTP requests.
● Dynamic functionality and application logic were often
implemented separately, either on the client-side using
JavaScript or on the server-side using scripting languages
like Perl or CGI (Common Gateway Interface).
● An application server refers to a server
that hosts and executes applications,
handling the processing of dynamic
web content and providing additional
features and services to support
application development.
● In addition to serving HTTP requests
from files or CGI scripts, requests could
also be processed by multi-threaded
execution environments, called
‘containers,’ embedded within the web
server.
● The container would also manage load
balancing across incoming requests
using these threads, as well as
database connection pooling, in a
manner similar to TP monitors.
OVERVIEW OF COMPUTING PARADIGM
Grid Computing

● Distributed computing model that allows


multiple computers or resources to work
together as a virtual supercomputer
● Involves connecting geographically
dispersed computers, servers, and
storage devices to form a grid
infrastructure, enabling efficient
resource sharing and collaboration
● By linking them together, grid
computing harnesses their collective
processing power, storage capacity, and
specialized capabilities to tackle
complex calculations, simulations, or
data-intensive tasks.
A typical grid computing network consists of three machine types:

● Control node/server: A control node is a server or a group of


servers that administers the entire network and maintains the
record for resources in a network pool.
● Provider/grid node: A provider or grid node is a computer that
contributes its resources to the network resource pool.
● User: A user refers to the computer that uses the resources on the
network to complete the task.
● Operates by running specialized software on every computer
involved in the grid network. The software coordinates and
manages all the tasks of the grid.
● Fundamentally, the software segregates the main task into
subtasks and assigns the subtasks to each computer. This allows
all the computers to work simultaneously on their respective
subtasks.
● Upon completion of the subtasks, the outputs of all computers are
aggregated to complete the larger main task.
Cluster Computing

● Cluster computing is a type of computing where multiple


computers (often called nodes or servers) work together as a
team to solve problems or perform tasks.
● The computers in a cluster are connected to each other through a
network. They communicate and share information to coordinate
their tasks. This allows them to break down a large problem into
smaller, more manageable pieces and work on them
simultaneously.
● It helps to speed up calculations, process large amounts of data,
and solve problems that would be too time-consuming for a single
computer.
● Used in scientific research, data analysis, simulations, and other
tasks that require a lot of computing power
Benefits:

● Awesome Processing
Power
● Cost efficient
● Expandability
● Availability
Distributed Computing

● Distributed computing is a system of software components spread


over different computers but running as a single entity. A distributed
system can be an arrangement of different configurations, such as
mainframes, computers, workstations, and minicomputers.
● Inherently designed for scalability across a wider network. It can
involve scaling resources across multiple clusters, data centers, or
even globally distributed systems.
● It requires dealing with challenges such as network communication,
resource discovery, fault tolerance, and data consistency. The system
complexity is higher due to the need for coordination and cooperation
among distributed components.
● Has a broader application focus, spanning various domains such as
big data processing, distributed storage systems, decentralized
networks, and collaborative computing.
Grid Computing vs Distributed Computing

Scope and Focus:

Grid Computing: Grid computing focuses on resource sharing and


collaboration across different administrative domains or organizations.
It aims to create a virtual supercomputer by aggregating
computational resources from multiple locations or institutions.

Distributed Computing: Distributed computing focuses on dividing a


task into smaller subtasks and executing them in parallel across a
network of interconnected computers. It aims to improve performance
and scalability by distributing the workload.
Grid Computing vs Distributed Computing

Resource Heterogeneity:

Grid Computing: Grid computing typically involves a heterogeneous


collection of resources, including different hardware architectures,
operating systems, and software stacks. These resources can be
geographically distributed and owned by different organizations.

Distributed Computing: Distributed computing often operates within a


more homogeneous environment, where the participating computers
typically have similar hardware configurations, run the same operating
system, and use compatible software tools.
Grid Computing vs Distributed Computing

Resource Management:

Grid Computing: Grid computing requires sophisticated middleware to


manage resource discovery, allocation, scheduling, and security across
multiple administrative domains. The middleware provides a uniform
interface to access and utilize distributed resources.

Distributed Computing: Distributed computing systems often rely on


simpler resource management mechanisms within a local network or
cluster. Resource allocation and task scheduling are typically handled
by local schedulers or distributed frameworks.
Grid Computing vs Distributed Computing

Scale and Architecture:

Grid Computing: Grid computing is designed to scale up to large-scale


infrastructures, involving thousands or even millions of resources
distributed globally. It often spans multiple organizations or institutions,
and the grid infrastructure is interconnected through high-speed
networks.

Distributed Computing: Distributed computing can range from small-


scale local networks to larger clusters of computers. It is often
deployed within a single organization or a limited geographical area.
Grid Computing vs Distributed Computing

Use Cases:

Grid Computing: Grid computing is commonly used for computationally


intensive tasks, such as scientific research, high-performance
computing, and large-scale data analysis. It facilitates collaboration
and resource sharing among researchers and institutions.

Distributed Computing: Distributed computing is used for a wide range


of applications, including parallel processing, distributed databases,
content delivery networks (CDNs), peer-to-peer networks, and
collaborative computing.
Cluster Computing vs Distributed Computing

Architecture:

Cluster Computing: In cluster computing, multiple computers (nodes)


are interconnected and work together as a single unit. These nodes are
typically physically close to each other, often within the same data
center or a local area network (LAN). They share resources such as
memory, storage, and processing power to handle tasks collectively.
Distributed Computing: Distributed computing involves a network of
computers that are geographically dispersed and connected via a wide
area network (WAN), such as the internet. Each computer in the
network, known as a node, operates independently and communicates
with other nodes to accomplish tasks. Nodes in a distributed computing
system often have their own dedicated resources.
Cluster Computing vs Distributed Computing

Communication:

Cluster Computing: In a cluster computing setup, the inter-node


communication is typically faster and has lower latency since the
nodes are physically close to each other.

Distributed Computing: In distributed computing, the nodes are


geographically dispersed and communicate over potentially slower
network connections. The communication between nodes relies on
network protocols and can introduce higher latency due to the distance
and network congestion.
Cluster Computing vs Distributed Computing

Scalability:

Cluster Computing: Cluster computing systems are designed to scale


vertically, meaning that additional resources are added to the existing
nodes within the cluster. This allows for efficient utilization of resources
and better performance for tasks that can be parallelized across
multiple nodes within the cluster.

Distributed Computing: Distributed computing systems are designed to


scale horizontally, meaning that additional nodes can be added to the
network to handle increased workload or data processing
requirements. This scalability allows for handling larger volumes of
data and increased computational power.
Cluster Computing vs Distributed Computing

Use Cases:

Cluster Computing: Cluster computing is often used for high-


performance computing (HPC) applications, scientific simulations,
large-scale data processing, and parallel computing tasks that can
benefit from tight integration and communication between nodes.

Distributed Computing: Distributed computing is commonly employed


in big data analytics, data-intensive applications, web services, and
scenarios where data is distributed across different locations or where
collaboration between geographically dispersed entities is required.
Utility Computing

● A model of computing where computing resources, such as


processing power, storage, and software applications, are
provided to users on-demand
● It involves the provisioning and usage of computing resources
as a service, often delivered over a network.
● It provides flexibility and scalability, allowing users to scale
their resource usage up or down based on their requirements
without having to invest in and maintain their own physical
infrastructure.
Cloud Computing

● Cloud computing is the on-demand delivery of IT resources


over the Internet with pay-as-you-go pricing
● Pay-as-you-go model
● Rapid Elasticity
● Agility
Key characteristics of utility computing include:

● On-Demand Service
● Pay-per-Use Model
● Scalability
● Virtualization
● Service-Level Agreements (SLAs): Utility computing providers often
offer service-level agreements that define the quality of service,
performance guarantees, availability, and support for the provided
resources.
Utility Computing vs Cloud Computing
● Resource Model:
○ Utility Computing: focuses on providing computing resources, such as
processing power, storage, and network bandwidth, as a service. It follows a
pay-per-use model where users are billed based on their actual resource
consumption.
○ Cloud Computing: encompasses a broader range of services, including
infrastructure, platforms, and software, delivered over the internet. It provides
a variety of services beyond computing resources, such as databases,
development tools, and applications. Cloud computing can include utility
computing as one of its components.
● Emphasis:
○ Utility Computing: Utility computing emphasizes resource consumption and the
ability to pay for resources based on actual usage. It provides a cost-effective
and flexible approach to accessing and utilizing computing resources.
○ Cloud Computing: Cloud computing emphasizes the delivery of various services
beyond computing resources. It focuses on providing a scalable, on-demand,
and self-service environment for users to access and consume a wide range of
services.

Utility computing can be seen as a specific implementation or component within the


Fog Computing
Internet of services

When applications are said to be "web-enabled," it means that they are


designed and developed to be accessible and functional through a web
browser. It refers to the capability of an application to be accessed and
used over the internet using standard web technologies such as HTML,
CSS, and JavaScript.

Web-enabled applications are typically hosted on web servers and can


be accessed by users using a web browser on various devices,
including desktop computers, laptops, tablets, and smartphones. Users
don't need to install any specialized software or applications on their
devices; they can simply open a web browser and access the
application by entering the appropriate URL.
Once applications began to be web-enabled, it became natural to open up
access to some of their functionality to the general public.

For example, web-based access to back-end applications meant that end-


users could themselves perform tasks such as tracking courier shipments,
getting quotations for services, or viewing their bank balances; soon secure
payment mechanisms were also developed that enabled users to place
orders and make payments online.

The W3C defines a ‘web service’ as interoperable machine-to-machine


interaction over HTTP. The HTML format for data exchange over the internet
initially evolved from SGML (standardized general markup language).

While hugely successfully, HTML was less suited for machine-to-machine


communications as its syntax is not ‘well-formed.’

In 1997 W3C published XML (extensible markup language) using which one
could also write well-formed HTML, thereby driving browsers to support XML
in addition to HTML.
The web introduced a universal mechanism called URI (Uniform Resource
Identifier) for naming and locating resources. This allowed for easy
identification of web or network locations. A well-known example of a URI is the
URL (Uniform Resource Locator), which specifies a specific web address. URIs
can also be used to name other resources or abstractions.
The combination of URI and XML as a standardized message format enabled the
development of formal web service standards. XML-RPC, for instance, emulates
remote procedure calls over HTTP using XML for data transfer. However, XML-
RPC is limited to simple data types like integers and strings.
To support more complex and nested types (such as OO structures), the SOAP
(Simple Object Access Protocol) protocol was developed.
With SOAP, applications gained the ability to call web services published by
other applications over the internet, allowing for interoperability between
different systems and platforms.
During the same period when web services standards were being developed
and utilized by companies like Fed-Ex, Amazon, and eBay for tasks like order
placement and shipment tracking, large enterprises faced challenges in
integrating their diverse range of applications and architectures within their
data centers.

These enterprises had a mix of technologies, including mainframes, client-


server systems, TP monitors, and emerging web application servers.
Integrating these systems posed a significant issue as traditional techniques
involved identifying and exposing functions within each system that could
be accessed by external applications.

However, the varying semantics and handling of similar data across


different systems created complexities in integration. Integrating systems
became a specialized application in itself due to these semantic differences.
For instance, the concept of an "employee" in one HR system might include
retirees, while another system, such as payroll, might exclude them.

This situation highlights the need for robust integration solutions that can
bridge the gaps between different systems and enable seamless
The emerging application server architecture provided a seamless way to access
legacy systems, making it an ideal choice for building integration layers. Software
vendors developed products known as "enterprise service buses" (ESBs) on top of
application servers, which abstracted integration complexities.

As the SOAP protocol demonstrated its effectiveness in connecting applications


between different enterprises over the internet (B2B integration), integration
middleware started incorporating and promoting SOAP and XML-based integration
layers within enterprise data centers. This led to the increasing popularity of the
term "service-oriented architecture" (SOA), which primarily referred to the use of
SOAP and XML for application integration.
While SOAP-based interfaces were becoming standardized for services over
the internet, another protocol called XMLHTTPRequest emerged in 2000
within the JavaScript language. Initially used for enhancing user interface
behavior on HTML pages, XMLHTTPRequest allowed "in-browser" JavaScript
code to make HTTP requests to servers other than the one hosting the main
HTML page.
Google was an early adopter of XMLHTTPRequest, utilizing it extensively to
provide interactive features in Gmail and introducing the concept of
"mashups." Google Maps, for example, could be integrated into any HTML
page by including JavaScript code provided by Google, which would internally
communicate with Google servers for map data. This approach transformed
application integration, shifting it to the client side rather than between
servers.

The term "AJAX" (Asynchronous JavaScript and XML) emerged to describe this
style of user interfaces. AJAX-based mashups empowered users to
personalize their web experience by combining services of their choice to
create customized pages.
The rise of AJAX-based mashups marked a shift in the way applications were
integrated, emphasizing the importance of client-side interactions and
dynamic web experiences.
IOS refers that everything needed to use software applications is
available as a service on the internet, including the software itself,
tools to develop it and the platform to run the software.
Adopting Cloud Computing in Business

1. Lower IT cost (CapEx is less)


2. Agility
3. Scalability and Flexibility
4. Pay-as-you-go
5. Reliability
6. Global Accessibility
Chapter 2 completed
Enterprise architecture:
role and evolution
● Building large, complex, enterprise-wide information systems without
an enterprise architecture is like trying to build a city without a city
plan.
● Can you build a city without a city plan? Probably Yes.
● Would you want to live in such a city? Probably not.
● Large enterprises should continuously evaluate emerging
architectures
○ plan the evolution of its IT environment
○ ‘keeping the lights on’ by ensuring stable IT systems to support running its
business
● Enterprise architecture (EA) is a discipline that focuses on the design, structure,
and organization of an organization's information systems, technology
infrastructure, business processes, and resources. It provides a strategic blueprint
for aligning an organization's business objectives with its technology initiatives.

● Enterprise architecture takes a holistic approach, considering both the business


and technology aspects of an organization. It seeks to understand the
organization's current state, define its target state, and develop a roadmap for
transitioning from the current state to the desired future state.

● The intent of an enterprise architecture is to determine how an organization can


most effectively achieve its current and perceived future objectives.
Value of Architectural Thinking
Do we need enterprise architects?

● No, there are many enterprises that exist without the intervention of a
enterprise architect. However, there are many situations when it is
better to architect an enterprise than to leave the creation and
evolution of its architecture to chance.
● Every enterprise will always have an architecture, it’s not optional. But
we do have a choice, whether we manage its evolution or not and how
well we manage it.
ENTERPRISE DATA AND PROCESSES

● Information systems need to keep track of the core information


vital to the functioning of an enterprise
● Enterprise architecture views business processes and the
information they access at a higher, macro level.
● First step in enterprise architecture
○ compiling a comprehensive list of all the business processes within the
organization, such as "prospect to order" and "order to cash."
○ Each process is identified and named, and the business events that mark the
start and end of each process are determined. This helps in understanding
the flow and boundaries of each process.

● A deeper analysis of the processes involves identifying intermediate


business events and human decisions made during the process. It also
entails identifying the participants involved in the process and
understanding how exceptional conditions within the process are
resolved. These exceptional conditions could be situations that deviate
from the normal flow of the process, such as errors or exceptions that
need to be handled.

● Additionally, non-functional aspects of a process are documented. This


includes information about how often the process changes over time
and its expected time of completion. These details help in assessing
the performance, efficiency, and reliability of the process.
Enterprise processes can often be classified as ‘vertical’ or ‘horizontal’

● Vertical - operate within a single organizational function, such as


sales or accounting

● Horizontal - cut across functional units


ENTERPRISE COMPONENTS
APPLICATION INTEGRATION AND SOA
Mechanisms that applications can use to communicate with each other at different ‘levels’:

1. Data level integration: This level involves the direct transfer of data between
applications. It can be achieved through batch programs that periodically exchange data or
through real-time data exchange using database triggers. For example, an inventory
management system may update the stock levels in a sales system database through batch
programs or trigger-based updates.

2. API level integration: Applications can publish API (Application Programming Interface)
libraries that allow other applications to access their data or functionality. APIs define a set
of rules and protocols for communication and data exchange. By leveraging APIs,
applications can interact with each other seamlessly. For instance, a payment gateway API
allows an e-commerce application to process online transactions securely.

3. Service-method-level integration: In this integration level, applications publish services


using web service protocols such as SOAP (Simple Object Access Protocol). Services
encapsulate specific functionality or business processes, and other applications can invoke
these services to access the desired functionality. For example, an application may expose a
web service for calculating shipping costs that can be utilized by multiple other applications.
4. User interface level integration: This integration level focuses on providing a
unified user interface by combining functionalities from multiple applications.
Mashup APIs enable the integration of various application user interfaces into a
single interface. This allows users to access and interact with different applications
seamlessly without switching between multiple interfaces. For example, a
dashboard application may integrate data and visualizations from different
systems like CRM, ERP, and marketing automation tools.

5. Workflow level integration: Workflow integration involves coordinating the flow


of work across multiple applications. When a task is performed in one application,
it triggers the creation of work items in other applications, driving the progression
of a business process. This integration ensures that the right information is passed
between systems at the right time. For instance, when a purchase order is
approved in an ERP system, it can trigger the creation of a work item in a supplier
management system to initiate the order fulfillment process.
SOA

SOA is an architectural approach that emphasizes organizing software systems as


a collection of loosely coupled services. It aims to create modular, reusable, and
interoperable components that can be easily integrated into various applications
and systems. SOA focuses on defining services with well-defined interfaces that
can be invoked and composed to fulfill specific business functions.
City planning Analogy

In the city, EAI and SOA work hand in hand. EAI helps the different neighborhoods
connect and share information by building bridges and communication channels.
SOA helps them follow a set of rules and communicate using their unique abilities
or services. It's like EAI building the roads and bridges, and SOA providing the
language and rules for them to interact.
ENTERPRISE TECHNICAL ARCHITECTURE

Management of standards defining the technical architecture, tools and technical


components used in an enterprise
Uniformity or best of breed

● In traditional enterprise integration, where most of the integration between different


technologies is done internally, uniformity is important.
● It ensures consistency in the technology stack, making it easier to manage and
maintain.
● However, with the rise of modern software architectures and the use of web services
and web-based interfaces, the internal structure of packaged components becomes
less visible.
● When components are accessible through standard communication protocols like
SOAP or HTTP, the underlying technology becomes irrelevant in terms of integration
mechanisms.
● For example, whether a network router internally uses Linux or another operating
system doesn't matter much from an enterprise architecture perspective. The focus
shifts towards standardizing the interfaces and protocols used for communication.
● The availability of cloud computing services like Amazon Web Services (AWS) or
Google Cloud further supports the relaxation of uniformity.
● These platforms provide standardized interfaces and protocols for deploying
applications, regardless of the underlying technologies they use.
● It becomes feasible to adopt a "best-of-breed" approach, where different
applications can be deployed on different platforms based on their specific
requirements or strengths.
● Therefore, it is more acceptable today to deploy applications on multiple platforms,
including public cloud providers like Amazon and Google, as well as internal
infrastructure.
● The emphasis is on standardization of interfaces, enabling interoperability between
different components and platforms, rather than enforcing uniformity in the internal
technologies used.
Network and data security

Security concerns are a critical aspect of enterprise architecture, especially when


considering cloud deployment. While cloud data centers generally have a high level of
sophistication and security measures, there are specific security issues that need to be
carefully addressed:

● Data Security and Geographical Data Location


● Data Exchange and Physical Security
● Network Security and Application Vulnerabilities
● Virtual Private Networks (VPNs)

While the security of data in the cloud is often well-managed from a technical and physical
safety standpoint, there are still important considerations regarding regulatory restrictions
and network security. It's crucial to ensure that applications have strong network security
measures in place before deploying them to the cloud. Cloud providers offer features like
VPCs to help address these security concerns.
Implementation architectures and quick-wins

Enterprise Architects pay attention to:

● people skills required


● development, testing and deployment tools needed
● impact on business-continuity
● disaster-recovery environments
● minimizing the total cost of ownership
● transition costs to any new technology

It is more likely that new technology, including cloud computing, will be first
deployed in peripheral arenas far removed from core IT systems
DATA CENTER INFRASTRUCTURE: COPING
WITH COMPLEXITY

We have discussed many of the architectural issues and decisions involved while
considering applications for cloud deployment. But why consider cloud
deployment in the first place?

Let us consider a typical large enterprise, such as a major North American bank,
for instance. If one were to do an inventory of such an enterprise’s IT infrastructure
and applications, what should one expect?
1. Virtualization
2. Automation
Chapter 3 completed!
Cloud Concepts
Cloud Computing

According to NIST, Cloud computing is a model for enabling convenient, on-


demand network access to a shared pool of configurable computing
resources (e.g., networks, servers, storage, applications, and services) that
can be rapidly provisioned and released with minimal management effort or
service provider interaction.

The National Institute of Standards and Technology (NIST) is responsible for


developing standards and guidelines, including minimum requirements, for
providing adequate information security for all agency operations and
assets.
AWS defines cloud computing as:

Cloud computing is the on-demand delivery of IT resources over the Internet


with pay-as-you-go pricing.
Properties of Cloud Computing

● On-demand self-service: A consumer can unilaterally provision computing capabilities,


such as server time and network storage, as needed automatically without requiring
human interaction with each service provider.
● Broad network access: Cloud services are accessible over the network through
standard mechanisms (e.g., internet, private network connections). Users can access
these services using a variety of devices, including laptops, smartphones, and tablets.
● Rapid Elasticity: Cloud computing allows for the quick and automatic scaling of
resources to match changing workload demands. This elasticity allows users to easily
scale up resources during peak periods and scale them down during low-demand
periods, paying only for the resources consumed.
● Measured Service: Cloud computing systems monitor and control resource usage,
providing transparency and accountability for both the provider and the user.
Resources usage, such as storage, processing, bandwidth, and active user accounts,
can be measured, controlled, and reported for billing and optimization purposes.
…continued

● Scalability and High Availability: Cloud computing environments are designed to be


highly scalable and highly available. They can automatically distribute workloads
across multiple servers and data centers to ensure uninterrupted service availability
even in the event of hardware failures or spikes in demand.
● Security: Cloud providers implement robust security measures to protect data and
infrastructure from unauthorized access, data breaches, and other security threats.
Security controls, such as encryption, access controls, firewalls, and intrusion detection
systems, are typically in place to ensure data confidentiality, integrity, and availability.
● Cost Efficiency: Cloud computing offers cost advantages by eliminating the need for
upfront capital investments in hardware and infrastructure. Users pay for the resources
they consume on a pay-as-you-go basis, reducing overall costs and allowing for better
budget management.
● Resource Pooling: Cloud computing providers pool and share computing resources
among multiple users, serving each user's demands dynamically. Resources, such as
processing power, storage, and bandwidth, are allocated based on the user's needs,
ensuring efficient utilization and scalability.
Service Models

● IaaS
● PaaS
● SaaS
Infrastructure as a Service (IaaS)

Cloud provides infrastructure as a service (IaaS), whereby computing


infrastructure such as for servers, storage or network endpoints of a desired
capacity are virtually provisioned in minutes through an automated web-based
management console.

Examples: EC2, Microsoft Azure Virtual Machines, and Google Cloud Platform (GCP)
Compute Engine.

By leveraging IaaS, organizations can benefit from the flexibility, scalability, and
cost efficiency of cloud computing while reducing the burden of managing and
maintaining physical infrastructure. They can focus more on their applications and
business logic rather than worrying about hardware provisioning and maintenance.
Platform as a Service (PaaS)

It is a cloud computing service model that provides users with a platform and
environment for developing, deploying, and managing applications over the internet.
In a PaaS model, the cloud service provider manages the underlying infrastructure,
including servers, storage, and networking, while users have control over the
applications and services they develop and deploy on the platform.

Examples: AWS Elastic Beanstalk, Microsoft Azure App Service, Google App Engine

By leveraging PaaS, developers and organizations can focus more on building and
deploying applications, rather than managing the infrastructure and platform
components. PaaS offers a streamlined development experience, faster time to
market, and scalability benefits, making it an attractive choice for building and
running modern applications in the cloud.
Software as a Service (SaaS)

It is a cloud computing service model that delivers software applications over the
internet. In the SaaS model, the cloud service provider hosts and manages the
underlying infrastructure, including servers, storage, and networking, as well as
the software applications, which are made accessible to users over the internet.

Examples: customer relationship management (CRM) systems like Salesforce,


productivity suites like Microsoft 365 and Google Workspace, project management
tools like Asana and Trello, and communication platforms like Slack and Zoom.

SaaS offers ease of use, scalability, and the ability to leverage the latest software
capabilities, making it an attractive option for businesses and individuals seeking
flexible and cost-effective software solutions.
Cloud Types (Deployment Models)

● Public Cloud
● Private Cloud
● Hybrid Cloud
● Community Cloud
Public Cloud

In a public cloud deployment, cloud computing resources are owned and operated
by a cloud service provider (CSP) and made available to the general public or
multiple organizations.

These resources, such as virtual machines, storage, and applications, are hosted in
the provider's data centers. Users can access and utilize these resources over the
internet on a pay-as-you-go basis.

Examples of public cloud providers include Amazon Web Services (AWS), Microsoft
Azure, and Google Cloud Platform (GCP).
Private Cloud

In a private cloud deployment, the cloud computing resources are dedicated to a


single organization. The infrastructure can be managed internally by the
organization or by a third-party provider.

The private cloud can be physically located on-premises, within the organization's
own data center, or it can be hosted externally in a provider's data center. Private
clouds offer more control, security, and customization options, making them
suitable for organizations with specific compliance or data privacy requirements.
Hybrid Cloud

A hybrid cloud deployment combines elements of both public and private clouds. It
allows organizations to utilize a mix of on-premises infrastructure, private cloud
resources, and public cloud services.

The hybrid cloud model provides flexibility and scalability by enabling data and
applications to move between the private and public cloud environments.

This allows organizations to take advantage of the public cloud's elasticity while
retaining control over sensitive data in the private cloud.
Community Cloud

Community cloud is a cloud computing deployment model that is shared by


multiple organizations or entities with similar interests or requirements.

In a community cloud, the infrastructure, applications, and services are specifically


designed and dedicated to serve the needs of a particular community of users,
such as businesses, government agencies, educational institutions, or research
organizations.

Examples of community clouds include research collaboration platforms for


academic institutions, or government community clouds that serve multiple
government agencies within a specific region.
Challenges of Cloud Computing

Security and Data Privacy

Security is a major concern when adopting cloud computing. Organizations need


to ensure the confidentiality, integrity, and availability of their data in the cloud.

Data breaches, unauthorized access, and data loss are potential risks that must be
addressed through robust security measures, including encryption, access
controls, and regular security audits.

Additionally, compliance with data privacy regulations, especially when dealing


with sensitive or personally identifiable information, can be a challenge in the
cloud.
Vendor Lock-In

Moving applications and data to the cloud may lead to vendor lock-in, where an
organization becomes heavily dependent on a particular cloud provider's
proprietary technologies, APIs, or infrastructure.

This can limit flexibility and make it difficult to migrate to another cloud provider or
bring services back in-house. To mitigate this risk, organizations should consider
interoperability standards, open-source solutions, and strategies for multi-cloud or
hybrid cloud environments.
Cost Management

Cloud computing offers cost savings through pay-as-you-go pricing models, but it
can also introduce challenges in managing and optimizing costs. Organizations
need to carefully monitor and control their cloud usage to avoid unexpected
expenses.

This includes rightsizing resources, implementing cost allocation and chargeback


mechanisms, optimizing storage and network usage, and utilizing cost
management tools and analytics provided by cloud providers.
Cloud Migration and Integration

Moving existing applications and infrastructure to the cloud can be a complex


process. Organizations need to consider application compatibility, data migration,
network connectivity, and integration with existing systems.

Legacy applications may require modifications or re-architecting to fully leverage


cloud benefits. Planning and executing a smooth migration strategy while
minimizing disruption to business operations is crucial.
Role of virtualization in enabling the cloud
Virtualization

Virtualization is the process of creating a virtual (rather than physical) version of


something, such as an operating system, a server, a storage device, or a network
resource. It involves the abstraction and isolation of the underlying physical
resources to create virtual instances that can be managed and utilized
independently.

In the context of computing, virtualization refers to the creation of virtual machines


(VMs) or virtual environments that mimic the functionality of physical machines or
resources. These virtual instances are decoupled from the underlying hardware,
allowing multiple VMs to run concurrently on a single physical machine or a cluster of
servers.

Virtualization plays a crucial role in enabling the cloud computing paradigm. It forms
the foundation for the cloud by providing the necessary infrastructure and
capabilities to deliver the key features and benefits of cloud computing.
Roles of virtualization in enabling the cloud:

Resource Pooling and Multi-Tenancy:

Virtualization enables the pooling of physical resources, such as compute, storage,


and networking, into a shared pool. These resources can be dynamically allocated
and reallocated to different virtual machines or tenants based on demand.

Virtualization allows multiple users or tenants to securely share the same physical
infrastructure while maintaining isolation and ensuring resource allocation
according to their needs.
Elasticity and Scalability:

Virtualization allows for elastic and scalable resource allocation in the cloud.
Virtual machines can be rapidly provisioned or decommissioned based on
workload requirements, enabling the cloud to scale up or down dynamically.

This elasticity ensures efficient resource utilization and the ability to handle
varying workloads and spikes in demand.
Hardware Independence and Abstraction:

Virtualization abstracts the underlying hardware, allowing cloud services to be


hardware-agnostic. Applications and services running in virtual machines are
decoupled from the specific hardware configurations, making it easier to migrate
them across different physical hosts or data centers. This enables workload
mobility, load balancing, and efficient resource allocation across the cloud
infrastructure.
Fault Isolation and High Availability:

Virtualization provides fault isolation capabilities, allowing virtual machines to run


in isolated environments. If one virtual machine encounters a failure or issue, it
does not impact other virtual machines. This isolation contributes to the overall
availability and reliability of cloud services.
Virtual Networking and Storage:

Virtualization extends beyond compute resources to networking and storage.


Virtual networking allows the creation of virtual networks, switches, and routers,
providing flexible and scalable network configurations in the cloud.

Virtual storage allows for the creation of virtual disks or storage volumes that can
be dynamically allocated to virtual machines. These virtual networking and
storage capabilities enhance the agility, flexibility, and scalability of cloud
services.
Virtualization forms the building blocks of cloud computing, providing the
necessary abstraction, resource pooling, scalability, and management capabilities
to deliver on-demand, scalable, and cost-effective cloud services. It enables the
efficient utilization of resources, improves agility, and simplifies the deployment
and management of cloud infrastructure and services.
Application availability, performance, security
and disaster recovery

Application Availability

Redundancy and Replication: Cloud providers typically offer redundancy and replication across
multiple data centers or availability zones. By distributing application instances across these
zones, service availability is enhanced, and the risk of single-point failures is mitigated.

Load Balancing: Cloud platforms provide load balancing capabilities to distribute incoming
traffic across multiple instances of an application. This ensures efficient resource utilization
and improved availability by directing traffic away from overloaded instances.

Auto Scaling: Cloud services often include auto scaling functionality, allowing the
infrastructure to automatically adjust the number of application instances based on demand.
Scaling up or down in response to workload fluctuations helps maintain availability and
performance.
Performance

Elastic Resource Allocation: Cloud platforms enable flexible allocation of


computing resources, such as CPU, memory, and storage, based on application
needs. Applications can dynamically scale their resource allocation to
accommodate varying workloads and ensure optimal performance.

Content Delivery Networks: CDNs can be leveraged in the cloud to distribute static
content closer to end-users, reducing latency and improving application
performance. CDNs cache content in multiple geographical locations, enabling
faster content delivery.
Security

Identity and Access Management (IAM): Cloud providers offer IAM services to manage
user access, authentication, and authorization. Administrators can define fine-grained
access policies, ensuring that only authorized users can access applications and data.

Network Security: Cloud networks can be configured with firewalls, network access
control lists (ACLs), and security groups to control inbound and outbound traffic and
protect against unauthorized access.

Encryption and Key Management: Cloud providers offer encryption services to protect
data at rest and in transit. Customers can manage encryption keys or leverage cloud
provider's key management solutions for enhanced security.
Disaster Recovery

Data Replication and Backup: Cloud providers often offer built-in data replication
and backup capabilities, ensuring that data is replicated across multiple
geographic locations. Regular backups of application data can be scheduled and
automated.

Multi-Region Deployments: Deploying applications in multiple regions or


availability zones helps ensure high availability and disaster recovery. In the event
of a regional outage, traffic can be redirected to a different region to maintain
service continuity.

Disaster Recovery as a Service (DRaaS): Cloud providers and third-party vendors


offer DRaaS solutions, allowing organizations to replicate applications and data to
a separate cloud environment for disaster recovery purposes. These solutions
streamline the recovery process and reduce downtime.
Chapter 4 completed
Cloud Architecture &
platforms
Cloud Global Infrastructure

Vast network of data centers, servers, networking equipment, and other


resources that cloud service providers deploy around the world to offer their
services.

These global infrastructures enable cloud providers to deliver a wide range


of services to users and businesses with high availability, scalability,
and performance.
Components of cloud global infrastructure

Data Centers

These are the physical facilities that house the servers and other hardware
necessary to run cloud services. Cloud providers often have multiple data centers
located in various geographic regions to ensure redundancy and minimize latency
for users in different parts of the world.
Availability Zones

Availability Zones (AZs) enhance the fault tolerance and high availability of their
infrastructure and services. AZs are distinct and isolated data center locations
within a geographic region that are connected by high-speed and low-latency
networks.

These zones are designed to be physically separate from each other to reduce the
risk of simultaneous failures due to natural disasters, power outages, or other
potential disruptions.
Region

A geographical area where a cloud service provider has established one or more
data centers. Each region is designed to be an isolated and independent part of
the cloud provider's infrastructure, and it typically consists of multiple availability
zones (AZs) within that specific geographic area.

Lies within a latency-defined perimeter and is connected through a dedicated


regional low-latency network.
Edge Locations

Edge locations serve as intermediate caching and content distribution points


situated closer to end-users and devices than the central data centers. The main
purpose of edge locations is to improve the delivery and performance of content,
such as web pages, images, videos, and other digital assets.

When users access content, the CDN caches copies of that content in edge
locations. Subsequent requests for the same content can be served directly from
the nearest edge location, reducing latency and relieving the load on the origin
servers.
Regional Edge Cache

A regional edge cache is a type of caching infrastructure used in Content Delivery


Networks (CDNs) that is positioned at the edge of a specific geographic region. It
serves as an intermediate caching and content distribution point, similar to
individual edge locations, but it covers a larger area, such as a whole country or a
specific region within a country.
Edge locations are distributed in various cities and regions globally, serving as
caching points close to end-users. They aim to improve performance by caching
frequently requested content and delivering it from nearby locations to reduce
latency.

On the other hand, regional edge caches cover larger areas, such as whole
countries or specific regions within a country. They are strategically placed to
enhance content delivery within designated regions, reducing latency for users in
those areas.
Architecture
Diagram
Deploying and operating in the Cloud

Deploying
➢ Provision infrastructure from code (Infrastructure as a Code (IaC) and AWS
CloudFormation)

➢ Deploy artifacts automatically from version control (CloudDeploy)

➢ Configuration managed from code and applied automatically (CI/CD)

➢ IaaS (Amazon Elastic Container Service)

➢ PaaS (Elastic Beanstalk, Google App Engine)


Operating in the cloud
➢ Scale your infrastructure automatically (Autoscaling)

➢ Monitor every aspect of the pipeline and the infrastructure (CloudWatch)

➢ Logging for every action (CloudWatch Logs and CloudTrail)

➢ Instance profiles for embedding IAM roles in instances automatically

➢ Use variables, don't hard code values

➢ Tagging can be used with automation to provide more insights into what has been
provisioned
Well-Architected Framework Design
Principles

1. Operational Excellence
2. Security
3. Reliability
4. Performance Efficiency
5. Cost Optimization
6. Sustainability
Operational Excellence:

● Focuses on continuously improving processes and procedures to support


operational efficiency.
● Emphasizes the use of automation, monitoring, and measurement to
understand and improve operational performance.
● Aims to reduce operational overhead, mitigate risks, and quickly respond to
incidents.
Security:

● Addresses the protection of data, systems, and assets while maintaining the
confidentiality, integrity, and availability of information.
● Advocates for implementing strong identity and access management,
encryption, network security, and best practices for secure application
development.
Reliability:

● Focuses on the ability of systems to recover from infrastructure or service


failures, dynamically acquire resources, and mitigate disruptions.
● Encourages the design of fault-tolerant architectures and the use of
automatic scaling to maintain application availability.
Performance Efficiency:

● Ensures that workloads perform efficiently to meet the required performance


levels without wasting resources.
● Recommends optimizing compute, storage, and database resources to
achieve the best performance and cost balance.
Cost Optimization:

● Aims to achieve the desired outcomes at the lowest possible cost.


● Promotes cost-awareness throughout the development and operational
lifecycle, utilizing cost-effective resource selection and efficient resource
management.
Sustainability

● The sustainability pillar focuses on minimizing the environmental impacts of


running cloud workloads.
● Key topics include a shared responsibility model for sustainability,
understanding impact, and maximizing utilization to minimize required
resources and reduce downstream impacts.
Well-Architected Framework Design
Principles

Stop Guessing Your Capacity Needs:

● Design for elasticity and scalability: Use cloud services like auto-scaling to
dynamically adjust resources based on demand, rather than provisioning
fixed capacity in advance.
● Take advantage of on-demand provisioning and pay-as-you-go pricing to
avoid over provisioning and reduce costs.
Test Systems at Production Scale:

● Regularly test your applications and infrastructure under realistic production-


like conditions to identify performance bottlenecks and scalability issues.
● Use load testing and performance testing tools to simulate real-world usage
and ensure that your systems can handle peak workloads.
Automate to Make Architectural Experimentation Easier:

● Automate repetitive tasks, such as provisioning, configuration, and


deployment, to increase agility and reduce human error.
● Embrace infrastructure-as-code (IaC) practices to define and manage your
cloud resources programmatically.
Allow for Evolution of Your Architecture:

● Design your systems to be flexible and adaptable to changing requirements


and technological advancements.
● Avoid locking into specific technologies or providers by designing loosely
coupled components and using open standards.
Drive Decisions with Data:

● Use metrics, monitoring, and analytics to make informed decisions about


your architecture and performance.
● Leverage cloud monitoring and analytics services to gain insights into
system behavior and user patterns.
Software as a Service

Software as a Service (SaaS) is a cloud computing model that delivers software


applications over the internet as a service. Instead of installing and maintaining
software on individual computers or servers, users can access the software
through a web browser, eliminating the need for local installation and
management.
Accessibility: SaaS applications are accessible from any device with an internet
connection and a web browser. Users can access the software from their desktops,
laptops, tablets, or smartphones.

Multi-Tenancy: SaaS applications are multi-tenant, meaning multiple users or


organizations share a single instance of the software, with data securely isolated
from one another.

Automatic Updates: Software vendors handle software maintenance, including


updates, bug fixes, and security patches, ensuring that users always have access
to the latest version of the application.

Pay-as-You-Go Pricing: SaaS applications typically follow a subscription-based


pricing model, where users pay a recurring fee based on usage, which can be
monthly or annually.

Scalability: SaaS platforms can easily scale their infrastructure to accommodate


changes in user demand, allowing organizations to adjust their subscription as
their needs grow or shrink.

No Infrastructure Management: With SaaS, users do not need to manage the


underlying infrastructure, servers, or software installations. The responsibility for
SaaS Architecture
Dev 2.0 in the Cloud for Enterprises

● Aims to bring end-user participation into application development.


● Dev 2.0 aims to replace application-specific code with meta-data that is
rendered and edited in web applications
● For example, in the context of a content management system (CMS),
metadata may define the types of content (e.g., articles, images, videos) and
their associated attributes (e.g., title, author, publish date). With this
metadata, the CMS knows how to display and manage each type of content
without developers having to write specific code for each content type.
Infrastructure as a service: Amazon EC2

A cloud computing model that provides virtualized computing resources over the
internet. In IaaS, cloud service providers offer a complete infrastructure, including
virtual machines, storage, networking, and other resources, as a service to users.
This allows organizations to access and use computing resources without the need
to purchase and maintain physical hardware.
Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) is a web service provided by


Amazon Web Services (AWS) that offers resizable compute capacity in the cloud. It
allows users to launch and manage virtual servers, known as instances, on the
AWS cloud infrastructure. Amazon EC2 is one of the foundational services of AWS
and is widely used for various computing workloads, ranging from simple web
applications to complex enterprise applications.
Types of EC2 instances

1. On-Demand Instances: On-Demand Instances offer a pay-as-you-go pricing


model, where users pay for compute capacity by the hour or by the second.
2. Reserved Instances: Reserved Instances involve a significant upfront payment
or a smaller upfront fee with a lower hourly rate compared to On-Demand
Instances. Users commit to using the instance for a fixed term, typically one or
three years.
3. Spot Instances: Users bid for spare EC2 capacity, and if their bid price is higher
than the current Spot price, they get access to the instance. The pricing for Spot
Instances fluctuates based on supply and demand in the AWS cloud.
4. Dedicated Hosts: Dedicated Hosts allow users to have exclusive control over a
physical EC2 server.
Platform as a service: Google App Engine

A cloud computing model that provides a platform and environment for developers
to build, deploy, and manage applications without the complexity of managing
underlying infrastructure. PaaS abstracts away the complexities of hardware,
operating systems, and networking, allowing developers to focus solely on
developing and deploying applications.
Google App Engine

Google App Engine is a Platform as a Service (PaaS) offering provided by Google


Cloud Platform (GCP). It allows developers to build, deploy, and scale applications
without the need to manage underlying infrastructure. Google App Engine
abstracts away the complexities of server provisioning, load balancing, and
networking, enabling developers to focus solely on writing code and building
applications.
Virtual server

➢ The backbone of cloud computing.

➢ Virtualizing servers involves converting one physical server into multiple virtual
machines (VMs).

➢ A virtual server is configured so that multiple users can share its processing
power.

➢ AWS=> Elastic Compute Cloud (EC2)

➢ Azure=>Virtual machines

➢ GCP=> Google Compute Engine


Cloud containers

Cloud containers, also known as containerization, is a method of packaging,


distributing, and running applications and their dependencies in a lightweight,
isolated environment. Containers provide a consistent and portable way to deploy
applications across various computing environments, including on-premises
servers, virtual machines, and public cloud platforms.

Cloud containers offer numerous advantages, such as faster application


deployment, easier application management, consistent development-to-
production environments, and improved scalability. They have become a
fundamental technology for modern application development and deployment in
cloud computing environments, enabling organizations to embrace the principles
of DevOps and efficiently deliver applications at scale.
Cloud Serverless

➢ Run code without thinking about servers or clusters. Only pay for what you use.

➢ Event trigger functions that automatically implement the application functions.

➢ Benefits: ○ No servers to manage

○ Continuous scaling

○ Cost-optimized with millisecond metering

○ Consistent performance at any scale

○ Quick deployments and updates are possible

➢ AWS=> AWS Lambda

➢ Azure => Azure Functions and Logic Apps

➢ GCP=>Google Cloud Functions


Auto Scaling

➢ Automatic scaling of resources during spikes and termination during the drop

➢ Automatically adjust the number of instances as per the estimated traffic,


memory and computation required or as per the predefined rules.

➢ Vertical Scaling (Scale UP/DOWN): Here the existing server is upgraded to the
higher specification of memory, CPU, Storage etc.

➢ Horizontal Scaling (Scale IN/OUT): Here multiple servers or instances are created
having the exact specification as the existing one. It is a more popular type of
scaling for applications or services in the deployment phase. It is also created to
distribute load among the multiple servers using Load Balancer.
Key benefits of auto scaling include:

High Availability: Auto scaling helps maintain high availability by automatically


adding new instances to the application when demand increases or if any instances
fail.

Cost Optimization: It optimizes costs by scaling down resources during periods of


low demand, which reduces operational expenses.

Performance Optimization: Auto scaling ensures that the application can handle
varying workloads, maintaining optimal performance and responsiveness.

Simplified Management: Auto scaling reduces the need for manual intervention and
monitoring, making application management more efficient.

Flexible and Agile: Auto scaling allows applications to adapt to changing conditions
and respond quickly to fluctuations in user traffic.
Here's how auto scaling works:

Monitoring: Auto scaling begins by continuously monitoring the application's performance


metrics, such as CPU utilization, network traffic, or the number of requests per second.

Scaling Policies: Based on predefined scaling policies, the auto scaling system analyzes
the monitoring data to determine whether the application needs to scale up or down.

Scaling Actions: When certain thresholds are met or exceeded, the auto scaling system
takes action. If the workload increases, it adds more instances (e.g., virtual machines,
containers) to handle the additional traffic. Conversely, if the workload decreases, it
removes instances to save on resources and costs.

Dynamic Resource Allocation: Auto scaling can dynamically adjust the number of
instances in response to changes in demand, ensuring that the application can scale up
during peak times and scale down during periods of low activity.

Load Balancing: Auto scaling often works in conjunction with load balancing. As new
instances are added or removed, load balancers distribute incoming traffic evenly among
the available instances, ensuring efficient resource utilization.
Autoscaling
Architecture
Storage Services - Object Storage

➢ In object storage, the data is broken into discrete units called objects and is kept in
a single repository, instead of being kept as files in folders or as blocks on servers.

➢ The objects stored have an ID, metadata, attributes, and the actual data.

➢ Suitable for highly durable and available application

➢ Storing backups and archives for compliance with regulatory requirements.

➢ Faster data retrieval, infinite scalability, optimization of resources.

➢ AWS=> Amazon Simple Storage Service (S3)

➢ Azure=> Azure Blob Storage

➢ GCP=> Google Cloud Storage


File Storage

➢ Stored in files and may be organized in a folder

➢ Hierarchically arranged into directories and subdirectories.

➢ Low latency and provide concurrent access to tens of thousands of clients

➢ Scalable and predictable performance up to hundreds of thousands of IOPS, tens of


GB/s of throughput, and hundreds of TBs.

➢ An easily set access as well as editing permissions across files and trees such that
security and version control are far easier to manage

➢ AWS=> Elastic File System (EFS)

➢ Azure=> Azure Files

➢ GCP=> Google Cloud Firestore


Block Storage

➢ Each block of data is given a unique identifier, which allows a storage system to
place the smaller(equal) pieces of data wherever is most convenient.

➢ Retrieve data quickly

➢ The more data you need to store, the better off you’ll be with block storage.

➢ AWS=> Elastic Block Storage (EBS)

➢ Azure=> Azure Disk Storage

➢ GCP=> Google Persistent Disks


Archive Storage
➢ Storage service for long-term data retention.

➢ Data that is infrequently accessed

➢ Two requirements: Cost must be low and data recovery must be guaranteed.

➢ Traditionally stored in cheaper magnetic storage but retrieval may not be guaranteed due to
storage corruption.

➢ Benefits:

○ Low cost, high value

○ Long Term Backup Retention

○ Helps to meet compliance requirements

➢ AWS=> S3 Glacier Deep Archive, S3 Infrequent Access

➢ Azure=> Azure Archive Storage, Azure Cool Blob Storage

➢ GCP=> Google Cloud Storage Nearline, Coldline and Archive


Databases – SQL

SQL stands for Structured Query Language. It is a programming language used to


manage and manipulate relational databases. SQL allows users to interact with
databases by performing various operations such as querying data, inserting, updating,
and deleting records, creating and modifying database structures (tables, indexes,
views), and managing database security.

➢ AWS=> Amazon RDS, Amazon Aurora

➢ Azure=> Azure SQL Database

➢ GCP=> Cloud SQL

Uses SQL queries to SELECT, DELETE, UPDATE, WHERE, INSERT entries in the database.
SQL is widely used in various applications and industries for managing data in
relational databases. It is the standard language used for interacting with
relational database management systems (RDBMS) like MySQL, PostgreSQL,
Oracle, Microsoft SQL Server, and others. SQL's declarative nature allows users to
specify what data they want to retrieve or modify, and the database management
system handles the actual execution of the queries, making it a powerful and
versatile tool for data manipulation and management.
NoSQL

NoSQL (Not Only SQL) is a term used to describe a class of databases that differ from
traditional relational databases (SQL databases) in their data model and storage
mechanisms. Unlike SQL databases, NoSQL databases are designed to handle large
volumes of unstructured or semi-structured data, providing more flexible and scalable
solutions for specific use cases.

NoSQL databases are popular choices for certain use cases, such as web applications, real-
time analytics, IoT data management, and social networks. They offer greater flexibility and
scalability compared to traditional SQL databases, making them suitable for modern
applications with large volumes of diverse and rapidly changing data. However, it's
essential to choose the right type of NoSQL database based on the specific requirements of
the application and the data model it needs to support.
NoSQL examples

➢ AWS=> Amazon DynamoDB

➢ Azure=> Azure CosmosDB

➢ GCP=> Cloud Bigtable


Graph Database
A graph database is a type of NoSQL database that is designed to store and manage data in
the form of graphs. A graph is a collection of nodes (also known as vertices) connected by
edges (also known as relationships). Each node represents an entity, and each edge
represents the relationship between two entities.

Graph databases are valuable for applications that require real-time analysis and exploration
of complex relationships. Some common use cases for graph databases include:

● Social Networks: Managing user profiles, friend connections, and social interactions.
● Recommendations: Providing personalized recommendations based on user behavior and
preferences.
● Fraud Detection: Identifying suspicious patterns and networks of fraudulent activity.
● Knowledge Graphs: Building knowledge bases to represent and reason about vast
amounts of information.
● Network and IT Operations: Visualizing and analyzing network topologies and
dependencies.

Popular graph databases include Neo4j, Amazon Neptune, and JanusGraph.


Database Migration

Database migration refers to the process of transferring data and its underlying
structure from one database system to another. This could involve moving data
between different database management systems (DBMS), upgrading to a newer
version of the same DBMS, or consolidating data from multiple databases into a
single database.

Database migration requires careful planning, testing, and execution to minimize the
risk of data loss or downtime. It is essential to have a backup strategy in place and
involve database administrators and IT teams with experience in handling such
migrations. Automated migration tools and scripts can also help simplify the process
and ensure accuracy.
Chapter 5 completed
Networking & Security
Cloud Network

● Computer network that exists within or is part of a cloud computing


infrastructure
● Computer network that provides network interconnectivity between cloud
based or cloud enabled application, services and solutions. Cloud network
can be cloud based network or cloud enabled network
● Typically, cloud network works similar to a standard computer network but its
components / devices / operations are centered on cloud computing.
● Examples: a cloud network will enable connecting a remote user with a cloud
application (SaaS) or cloud infrastructure (IaaS). User queries from a web
browser/ internet are delivered to and from the remote/backend cloud
infrastructure. Similarly, cloud networks also enable the network
communication between virtual machines.
Content Delivery Network (CDN)

A content delivery network (CDN) refers to a geographically distributed group of


servers which work together to provide fast delivery of Internet content.

Doesn’t host content rather caches the content for faster access time.

Makes use of edge locations to perform regional caching.

A properly configured CDN may also help protect websites against some common
malicious attacks, such as Distributed Denial of Service (DDOS) attacks.

➢ AWS=> AWS CloudFront

➢ Azure=> Azure CDN

➢ GCP=> Cloud CDN


Is a CDN the same as a web host?

While a CDN does not host content and can’t replace the need for proper web
hosting, it does help cache content at the network edge, which improves website
performance. Many websites struggle to have their performance needs met by
traditional hosting services, which is why they opt for CDNs.

By utilizing caching to reduce hosting bandwidth, helping to prevent interruptions


in service, and improving security, CDNs are a popular choice to relieve some of
the major pain points that come with traditional web hosting.
Benefits:

○ Reduce load times

○ Save bandwidth

○ Speed responsiveness

○ Global coverage and scalability

○ Encryption and HTTPS support


Domain Name System (DNS)
DNS Services

➢ Phonebook of the internet.

➢ The naming system for the computers, services or other resources on the internet or
a private network.

➢ Hierarchical distributed database that allows storing IP addresses and other data,
and looking them up to user names.

➢ Managing the mapping between names and numbers.

➢ AWS=> Amazon Route53

➢ Azure=> Azure DNS

➢ GCP=> Cloud DNS


Cloud Load Balancing

Cloud load balancing is the process of distributing workloads across computing


resources in a cloud computing environment and carefully balancing the network
traffic accessing those resources. Load balancing enables organizations to meet
workload demands by routing incoming traffic to multiple servers, networks or other
resources, while improving performance and protecting against disruptions in services.

The primary goal of a cloud load balancer is to evenly distribute incoming traffic
among the backend servers, preventing any individual server from being
overwhelmed, and ensuring that the workload is distributed efficiently. This helps
avoid server overloads and bottlenecks, leading to a smoother user experience and
reduced response times.
Cloud security and compliance concepts

Cloud security refers to the set of policies, technologies, and practices designed to protect data,
applications, and infrastructure hosted in cloud computing environments.

➢ Distributed Denial of Service (DDoS) Protection Google Cloud Armor, AWS Shield, Azure
DDoS Protection

➢ Virtual Private Cloud (VPC) is the logical division of a CSP’s public cloud to support private
cloud computing. It provides network isolation with a range of IP addresses called subnets. It
controls the network traffic to cloud infrastructure in the VPC so protects from unauthorized
access.

➢ Access Control Lists (ACLs) control access settings for resources on the cloud. Permissions
for access control include read/write access and the user/group of users who can access the
resource.

➢ Network Security Groups are available for different services and infrastructure that specify
the protocol of access, IP address of source/destination and open ports for access.
➢ Firewall:- Centrally configure and manage firewall rules

➢ Multi-Factor Authentication (MFA) allows additional authentication criteria besides basic


username and password login. This way enterprises employing cloud concepts can use MFA for
their employees to protect their services and infrastructures from unauthorized access.

➢ Identity and Access Management (IAM) allows access management using policies that
ensure that the right users or user groups have access to the appropriate resources.

○ Provides fine grain security to services (who, which and how)

○ Includes:

● IAM User: Single user in the IAM hierarchy

● IAM Group: Users having identical authorization

● IAM Policy: Defines which resource can be accessed and the level of access.

● IAM Role: Used to communicate and control resources. “DENY” has the highest priority.

○ The root user has all permissions.

○ Admin has only permissions issued by the root user


Compliance

Cloud compliance refers to the process of ensuring that an organization's cloud


computing activities and data handling practices adhere to relevant industry
standards, government regulations, and legal requirements.
Key Components of a Cloud Compliance
Framework

● Regulatory Compliance

Ensuring that the cloud environment complies with industry-specific


regulations and government laws. For example, healthcare organizations
must adhere to the Health Insurance Portability and Accountability Act
(HIPAA), while financial institutions must comply with the Payment Card
Industry Data Security Standard (PCI DSS).
● Governance

These preset controls protect your sensitive data from dangerous public exposure.
Essential areas of cloud governance include:

-Asset management involves organizations taking stock of all cloud services and
data contained, then defining all configurations to prevent vulnerability.

-Cloud strategy and architecture includes characterizing cloud structure, ownership,


and responsibilities in addition to integrating cloud security.

-Financial controls address a process for authorizing cloud service purchases and
balancing cloud usage with cost-efficiency

Cloud governance is about setting up policies, controls, and procedures to manage


and secure cloud resources effectively. The three essential areas mentioned (asset
management, cloud strategy and architecture, and financial controls) are critical
aspects of cloud governance that help protect sensitive data, optimize costs, and
maintain security in cloud environments.
● Change Control

Organizations should consider leveraging automation to continuously check cloud


configurations for issues and ensure successful change processes.

Identity and access management (IAM) controls often experience multiple


changes in the cloud. A few IAM best practices:

-Continuously monitor root accounts, as they can allow dangerous unrestricted


access. Disable them if possible or monitor with filters and alarms and require
multi-factor authentication (MFA).

-Utilize role-based access and group level privileges, granting access based on
business needs and the least privilege principle.

-Disable dormant accounts and institutionalize effective credential and key


management policies.
● Continuous Monitoring

The complexity and dispersed nature of the cloud make monitoring and
logging all activity extremely important. Capturing the who, what, when,
where, and how of events keeps organizations audit-ready and is the
backbone of compliance verification. When monitoring and logging data in
your cloud environment, it’s essential to:

-Remember to enable logging all cloud resources

-Protect logs with encryption and don’t hold in public-facing storage

-Define your metrics and alarms, and record all activity


● Reporting

Reporting provides current and historical proof of compliance. Think of these


reports as your compliance footprint and very handy come audit time. A
complete timeline of all events before and after an incident can provide
critical evidence should your compliance ever be questioned.
Shared Responsibility Model

Cloud adoption has accelerated in the past year as organizations scrambled to support
a remote workforce. Despite this rapid adoption and growth, companies often
misunderstand a key cloud concept: the shared responsibility model (SRM).

Many business leaders still ask, “Is the cloud secure”? This is the wrong question. A
more appropriate question would be, “Are we, as a security team and organization,
securing our share of the cloud?” The overwhelming majority of cloud data
breaches/leaks are due to the customer, with Gartner predicting that through 2025,
99% of cloud security failures will be the customer's fault. For this reason, it is
imperative that all security practitioners understand their responsibilities.
The shared responsibility model delineates what the cloud customer is responsible
for, and what the cloud service provider (CSP) is responsible for.

The CSP is responsible for security “of” the cloud—think physical facilities, utilities,
cables, hardware, etc.

The customer is responsible for security “in” the cloud—meaning network controls,
identity and access management, application configurations, and data.
At a basic level, the NIST Definition of Cloud Computing defines three primary cloud
service models:

-Infrastructure as a service (IaaS): Under the IaaS model, the CSP is responsible for the
physical data center, physical networking, and physical servers/hosting.

-Platform as a service (Paas): In a PaaS model, the CSP takes on more responsibility for
things such as patching (which customers are historically terrible at and serves as a
primary pathway to security incidents) and maintaining operating systems.

-Software as a service (SaaS): In SaaS, the customer can only make changes within an
application’s configuration settings, with the control of everything else being left to the
CSP (think of Gmail a basic example)
CloudWatch

➢ It is a metrics repository

➢ Monitors cloud resources and applications in real-time.

➢ Used to collect and track variable metrics

➢ Custom selections of the services we want to know the metrics about.

➢ Alarms can be set for certain metric criteria to trigger a notification or even
make changes to the resources if a threshold is crossed.
Cloud Formation

➢ Infrastructure as Code

➢ Developers can deploy, update the resources in simple abstract ways to reduce
complexity.

➢ CloudFormation templates are like JSON or YAML text files.

➢ Template parameters are used to customize templates during runtime.


Cloud Logs

➢ CSP provides a platform to securely store, search, analyze, and alert all of the
customers log data and events

➢ Customers can analyze logs in Real-time as they are generated.

➢ Classified as: Infrastructure Logs and Service Logs

➢ Infrastructure Logs: Monitoring of infrastructure access, network activity,


application, file access and parameters and errors related to the cloud
infrastructures.

➢ Service Logs: Monitoring of services provided by various CSPs. May include logs
of object storage, load balancers or CDNs.
Personal Health Dashboard

➢ Provides alerts and guidance for CSP events that might affect your environment

➢ Configure customizable cloud alerts for active and upcoming service issues

➢ Analyze health issues

➢ Monitor the impact on your cloud resources

➢ Get guidance and support, and share details and updates.

➢ AWS=> Personal Health Dashboard

➢ Azure=> Azure Service Health


Cloud messaging and notification service

➢ Cross-platform messaging service provided by CSPs to enable businesses to send


messages to their customers.

➢ Businesses may use cloud messaging services to send event-triggered messages, like
maintenance timings, promotional messages or event messages to their customers.

➢ Reliably deliver messages

➢ Businesses may also set up notification services to themselves or their employees


triggered by some metric threshold.

Example: Simple Notification Service (AWS)


Chapter 6 completed
Cloud computing
economics
Introduction

● Understanding the economics of cloud computing can help businesses make informed
decisions and develop cost-effective cloud strategies aligned with their overall business
objectives.
● Cloud Computing Economics is based on the pay-as-you-go method.
● Economies of Scale: Cloud providers benefit from economies of scale due to their vast
infrastructure and customer base. These providers can spread their infrastructure costs across
many users, potentially offering cost advantages to their customers.
● When exploring cloud economics, a company can follow the procedure that includes:

○ Benchmarking: Calculate cost of operating current data centre including capital cost.

○ Cloud costs: Estimate the cost of cloud infrastructure (private, public or hybrid).
Receive quotations from different CSPs and compare the integration cost, security and
compliance points.

○ Migration costs: Determine the cost to migrate IT operations to the cloud.

● Based on these costs, ROI and TCO are calculated that are used to make decisions.
Cost benefits of Cloud Computing

○ Converts fixed costs (Capital Expense) into variable costs (Variable Expense)

○ Reduces the capital costs of infrastructure.

○ Removes the maintenance cost.

○ Removes the administrative cost.


Economics of private clouds

● The financial considerations and cost implications associated with implementing and operating a
private cloud infrastructure within an organization's own data center or on-premises environment.
● Private clouds offer several economic factors that organizations need to consider when deciding to
adopt this model. Here are some key aspects of the economics of private cloud:

1. Initial Investment: Setting up a private cloud infrastructure requires a significant upfront


investment in hardware, software, and networking equipment. This includes servers, storage
systems, networking gear, virtualization software, management tools, and security solutions.
The initial capital expenditure (CapEx) can be substantial compared to other cloud
deployment models.
2. Operating Expenditure (OpEx): Once the private cloud is established, ongoing
operational costs, including maintenance, power, cooling, and staff salaries, become the
primary expenses. Organizations need to factor in these recurring costs into their budget.
3. Control and Security: One of the main economic advantages of a private cloud is the
enhanced control and security it offers. Organizations can implement their security policies
and ensure data compliance, potentially mitigating the costs associated with data breaches
and compliance violations.
4. Data Sovereignty and Compliance: For organizations operating in regions with
strict data sovereignty regulations, a private cloud can offer the advantage of
keeping data within specific geographic boundaries, ensuring compliance with local
laws.

5. Opportunity Cost: While private clouds offer greater control and security,
organizations must weigh the opportunity cost of not leveraging the agility and
scalability benefits of public cloud services. Public clouds allow organizations to
focus more on their core business without the burden of managing infrastructure.

Ultimately, the economics of private cloud adoption will vary depending on an


organization's unique requirements, existing IT infrastructure, budget constraints,
and long-term business strategy. It's essential for businesses to conduct a
comprehensive cost-benefit analysis and carefully evaluate the trade-offs before
deciding on the most suitable cloud deployment model for their needs.
Software productivity in the cloud

➢ Development and testing servers require a different environment than a production environment.
Also, these development and testing servers become obsolete after release and waste resources.

➢ Virtualization can help in this case to meet the growing demand of servers, but the time for
provisioning and configuring such servers may bottleneck projects with faster development cycles. For
this reason, the public cloud is a better option to provision and release such infrastructure on demand.

➢ Stress testing during the initial stages is also not possible due to the lack of a proper environment,
which is solved by the public cloud.

➢ The public cloud also enables globally distributed teams to work on a project, which is also known
to boost team morale, including skills from different parts of the world. So, it is advantageous to use a
public cloud that is centrally located build servers to provide low latency connection to the globally
distributed team.

➢ Likewise, PaaS provides faster and easier deployment for software and provides better scalability as
well.
Economies of Scale: Public Vs. Private
Clouds

➢ Public cloud providers enjoy purchasing hardware, storage and network are cheaper
on large scales in the case of a public cloud than in a private cloud.

➢ Public cloud providers can gradually pay off the debt of server administration over a
large number of servers by employing automation.

➢ Public cloud providers have their data centres at locations where power cost is less or
where power is produced.

➢ Public clouds enjoy a high degree of utilization compared to private cloud

➢ Most popular public cloud vendors have pre-established data centres and employ
cloud services using those resources at a high level. (Eg. Google, Amazon, Microsoft)
Q) An enterprise plans to host its MIS in the cloud.

a) Make an estimation of Monthly/Yearly cost if the following on demand services


with utilization 20 hours/day are used from the cloud service provider.

b) If the pricing model of the virtual server is changed to a full year service plan
with the commitment of NPR 67000 and with full payment upfront. What will be the
percentage change in the cost?
Solution: Only an approximation calculation daily to monthly conversion is done by
multiplying by 30,

and monthly to yearly conversion is done by multiplying by 12.

a) On Demand

For virtual server (per month) = 20 x 14 x 30= Rs. 8400

For 30 GB block storage (per month) = Rs. 14

For SQL server instance (per month) = 20 x 65 x 30 = Rs. 39000

For 500 GB database storage (per month) = Rs. 30

Overall total cost (per month) = Rs. 47,444

Total cost per year = Rs. 569,328


b)

For virtual server (per month) = 67000/12 = Rs. 5,583.33

For 30 GB block storage (per month) = Rs. 14

For SQL server instance (per month) = 20 x 65 x 30 = Rs. 39000

For 500 GB database storage (per month) = Rs. 30

Overall total cost (per month) = Rs. 44,627.33

Total cost per year = Rs. 535,528

Change in cost = (previous cost - current cost)/previous cost *100% = 5.93%


Chapter 7 completed
Enterprise analytics
and search
Information captured by enterprise systems is used to drive the operational
functions of an organization by maintaining accounts, tracking execution plans,
receiving payments or disbursing a payroll.

However, another equally important motivation to maintain data about an


enterprise’s operations is to unearth hidden patterns and discover knowledge that
can improve business strategy or optimize operational processes. Such knowledge
discovery tasks are supported by analytical applications.
Enterprise knowledge: goals and
approaches
➢ Segmenting customers, suppliers, markets or employees based on behaviour.

➢ Targeting advertising and marketing campaigns.

➢ Detecting anomalies and other rare events, such as credit card and insurance
claim fraud, illegal duplication of mobile phone SIMs, and even terrorist activities.

➢ Multiple sources of data for a high-level explanation of ground-level evidence.

➢ Customer feedback, blogs and emails.


Data in Enterprise
Business Intelligence

Business Intelligence enables the business to make intelligent, fact-based decisions.

➢ Helps organizations analyze historical and current data, so they can quickly uncover
actionable insights for making strategic decisions.

➢ Processing large data sets across multiple sources and presenting findings in visual
formats that are easy to understand and share
Key components of Business Intelligence include:

1. Data Collection: BI starts with collecting data from various sources such as databases,
spreadsheets, web applications, cloud services, and more. Data can be structured (e.g.,
tables, databases) or unstructured (e.g., text, images).
2. Data Integration: The collected data often comes from disparate sources and needs to be
integrated into a central repository, called a data warehouse, to provide a unified view of the
organization's data.
3. Data Analysis: Once the data is integrated, it is analyzed using various statistical,
mathematical, and analytical techniques to identify patterns, trends, correlations, and
insights.
4. Reporting and Visualization: BI tools offer reporting and visualization capabilities that
transform complex data into easy-to-understand charts, graphs, dashboards, and reports,
making it simpler for business users to interpret the information.
5. Business Performance Management: BI helps monitor key performance indicators (KPIs)
and track progress towards business goals, enabling organizations to make data-driven
decisions to improve performance.
6. Data Mining: This involves identifying hidden patterns or relationships within large datasets
to reveal valuable information for business purposes.
7. Predictive Analytics: BI can also leverage predictive modeling techniques to forecast future
trends, anticipate customer behavior, or predict outcomes based on historical data.
8. Real-time BI: Some BI systems allow real-time or near real-time data processing, enabling
businesses to react swiftly to changes and make decisions based on the most current
information.
Benefits of Business Intelligence:

● Improved decision-making: BI provides actionable insights based on data


analysis, which helps business leaders make more informed decisions.
● Enhanced efficiency: By streamlining data collection and analysis processes, BI
eliminates manual tasks, saving time and resources.
● Better understanding of customers: BI enables businesses to gain insights into
customer behavior and preferences, helping them tailor their products and
services accordingly.
● Competitive advantage: Organizations that effectively leverage BI gain a
competitive edge by responding quickly to market changes and identifying
opportunities ahead of their competitors.
● Data-driven culture: BI encourages a data-driven culture within an organization,
promoting evidence-based decision-making throughout the company.
Text and data mining

Text and Data Mining (TDM) refers to the process of automatically extracting useful
information, patterns, or knowledge from large collections of textual and
structured data. It involves using computational techniques, algorithms, and
machine learning to analyze vast amounts of data to discover hidden insights,
trends, and relationships.
Text Mining
Text mining, also known as text analytics or natural language processing (NLP), involves
extracting meaningful information from unstructured text data. Unstructured text data
can include documents, articles, social media posts, emails, customer reviews, and more.

Example: Sentiment Analysis for Product Reviews


Unstructured textual data refers to information that is not organized in a predefined or
structured format, making it challenging to analyze using traditional methods that work well with
structured data. Unstructured data lacks a fixed schema or data model, and it doesn't conform to
a specific pattern or structure that databases or spreadsheets typically have.

Unstructured textual data can come in various forms, such as:

Free-Form Text: This includes documents, articles, books, emails, social media posts, and any
other type of text that people write naturally without adhering to a structured format.

Narratives: Storytelling, conversations, narratives, and personal accounts that don't follow a
structured template fall under unstructured textual data.

Notes and Comments: Unstructured text often includes handwritten notes, annotations,
comments on documents, and memos that capture thoughts and ideas.

Transcriptions: Transcripts of speeches, interviews, podcasts, and videos where spoken


language is converted into text format.

Web Pages and Blogs: Web pages, blog posts, and online content that are authored in a way
that doesn't conform to a structured schema.

Social Media Data: Social media posts, comments, tweets, and messages that reflect the
informal and diverse nature of human communication.
Data Mining

Data mining involves the extraction of useful patterns and insights from structured data sets,
typically stored in databases or spreadsheets. The process includes applying statistical and
machine learning algorithms to explore data, discover patterns, and make predictions.
Common data mining techniques include:

1. Clustering: Grouping similar data points together based on their characteristics or


attributes.
2. Classification: Assigning data instances to predefined classes or categories based on
their attributes.
3. Regression Analysis: Identifying relationships and dependencies between variables to
predict numerical outcomes.
4. Association Rule Mining: Discovering interesting associations or correlations between
items in large datasets, often used for market basket analysis.
5. Anomaly Detection: Identifying unusual or abnormal data points that deviate
significantly from the normal patterns.
Text and Data Mining Applications:

Text and data mining have a wide range of applications across various industries:

● Finance: Analyzing financial news and reports to predict market trends and
stock performance.
● Marketing: Analyzing customer reviews and feedback to understand
customer preferences and sentiment.
● Academia: Mining scholarly articles to identify research trends and
connections between topics.
● Social Media Analysis: Extracting insights from social media data to
understand customer behavior and brand perception.
Data Mining use cases:

Market Basket Analysis: Retailers analyze customer purchase patterns to identify products
frequently bought together, enabling them to optimize product placement and promotions.

Customer Segmentation: Businesses segment their customer base based on demographics,


behaviors, and preferences to tailor marketing strategies and offerings.

Credit Scoring: Financial institutions use data mining to assess credit risk by analyzing customer
financial data and credit history.

Fraud Detection: Banks and credit card companies identify unusual transactions or patterns to
detect fraudulent activities and prevent financial losses.

Healthcare Analytics: Analyzing patient records and medical data helps identify disease
patterns, treatment effectiveness, and population health trends.

Recommendation Systems: Online platforms use data mining to suggest products, services, or
content based on user preferences and behaviors.

Sentiment Analysis: Social media and customer reviews are analyzed to gauge public sentiment
and opinion about products, brands, or events.
Text and database search

Web Search vs Enterprise


Search
Searching structured data

Why search structured data using text search instead of SQL?

Searching structured data using text search instead of SQL might be appropriate in
certain situations, depending on the context and requirements of the task. Here are
some scenarios where text search could be preferred over SQL for searching
structured data:

● Keyword Search in Textual Content: If you want to search for specific


keywords or phrases within textual content stored in structured data (such as
comments, descriptions, or notes), using a text search can be more flexible
and efficient than crafting complex SQL queries.
● Fuzzy or Approximate Matches: Text search engines often provide
capabilities for fuzzy matching, stemming, and relevance ranking. This can be
helpful when you want to retrieve results that are similar to a query, even if
the exact match doesn't exist.
● Unstructured or Semi-Structured Data: If your structured data includes
unstructured or semi-structured elements (like JSON or XML), a text search
can be used to search within these non-tabular parts effectively.
● User-Friendly Search: Text search interfaces are often more intuitive for non-technical
users who may not be familiar with writing SQL queries. They can simply enter keywords to
retrieve relevant results.
● Natural Language Queries: Text search engines often support natural language queries,
which allows users to search using human-like language rather than needing to know the
underlying database structure.
● Complex Relationships: In cases where your data involves complex relationships or
multiple tables, writing a SQL query might be more challenging. Text search can provide a
simpler way to retrieve relevant data without needing to navigate complex joins and
aggregations.

However, it's important to note that text search is not a complete replacement for SQL,
especially for tasks that involve querying structured data based on precise conditions,
performing aggregations, or dealing with complex joins across multiple tables. SQL is purpose-
built for interacting with relational databases, performing set operations, filtering, sorting, and
other structured data manipulations.
Chapter 8 completed
Enterprise cloud
computing ecosystem
and roadmap
Public cloud providers

The major public cloud service providers are: Amazon Web Services, Google Cloud
Platform and Microsoft Azure.

The common feature is the ability of users to pay only for the resources they
actually consume, at a very fine granularity. From a business perspective this is
the essence of classifying any offering as a public cloud service.
Amazon Web Services (AWS)

➢ AWS, a subsidiary of Amazon, is the oldest cloud service provider.

➢ Currently has 102 availability zones, which also makes it the cloud service
provider among the discussed group with the most available global locations.

➢ High profile companies such as Netflix, Unilever, and Airbnb use AWS.

➢ It offers Platform as a Service (PaaS) with the use of AWS Elastic Beanstalk.

➢ AWS has its primary focus on the public cloud rather than private or hybrid
cloud models.
Microsoft Azure

➢ Microsoft Azure, a cloud service provider under the Microsoft group of


companies has been providing its services since 2010.

➢ It falls just behind AWS in terms of global location spread.

➢ The reputed customer base of companies like Apple, Honeywell, HP and many
more.

➢ It offers PaaS under the alias App Service and Cloud Services.

➢ Microsoft Azure’s focus is divided among public and private cloud with
enterprise customers being most attracted to the services.
Google Cloud Platform (GCP)

➢ GCP, offered by Google, is a bunch of cloud services that internally use the same
resources used by YouTube, Google Search Engine and other Google products.

➢ It has the least global locations spread and offers over 60 services which are the
least among the discussed options.

➢ GCP’s client base includes companies like PayPal, Dominos, 20th Century Fox.

➢ It offers PaaS under the alias Google App Engine.

➢ Both AWS and Microsoft Azure provide pay-per-minute billing, however, GCP allows
the customer to opt for pay-per-second billing which means customers save more with
GCP than they do with AWS or Microsoft Azure.
Selection Considerations

➢ Considering the establishment of the three service providers, AWS is the oldest and the most
experienced

one in the domain, leading it to occupy one-third of market shares.

➢ However, GCP has the best growth rate amongst the three.

➢ With over 200 services, AWS offers the most and with over 60 services GCP offers the least
number of

services.

➢ The pricing model offered by GCP is the most flexible.

➢ When it comes to open-source integration and on-premise systems, Microsoft Azure has the most

advantage.

➢ Considering the brands that already use the services, all platforms are considered equal
Cloud management platforms and tools

➢ Cloud management platforms provide web-based graphical tools to configure and


manage complex configurations of servers deployed in the cloud.

➢ Examples: 3tera, RightScale, Kaavo, EnStratus, and Elastic

➢ Some tools may only work with selected vendors

➢ These platforms are themselves deployed on the cloud, either by agreement with
partner service providers or some smaller hosting providers.

➢ Cloud management tools also offer dynamic monitoring and load balancing.

➢ Nowadays these tools are deeply integrated within CSP architecture for example:-
Amazon has Elastic load balancing, CloudWatch and Autoscaling
While CSPs offer a robust set of native tools, there are scenarios where third-
party Cloud Management Platforms (CMP) can still be beneficial:

● Multi-Cloud Management: Organizations using multiple cloud providers


might find value in CMPs that offer a unified management interface across
different clouds.
● Advanced Orchestration: Some CMPs provide more advanced
orchestration and automation capabilities than native tools, which can be
especially helpful for complex environments.
● Holistic Management: CMPs often offer a broader range of features,
allowing organizations to manage not only cloud resources but also on-
premises infrastructure and applications from a single platform.
● Customization: Third-party CMPs can sometimes be customized to fit
specific organizational requirements.
Tools for building private clouds

Building a private cloud involves creating a scalable and highly automated


infrastructure that provides cloud-like services within an organization's own data
center. There are emerging tools provided by the vendors that distribute
virtualization that provide self-service infrastructure provisioning along with
dynamic monitoring and load balancing.

Examples: VMware, GigaSpaces, Elastra, Anomaly, 3tera, Eucalyptus


IaaS using Eucalyptus :

Eucalyptus is an open-source private cloud platform that provides compatibility


with Amazon Web Services (AWS) APIs. It allows organizations to create AWS-
compatible private cloud environments within their data centers.

-Eucalyptus Systems is a commercial offering based on this open source project,


targeted at enterprises interested in building private clouds.

-Eucalyptus implements external APIs identical to Amazon EC2, it also provides


clues as to the possible internal architectures of such public clouds. For the same
reason, Eucalyptus deployments can also be controlled by cloud management
tools, such as RightScale.
PaaS: AppScale

The AppScale open source project (also developed at the University of California,
Santa Barbara) mimics the GAE platform through distributed deployment of the
GAE development web-server on a cluster of virtual machines. Using AppScale, a
GAE-like PaaS environment can be implemented in a scalable manner on an IaaS
platform, such as EC2 or Eucalyptus.
Future of enterprise cloud computing

It has been well elucidated in the popular book The Big Switch, the evolution of industrial use of
electricity from private generating plants to a public electricity grid can serve as an illuminating
analogy for the possible evolution of enterprise IT and cloud computing. In such an analogy, privately
run enterprise data centers are analogous to private electric plants whereas the public electricity grid
illustrates a possible model towards which the public the clouds of today may evolve.

As another analogy, let us consider data communications: In the initial days of digital networks,
corporations owned their own data communication lines. Today all data communication lines are
owned by operators who lease them out, not only to end-users, but also to each other. The physical
resource (bandwidth) has become a commodity, and it is only in the mix of value added services
where higher profits are to be made.

In the Forrester report it is mentioned that 80% of future computing experiences will be accomplished
by light computing modes (in other words: smartphones, displays, browser-based laptops, etc.), while
20% will still require heavy compute resources for graphics, AI, and other workloads.
According to report some future trends are:

●Increased application access (Mobile apps): Cloud-based applications are optimized for mobile platforms,
enhancing user experiences on smartphones and tablets, and promoting collaborative workflows through real-
time document sharing and teamwork. This trend also aligns with hybrid work models, offering flexibility
between home and office settings. While providing benefits like reduced dependency on local installations and
scalability, challenges such as security, network reliability, user training, and data privacy must be addressed to
ensure successful implementation and optimal user experiences.

●Moving away from traditional desktops: The future trend of enterprise cloud computing involves moving
away from traditional desktop setups towards more dynamic and flexible approaches. This shift includes the
adoption of Virtual Desktop Infrastructure (VDI) and Desktop as a Service (DaaS), which enable remote access
to desktop environments from anywhere. Cloud-based application streaming and productivity suites further
reduce the dependency on locally installed software. Additionally, containerization is being explored for desktop
applications to ensure consistent experiences across devices. This transition requires a zero-trust security
model and considerations for network reliability, user experience, data privacy, compliance, and employee
training. Overall, this trend reflects the evolving nature of work, emphasizing remote accessibility, centralized
management, and streamlined user experiences.

●Unified endpoint management: Unified Endpoint Management (UEM) is a comprehensive approach to


managing and securing a diverse range of devices and endpoints within an organization's network. UEM
solutions provide a centralized platform for managing various types of endpoints, including traditional
computers, mobile devices, IoT devices, and more. The goal of UEM is to simplify and streamline the
management and security of endpoints while ensuring consistent policies and controls across the organization.
●AI and Machine Learning Integration: AI and machine learning are becoming integral to business
operations. Enterprises are using these technologies for predictive analytics, automation, customer insights,
and more.

●Commoditization of the data center: The future trend of enterprise cloud computing involves the
commoditization of the data center, wherein data center resources and services transition from complex,
specialized environments to standardized and easily accessible commodities. This shift is driven by
advancements in cloud computing and virtualization technologies, enabling businesses to obtain computing
resources on-demand without substantial upfront investments.. Embracing data center commoditization
empowers businesses to optimize IT infrastructure, innovate more efficiently, and respond to changing
demands while considering the balance between benefits and challenges.

●Inter-operating Virtualized Data Centers: This concept envisions a seamless integration of multiple
data center environments through virtualization, creating a cohesive system that shares resources across
locations. It enables efficient workload distribution, scalable resource allocation, and application redundancy
while facilitating hybrid cloud strategies. By interconnecting data centers, organizations can achieve
flexibility, agility, and optimal resource utilization. However, managing complexity and ensuring security
remain critical considerations in realizing the full potential of this trend.

●Convergence of private and public clouds: This trend involves seamlessly integrating privately owned
cloud infrastructure with resources from external cloud vendors, resulting in a hybrid cloud environment.By
strategically distributing workloads between private and public clouds, enterprises can optimize resource
utilization, ensure data compliance, and enhance disaster recovery capabilities. This trend addresses the
diverse needs of different workloads while mitigating vendor lock-in risks, ushering in a new era of cloud
strategy that capitalizes on the strengths of both deployment models.
Chapter 9 completed
Enterprise Computing
Monolith

Monolith architecture, also known as monolithic architecture, is a traditional


software design approach where all components and functionalities of an
application are tightly integrated into a single codebase and executed as a single
unit. In a monolith architecture, the entire application, including its user interface,
business logic, and data access, is bundled together into a single executable or
deployment unit.
Key Characteristics of Monolith Architecture:

Single Codebase: All components of the application are developed, maintained, and deployed within a
single codebase.

Tight Integration: Components within the monolith are closely coupled and interact through direct
function calls or method invocations.

Single Deployment Unit: The entire application is deployed as a single package, simplifying deployment
but potentially leading to longer deployment times.

Shared Database: Monolith applications often share a single database, which can lead to challenges in
scaling and managing data access.

Scalability Challenges: Scaling a monolith can be challenging, as the entire application needs to be
scaled even if only specific components require more resources.

Development and Testing: Developers work on the same codebase, making it easier to collaborate.
However, testing can become complex as changes in one part of the application can impact others.

Technology Stack: Monolith applications typically use a single technology stack or framework
throughout.

Maintenance: Maintenance and updates can be complex, as changes might require a full rebuild and
redeployment of the entire application.
Advantages of Monolith Architecture:

Simplicity: Monoliths are simpler to develop, deploy, and manage compared to


more complex distributed architectures.

Single Deployment: Deployment is straightforward since the entire application is


deployed as a single unit.

Easier Development: Developers work within a single codebase, making it easier


to understand and maintain.

Initial Development Speed: Monoliths can be quicker to develop initially,


especially for smaller projects.

Unified Codebase: A single codebase can promote consistency and reduce


duplication of code.
Disadvantages of Monolith Architecture:

Scalability: Scaling a monolith can be inefficient and challenging, especially for


specific components that require more resources.

Maintenance Challenges: As the application grows, maintenance and updates


can become complex and risky.

Technology Lock-In: Monoliths might use a single technology stack, making it


difficult to adopt new technologies.

Deployment Complexity: Larger applications can have longer deployment


times, and deploying updates can disrupt the entire application.

Testing Complexity: Changes in one part of the application can impact others,
making testing complex and potentially error-prone.
Microservice Architecture

Microservice architecture is a modern software design approach where a complex


application is decomposed into smaller, loosely coupled, and independently
deployable services called "microservices." Each microservice focuses on a
specific business capability or function and communicates with other
microservices over well-defined APIs. Microservices enable agility, scalability, and
flexibility in software development and deployment.
Key Characteristics of Microservice Architecture:

Decomposition: The application is broken down into smaller, self-contained microservices, each
responsible for a specific feature or functionality.

Independence: Microservices are developed, deployed, and managed independently. Each


microservice can use different technology stacks or programming languages.

Loose Coupling: Microservices communicate through APIs, allowing them to evolve independently
without affecting other services.

Autonomy: Microservices are owned by specific development teams, promoting ownership,


responsibility, and faster development cycles.

Scalability: Each microservice can be scaled individually based on demand, allowing efficient resource
utilization.

Resilience: If one microservice fails, the rest of the application can continue to function, reducing the
impact of failures.

Continuous Deployment: Microservices can be deployed independently, enabling continuous delivery


and faster time-to-market.
Disadvantages of Microservice Architecture:

Complexity: Managing communication and coordination between microservices


can become complex, especially in large and distributed systems.

Operational Challenges: Monitoring, logging, and managing multiple


microservices can be challenging.

Network Overhead: Communication between microservices over a network can


introduce latency and overhead.

Data Consistency: Maintaining data consistency across different microservices


can be complex.

Testing Challenges: Ensuring integration and end-to-end testing of multiple


microservices can be more intricate.

You might also like