Cloud Computing Technologies
Cloud Computing Technologies
1.1 INTRODUCTION
i. Definition
A distributed computer system consists of multiple software components that are onmultiple
computers, but run as a single system. The computers that are in a distributed system can be
physically close together and connected by a localnetwork, or they can be geographically distant
and connected by a wide areanetwork
Overview
The machines that are a part of a distributed system may be computers, physicalservers, virtual
machines, containers, or any other node that can connect to the network, have local memory,
and communicate by passing messages.
1. Each machine works toward a common goal and the end-user views results asone
cohesive unit.
Mrs. V.DHIVYALAKSHMI AP/MCA Page 1
MC4203 – CLOUD COMPUTING TECHNOLOGIES
2. Each machine has its own end-user and the distributed system facilitates sharing
resources or communication services.
Although distributed systems can sometimes be obscure, they usually have three primary
characteristics: all components run concurrently, there is no global clock,and all components
fail independently of each other.
There are three reasons that teams generally decide to implement distributedsystems:
Scheduling—A distributed system has to decide which jobs need to run, when they
should run, and where they should run. Schedulers ultimately havelimitations, leading
to underutilized hardware and unpredictable runtimes.
Latency—The more widely your system is distributed, the more latency youcan
experience with communications. This often leads to teams making tradeoffs
between availability, consistency, and latency.
Observability—Gathering, processing, presenting, and monitoring hardwareusage
metrics for large clusters is a significant challenge.
i. Definitions
Distributed system (1) - A distributed system is one in which components located
at networked computers communicate and coordinate their actions only by passing messages.
There are three significant characteristics on how distributed systems are dfiferent from centralized
systems:
1. Concurrency of components – different system components do work at once and handle
Small Large
Small group of interconnected robots Face book/Google systems
Distributed database on few computers WWW
Airplane control software Mobile networks / phones
File system on a laptop Large P2P systems
UT networked DS Grid computing
Finance and commerce eCommerce e.g. Amazon and eBay, PayPal, onlinebanking and trading
The information society Web information and search engines, ebooks, Wikipedia;social networking:
Facebook and MySpace
Creative industries online gaming, music and film in the home, user-generatedcontent, e.g.
andentertainment YouTube, Flickr
Healthcare health informatics, on online patient records, monitoringpatients
Transport and logistics GPS in route finding systems, map services: Google Maps,Google Earth
A server can itself request services from other servers; thus, in this new relation, theserver itself
acts like a client.
b) Peer-to-peer
☞ All processes (objects) play similar role.
Processes (objects) interact without particular distinction between clients andservers.
The pattern of communication depends on the particular application.
A large number of data objects are shared; any individual computer holdsonly a
small part of the application database.
Processing and communication loads for access to objects are distributedacross
many computers and access links.
This is the most general and flexible model.
Peer-to-Peer tries to solve some of the above
It distributes shared resources widely -> share computing and communicationloads.
ii.Interaction Model
Interaction model are for handling time i. e. for process execution, message delivery,clock
drifts etc.
Synchronous distributed systems
Main features:
Lower and upper bounds on execution time of processes can be set.
Transmitted messages are received within a known bounded time.
Drift rates between local clocks have a known bound.
Important consequences:
1. In a synchronous distributed system there is a notion of global physical time(with a
known relative precision depending on the drift rate).
2. Only synchronous distributed systems have a predictable behavior in terms oftiming.
Only such systems can be used for hard real-time applications.
3. In a synchronous distributed system it is possible and safe to use timeouts inorder to
detect failures of a process or communication link.
☞ It is difficult and costly to implement synchronous distributed systems.
Asynchronous distributed systems
☞ Many distributed systems (including those on the Internet) are asynchronous. - No bound
on process execution time (nothing can be assumed about speed, load, and reliability of
computers). - No bound on message transmission delays (nothingcan be assumed about
speed, load, and reliability of interconnections) - No boundson drift rates between local
clocks.
Important consequences:
1. In an asynchronous distributed system there is no global physical time. Reasoning can
be only in terms of logical time (see lecture on time and state).
2. Asynchronous distributed systems are unpredictable in terms of timing.
3. No timeouts can be used.
☞ Asynchronous systems are widely and successfully used in practice.
iii.Fault Models
☞ Failures can occur both in processes and communication channels. The reasoncan be both
software and hardware faults.
☞ Fault models are needed in order to build systems with predictable behavior incase of
faults (systems which are fault tolerant).
☞ such a system will function according to the predictions, only as long as the realfaults behave
as defined by the “fault model”.
Request-Reply Protocol
Operations
doOperation(): send request to remote object, and returns the reply received
getRequest(): acquire client request at server port
Design issues
Fault tolerance
i. Request Protocol:
ii.Request/Reply Protocol:
In this protocol, the client acknowledges the receiving of reply messages and when the server gets
back the acknowledgement from the client then only deletes the information from its cache.
Because the reply acknowledgement message may be lost at times, the RRA protocol requires unique
ordered message identities. This keeps track of the acknowledgement series that has been sent.
1.6 REMOTE PROCEDURE CALL (RPC)
RPC is a communication technology that is used by one program to make a request to another program for
utilizing its service on a network without even knowing the network’s details. A function call or a subroutine
call is other terms for a procedure call.
It is based on the client-server concept. The client is the program that makes the request, and the server is the
program that gives the service. Remote Procedure Call program as often as possible utilizes the Interface
Definition Language (IDL), a determination language for describing a computer program component’s
Application Programming Interface (API). In this circumstance, IDL acts as an interface between ma chines
at either end of the connection, which may be running different operating systems and programming
languages.
Working Procedure for RPC Model:
The process arguments are placed in a precise location by the caller when the procedure needs to be
called.
Control at that point passed to the body of the method, which is having a series of instructions.
The procedure body is run in a recently created execution environment that has duplicates of the
calling instruction’s arguments.
At the end, after the completion of the operation, the calling point gets back the control, which returns
a result.
Types of RPC:
Callback RPC: In a Callback RPC, a P2P (Peer-to-Peer)paradigm opts between participating processes. In
this way, a process provides both client and server functions which are quite helpful. Callback RPC’s
features include:
The problems encountered with interactive applications that are handled remotely
It provides a server for clients to use.
Due to the callback mechanism, the client process is delayed.
Deadlocks need to be managed in callbacks.
It promotes a Peer-to-Peer (P2P) paradigm among the processes involved.
RPC for Broadcast: A client’s request that is broadcast all through the network and handled by all servers
that possess the method for handling that request is known as a broadcast RPC. Broadcast RPC’s features
Mrs. V.DHIVYALAKSHMI AP/MCA Page 13
MC4203 – CLOUD COMPUTING TECHNOLOGIES
include:
You have an option of selecting whether or not the client’s request message ought to be broadcast.
It also gives you the option of declaring broadcast ports.
It helps in diminishing physical network load.
Batch-mode RPC: Batch-mode RPC enables the client to line and separate RPC inquiries in a transmission
buffer before sending them to the server in a single batch over the network. Batch-mode RPC’s features
include:
It diminishes the overhead of requesting the server by sending them all at once using the network.
It is used for applications that require low call rates.
It necessitates the use of a reliable transmission protocol.
Local Procedure Call Vs Remote Procedure Call:
Remote Procedure Calls have disjoint address space i.e. different address space, unlike Local
Procedure Calls.
Remote Procedure Calls are more prone to failures due to possible processor failure or
communication issues of a network than Local Procedure Calls.
Because of the communication network, remote procedure calls take longer than local procedure
calls.
Advantages of Remote Procedure Calls:
The technique of using procedure calls in RPC permits high-level languages to provide
communication between clients and servers.
This method is like a local procedure call but with the difference that the called procedure is executed
on another process and a different computer.
The thread-oriented model is also supported by RPC in addition to the process model.
The RPC mechanism is employed to conceal the core message passing method.
The amount of time and effort required to rewrite and develop the code is minimal.
The distributed and local environments can both benefit from remote procedure calls.
To increase performance, it omits several of the protocol layers.
Abstraction is provided via RPC. To exemplify, the user is not known about the nature of message-
passing in network communication.
RPC empowers the utilization of applications in a distributed environment.
Disadvantages of Remote Procedure Calls:
In Remote Procedure Calls parameters are only passed by values as pointer values are not allowed.
It involves a communication system with another machine and another process, so this mechanism is
extremely prone to failure.
The RPC concept can be implemented in a variety of ways, hence there is no standard.
Due to the interaction-based nature, there is no flexibility for hardware architecture in RPC.
Due to a remote procedure call, the process’s cost has increased.
Architectures
Remote Objects
Distributed Actions
Garbage Collection
if underlying language (e.g. Java) supports GC, any associated RMI system should allow GC of remote
objects
Distributed GC: local, existing GC cooperates with additional module that counts references to do
distributed GC
Exceptions
communication module: communicates messages (requests, replies) between client and server
two cooperating modules implement request-reply protocol
responsible for implementing invocation semantics
remote reference module: creates remote object references
maintains remote object table which maps between local and remote object references
remote object table: has an entry for each
remote object reference held by the process
local proxy
entries get added to the remote object table when
remote object reference is passed for the first time
remote object reference is received, and an entry is not present in the table
servant: objects in process receiving the remote invocation
instance of a class that provides the body of a remote object
live within a server process
RMI Software
software layer between application and the communication and object reference modules, composed of
proxies, dispatchers, and skeletons
proxy: behaves like a local object to the invoker making RMI transparent to clients
usually an interface
lives in the client
instead of executing the invocation, it forwards it in a message to a remote object
hides details of remote object reference, marshalling, unmarshalling, sending/receiving messages from client
one proxy per remote object reference the process holds
dispatcher: translates method ID to the real method
server has 1 dispatcher + 1 skeleton for each class representing a remote object
receives requests from the communication module
uses operationId to select appropriate method in the skeleton
skeleton: skeleton class of remote object implementing methods of remote interface
handles marshalling/unmarshalling
skeleton methods unmarshal arguments in the request and invoke the corresponding method in the servant
Development
1. definition of interface for remote objects: defined using supported mechanism of the particular RMI
software
2. compile interface: generate proxy, dispatcher, skeleton classes
3. writing server: remote object classes are implemented and compiled with classes for dispatchers and
skeletons. Server is also responsible for creating/initialising objects, and registering them with the
binder.
4. writing client: client programs implement invoking code and contain proxies for all remote classes.
Binder used to lookup remote objects
server contains
o classes for dispatchers, skeletons
o initialisation section for creating/initialising at least one servant
o code for registering servants with the binder
client contains
o classes for all proxies of remote objects
some applications require information survive for long periods, but its not practical to be kept in
running processes indefinitely
to avoid wasting resources from running all servers that manage remote objects simultaneously, servers
can be started whenever needed by clients
activator: processes that start server processes to host remote objects
o registers passive objects available for activation
o starts named server processes and activates remote objects in them
o keeps track of locations of servers for remote objects that have already been activated
active remote object: is one that is available for invocation in the process
passive remote object: is not currently active, but can be made active. Contains
o implementation of the methods
o state in marshalled form
activation: creating an active object from the corresponding passive object
Java RMI
Java RMI extends Java object model to provide support for distributed objects,
allowing objects to invoke methods on remote objects using the same syntax as for local invocations
objects making remote invocations are aware their target is remote as it must handle RemoteExceptions
implementer of a remote object is aware an object is remote as it extends the Remote interface
Goals of RMI
Following are the goals of RMI −
To minimize the complexity of the application.
To preserve type safety.
Distributed garbage collection.
Minimize the difference between working with local and remote objects.
High Availability
High available systems mean a set of computers who work, act and appear as a onecomputer
to the outside world.
Consensus
simple algorithm forconsensus describes what is consensus in simple terms.Consensus is a
fundamental problem in fault-tolerant distributed systems.
Distributed Coordination Systems
There are many popular distributed coordination schemes available like Apache Zookeeper
and etcd. All these systems provide the above mentioned functionalityof a distributed
coordination system without letting the users to worry about the consistency of the values
they are storing in those distributed storages.
1. Examples of distributed systems
Here are the four main distributed systems normal people actually use:
1. The vast collection of routing mechanisms that make up the Internet.
2. The domain name system (DNS). Essentially a large hierarchical databasefor
translating domain names like www.cs.yale.edu into IP addresses
3. The World Wide Web. Structurally not all that different from the bottom layerof DNS,
with webservers replacing nameservers.
6. Agreement protocols
There are various ways to get around the FLP impossibility result; the most practicaluse mechanisms
that in the theoretical literature are modeled as abstract Failure Detectors but that in practice tend to
specifically involve using timeouts.
i.FIFO-ORDERED MULTICAST
ii.TOTAL-ORDERED MULTICAST
A total order is a binary relation that defines an order for every element in someset. Two
distinct elements are comparable when one of them is greater than the other. In a partially
ordered set, some pairs of elements are not comparable and hence a partial order doesn't
specify the exact order of every item.
One thing “happened before” another is a relation that iscodified by time, using physical clocks as a
mechanism to deliver time. So ordering of events is done using physical clocks in the real world. In a
distributed system, this notion of time needs to be understood more carefully.
Each node can establish their own local order of events. But how can one establish a coherent order of
events across multiple nodes.
One way to define an order of events in a distributed system would be to have a physical
clock. So “happened before” event can be described using t1 < t2. But clocks are not
accurate, can drift and are not necessarily synchronized in lock-step.So this paper takes
another approach to define “happened before” relation. (The meaning of “partial order” will
become clear later. )
A distributed system can be defined as a collection of processes. A process essentially
consists of a queue of events(which can be anything — like an instruction, or a subprogram,
or anything meaningful) and has apriori order. In thissystem, when processes communicate
with each other, sending of a message is defined as an event. Let’s establish a more precise
definition of “happens before” (⇢) in such a system.
As you can see in the figure on the left above, p1 ⇢ p2 as those are the events in the same
process. q1 ⇢ p2 due to sending of the message from process Q to process P. Ifwe consider that
time is elapsing bottom up and q3 seems to happen before p3 if we were to consider physical
time. But in this system, we will call these events as concurrent. Both processes don’t know
about these events — there is not causal relationship at this time. But what we can say is that q3
⇢ p4, because q3⇢q5 and q5
⇢ p4. Similarly we can say that p1 ⇢ r3. Now having gone through some examples,it
becomes clear that, another way to envisage a ⇢ b is that event a can causally affect event b.
On a similar note, q3 and p3 mentioned above are not causally related.
Distributed System is a collection of computers connected via the high speed communication
network. In the distributed system, the hardware and software components communicate and
coordinate their actions by message passing. Each node in distributed systems can share their
resources with other nodes. So, there is need of proper allocation of resources to preserve the state
of resources and help coordinate between the several processes. To resolve such conflicts,
synchronizationis used. Synchronization in distributed systems is achieved via clocks.
The physical clocks are used to adjust the time of nodes. Each node in the system can share its local
The clock synchronization can be achieved by 2 ways: External and Internal Clock
Synchronization.
Average of the differences of time with other nodes. Distributed algorithms overcome the
issue of centralized algorithms like the scalability and single pointfailure. Examples of
Distributed algorithms are – Global Averaging Algorithm, Localized Averaging Algorithm,
NTP (Network time protocol) etc.
C1: Ci(a) < Ci(b) if a happens before b in the same process i. This can beimplemented using a
simple counter in the given process.
C2: When process i sends message at event a and process j acknowledges themessage at event
b, then Ci(a) < Cj(b)
These clock functions can be thought of as ticks that occur regularly in a process. Between any
two events, there needs to be at least one such tick. Each tick essentially increments the
number assigned to the previous tick. Across processes when messages are sent, that message
needsto cross or touch a tick boundary to define the “happens before” event.
IR2: This is one implements C2. It can be done by sending Ci(a) as a timestamp to process j.
When Process j acknowledges the receipt of this message at event b, it needs to set Cj(b).
Cj(b) will be set to a value ≥ the current Cj and also greater thanCi(a)/timestamp.
These two conditions imply that ⇥ completes the partial relationship ⇢. If two events
are partially ordered then they are totally ordered already. While partial ordering is
unique in the given system of events, total ordering may not be.
1. A process which has been granted a resource, must release it before any otherprocess
can acquire it.
2. Resource access requests should obey the order in which requests are made
3. If every process releases the resource it asked for, then eventually access isgranted
for that resource.
One possible solution could be to introduce a centralized scheduler. While one issueis that it is a
completely centralized, another is that ordering condition 2 may not work.
This means that event order was not obeyed. To address this issue, we can use total ordering
based off of IR1 and IR2.With this, every event is totally ordered in the system. As long as all
the processes know about requests made by other processes, the correct ordering can be
enforced.
A decentralized solution can be designed such that each process keeps a queue oflock and
unlock operations.
1. Process i asking for a resource lock, uses the current timestamp and puts
lock(T,Pi) in the queue. It also sends this message to all other processes.
2. All other processes put this message in their queue and send the response backwith a
new timestamp Tn.
3. To unlock a resource, process i, sends unlock(T, Pi) message to all processesand
removes the lock(T, Pi) message from its own queue.
4. Process Pj, upon getting unlock message, removes lock(T, Pi) message fromits
queue.
5. Process Pi is free to use the resource i.e. gets its lock request granted when: ithas the
lock(T, Pi) messages in its queue with T enforcing the total order such that T is before
any other message in the queue. In addition, process Pi needs to wait until it has received
messages from all the processes in the system timestamped later than T.
This means that if one PC has a time 2:00 pm then every PC should have the sametime which is quite
not possible. Not every clock can sync at one time. Then we can’t follow this method.
Method-2:
Another approach is to assign Timestamps to events.
Taking the example into consideration, this means if we assign the first place as 1,second place as 2,
third place as 3 and so on. Then we always know that the first place will always come first and then so
on. Similarly, If we give each PC their individual number than it will be organized in a way that 1st PC
will complete its process first and then second and so on.
BUT, Timestamps will only work as long as they obey causality.
Causality
Causality is fully based on HAPPEN BEFORE RELATIONSHIP.
Taking single PC only if 2 events A and B are occurring one by one then TS(A) < TS(B). If A
has timestamp of 1, then B should have timestamp morethan 1, then only happen before relationship
occurs.
Taking 2 PCs and event A in P1 (PC.1) and event B in P2 (PC.2) then also thecondition will be
TS(A) < TS(B). Taking example- suppose you are sending message to someone at 2:00:00 pm, and
the other person is receiving it at 2:00:02pm.Then it’s obvious that TS(sender) < TS(receiver).
CLOUD COMPUTING
Cloud computing is a model for enabling ubiquitous, 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.
2.1 CLOUD COMPUTING BASICS
Cloud Computing is the delivery of computing services such as servers, storage, databases,
networking, software, analytics, intelligence, and more, over the Cloud (Internet). We can take any
required services on rent. ... The cloud computing services will be charged based on usage.
The cloud environment provides an easily accessible online portal that makes handy for the user
to manage the compute, storage, network, and application resources.
o Security
o Public Cloud: The cloud resources that are owned and operated by a third-party cloud
service provider are termed as public clouds. It delivers computing resources such as
servers, software, and storage over the internet
o Private Cloud: The cloud computing resources that are exclusively used inside a single
business or organization are termed as a private cloud. A private cloud may physically be
located on the company’s on-site datacentre or hosted by a third-party service provider.
o Hybrid Cloud: It is the combination of public and private clouds, which is bounded
together by technology that allows data applications to be shared between them. Hybrid
cloud provides flexibility and more deployment options to the business.
Small as well as large IT companies, follow the traditional methods to provide the IT
infrastructure.
In that server room, there should be a database server, mail server, networking, firewalls, routers,
modem, switches, QPS (Query Per Second means how much queries or load will be handled by
the server), configurable system, high net speed, and the maintenance engineers.
To establish such IT infrastructure, we need to spend lots of money. To overcome all these
problems and to reduce the IT infrastructure cost, Cloud Computing comes into existence.
4) Multi-Sharing
5) Device and Location Independence
6) Maintenance
7) Low Cost
8) Services in the pay-per-use mode
i.Cloud Elasticity
Cloud elasticity is the ability to rapidly and dynamically allocate cloud resources, including
compute, storage, and memory resources, in response to changing demands.
The goal of cloud elasticity is to avoid either over provisioning or under provisioning a particular
service or application. Over provisioning (i.e. allocating too many resources) results in higher
expenditures than necessary, while under provisioning (allocating too few resources) means that
not all users will be able to access the service.
• E-commerce websites may have events such as sales, promotions, and the release of
special items that attract a much larger number of customers than usual. Cloud elasticity
helps these websites allocate resources appropriately during times of high demand so that
customers can still check out their purchases.
• Streaming services need to appropriately handle events such as the release of a popular
new album or TV series. Netflix, for example, claims that it can add “thousands of virtual
servers and petabytes of storage within minutes,” so that users can keep enjoying their
favorite entertainment no matter how many other people are watching.
• Flexibility:
• “Pay as you go” cost model
• Fault tolerance and high availability
Solutions Review covers the basics of cloud elasticity: what it is, how it affects cloud
solutions, and how it provides advantages to your company.
Elasticity refers to the dynamic allocation of cloud resources to projects, workflows, and
processes.
v.Cloud elasticity
Cloud elasticity is the process by which a cloud provider will provision resources to an
enterprise’s processes based on the needs of that process.
Cloud provides have systems in place to automatically deliver or remove resources in order to
provide just the right amount of assets for each project.
On-demand self-service computing implies a high level of planning. For instance, a cloud
consumer can request a new virtual machine at any time, and expects to have it working in a
couple of minutes. The underlying hardware, however, might take 90 days to get delivered to the
provider. It is therefore necessary to monitor trends in resource usage and plan for future
situations well in advance.
Simple User Interfaces
The cloud provider can’t assume much specialized knowledge on the consumer’s part. In a
traditional enterprise IT setting, IT specialists process requests from business. They know, for
instance, how much RAM is going to be needed for a given use case. No such knowledge can be
assumed on the part of a cloud service consumer.
Policies
The high level of automation required for operating a cloud means that there is no opportunity
for humans to thoroughly inspect the specifics of a given situation and make an informed
decision for a request based on context.
Cloud On-Demand Self-Service
The first of the essential characteristics that I want to cover is on-demand self-service. The
definition from the NIST is, “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.”
Cloud On-Demand Self-Service Example – AWS EC2 Walkthrough
The easiest way to describe this is to show you how it actually works, so let’s have a look
at Amazon Web Services and I will automatically provision a virtual machine running in the
AWS cloud.
Cloud On-Demand Self-Service In Action
On the server (compute) side, it’s creating a virtual machine with the amount of vCPUs and
memory I selected it. It’s also going to install the Windows operating system in there for me. It’s
going to install that on a 30 GB boot drive because that’s what I selected for the storage and it’s
going to configure my firewall rules as well.
On-Demand Self-Service Benefits
to different IT teams to configure all of those different settings.
The server team would physically rack up the server, install the operating system, do the
software patching and install any applications.
The networking team would configure the VLAN and IP subnet that the virtual machine is going
to be in and also the firewall rules to allow the incoming RDP connection.
The storage team would provision the 30 GB boot disk and attach it to this particular server.
That would all take a lot of time and be done as individual manual tasks by the different teams.
2.5 APPLICATIONS
Cloud service providers provide various applications in the field of art, business, data storage and
backup services, education, entertainment, management, social networking, etc.
The most widely used cloud computing applications are given below
1. Art Applications
Cloud computing offers various art applications for quickly and easily design attractive cards,
booklets, and images. Some most commonly used cloud art applications are given below:
i Moo
Moo is one of the best cloud art applications. It is used for designing and printing business cards,
postcards, and mini cards.
ii. Vistaprint
Vistaprint allows us to easily design various printed marketing products such as business cards,
Postcards, Booklets, and wedding invitations cards.
iii. Adobe Creative Cloud
Adobe creative cloud is made for designers, artists, filmmakers, and other creative professionals.
It is a suite of apps which includes PhotoShop image editing programming, Illustrator, InDesign,
TypeKit, Dreamweaver, XD, and Audition.
2. Business Applications
Business applications are based on cloud service providers. Today, every organization requires
the cloud business application to grow their business. It also ensures that business applications
are 24*7 available to users.
Salesforce platform provides tools for sales, service, marketing, e-commerce, and more. It also
provides a cloud development platform.
iv. Chatter
Chatter helps us to share important information about the organization in real time.
v. Bitrix24
Bitrix24 is a collaboration platform which provides communication, management, and social
collaboration tools.
vi. Paypal
Paypal offers the simplest and easiest online payment mode using a secure internet account.
Paypal accepts the payment through debit cards, credit cards, and also from Paypal account
holders.
vii. Slack
Slack stands for Searchable Log of all Conversation and Knowledge. It provides a user-
friendly interface that helps us to create public and private channels for communication.
viii. Quickbooks
Quickbooks works on the terminology "Run Enterprise anytime, anywhere, on any device." It
provides online accounting solutions for the business. It allows more than 20 users to work
simultaneously on the same system.
3. Data Storage and Backup Applications
Cloud computing allows us to store information (data, files, images, audios, and videos) on the
cloud and access this information using an internet connection. As the cloud provider is
responsible for providing security, so they offer various backup recovery application for
retrieving the lost data.
A list of data storage and backup applications in the cloud are given below -
i. Box.com
Box provides an online environment for secure content management,
workflow, and collaboration. It allows us to store different files such as Excel, Word, PDF, and
images on the cloud. The main advantage of using box is that it provides drag & drop service for
files and easily integrates with Office 365, G Suite, Salesforce, and more than 1400 tools.
ii. Mozy
Mozy provides powerful online backup solutions for our personal and business data. It
schedules automatically back up for each day at a specific time.
iii. Joukuu
Joukuu provides the simplest way to share and track cloud-based backup files. Many users use
joukuu to search files, folders, and collaborate on documents.
iv. Google G Suite
Google G Suite is one of the best cloud storage and backup application. It includes Google
Calendar, Docs, Forms, Google+, Hangouts, as well as cloud storage and tools for managing
cloud apps. The most popular app in the Google G Suite is Gmail. Gmail offers free email
services to users.
4. Education Applications
Cloud computing in the education sector becomes very popular. It offers various online distance
learning platforms and student information portals to the students. The advantage of using
cloud in the field of education is that it offers strong virtual classroom environments, Ease of
accessibility, secure data storage, scalability, greater reach for the students, and minimal
hardware requirements for the applications.
There are the following education applications offered by the cloud -
i. Google Apps for Education
Google Apps for Education is the most widely used platform for free web-based email, calendar,
documents, and collaborative study.
ii. Chromebooks for Education
Chromebook for Education is one of the most important Google's projects. It is designed for the
purpose that it enhances education innovation.
iii. Tablets with Google Play for Education
It allows educators to quickly implement the latest technology solutions into the classroom and
make it available to their students.
iv. AWS in Education
AWS cloud provides an education-friendly environment to universities, community colleges, and
schools.
5. Entertainment Applications
Entertainment industries use a multi-cloud strategy to interact with the target audience. Cloud
computing offers various entertainment applications such as online games and video
conferencing.
i. Online games
Today, cloud gaming becomes one of the most important entertainment media. It offers various
online games that run remotely from the cloud. The best cloud gaming services are Shaow,
GeForce Now, Vortex, Project xCloud, and PlayStation Now.
ii. Video Conferencing Apps
Video conferencing apps provides a simple and instant connected experience. It allows us to
communicate with our business partners, friends, and relatives using a cloud-based video
conferencing. The benefits of using video conferencing are that it reduces cost, increases
efficiency, and removes interoperability.
6. Management Applications
Cloud computing offers various cloud management tools which help admins to manage all types
of cloud activities, such as resource deployment, data integration, and disaster recovery. These
management tools also provide administrative control over the platforms, applications, and
infrastructure.
Some important management applications are -
i. Toggl
Toggl helps users to track allocated time period for a particular project.
ii. Evernote
Evernote allows you to sync and save your recorded notes, typed notes, and other notes in one
convenient place. It is available for both free as well as a paid version.
It uses platforms like Windows, macOS, Android, iOS, Browser, and Unix.
iii. Outright
Outright is used by management users for the purpose of accounts. It helps to track income,
expenses, profits, and losses in real-time environment.
iv. GoToMeeting
GoToMeeting provides Video Conferencing and online meeting apps, which allows you to
start a meeting with your business partners from anytime, anywhere using mobile phones or
tablets. Using GoToMeeting app, you can perform the tasks related to the management such as
join meetings in seconds, view presentations on the shared screen, get alerts for upcoming
meetings, etc.
7. Social Applications
Social cloud applications allow a large number of users to connect with each other using social
networking applications such as Facebook, Twitter, Linkedln, etc.
There are the following cloud based social applications -
i. Facebook
Facebook is a social networking website which allows active users to share files, photos,
videos, status, more to their friends, relatives, and business partners using the cloud storage
system. On Facebook, we will always get notifications when our friends like and comment on
the posts.
ii. Twitter
Twitter is a social networking site. It is a microblogging system. It allows users to follow high
profile celebrities, friends, relatives, and receive news. It sends and receives short posts called
tweets.
iii. Yammer
Yammer is the best team collaboration tool that allows a team of employees to chat, share
images, documents, and videos.
iv. LinkedIn
LinkedIn is a social network for students, freshers and professionals.
2.6 BENEFITS
Cloud computing offers your business many benefits. It allows you to set up what is essentially a
virtual office to give you the flexibility of connecting to your business anywhere, any time. With
the growing number of web-enabled devices used in today's business environment (e.g.
smartphones, tablets), access to your data is even easier.
Business continuity
Protecting your data and systems is an important part of business continuity planning. Whether
you experience a natural disaster, power failure or other crisis, having your data stored in the
cloud ensures it is backed up and protected in a secure and safe location.
Collaboration efficiency
Collaboration in a cloud environment gives your business the ability to communicate and share
more easily outside of the traditional methods. If you are working on a project across different
locations, you could use cloud computing to give employees, contractors and third parties access
to the same files.
Flexibility of work practices
Cloud computing allows employees to be more flexible in their work practices. For example, you
have the ability to access data from home, on holiday, or via the commute to and from work
(providing you have an internet connection). If you need access to your data while you are off-
site, you can connect to your virtual office, quickly and easily.
Access to automatic updates
Access to automatic updates for your IT requirements may be included in your service fee.
Depending on your cloud computing service provider, your system will regularly be updated
with the latest technology.
1. Cost Savings
2. Security
3. Flexibility
4. Mobility
5. Insight
6. Increased Collaboration
7. Quality Control
8. Disaster Recovery
9. Loss Prevention
10. Automatic Software Updates
11. Competitive Edge
12. Sustainability
The basic components of cloud computing in a simple topology are divided into 3 (three) parts,
namely clients, datacenter, and distributed servers. The three basic components have specific
goals and roles in running cloud computing operations. The concept of the three components can
be described as follows:
• Clients on cloud computing architecture are said to be the exact same things that are plain, old,
everyday local area networks (LANs). Clients are interacting with to manage their information
on the cloud.
• Datacenter is collection of servers where the application to which you subscribe is housed. It
could be a large room in the basement of your building full of servers on the other side of the
world that you access via the Internet. A growing trend in the IT world is virtualizing servers
• Distributed Servers is a server placement in a different location. But the servers don't have to be
housed in the same location. Often, servers are in geographically disparate locations. But to you,
the cloud subscribers, these servers act as if they're humming away right next to each other.
• Another component of cloud computing is Cloud Applications cloud computing in terms
of software architecture. Cloud Platform is a service in the form of a computing platform
BY Mrs.V.DHIVYALAKSHMI AP/MCA Page 14
MC4203 CLOUD COMPUTING TECHNOLOGIES UNIT II
that contains hardware infrastructure and software. Usually have certain business
applications and use services PaaS as its business application infrastructure. Cloud
Storage involves processes delivering data storage as a service. Cloud Infrastructure is
the delivery of computing infrastructure as a service.
• Cloud Computing services have several components required, namely:
Cloud Computing services have several components required, namely:
a. Cloud Clients, a computer or software specifically designed for the use of cloud computing
based services.
Example :
• Mobile - Windows Mobile, Symbian
• Thin Client - Windows Terminal Service, CherryPal
• Thick Client - Internet Explorer, FireFox, Chrome
b. Cloud Services, products, services and solutions that are used and delivered real-time via
internet media.
Example :
• Identity - OpenID, OAuth, etc.
• Integration - Amazon Simple Queue Service.
• Payments - PayPal, Google Checkout.
• Mapping - Google Maps, Yahoo! Maps.
c. Cloud Applications, applications that use Cloud Computing in software architecture so that
users don't need to install but they can use the application using a computer.
Example :
• Peer-to-peer - BitTorrent, SETI, and others.
• Web Application - Facebook.
• SaaS - Google Apps, SalesForce.com, and others
d. Cloud Platform, a service in the form of a computing platform consisting of hardware and
infrastructure software. This service is a service in the form of a computing platform which
contains infrastructure hardware and software. Usually has an application certain businesses and
use PaaS services as application infrastructure his business
Example :
• Web Application Frameworks - Python Django, Rubyon Rails, .NET
• Web Hosting
• Propietary - Force.com
e. Cloud Storage, involves the process of storing data as a service.
Example :
• Database - Google Big Table, Amazon SimpleDB.
• Network Attached Storage - Nirvanix CloudNAS, MobileMe iDisk.
f. Cloud Infrastructure, delivery of computing infrastructure as a service.
Example:
• Grid Computing - Sun Grid.
communication path for servers and workstations. They act as connectors and route data in and
out of the network.
At its simplest, a data center is a physical facility that organizations use to house their critical
applications and data.
A data center's design is based on a network of computing and storage resources that enable the
delivery of shared applications and data.
The key components of a data center design include routers, switches, firewalls, storage systems,
servers, and application-delivery controllers.
What defines a modern data center?
Modern data centers are very different than they were just a short time ago. Infrastructure has
shifted from traditional on-premises physical servers to virtual networks that support applications
and workloads across pools of physical infrastructure and into a multicloud environment.
In this era, data exists and is connected across multiple data centers, the edge, and public and
private clouds. The data center must be able to communicate across these multiple sites, both on-
premises and in the cloud. Even the public cloud is a collection of data centers. When
applications are hosted in the cloud, they are using data center resources from the cloud provider.
Why are data centers important to business?
In the world of enterprise IT, data centers are designed to support business applications and
activities that include:
• Email and file sharing
• Productivity applications
• Customer relationship management (CRM)
• Enterprise resource planning (ERP) and databases
• Big data, artificial intelligence, and machine learning
• Virtual desktops, communications and collaboration services
What are the core components of a data center?
Data center provide:
Network infrastructure. This connects servers (physical and virtualized), data center services,
storage, and external connectivity to end-user locations.
Storage infrastructure. Data is the fuel of the modern data center. Storage systems are used to
hold this valuable commodity.
Computing resources. Applications are the engines of a data center. These servers provide the
processing, memory, local storage, and network connectivity that drive applications.
How do data centers operate?
Data center services are typically deployed to protect the performance and integrity of the core
data center components.
Network security appliances. These include firewall and intrusion protection to safeguard the
data center.
Application delivery assurance. To maintain application performance, these mechanisms provide
application resiliency and availability via automatic failover and load balancing.
Distributed cloud
Distributed cloud enables a geographically distributed, centrally managed distribution of public
cloud services optimized for performance, compliance, and edge computing.
The demand for distributed cloud and edge computing is driven primarily by Internet of Things
(IoT), artificial intelligence (AI), telecommunications (telco) and other applications that need to
process huge amounts of data in real time. But distributed cloud is also helping companies
surmount the challenges of complying with country- or industry-specific data privacy regulations
- and, more recently, providing IT services to employees and end-users redistributed by the
COVID-19 pandemic.
You may have heard of distributed computing, in which application components are spread
across different networked computers, and communicate with one another through messaging
or APIs, with the goal of improving overall application performance or maximize computing
efficiency.
Distributed cloud goes a giant step further by distributing a public cloud provider's entire
compute stack to wherever a customer might need it - on-premises in the customer's own data
center or private cloud, or off-premises in one or more public cloud data centers that may or may
not belong to the cloud provider.
In effect, distributed cloud extends the provider's centralized cloud with geographically
distributed micro-cloud satellites. The cloud provider retains central control over the operations,
updates, governance, security and reliability of all distributed infrastructure. And the customer
accesses everything - the centralized cloud services, and the satellites wherever they are located -
as a single cloud and manages it all from a single control plane. In this way, as industry analyst
Gartner puts it, distributed cloud fixes with hybrid cloud and hybrid multicolor breaks.
1. Resource sharing
2. Openess
3. Concurrency
4. Scalability
5. Fault Tolerance
6. Transparency
Resource Manager
11.2 Openess
How it can be extended.
Open or closed with respect to
Hardware or software
Open
- published specifications and interfaces
- standardization of interfaces
UNIX was a relatively open operating system
C language readily available
System calls documented
New hardware drivers were easy to add
Applications were hardware independent
IPC allowed extension of services and resources
11.3 Concurrency
Multi-programming
Multi-processing
Parallel executions in distributed systems
1. Many users using the same resources, application interactions
2. Many servers responding to client requests
11.4 Scalability
How the system handles growth
Small system - two computers and a file server on a single network
Large system - current Internet
Scalability
11.6 Transparency
Transparency of
• access
• location
• concurrency
• replication
• failure
• migration
• performance
• scaling
Key characteristics of distributed systems
1. Resource sharing
2. Openess
3. Concurrency
4. Scalability
5. Fault tolerance
6. Transparency
Key design goals
• High performance
• Reliability
• Scalability
• Consistency
• Security
Basic design issues
• naming
• communications
• software structure
• workload allocation
• consistency maintenance
Naming
• communication identifier
• name service
• contextual resolution of name
• name mapping
• pure names Vs names with meaning
Communication
Reasons for communicating:
Transfer of data
Synchronization
Methods of communications
message passing - send and receive primitives
synchronous or asynchronous
blocking or non-blocking
mechanisms of message passing - channels, sockets, ports
client-server communication model
group multicast communication model
1 Access
Hides the way in which resources are accessed and the differences in data
platform.
2 Location
Hides where resources are located.
3 Technology
Hides different technologies such as programming language and OS from user.
4 Migration / Relocation
Hide resources that may be moved to another location which are in use.
5 Replication
Hide resources that may be copied at several locations.
6 Concurrency
Hide resources that may be shared with other users.
7 Failure
Hides failure and recovery of resources from user.
8 Persistence
Hides whether a resource ( software ) is in memory or disk.
Advantages
• Resource sharing − Sharing of hardware and software resources.
• Openness − Flexibility of using hardware and software of different vendors.
• Concurrency − Concurrent processing to enhance performance.
• Scalability − Increased throughput by adding new resources.
• Fault tolerance − The ability to continue in operation after a fault has occurred.
Disadvantages
• Complexity − They are more complex than centralized systems.
• Security − More susceptible to external attack.
• Manageability − More effort required for system management.
• Unpredictability − Unpredictable responses depending on the system organization and
network load.
In this architecture, the application is modelled as a set of services that are provided by servers
and a set of clients that use these services. The servers need not know about clients, but the
clients must know the identity of servers, and the mapping of processors to processes is not
necessarily 1 : 1
Client-server Architecture can be classified into two models based on the functionality of the
client −
Thin-client model
In thin-client model, all the application processing and data management is carried by the
server. The client is simply responsible for running the presentation software.
• Used when legacy systems are migrated to client server architectures in which legacy
system acts as a server in its own right with a graphical interface implemented on a
client
• A major disadvantage is that it places a heavy processing load on both the server and the
network.
Thick/Fat-client model
In thick-client model, the server is only in charge for data management. The software on the
client implements the application logic and the interactions with the system user.
• Most appropriate for new C/S systems where the capabilities of the client system are
known in advance
• More complex than a thin client model especially for management. New versions of the
application have to be installed on all clients.
Advantages
• Separation of responsibilities such as user interface presentation and business logic
processing.
• Reusability of server components and potential for concurrency
• Simplifies the design and the development of distributed applications
• It makes it easy to migrate or integrate existing applications into a distributed
environment.
• It also makes effective use of resources when a large number of clients are accessing a
high-performance server.
Disadvantages
• Lack of heterogeneous infrastructure to deal with the requirement changes.
• Security complications.
• Limited server availability and reliability.
• Limited testability and scalability.
• Fat clients with presentation and business logic together.
The most general use of multi-tier architecture is the three-tier architecture. A three-tier
architecture is typically composed of a presentation tier, an application tier, and a data storage
tier and may execute on a separate processor.
Presentation Tier
Presentation layer is the topmost level of the application by which users can access directly such
as webpage or Operating System GUI (Graphical User interface). The primary function of this
layer is to translate the tasks and results to something that user can understand. It communicates
with other tiers so that it places the results to the browser/client tier and all other tiers in the
network.
Data Tier
In this layer, information is stored and retrieved from the database or file system. The
information is then passed back for processing and then back to the user. It includes the data
persistence mechanisms (database servers, file shares, etc.) and provides API (Application
Programming Interface) to the application tier which provides methods of managing the stored
data.
Advantages
• Better performance than a thin-client approach and is simpler to manage than a thick-
client approach.
• Enhances the reusability and scalability − as demands increase, extra servers can be
added.
• Provides multi-threading support and also reduces network traffic.
• Provides maintainability and flexibility
Disadvantages
• Unsatisfactory Testability due to lack of testing tools.
• More critical server reliability and availability.
Features of SOA
A service-oriented architecture provides the following features −
• Distributed Deployment − Expose enterprise data and business logic as loosely,
coupled, discoverable, structured, standard-based, coarse-grained, stateless units of
functionality called services.
• Composability − Assemble new processes from existing services that are exposed at a
desired granularity through well defined, published, and standard complaint interfaces.
• Interoperability − Share capabilities and reuse shared services across a network
irrespective of underlying protocols or implementation technology.
• Reusability − Choose a service provider and access to existing resources exposed as
services.
SOA Operation
The following figure illustrates how SOA operates −
Advantages
• Loose coupling of service–orientation provides great flexibility for enterprises to make
use of all available service recourses irrespective of platform and technology
restrictions.
• Each service component is independent from other services due to the stateless service
feature.
• The implementation of a service will not affect the application of the service as long as
the exposed interface is not changed.
• A client or any service can access other services regardless of their platform, technology,
vendors, or language implementations.
• Reusability of assets and services since clients of a service only need to know its public
interfaces, service composition.
• SOA based business application development are much more efficient in terms of time
and cost.
• Enhances the scalability and provide standard connection between systems.
Parallel Computing:
In parallel computing multiple processors performs multiple tasks assigned to them
simultaneously. Memory in parallel systems can either be shared or distributed. Parallel
computing provides concurrency and saves time and money.
Distributed Computing:
In distributed computing we have multiple autonomous computers which seems to the user as
single system. In distributed systems there is no shared memory and computers communicate
with each other through message passing. In distributed computing a single task is divided
among different computers.
Distributed computing is different than parallel computing even though the principle is the same.
Distributed computing is a field that studies distributed systems. Distributed systems are systems
that have multiple computers located in different locations.
These computers in a distributed system work on the same program. The program is divided into
different tasks and allocated to different computers.
The computers communicate with the help of message passing. Upon completion of computing,
the result is collated and presented to the user.
Having covered the concepts, let’s dive into the differences between them:
All the processors work towards completing the same task. Thus they have to share resources
and data.
BY Mrs.V.DHIVYALAKSHMI AP/MCA Page 33
MC4203 CLOUD COMPUTING TECHNOLOGIES UNIT II
Here the outcome of one task might be the input of another. This increases dependency between
the processors. We can also say, parallel computing environments are tightly coupled.
Some distributed systems might be loosely coupled, while others might be tightly coupled.
Distributed computing environments are more scalable. This is because the computers are
connected over the network and communicate by passing messages.
Resource Sharing
In systems implementing parallel computing, all the processors share the same memory.
They also share the same communication medium and network. The processors communicate
with each other with the help of shared memory.
Distributed systems, on the other hand, have their own memory and processors.
Synchronization
In parallel systems, all the processes share the same master clock for synchronization. Since all
the processors are hosted on the same physical system, they do not need any synchronization
algorithms.
In distributed systems, the individual processing systems do not have access to any central clock.
Hence, they need to implement synchronization algorithms.
Since there are no lags in the passing of messages, these systems have high speed and efficiency.
Distributed computing is used when computers are located at different geographical locations.
In these scenarios, speed is generally not a crucial matter. They are the preferred choice when
scalability is required.
All in all, we can say that both computing methodologies are needed. Both serve different
purposes and are handy based on different circumstances.
It is up to the user or the enterprise to make a judgment call as to which methodology to opt for.
Generally, enterprises opt for either one or both depending on which is efficient where. It is all
based on the expectations of the desired result.
Multiple social media applications allow a large number of users to connect with each other
every minute. Applications such as Facebook, Twitter, yammer, Linkedin, etc, help connect
users on a real-time basis. These applications allow sharing videos, images, experiences, stories,
etc.
• GPS Application
Users are facilitated with features like GPS which is another advancement of cloud computing
and its applications. These applications help users to guide the directions from the map along
with finding locations on the internet. Sites such as google maps, yahoo maps, etc. are such
applications that provide Cloud services. These applications are used by millions of people and
are free to use.
• Accounting Application
Accounting software is one of the real-time applications of cloud computing that helps
management related to the accounting segment of the business. Outright is one such application
used by larger enterprises helping in real-time day-to-day accounting service. It helps you to
track real-time expenses, profits, and losses. Kash Flow and Zoho Books are other examples of
cloud accounting applications.
• Management Application
One of the popular Cloud Computing applications is ‘Evernote’. This application helps to save
and share notes for the user in a single place which a user can refer to at any time. These can be
accessed from anywhere around the world. This application also comes under management
applications which can be used for personal as well as professional use.
• e-Commerce Application
Another popular application is that of e-commerce software. The application areas of cloud
computing help the e-commerce business users with easy access and smooth functioning of the
business. Most larger businesses prefer this software as less time and effort are involved with
perfect solutions.
• Software as a Service (SaaS) Applications
Different Cloud Computing Applications which include Software as a Service (SaaS)
applications and others such as FedEx, postal service also use cloud platforms for tracking
details and managing the business..
2.15. BENEFITS
1. Omnipresence
Cloud is everywhere, and you cannot escape. Its omnipresence allows easy access to the
functionality, tractable data, and transparency. It enables multiple users to work on the same
project without any glitches. This, in turn, not only reduces cost but also builds a robust work
model.
2. Data Security
Data security is perhaps one of the most significant factors that keep business owners up at night.
Cloud computing can help alleviate this stress.
Heavy encryption of the files and databases can mitigate internal thread. They can be transferred
without the chance of being hacked.
3. Cost Reduction
It is no secret that switching over to cloud is an expensive affair. However, if executed properly,
the ROI received during cloud deployment can override the initial capital investment.
ROI can be in the form of product longevity, optimization of resources, to name a few. Once on
the cloud, it will negate the need for additional software and plugins. This helps save time as
well as money.
4. Complete control
Organizations often face immense scrutiny in case of lagged operations, data loss, and
operational dysfunctioning. It is imperative that organizations have sufficient control over the
ongoing actions of the company, which is assured by cloud computing.
In the case of highly sensitive data, the "cloud technology" enables the user to have a bird’s eye
view over the data, giving them the power to track accessibility, usability, and deployability..
5. Flexibility
Focusing primarily on the in-house IT structure can either lead to a breakdown or poor task
execution. The lack of space optimization can lead to low turnaround time and the inability to
cater to the customer requirement.
The ability to make & execute quick business decisions without worrying about the impact on
the IT infrastructure makes cloud platform one of the most desired.
6. Mobility
The omnipresence of the cloud marks mobility as its prime feature. With the help of cloud
connection, companies can connect remotely over an array of devices like smart phones, iPad,
and Laptops with ease.
Remote accessibility enables quick turnaround time, instant solutions, and constant connection. It
is perfect for freelancers, remote employees, organizations with offices in different locations and
different sectors.
7. Disaster Recovery
The biggest disaster a company can undergo is "loss of data." However, the cloud is a repository
for backed up data, which helps companies recover their lost data with ease and security.
8. Scalability
Scalability can be defined as the ability of the product to amplify its impact on the customers and
meet the demands posed. Scalability is one of the most sought-after attributes of cloud
computing that can help increase business.
It cuts down on paper waste, electrical consumption, and computer-related emissions. After all,
merely placing a recycling bin in your office is not going to cut the current environmental crisis.
2.16.CLOUD SERVICES
The term "cloud services" refers to a wide range of services delivered on demand to companies and
customers over the internet. These services are designed to provide easy, affordable access to
applications and resources, without the need for internal infrastructure or hardware. From checking
email to collaborating on documents, most employees use cloud services throughout the workday,
whether they’re aware of it or not.
Cloud Service Models
Characteristics of IaaS
Example: AWS Elastic Beanstalk, Windows Azure, Heroku, Force.com, Google App Engine,
Apache Stratos, Magento Commerce Cloud, and OpenShift.
SaaS is also known as "on-demand software". It is a software in which the applications are
hosted by a cloud service provider. Users can access these applications with the help of internet
connection and web browser.
Characteristics of SaaS
Example: DigitalOcean, Linode, Amazon Web Services (AWS), Microsoft Azure, Google
Compute Engine (GCE), Rackspace, and Cisco Metacloud.
PaaS cloud computing platform is created for the programmer to develop, test, run, and manage
the applications.
Characteristics of PaaS
Infrastructure as a
Platform as a service. Software as a service.
Stands for service.
It is a cloud computing
It is a service model that It is a service model in
model that delivers tools
provides virtualized cloud computing that
that are used for the
computing resources hosts software to make
development of
over the internet. it available to clients.
Model applications.
There is no requirement
Some knowledge is
It requires technical about technicalities
required for the basic
Technical knowledge. company handles
setup.
understanding. everything.
It is popular among
It is popular among
It is popular among consumers and
developers who focus
developers and companies, such as file
on the development of
researchers. sharing, email, and
apps and scripts.
Popularity networking.
MS Office web,
Amazon Web Services, Facebook, and Google
Facebook and Google
sun, vCloud Express. search engine.
Cloud services. Apps.
Outsourced
Salesforce Force.com, Gigaspaces. AWS, Terremark
cloud services.
Operating System,
Runtime, Middleware, Data of the application Nothing
User Controls and Application data
It is highly scalable to
It is highly scalable to
It is highly scalable and suit the different
suit the small, mid and
flexible. businesses according to
enterprise level business
Others resources.
1. Eucalyptus:
Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs to Useful
Systems)
an open source software infrastructure that implements IaaS-style cloud computing.
The goal of Eucalyptus is to allow sites with existing clusters and server infrastructure to host a
cloud that is interface-compatible with Amazon's AWS and (soon) the Sun Cloud open API.
In addition, through its interfaces Eucalyptus is able to host cloud platform services such as
AppScale (an open source implementation of Google's AppEngine) and Hadoop, making it
possible to "mix and match" different service paradigms and configurations within the cloud.
Finally, Eucalyptus can leverage a heterogeneous collection of virtualization technologies within
a single cloud, to incorporate resources that have already been virtualized without modifying their
configuration.
It will also cover experiences of hosting the Eucalyptus Public Cloud (EPC) as a free public cloud
platform for experimental use, as well as the ability to use the EPC in conjunction with commercial
Web development services, such as Rightscale, that target AWS.
Eucalyptus
Eucalyptus is an open source software platform for implementing Infrastructure as a Service (IaaS)
in a private or hybrid cloud computing environment.
The Eucalyptus cloud platform pools together existing virtualized infrastructure to create cloud
resources for infrastructure as a service, network as a service and storage as a service. The name
Eucalyptus is an acronym for Elastic Utility Computing Architecture for Linking Your Programs
To Useful Systems.
Eucalyptus was founded out of a research project in the Computer Science Department at the
University of California, Santa Barbara, and became a for-profit business called Eucalyptus
Systems in 2009. Eucalyptus Systems announced a formal agreement with Amazon Web Services
(AWS) in March 2012, allowing administrators to move instances between a Eucalyptus private
cloud and the Amazon Elastic Compute Cloud (EC2) to create a hybrid cloud. The partnership
also allows Eucalyptus to work with Amazon’s product teams to develop unique AWS-compatible
features.
Version 3.3, which became generally available in June 2013, adds the following features:
● Auto Scaling
● Elastic Load Balancing:
● CloudWatch:
● Resource Tagging
● Expanded Instance Types
● Maintenance Mode
OpenNebula is an open source platform for constructing virtualised private, public and hybrid
clouds. It is a simple yet feature-rich, flexible solution to build and manage data centre
virtualisation and enterprise clouds. So, with OpenNebula, virtual systems can be administered
and monitored centrally on different Hyper-V and storage systems. When a component fails,
OpenNebula takes care of the virtual instances on a different host system. The integration and
automation of an existing heterogeneous landscape is highly flexible without further hardware
investments.
Benefits of OpenNebula
The plurality of support to Hyper-V and platform-independent architecture makes OpenNebula
the ideal solution for heterogeneous computing centre environments.
The main advantages of OpenNebula are:
● It is 100 per cent open source and offers all the features in one edition.
● It provides control via the command line or Web interface, which is ideal for a variety
of user groups and needs.
● OpenNebula is available for all major Linux distributions, thus simplifying
installation.
● The long-term use of OpenNebula in large scale production environments has proven
its stability and flexibility.
● OpenNebula is interoperable and supports OCCI (Open Cloud Computing Interface)
and AWS (Amazon Web Services).
Key features of OpenNebula
OpenNebula has features for scalability, integration, security and accounting. The developers
also claim that it supports standardisation, interoperability and portability. It allows cloud users
and administrators to choose from several cloud interfaces. Figure 1 shows the important features
of OpenNebula.
Why OpenNebula?
● Open standards
OpenNebula is 100 per cent open source under the Apache License. By supporting
open standards such as OCCI and a host of other open architecture, OpenNebula
provides the security, scalability and freedom of a reliable cloud solution without
vendor lock-in, which involves considerable support and follow-up costs.
OpenNebula architecture
To control a VM’s life cycle, the OpenNebula core coordinates with the following three areas of
management:
1) Image and storage technologies — to prepare disk images
2) The network fabric — to provide the virtual network environment
3) Hypervisors — to create and control VMs
Through pluggable drivers, the OpenNebula core can perform the above operations. It also
supports the deployment of services.
VM placement decisions are taken by a separate scheduler component. It follows the rank
scheduling policy, which makes place for VMs on a physical host according to the rank given by
the scheduler. These ranks are decided by the scheduler, using a ranking algorithm.
OpenNebula uses cloud drivers to interact with external clouds, and also integrates the core with
other management tools by using management interfaces.
Components of OpenNebula
Based on the existing infrastructure, OpenNebula provides various services and resources. You
can view the components in Figure 3.
● APIs and interfaces: These are used to manage and monitor OpenNebula
components. |To manage physical and virtual resources, they work as an interface.
● Users and groups: These support authentication, and authorise individual users and
groups with the individual permissions.
● Hosts and VM resources: These are a key aspect of a heterogeneous cloud that is
managed and monitored, e.g., Xen, VMware.
● Storage components: These are the basis for centralised or decentralised template
repositories.
● Network components: These can be managed flexibly. Naturally, there is support for
VLANs and Open vSwitch.
The front-end
● The machine that has OpenNebula installed on it is known as the front-end machine,
which is also responsible for executing OpenNebula services.
● The front-end needs to have access to the image repository and network connectivity
to each node.
● OpenNebula’s services are listed below:
1. Management daemon (Oned) and scheduler (mm_sched)
2. Monitoring and accounting daemon (Onecctd)
3. Web interface server (Sunstone)
4. Cloud API servers (EC2- query or OCCI)
Virtualisation hosts
● To run the VMs, we require some physical machines, which are called hosts.
● The virtualisation sub-system is responsible for communicating with the hypervisor
and taking the required action for any node in the VM life cycle.
● During the installation, the admin account should be enabled to execute commands
with root privileges.
Storage
Data stores are used to handle the VM images, and each data store must be accessible by the
front-end, using any type of storage technology.
OpenNebula has three types of data stores:
● File data store – used to store the plain files (not disk images)
● Image data store – repository for images only
System data store – used to hold the running VM images
The image data store type depends on the storage technology used. There are three
types of image data stores available:
● File system – stores VM images in file formats
● LVM – reduces the overhead of having the file system in place; the LVM is used to
store virtual images instead of plain files
● Ceph – stores images using Ceph blocks
OpenNebula can handle multiple storage scenarios, either centralised or decentralised.
Networking
There must be at least two physical networks configured in OpenNebula:
● Service network – to access the hosts to monitor and manage hypervisors, and to
move VM images.
● Instance network – to offer network connectivity between the VMs across the
different hosts.
Whenever any VM gets launched, OpenNebula will connect its network interfaces to the bridge
described in the virtual network definition.
OpenNebula supports four types of networking modes:
3. OPENSTACK
OpenStack is a cloud operating system that controls large pools of compute, storage, and
networking resources throughout a datacenter, all managed and provisioned through APIs with
common authentication mechanisms.
A dashboard is also available, giving administrators control while empowering their users to
provision resources through a web interface.
Beyond standard infrastructure-as-a-service functionality, additional components provide
orchestration, fault management and service management amongst other services to ensure high
availability of user applications.
THE OPENSTACK LANDSCAPE
OpenStack is broken up into services to allow you to plug and play components depending on
your needs. The openstack map gives you an “at a glance” view of the openstack landscape to
see where those services fit and how they can work together.
What is OpenStack?
OpenStack is a set of software tools for building and managing cloud computing platforms for
public and private clouds. Backed by some of the biggest companies in software development
and hosting, as well as thousands of individual community members, many think that OpenStack
is the future of cloud computing. OpenStack is managed by the OpenStack Foundation, a non-
profit that oversees both development and community-building around the project.
Introduction to OpenStack
OpenStack lets users deploy virtual machines and other instances that handle different tasks for
managing a cloud environment on the fly. It makes horizontal scaling easy, which means that
tasks that benefit from running concurrently can easily serve more or fewer users on the fly by
just spinning up more instances
The cloud is all about providing computing for end users in a remote environment, where the
actual software runs as a service on reliable and scalable servers rather than on each end-user's
computer. Cloud computing can refer to a lot of different things, but typically the industry talks
about running different items "as a service"—software, platforms, and infrastructure. OpenStack
falls into the latter category and is considered Infrastructure as a Service (IaaS). Providing
infrastructure means that OpenStack makes it easy for users to quickly add new instance, upon
which other cloud components can run. Typically, the infrastructure then runs a "platform" upon
which a developer can create software applications that are delivered to the end users.
BY Mrs.V.DHIVYALAKSHMI AP/MCA Page 53
MC4203 CLOUD COMPUTING TECHNOLOGIES UNIT II
OpenStack is made up of many different moving parts. Because of its open nature, anyone can
add additional components to OpenStack to help it to meet their needs. But the OpenStack
community has collaboratively identified nine key components that are a part of the "core" of
OpenStack, which are distributed as a part of any OpenStack system and officially maintained by
the OpenStack community.
● Nova is the primary computing engine behind OpenStack. It is used for deploying and managing
large numbers of virtual machines and other instances to handle computing tasks.
● Swift is a storage system for objects and files. Rather than the traditional idea of a referring to
files by their location on a disk drive, developers can instead refer to a unique identifier referring
to the file or piece of information and let OpenStack decide where to store this information. This
makes scaling easy, as developers don’t have the worry about the capacity on a single system
behind the software. It also allows the system, rather than the developer, to worry about how best
to make sure that data is backed up in case of the failure of a machine or network connection.
● Cinder is a block storage component, which is more analogous to the traditional notion of a
computer being able to access specific locations on a disk drive. This more traditional way of
accessing files might be important in scenarios in which data access speed is the most important
consideration.
● Neutron provides the networking capability for OpenStack. It helps to ensure that each of the
components of an OpenStack deployment can communicate with one another quickly and
efficiently.
● Horizon is the dashboard behind OpenStack. It is the only graphical interface to OpenStack, so
for users wanting to give OpenStack a try, this may be the first component they actually “see.”
Developers can access all of the components of OpenStack individually through an application
programming interface (API), but the dashboard provides system administrators a look at what is
going on in the cloud, and to manage it as needed.
● Keystone provides identity services for OpenStack. It is essentially a central list of all of the
users of the OpenStack cloud, mapped against all of the services provided by the cloud, which
they have permission to use. It provides multiple means of access, meaning developers can easily
map their existing user access methods against Keystone.
● Glance provides image services to OpenStack. In this case, "images" refers to images (or virtual
copies) of hard disks. Glance allows these images to be used as templates when deploying new
virtual machine instances.
● Ceilometer provides telemetry services, which allow the cloud to provide billing services to
individual users of the cloud. It also keeps a verifiable count of each user’s system usage of each
of the various components of an OpenStack cloud. Think metering and usage reporting.
● Heat is the orchestration component of OpenStack, which allows developers to store the
requirements of a cloud application in a file that defines what resources are necessary for that
application. In this way, it helps to manage the infrastructure needed for a cloud service to run.
4. ANEKA
Aneka is a platform and a framework for developing distributed applications on the Cloud. It
harnesses the spare CPU cycles of a heterogeneous network of desktop PCs and servers or
datacenters on demand
Aneka includes an extensible set of APIs associated with programming models like MapReduce.
These APIs support different cloud models like a private, public, hybrid Cloud.
Manjrasoft focuses on creating innovative software technologies to simplify the development and
deployment of private or public cloud applications. Our product plays the role of an application
platform as a service for multiple cloud computing.
o Multiple Structures:
o Aneka is a software platform for developing cloud computing applications.
o In Aneka, cloud applications are executed.
o Aneka is a pure PaaS solution for cloud computing.
o Aneka is a cloud middleware product.
o Manya can be deployed over a network of computers, a multicore server, a data center, a
virtual cloud infrastructure, or a combination thereof.
1. Textile Services:
Fabric Services defines the lowest level of the software stack that represents multiple containers.
They provide access to resource-provisioning subsystems and monitoring features implemented in
many.
2. Foundation Services:
Fabric Services are the core services of Manya Cloud and define the infrastructure management
features of the system. Foundation services are concerned with the logical management of a
distributed system built on top of the infrastructure and provide ancillary services for delivering
applications.
3. Application Services:
Application services manage the execution of applications and constitute a layer that varies
according to the specific programming model used to develop distributed applications on top of
Aneka.
The SDK (Software Development Kit) includes the Application Programming Interface (API)
and tools needed for the rapid development of applications. The Anka API supports three popular
cloud programming models: Tasks, Threads and MapReduce;
And
A runtime engine and platform for managing the deployment and execution of applications on a
private or public cloud.
Aneka's potential as a Platform as a Service has been successfully harnessed by its users and
customers in three different areas, including engineering, life sciences, education, and business
intelligence.
Architecture of Aneka
Aneka is a platform and framework for developing distributed applications on the Cloud. It uses
desktop PCs on-demand and CPU cycles in addition to a heterogeneous network of servers or
datacenters. Aneka provides a rich set of APIs for developers to transparently exploit such
resources and express the business logic of applications using preferred programming abstractions.
One of the key features of Aneka is its ability to provide a variety of ways to express distributed
applications by offering different programming models; Execution services are mostly concerned
with providing middleware with the implementation of these models. Additional services such as
persistence and security are inverse to the whole stack of services hosted by the container.
At the application level, a set of different components and tools are provided to
Architecture
5. CLOUD SIM
BY Mrs.V.DHIVYALAKSHMI AP/MCA Page 58
MC4203 CLOUD COMPUTING TECHNOLOGIES UNIT II
CloudSim Architecture:
CloudSim Core Simulation Engine provides interfaces for the management of resources such
as VM, memory and bandwidth of virtualized Datacenters.
CloudSim layer manages the creation and execution of core entities such as VMs, Cloudlets,
Hosts etc. It also handles network-related execution along with the provisioning of resources
and their execution and management.
User Code is the layer controlled by the user. The developer can write the requirements of the
hardware specifications in this layer according to the scenario.
Some of the most common classes used during simulation are:
BY Mrs.V.DHIVYALAKSHMI AP/MCA Page 60
MC4203 CLOUD COMPUTING TECHNOLOGIES UNIT II
• Datacenter: used for modelling the foundational hardware equipment of any cloud
environment, that is the Datacenter. This class provides methods to specify the functional
requirements of the Datacenter as well as methods to set the allocation policies of the VMs
etc.
• Host: this class executes actions related to management of virtual machines. It also defines
policies for provisioning memory and bandwidth to the virtual machines, as well as
allocating CPU cores to the virtual machines.
• VM: this class represents a virtual machine by providing data members defining a VM’s
bandwidth, RAM, mips (million instructions per second), size while also providing setter
and getter methods for these parameters.
• Cloudlet: a cloudlet class represents any task that is run on a VM, like a processing task, or
a memory access task, or a file updating task etc. It stores parameters defining the
characteristics of a task such as its length, size, mi (million instructions) and provides
methods similarly to VM class while also providing methods that define a task’s execution
time, status, cost and history.
• DatacenterBroker: is an entity acting on behalf of the user/customer. It is responsible for
functioning of VMs, including VM creation, management, destruction and submission of
cloudlets to the VM.
• CloudSim: this is the class responsible for initializing and starting the simulation
environment after all the necessary cloud entities have been defined and later stopping after
all the entities have been destroyed.
Features of CloudSim:
Cloud Architecture and Design – Architectural design challenges – Technologies for Network
based system - NIST Cloud computing Reference Architecture – Public, Private and Hybrid
clouds – Cloud Models : IaaS, PaaS and SaaS – Cloud storage providers - Enabling
Technologies for the Internet of Things – Innovative Applications of the Internet of Things.
Cloud infrastructure is a term used to describe the components needed for cloud computing,
which includes hardware, abstracted resources, storage, and network resources. Think of cloud
infrastructure as the tools needed to build a cloud. In order to host services and applications in
the cloud, you need cloud infrastructure.
As we know, cloud computing technology is used by both small and large organizations to store
the information in cloud and access it from anywhere at anytime using the internet connection.
o Front End
o Back End
The front end is used by the client. It contains client-side interfaces and applications that are
required to access the cloud computing platforms. The front end includes web servers (including
Chrome, Firefox, internet explorer, etc.), thin & fat clients, tablets, and mobile devices.
Back End
The back end is used by the service provider. It manages all the resources that are required to
provide cloud computing services. It includes a huge amount of data storage, security mechanism,
virtual machines, deploying models, servers, traffic control mechanisms, etc.
Note: Both front end and back end are connected to others through a network, generally using the
internet connection.
Security and Privacy of information is the biggest challenge to cloud computing. Security and
privacy issues can be overcome by employing encryption, security hardware and security
applications.
Portability
This is another challenge to cloud computing that applications should easily be migrated from
one cloud provider to another. There must not be vendor lock-in. However, it is not yet made
possible because each of the cloud provider uses different standard languages for their platforms.
Interoperability
It means the application on one platform should be able to incorporate services from the other
platforms. It is made possible via web services, but developing such web services is very complex.
Computing Performance
Data intensive applications on cloud requires high network bandwidth, which results in high cost.
Low bandwidth does not meet the desired computing performance of cloud application.
It is necessary for cloud systems to be reliable and robust because most of the businesses are now
becoming dependent on services provided by third-party.
3.3 TECHNOLOGIES FOR NETWORK BASED SYSTEM
With the concept of scalable computing under our belt, it’s time to explore hardware, software,
and network technologies for distributed computing system design and applications. In particular,
we will focus on viable approaches to building distributed operating systems for handling massive
par-allelism in a distributed environment.
1. Multicore CPUs and Multithreading Technologies
Consider the growth of component and network technologies over the past 30 years. They are
crucial to the development of HPC and HTC systems. In Figure 1.4, processor speed is measured
in millions of instructions per second (MIPS) and network bandwidth is measured in megabits
per second (Mbps) or gigabits per second (Gbps). The unit GE refers to 1 Gbps Ethernet
bandwidth.
1.1 Advances in CPU Processors
Today, advanced CPUs or microprocessor chips assume a multicore architecture with dual, quad,
six, or more processing cores. These processors exploit parallelism at ILP and TLP levels.
Processor speed growth is plotted in the upper curve in Figure 1.4 across generations of
microprocessors or CMPs. We see growth from 1 MIPS for the VAX 780 in 1978 to 1,800 MIPS
for the Intel Pentium 4 in 2002, up to a 22,000 MIPS peak for the Sun Niagara 2 in 2008. As the
figure shows, Moore’s law has proven to be pretty accurate in this case. The clock rate for these
processors increased from 10 MHz for the Intel 286 to 4 GHz for the Pentium 4 in 30 years.
Example 1.1 The NVIDIA Fermi GPU Chip with 512 CUDA Cores
The Fermi GPU is a newer generation of GPU, first appearing in 2011. The Tesla or Fermi GPU
can be used in desktop workstations to accelerate floating-point calculations or for building large-
scale data cen-ters.
• First, the VMs can be multiplexed between hardware machines, as shown in Figure 1.13(a).
• Second, a VM can be suspended and stored in stable storage, as shown in Figure 1.13(b).
• Third, a suspended VM can be resumed or provisioned to a new hardware platform, as shown
in Figure 1.13(c).
• Finally, a VM can be migrated from one hardware platform to another, as shown in Figure
1.13(d).
4.3 Virtual Infrastructures
Physical resources for compute, storage, and networking at the bottom of Figure 1.14 are mapped
to the needy applications embedded in various VMs at the top. Hardware and software are then
sepa-rated. Virtual infrastructure is what connects resources to distributed applications. It is a
dynamic mapping of system resources to specific applications.
5. Data Center Virtualization for Cloud Computing
In this section, we discuss basic architecture and design considerations of data centers. Cloud
architecture is built with commodity hardware and network devices. Almost all cloud platforms
choose the popular x86 processors. Low-cost terabyte disks and Gigabit Ethernet are used to build
data centers. Data center design emphasizes the performance/price ratio over speed performance
alone. In other words, storage and energy efficiency are more important than shear speed
performance..
5.1 Data Center Growth and Cost Breakdown
A large data center may be built with thousands of servers. Smaller data centers are typically built
with hundreds of servers. The cost to build and maintain data center servers has increased over the
years. According to a 2009 IDC report (see Figure 1.14), typically only 30 percent of data center
costs goes toward purchasing IT equipment (such as servers and disks), 33 percent is attributed to
the chiller, 18 percent to the uninterruptible power supply (UPS), 9 percent to computer room
air conditioning (CRAC), and the remaining 7 percent to power distribution, lighting, and
transformer costs. Thus, about 60 percent of the cost to run a data center is allocated to
management and main-tenance. The server purchase cost did not increase much with time. The
cost of electricity and cool-ing did increase from 5 percent to 14 percent in 15 years.
5.2 Low-Cost Design Philosophy
High-end switches or routers may be too cost-prohibitive for building data centers. Thus, using
high-bandwidth networks may not fit the economics of cloud computing. Given a fixed budget,
commodity switches and networks are more desirable in data centers. Similarly, using commodity
x86 servers is more desired over expensive mainframes. The software layer handles network traffic
balancing, fault tolerance, and expandability. Currently, nearly all cloud computing data centers
use Ethernet as their fundamental network technology.
5.3 Convergence of Technologies
Essentially, cloud computing is enabled by the convergence of technologies in four areas: (1) hard-
ware virtualization and multi-core chips, (2) utility and grid computing, (3) SOA, Web 2.0, and
WS mashups, and (4) atonomic computing and data center automation. Hardware virtualization
and mul-ticore chips enable the existence of dynamic configurations in the cloud. Utility and grid
computing technologies lay the necessary foundation for computing clouds.
3.4 NIST CLOUD COMPUTING REFERENCE ARCHITECURE
NIST Cloud Computing reference architecture defines five major performers:
• Cloud Provider
• Cloud Carrier
• Cloud Broker
• Cloud Auditor
• Cloud Consumer
Each performer is an object (a person or an organization) that contributes to a transaction or
method and/or performs tasks in Cloud computing. There are five major actors defined in the
NIST cloud computing reference architecture, which are described below:
1. Cloud Service Providers: A group or object that delivers cloud services to cloud consumers
or end-users. It offers various components of cloud computing. Cloud computing consumers
purchase a growing variety of cloud services from cloud service providers. There are various
categories of cloud-based services mentioned below:
• IaaS Providers: In this model, the cloud service providers offer infrastructure components
that would exist in an on-premises data center. These components consist of servers,
networking, and storage as well as the virtualization layer.
• SaaS Providers: In Software as a Service (SaaS), vendors provide a wide sequence of
business technologies, such as Human resources management (HRM) software, customer
relationship management (CRM) software, all of which the SaaS vendor hosts and provides
services through the internet.
• PaaS Providers: In Platform as a Service (PaaS), vendors offer cloud infrastructure and
services that can access to perform many functions. In PaaS, services and products are
mostly utilized in software development. PaaS providers offer more services than IaaS
providers. PaaS providers provide operating system and middleware along with application
stack, to the underlying infrastructure.
2. Cloud Carrier: The mediator who provides offers connectivity and transport of cloud
services within cloud service providers and cloud consumers. It allows access to the services of
the cloud through Internet networks, telecommunication, and other access devices. Network
and telecom carriers or a transport agent can provide distribution. A consistent level of services
is provided when cloud providers set up Service Level Agreements (SLA) with a cloud carrier.
In general, Carrier may be required to offer dedicated and encrypted connections.
3. Cloud Broker: An organization or a unit that manages the performance, use, and delivery of
cloud services by enhancing specific capability and offers value-added services to cloud
consumers. It combines and integrates various services into one or more new services. They
provide service arbitrage which allows flexibility and opportunistic choices. There are major
three services offered by a cloud broker:
• Service Intermediation.
• Service Aggregation.
• Service Arbitrage.
4. Cloud Auditor: An entity that can conduct independent assessment of cloud services,
security, performance, and information system operations of the cloud implementations. The
services that are provided by Cloud Service Providers (CSP) can be evaluated by service
auditors in terms of privacy impact, security control, and performance, etc. Cloud Auditor can
make an assessment of the security controls in the information system to determine the extent
to which the controls are implemented correctly, operating as planned and constructing the
desired outcome with respect to meeting the security necessities for the system. There are three
major roles of Cloud Auditor which are mentioned below:
• Security Audit.
• Privacy Impact Audit.
• Performance Audit.
5. Cloud Consumer: A cloud consumer is the end-user who browses or utilizes the services
provided by Cloud Service Providers (CSP), sets up service contracts with the cloud provider.
The cloud consumer pays peruse of the service provisioned. Measured services utilized by the
consumer. In this, a set of organizations having mutual regulatory constraints performs a
security and risk assessment for each use case of Cloud migrations and deployments.
o Public Cloud
o Private Cloud
o Hybrid Cloud
o Community Cloud
Public Cloud
Public cloud is open to all to store and access information via the Internet using the pay-per-usage
method.
In public cloud, computing resources are managed and operated by the Cloud Service Provider
(CSP).
Example: Amazon elastic compute cloud (EC2), IBM SmartCloud Enterprise, Microsoft, Google
App Engine, Windows Azure Services Platform.10.1M170m for Beginners
Advantages of Public Cloud
There are the following advantages of Public Cloud -
o Public cloud is owned at a lower cost than the private and hybrid cloud.
o Public cloud is maintained by the cloud service provider, so do not need to worry about the
maintenance.
o Public cloud is easier to integrate. Hence it offers a better flexibility approach to
consumers.
o Public cloud is location independent because its services are delivered through the internet.
o Public cloud is highly scalable as per the requirement of computing resources.
o It is accessible by the general public, so there is no limit to the number of users.
Private Cloud
Private cloud is also known as an internal cloud or corporate cloud. It is used by organizations
to build and manage their own data centers internally or by the third party. It can be deployed using
Opensource tools such as Openstack and Eucalyptus.
Based on the location and management, National Institute of Standards and Technology (NIST)
divide private cloud into the following two parts-
o Private cloud provides a high level of security and privacy to the users.
o Private cloud offers better performance with improved speed and space capacity.
o It allows the IT team to quickly allocate and deliver on-demand IT resources.
o The organization has full control over the cloud because it is managed by the organization
itself. So, there is no need for the organization to depends on anybody.
o It is suitable for organizations that require a separate cloud for their personal use and data
security is the first priority.
Hybrid Cloud
Hybrid Cloud is a combination of the public cloud and the private cloud. we can say:
Hybrid cloud is partially secure because the services which are running on the public cloud can be
accessed by anyone, while the services which are running on a private cloud can be accessed only
by the organization's users.
Example: Google Application Suite (Gmail, Google Apps, and Google Drive), Office 365 (MS
Office on the Web and One Drive), Amazon Web Services.
The below table shows the difference between public cloud, private cloud, hybrid cloud
Characteristics of IaaS
Example: DigitalOcean, Linode, Amazon Web Services (AWS), Microsoft Azure, Google
Compute Engine (GCE), Rackspace, and Cisco Metacloud.
PaaS cloud computing platform is created for the programmer to develop, test, run, and manage
the applications.
Characteristics of PaaS
Example: AWS Elastic Beanstalk, Windows Azure, Heroku, Force.com, Google App Engine,
Apache Stratos, Magento Commerce Cloud, and OpenShift.
SaaS is also known as "on-demand software". It is a software in which the applications are hosted
by a cloud service provider. Users can access these applications with the help of internet
connection and web browser.
Characteristics of SaaS
Example: BigCommerce, Google Apps, Salesforce, Dropbox, ZenDesk, Cisco WebEx, ZenDesk,
Slack, and GoToMeeting.
The below table shows the difference between IaaS, PaaS, and SaaS -
It provides a virtual data center to It provides virtual platforms and It provides web software and
store information and create tools to create, test, and deploy apps to complete business
platforms for app development, apps. tasks.
testing, and deployment.
Iaas is also known as Hardware as a Service (HaaS). It is one of the layers of the cloud computing
platform. It allows customers to outsource their IT infrastructures such as servers, networking,
processing, storage, virtual machines, and other resources. Customers access these resources on
the Internet using a pay-as-per use model.
In traditional hosting services, IT infrastructure was rented out for a specific period of time, with
pre-determined hardware configuration. The client paid for the configuration and time, regardless
of the actual use. With the help of the IaaS cloud computing platform layer, clients can dynamically
scale the configuration to meet changing requirements and are billed only for the services actually
used.
IaaS cloud computing platform layer eliminates the need for every organization to maintain the IT
infrastructure.
IaaS is offered in three models: public, private, and hybrid cloud. The private cloud implies that
the infrastructure resides at the customer-premise. In the case of public cloud, it is located at the
cloud computing platform vendor's data center, and the hybrid cloud is a combination of the two
in which the customer selects the best of both public cloud or private cloud.
1. Compute: Computing as a Service includes virtual central processing units and virtual
main memory for the Vms that is provisioned to the end- users.
2. Storage: IaaS provider provides back-end storage for storing files.
3. Network: Network as a Service (NaaS) provides networking components such as routers,
switches, and bridges for the Vms.
4. Load balancers: It provides load balancing capability at the infrastructure layer.
Amazon Elastic, Elastic Compute The cloud computing platform pioneer, Amazon offers auto
Web Cloud (EC2) scaling, cloud monitoring, and load balancing features as part
Services MapReduce, Route 53, of its portfolio.
Virtual Private Cloud,
etc.
Netmagic Netmagic IaaS Cloud Netmagic runs from data centers in Mumbai, Chennai, and
Solutions Bangalore, and a virtual data center in the United States. Plans
are underway to extend services to West Asia.
Rackspace Cloud servers, cloud The cloud computing platform vendor focuses primarily on
files, cloud sites, etc. enterprise-level hosting services.
Reliance Reliance Internet Data RIDC supports both traditional hosting and cloud services,
Communica Center with data centers in Mumbai, Bangalore, Hyderabad, and
tions Chennai. The cloud services offered by RIDC include IaaS and
SaaS.
Sify Sify IaaS Sify's cloud computing platform is powered by HP's converged
Technologie infrastructure. The vendor offers all three types of cloud
s services: IaaS, PaaS, and SaaS.
PaaS includes infrastructure (servers, storage, and networking) and platform (middleware,
development tools, database management systems, business intelligence, and more) to support the
web application life cycle.
PaaS providers provide the Programming languages, Application frameworks, Databases, and
Other tools:
1. Programming languages
PaaS providers provide various programming languages for the developers to develop the
applications. Some popular programming languages provided by PaaS providers are Java, PHP,
Ruby, Perl, and Go.
2. Application frameworks
PaaS providers provide application frameworks to easily understand the application development.
Some popular application frameworks provided by PaaS providers are Node.js, Drupal, Joomla,
WordPress, Spring, Play, Rack, and Zend.
3. Databases
PaaS providers provide various databases such as ClearDB, PostgreSQL, MongoDB, and Redis to
communicate with the applications.
4. Other tools
PaaS providers provide various other tools that are required to develop, test, and deploy the
applications.
Advantages of PaaS
1) Simplified Development
PaaS allows developers to focus on development and innovation without worrying about
infrastructure management.
2) Lower risk
No need for up-front investment in hardware and software. Developers only need a PC and an
internet connection to start building applications.
3) Prebuilt business functionality
Some PaaS vendors also provide already defined business functionality so that users can avoid
building everything from very scratch and hence can directly start the projects only.
4) Instant community
PaaS vendors frequently provide online communities where the developer can get the ideas to
share experiences and seek advice from others.
5) Scalability
Applications deployed can scale from one to thousands of users without any changes to the
applications.
Disadvantages of PaaS cloud computing layer
1) Vendor lock-in
One has to write the applications according to the platform provided by the PaaS vendor, so the
migration of an application to another PaaS vendor would be a problem.
2) Data Privacy
Corporate data, whether it can be critical or not, will be private, so if it is not located within the
walls of the company, there can be a risk in terms of privacy of data.
3) Integration with the rest of the systems applications
It may happen that some applications are local, and some are in the cloud.
Popular PaaS Providers
The below table shows some popular PaaS providers and services that are provided by them -
Providers Services
Google App Engine App Identity, URL Fetch, Cloud storage client library, Logservice
(GAE)
Business Services - SaaS Provider provides various business services to start-up the business. The
SaaS business services include ERP (Enterprise Resource Planning), CRM (Customer
Relationship Management), billing, and sales.
Document Management - SaaS document management is a software application offered by a
third party (SaaS providers) to create, manage, and track electronic documents.
Social Networks - As we all know, social networking sites are used by the general public, so social
networking service providers use SaaS for their convenience and handle the general public's
information.
Mail Services - To handle the unpredictable number of users and load on e-mail services, many
e-mail providers offering their services using SaaS.
The below table shows some popular SaaS providers and services that are provided by them -
Provider Services
Over time, they replaced by local on-premise storage devices. More recently, cloud storage has
become a popular medium of choice for enterprises as well as individuals. Today, individuals and
enterprises alike are embracing cloud storage to store data.
All the data is stored remotely without taking up physical space in your home or office or
exhausting the megabytes on your computer.
In other words, cloud storage is a service that lets you transfer data over the Internet and store it in
an offsite storage system maintained by a third party. The Internet connects the computer to the
offsite storage system. The Internet is all you need to access your files anywhere and at any time.
Data Limit
App Store Google play
for Free Premium Option
Rating Store Rating
Version
Cloud storage offers many benefits which can potentially improve efficiency and productivity in
terms of backing up and securing the data. Here are a few of them:
• Accessibility: Data stored on the cloud can be accessed on-the-go, anytime, and
anywhere. All you need is an internet connection.
• Mobility: Cloud storage providers even offer applications that work with various
devices such as mobile phones and tablets.
• Synchronization: You have the option to sync all your files across all devices so that
you have the most current available to you all the time, creating a single source of
truth.
• Collaboration: Cloud storage services come with features that allow multiple people
to collaborate on a single file even if they are spread across various locations across
the world.
• Cost-Saving: Cloud storage providers generally require you to pay only for the
amount of storage you use, which prevents businesses from over-investing into their
storage needs. Moreover, purchasing servers can be very costly. Hiring specialized
resources to maintain these servers can be even more harmful.
• Scalable: Cloud storage providers offer various plans that can quickly scale your data
storage capacity to meet the growing needs of your business.
• Low Maintenance: The responsibility of upkeeping of the storage lies with the cloud
storage provider.
• Space-Saving: Servers and even other forms of physical storage devices such as hard
disks and USBs require space. This situation does not arise with cloud storage. You
also do not have to worry about files eating up all the area on your hard drive and
lowering the speed of your device.
• Reduced Carbon Footprint: Even a small data center requires servers, networks,
power, cooling, space, and ventilation, all of which can contribute significantly to
energy consumption and CO2 emissions. Switching to cloud computing, therefore,
can drastically reduce your energy consumption levels.
• Security: Cloud storage solutions are designed to be very resilient. They work as
resistant standby as most cloud storage providers have about two to three backup
servers located in different places globally.
How to Use Cloud Storage?
While individuals use it for personal storage to store email backups, pictures, videos, and other
such own files, enterprises use cloud storage as a commercially-supported remote backup solution,
where they can securely transfer and store data files and even share them among various locations.
Cloud storage solutions are relatively simple and easy to use. You are generally required to register
and set up your account. Once you do that, you use your unique username and password to save
your files via the Internet.
Suitable for unstructured data, public cloud storage is offered by third-party cloud storage
providers over the open Internet. They may be available for free or on a paid basis. Users are
usually required to pay for only what they use.
A private cloud allows organizations to store data in their environment. The infrastructure is hosted
on-premises. It offers many benefits that come with a public cloud service such as self-service and
scalability; the dedicated in-house resources increase the scope for customization and control.
Internal hosting and company firewalls also make this the more secure option.
As the name suggests, hybrid cloud allows data and applications to be shared between a public and
a private cloud. Businesses that have a secret, the on-premise solution can seamlessly scale up to
the public cloud to handle any short-term spikes or overflow.
As mentioned in part one — What is the Internet of Things — this series is not intended to be an
engineering textbook on the IoT and its enabling technologies. However, the IoT’s technology
road map is shown in Figure 2 [19] and we will present some general background on the IoT’s
technical landscape to inform our IP strategy discussion (forthcoming).
Figure 2: Technology Roadmap: The Internet of Things
A. BIG DATA
As more things (or “smart objects”) are connected to the IoT, more data is collected from them in
order to perform analytics to determine trends and associations that lead to insights. For example,
an oil well equipped with 20-30 sensors can generate 500,000 data points every 15 seconds20, a
jetliner with 6,000 sensors generates 2.5 terabytes of data per day [21], and the more than 46
million smart utility meters installed in the U.S. generate more than 1 billion data points each
day. [22] Thus, the term “big data” refers to these large data sets that need to be collected, stored,
queried, analyzed and generally managed in order to deliver on the promise of the IoT —
insight!
Further compounding the technical challenges of big data is the fact that IoT systems must deal
with not only the data collected from smart objects, but also ancillary data that is needed
B. DIGITAL TWIN
Another consequence of the growing and evolving IoT is the concept of a “digital twin,”
introduced in 2003 by John Vickers, manager of NASA’s National Center for Advanced
Manufacturing. [23 ]The concept refers to a digital copy of a physical asset (i.e., a smart object
within the IoT), that lives and evolves in a virtual environment over the physical asset’s lifetime.
That is, as the sensors within the object collect real-time data, a set of models forming the digital
twin is updated with all of the same information. Thus, an inspection of the digital twin would
reveal the same information as a physical inspection of the smart object itself – albeit remotely.
The digital twin of the smart object can then be studied to not only optimize operations of the
smart object through reduced maintenance costs and downtime, but to improve the next
generation of its design.
C. CLOUD COMPUTING
As the word “cloud” is often used as a metaphor for the Internet, “cloud computing” refers to
being able to access computing resources via the Internet rather than traditional systems where
computing hardware is physically located on the premises of the user and any software
applications are installed on such local hardware. More formally, “cloud computing” is defined
as:
“[A] model for enabling ubiquitous, 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 e ort or service
provider interaction.” [24]
Cloud computing – and its three service models of Software as a Service (SaaS), Platform as a
Service (PaaS) and Infrastructure as a Service (IaaS) – are important to the IoT because it allows
any user with a browser and an Internet connection to transform smart object data
into actionable intelligence. That is, cloud computing provides “the virtual infrastructure for
utility computing integrating applications, monitoring devices, storage devices, analytics tools,
visualization platforms, and client delivery… [to] enable businesses and users to access [IoT-
enabled] applications on demand anytime, anyplace and anywhere.” [25]
D. SENSORS
Central to the functionality and utility of the IoT are sensors embedded in smart objects. Such
sensors are capable of detecting events or changes in a specific quantity (e.g., pressure),
communicating the event or change data to the cloud (directly or via a gateway) and, in some
circumstances, receiving data back from the cloud (e.g., a control command) or communicating
with other smart objects. Since 2012, sensors have generally shrunk in physical size and thus
have caused the IoT market to mature rapidly. More specifically: “Technological improvements
created microscopic scale sensors, leading to the use of technologies like
Microelectromechanical systems (MEMS). This meant that sensors were now small enough to be
embedded into unique places like clothing or other [smart objects].” [26]
E. COMMUNICATIONS
With respect to sending and receiving data, wired and wireless communication technologies have
also improved such that nearly every type of electronic equipment can provide data connectivity.
This has allowed the ever-shrinking sensors embedded in smart objects to send and receive data
over the cloud for collection, storage and eventual analysis.
The protocols for allowing IoT sensors to relay data include wireless technologies such as RFID,
NFC, Wi-Fi, Bluetooth, Bluetooth Low Energy (BLE), XBee, ZigBee, Z-Wave, Wireless M-
Bus, SIGFOX and NuelNET, as well as satellite connections and mobile networks using GSM,
GPRS, 3G, LTE, or WiMAX. [27] Wired protocols, useable by stationary smart objects, include
Ethernet, HomePlug, HomePNA, HomeGrid/G.hn and LonWorks, as well as conventional
telephone lines. [28]
F. ANALYTICS SOFTWARE
Within the IoT ecosystem, Application Service Providers (ASPs) – which may or may not di er
from the companies who sell and service the smart objects – provide software to companies that
can transform “raw” machine (big) data collected from smart objects into actionable intelligence
(or insight). Generally speaking, such software performs data mining and employs mathematical
models and statistical techniques to provide insight to users. That is, events, trends and patterns
are extracted from big data sets in order to present the software’s end-users with insight
in the form of portfolio analysis, predictions, risk analysis, automations and corrective,
maintenance and optimization recommendations. In many cases, the ASPs may provide general
analytical software or software targeting specific industries or types of smart objects.
G. EDGE DEVICES
Not shown in our simplistic IoT ecosystem of Figure 1 is exactly how the smart objects
embedded with sensors connect via the Internet to the various service provider systems. The
answer is via “edge devices” – any device such
as a router, routing switch, integrated access device (IAD), multiplexer, or metropolitan area
network (MAN) and wide area network (WAN) access device which provides an entry point
from the global, public Internet into an ASP’s or other enterprise’s private network. [29] In
Industry 4.0, these edge devices are becoming smarter at processing data before such data even
reaches an enterprise network’s backbone (i.e., its core devices and cloud data centers). For
example, edge devices may translate between di erent network protocols, and provide first-hop
security, initial quality of service (QoS) and access/ distribution policy functionality. [30]
3.9 INNOVATIVE APPLICATIONS OF THE INTERNET OF THINGS
The applications of IoT technologies are multiple, because it is adjustable to almost any
technology that is capable of providing relevant information about its own operation, about the
performance of an activity and even about the environmental conditions that we need to monitor
and control at a distance.
Nowadays, many companies from different sectors or sectors are adopting this technology to
simplify, improve, automate and control different processes. Next, we show some of the
surprising practical applications of the IoT.
1. Wearables.
Virtual glasses, fitness bands to monitor for example calorie expenditure and heart beats,
or GPS tracking belts, are just some examples of wearable devices that we have been using
for some time now. Companies such as Google, Apple, Samsung and others have developed and
introduced the Internet of Things and the application thereof into our daily lives.
These are small and energy efficient devices, which are equipped with sensors, with the
necessary hardware for measurements and readings, and with software to collect and organize
data and information about users.
2. Health.
The use of wearables or sensors connected to patients, allows doctors to monitor a patient's
condition outside the hospital and in real-time. Through continuously monitoring certain
metrics and automatic alerts on their vital signs, the Internet of Things helps to improve the
care for patients and the prevention of lethal events in high-risk patients.
Another use is the integration of IoT technology into hospital beds, giving way to smart beds,
equipped with special sensors to observe vital signs, blood pressure, oximeter and body
temperature, among others.
3. Traffic monitoring.
The Internet of things can be very useful in the management of vehicular traffic in large cities,
contributing to the concept of smart cities.
When we use our mobile phones as sensors, which collect and share data from our vehicles
through applications such as Waze or Google Maps, we are using the Internet of Things to
inform us and at the same time contribute to traffic monitoring, showing the conditions of
the different routes, and feeding and improving the information on the different routes to the
same destination, distance, estimated time of arrival.
4. Fleet management.
The installation of sensors in fleet vehicles helps to establish an effective interconnectivity
between the vehicles and their managers as well as between the vehicles and their drivers. Both
driver and manager/ owner can know all kinds of details about the status, operation and needs of
the vehicle, just by accessing the software in charge of collecting, processing and organizing the
data. Even, receive alarms in real time of maintenance incidents without having been detected by
the driver.
The application of the Internet of Things to fleet management assists with geolocation (and
with it the monitoring of routes and identification of the most efficient routes),
performance analysis, telemetry control and fuel savings , the reduction of polluting
emissions to the environment and can even provide valuable information to improve the
driving of vehicles.
5. Agriculture.
Smart farms are a fact. The quality of soil is crucial to produce good crops, and the Internet of
Things offers farmers the possibility to access detailed knowledge and valuable information of
their soil condition.
Through the implementation of IoT sensors, a significant amount of data can be obtained
on the state and stages of the soil. Information such as soil moisture, level of acidity, the
presence of certain nutrients, temperature and many other chemical characteristics, helps farmers
control irrigation, make water use more efficient, specify the best times to start sowing, and even
discover the presence of diseases in plants and soil.
6. Hospitality.
The application of the IoT to the hotel industry brings with it interesting improvements in the
quality of the service. With the implementation of electronic keys, which are sent directly to
the mobile devices of each guest, it is possible to automate various interactions.
7. Smart grid and energy saving.
The progressive use of intelligent energy meters, or meters equipped with sensors, and the
installation of sensors in different strategic points that go from the production plants to the
different distribution points, allows better monitoring and control of the electrical network.
By establishing a bidirectional communication between the service provider company and the
end user, information of enormous value can be obtained for the detection of faults, decision
making and repair thereof.
It also allows offering valuable information to the end user about their consumption patterns and
about the best ways to reduce or adjust their energy expenditure.
8. Water supply.
A sensor, either incorporated or adjusted externally to water meters, connected to the Internet
and accompanied by the necessary software , helps to collect, process and analyze data, which
allows understanding the behavior of consumers, detecting faults in the supply service, report
results and offer courses of action to the company that provides the service.
9. Maintenance management.
One of the areas where the application of IoT technology is most extensive is precisely
maintenance management. Through the combination of sensors and software specialized
in CMMS/ EAM maintenance management, a multifunctional tool is obtained whose use can be
applied to a multiplicity of disciplines and practices, with the purpose of extending the useful life
of physical assets, while guaranteeing asset reliability and availability.
When the characteristics of the software in charge of processing and arranging the data collected
by the sensors are designed to specifically address the maintenance management needs of
physical assets, their application is almost unlimited.
The real-time monitoring of physical assets allows determining when a measurement is out of
range and it is necessary to perform condition-based maintenance (CBM), or even applying
Artificial Intelligence (AI) algorithms such as Machine Learning or Deep Learning to predict the
failure before it happens.
Fracttal for maintenance management and the Internet of Things (IoT)
FRACTTAL is the CMMS/ EAM software specially designed to help organizations and
institutions from any industry, sector or services to better manage the maintenance of their
physical assets. It has unique features that facilitate maintenance management, and at the same
time, has a great versatility that allows it to adapt to the specific maintenance needs of fleet
management, equipment, medical equipment and facilities, hotels, smart grids or smart cities,
and water supply, among others.
While other uses of IoT technology or the Internet of Things, are concerned with offering
an innovative approach to quality of life, urban challenges, food production, agriculture,
manufacturing, medicine, energy supply, water distribution and how to offer a wide variety
of products and services, an application oriented to maintenance management such as
Fracttal CMMS, is responsible for helping all these organizations take care of the assets on
which their fundamental activity is based. Fracttal CMMS does so by applying disruptive
Artificial Intelligence technologies such as Machine Learning or Deep Learning to predict a
failure, even before it happens.
UNIT 4 CLOUD ENABLING TECHNOLOGIES
Cloud-enabling technology
Cloud-enabling technology is the use of computing resources that are delivered to customers
with the help of the internet. Cloud-computing technologies are proliferating across various
sectors, such as energy and power, oil and gas, buildings and construction, transport,
communication, etc.
Service Provider and Service consumer are the two major roles within SOA.
SOA (Service Oriented Architecture) is built on computer engineering approaches that offer an
architectural advancement towards enterprise system. It describes a standard method for
requesting services from distributed components and after that the results or outcome is
managed. The primary focus of this service oriented approach is on the characteristics of service
interface and predictable service behavior. Web Services means a set or combination of industry
standards collectively labeled as one. SOA provides a translation and management layer within
the cloud architecture that removes the barrier for cloud clients obtaining desired services.
Multiple networking and messaging protocols can be written using SOA's client and components
and can be used to communicate with each other. SOA provides access to reusable Web services
over a TCP/IP network, which makes this an important topic to cloud computing going forward.
Benefits of SOA
• Language Neutral Integration: Regardless of the developing language used, the system offers
and invoke services through a common mechanism. Programming language neutralization is
one of the key benefits of SOA's integration approach.
• Component Reuse: Once an organization built an application component, and offered it as a
service, the rest of the organization can utilize that service.
• Organizational Agility: SOA defines building blocks of capabilities provided by software and it
offers some service(s) that meet some organizational requirement; which can be recombined
and integrated rapidly.
• Leveraging Existing System: This is one of the major use of SOA which is to classify elements
or functions of existing applications and make them available to the organizations or enterprise.
SOA Architecture
SOA architecture is viewed as five horizontal layers. These are described below:
• Consumer Interface Layer: These are GUI based apps for end users accessing the applications.
• Business Process Layer: These are business-use cases in terms of application.
• Services Layer: These are whole-enterprise, in service inventory.
• Service Component Layer: are used to build the services, such as functional and technical
libraries.
• Operational Systems Layer: It contains the data model.
SOA Governance
It is a notable point to differentiate between It governance and SOA governance. IT governance
focuses on managing business services whereas SOA governance focuses on managing Business
services. Furthermore in service oriented organization, everything should be characterized as a
service in an organization. The cost that governance put forward becomes clear when we
consider the amount of risk that it eliminates with the good understanding of service,
organizational data and processes in order to choose approaches and processes for policies for
monitoring and generate performance impact.
Here lies the protocol stack of SOA showing each protocol along with their relationship among
each protocol. These components are often programmed to comply with SCA (Service
Component Architecture), a language that has broader but not universal industry support. These
components are written in BPEL (Business Process Execution Languages), Java, C#, XML etc
and can apply to C++ or FORTRAN or other modern multi-purpose languages such as Python,
PP or Ruby. With this, SOA has extended the life of many all-time famous applications.
Security in SOA
With the vast use of cloud technology and its on-demand applications, there is a need for well -
defined security policies and access control. With the betterment of these issues, the success of
SOA architecture will increase. Actions can be taken to ensure security and lessen the risks when
dealing with SOE (Service Oriented Environment). We can make policies that will influence the
patterns of development and the way services are used. Moreover, the system must be set-up in
order to exploit the advantages of public cloud with resilience. Users must include safety
practices and carefully evaluate the clauses in these respects.
Elements of SOA
Here's the diagrammatic figure showing the different elements of SOA and its subparts:
Figure - Elements Of SOA:
Though SOA enjoyed lots achieving the success in the past, the introduction to cloud technology
with SOA, renewed the value of SOA
Cloud computing is a style of computing in which virtualised and standard resources, software
and data are provided as a service over the Internet.
Consumers and businesses can use the cloud to store data and applications and can interact with
the Cloud using mobiles, desktop computers, laptops etc. via the Internet from anywhere and at
any time.
The technology of Cloud computing entails the convergence of Grid and cluster computing,
virtualisation, Web services and Service Oriented Architecture (SOA) - it offers the potential to
set IT free from the costs and complexity of its typical physical infrastructure, allowing concepts
such as Utility Computing to become meaningful.
Key players include: IBM, HP, Google, Microsoft, Amazon Web Services, Salesforce.com,
NetSuite, VMware.
Benefits of Cloud Computing:
Virtualization Concept
Creating a virtual machine over existing operating system and hardware is referred as Hardware
Virtualization. Virtual Machines provide an environment that is logically separated from the
underlying hardware.
The machine on which the virtual machine is created is known as host machine and virtual
machine is referred as a guest machine. This virtual machine is managed by a software or
firmware, which is known as hypervisor.
Hypervisor
The hypervisor is a firmware or low-level program that acts as a Virtual Machine Manager.
There are two types of hypervisor:
Type 1 hypervisor executes on bare system. LynxSecure, RTS Hypervisor, Oracle VM, Sun
xVM Server, VirtualLogic VLX are examples of Type 1 hypervisor. The following diagram
shows the Type 1 hypervisor.
The type1 hypervisor does not have any host operating system because they are installed on a
bare system.
Type 2 hypervisor is a software interface that emulates the devices with which a system normally
interacts. Containers, KVM, Microsoft Hyper V, VMWare Fusion, Virtual Server 2005 R2,
Windows Virtual PC and VMWare workstation 6.0 are examples of Type 2 hypervisor. The
following diagram shows the Type 2 hypervisor.
• Full Virtualization
• Emulation Virtualization
• Paravirtualization
Full Virtualization
In full virtualization, the underlying hardware is completely simulated. Guest software does not
require any modification to run.
Emulation Virtualization
In Emulation, the virtual machine simulates the hardware and hence becomes independent of it.
In this, the guest operating system does not require modification.
Paravirtualization
In Paravirtualization, the hardware is not simulated. The guest software run their own isolated
domains.
Emulation Cloud is an open application development environment that helps customers and
third-party developers create, test, and fine-tune customized applications in a completely
virtual environment.
Virtualization plays a very important role in the cloud computing technology, normally in the
cloud computing, users share the data present in the clouds like application etc, but actually with
the help of virtualization users shares the Infrastructure.
Types of Virtualization:
1. Hardware Virtualization.
2. Operating system Virtualization.
3. Server Virtualization.
4. Storage Virtualization.
1) Hardware Virtualization:
When the virtual machine software or virtual machine manager (VMM) is directly installed on the
hardware system is known as hardware virtualization.
The main job of hypervisor is to control and monitoring the processor, memory and other hardware
resources.
After virtualization of hardware system we can install different operating system on it and run
different applications on those OS.
Usage:
Hardware virtualization is mainly done for the server platforms, because controlling virtual
machines is much easier than controlling a physical server.
When the virtual machine software or virtual machine manager (VMM) is installed on the Host
operating system instead of directly on the hardware system is known as operating system
virtualization.
Usage:
Operating System Virtualization is mainly used for testing the applications on different platforms
of OS.
3) Server Virtualization:
When the virtual machine software or virtual machine manager (VMM) is directly installed on the
Server system is known as server virtualization.
Usage:
Server virtualization is done because a single physical server can be divided into multiple servers
on the demand basis and for balancing the load.
4) Storage Virtualization:
Storage virtualization is the process of grouping the physical storage from multiple network
storage devices so that it looks like a single storage device.
Usage:
Virtualization, to explain in brief, is the capability to run multiple instances of computer systems
on the same hardware. The way hardware is being used can vary based on the configuration of
the virtual machine.
The best example of this is your own desktop PC or laptop. You might be running Windows on
your system, but with virtualization, now you can also run Macintosh or Linux Ubuntu on it.
Now, there are various levels of virtualizations that we are going to be seeing. Let’s have a look
at them.
Virtualization is not that easy to implement. A computer runs an OS that is configured to that
particular hardware. Running a different OS on the same hardware is not exactly feasible.
To tackle this, there exists a hypervisor. What hypervisor does is, it acts as a bridge between
virtual OS and hardware to enable its smooth functioning of the instance.
There are five levels of virtualizations available that are most commonly used in the industry.
These are as follows:
In ISA, virtualization works through an ISA emulation. This is helpful to run heaps of legacy
code which was originally written for different hardware configurations.
A binary code that might need additional layers to run can now run on an x86 machine or with
some tweaking, even on x64 machines. ISA helps make this a hardware-agnostic virtual
machine.
The basic emulation, though, requires an interpreter. This interpreter interprets the source code
and converts it to a hardware readable format for processing.
As the name suggests, this level helps perform virtualization at the hardware level. It uses a bare
hypervisor for its functioning.
This level helps form the virtual machine and manages the hardware through virtualization.
It enables virtualization of each hardware component such as I/O devices, processors, memory,
etc.
This way multiple users can use the same hardware with numerous instances of virtualization at
the same time.
IBM had first implemented this on the IBM VM/370 back in 1960. It is more usable for cloud-
based infrastructure.
Thus, it is no surprise that currently, Xen hypervisors are using HAL to run Linux and other OS
on x86 based machines.
At the operating system level, the virtualization model creates an abstract layer between the
applications and the OS.
It is like an isolated container on the physical server and operating system that utilizes hardware
and software. Each of these containers functions like servers.
When the number of users is high, and no one is willing to share hardware, this level of
virtualization comes in handy.
Here, every user gets their own virtual environment with dedicated virtual hardware resources.
This way, no conflicts arise.
Library Level
OS system calls are lengthy and cumbersome. Which is why applications opt for APIs from user-
level libraries.
Most of the APIs provided by systems are rather well documented. Hence, library level
virtualization is preferred in such scenarios.
Library interfacing virtualization is made possible by API hooks. These API hooks control the
communication link from the system to the applications.
Some tools available today, such as vCUDA and WINE, have successfully demonstrated this
technique
Application Level
Application-level virtualization comes handy when you wish to virtualize only an application. It
does not virtualize an entire platform or environment.
On an operating system, applications work as one process. Hence it is also known as process-
level virtualization.
It is generally useful when running virtual machines with high-level languages. Here, the
application sits on top of the virtualization layer, which is above the application program.
Programs written in high-level languages and compiled for an application-level virtual machine
can run fluently here.
4.7 VIRTUALIZATION STRUCTURES TOOLS& MECHANISM
In general, there are three typical classes of VM architecture. Figure 3.1 showed the architectures
of a machine before and after virtualization. Before virtualization, the operating system manages
the hardware. After virtualization, a virtualization layer is inserted between the hardware and the
operat-ing system. In such a case, the virtualization layer is responsible for converting portions of
the real hardware into virtual hardware. Therefore, different operating systems such as Linux and
Windows can run on the same physical machine, simultaneously. Depending on the position of the
virtualiza-tion layer, there are several classes of VM architectures, namely
the hypervisor architecture, para-virtualization, and host-based virtualization. The hypervisor is
also known as the VMM (Virtual Machine Monitor). They both perform the same virtualization
operations.
1. Hypervisor and Xen Architecture
The hypervisor supports hardware-level virtualization (see Figure 3.1(b)) on bare metal devices
like CPU, memory, disk and network interfaces. The hypervisor software sits directly between the
physi-cal hardware and its OS. This virtualization layer is referred to as either the VMM or the
hypervisor. The hypervisor provides hypercalls for the guest OSes and applications. Depending on
the functional-ity, a hypervisor can assume a micro-kernel architecture like the Microsoft Hyper-
V. Or it can assume a monolithic hypervisor architecture like the VMware ESX for server
virtualization.
A micro-kernel hypervisor includes only the basic and unchanging functions (such as physical
memory management and processor scheduling). The device drivers and other changeable
components are outside the hypervisor. A monolithic hypervisor implements all the
aforementioned functions, including those of the device drivers. Therefore, the size of the
hypervisor code of a micro-kernel hyper-visor is smaller than that of a monolithic hypervisor.
Essentially, a hypervisor must be able to convert physical devices into virtual resources dedicated
for the deployed VM to use.
1.1 The Xen Architecture
Xen is an open source hypervisor program developed by Cambridge University. Xen is a micro-
kernel hypervisor, which separates the policy from the mechanism. The Xen hypervisor
implements all the mechanisms, leaving the policy to be handled by Domain 0, as shown in Figure
3.5. Xen does not include any device drivers natively [7]. It just provides a mechanism by which
a guest OS can have direct access to the physical devices. As a result, the size of the Xen hypervisor
is kept rather small. Xen provides a virtual environment located between the hardware and the OS.
A number of vendors are in the process of developing commercial Xen hypervisors, among them
are Citrix XenServer [62] and Oracle VM [42].
The core components of a Xen system are the hypervisor, kernel, and applications. The organi-
zation of the three components is important. Like other virtualization systems, many guest OSes
can run on top of the hypervisor. However, not all guest OSes are created equal, and one in
particular controls the others. The guest OS, which has control ability, is called Domain 0, and the
others are called Domain U. Domain 0 is a privileged guest OS of Xen. It is first loaded when Xen
boots without any file system drivers being available. Domain 0 is designed to access hardware
directly and manage devices. Therefore, one of the responsibilities of Domain 0 is to allocate and
map hardware resources for the guest domains (the Domain U domains).
2. Binary Translation with Full Virtualization
Depending on implementation technologies, hardware virtualization can be classified into two
cate-gories: full virtualization and host-based virtualization. Full virtualization does not need to
modify the host OS. It relies on binary translation to trap and to virtualize the execution of certain
sensitive, nonvirtualizable instructions. The guest OSes and their applications consist of noncritical
and critical instructions. In a host-based system, both a host OS and a guest OS are used. A virtuali-
zation software layer is built between the host OS and guest OS. These two classes of VM architec-
ture are introduced next.
2.1 Full Virtualization
With full virtualization, noncritical instructions run on the hardware directly while critical
instructions are discovered and replaced with traps into the VMM to be emulated by software.
Both the hypervisor and VMM approaches are considered full virtualization. Why are only critical
instructions trapped into the VMM? This is because binary translation can incur a large
performance overhead. Noncritical instructions do not control hardware or threaten the security of
the system, but critical instructions do. Therefore, running noncritical instructions on hardware not
only can promote efficiency, but also can ensure system security.
2.2 Binary Translation of Guest OS Requests Using a VMM
This approach was implemented by VMware and many other software companies. As shown in
Figure 3.6, VMware puts the VMM at Ring 0 and the guest OS at Ring 1. The VMM scans the
instruction stream and identifies the privileged, control- and behavior-sensitive instructions. When
these instructions are identified, they are trapped into the VMM, which emulates the behavior of
these instructions.
The performance of full virtualization may not be ideal, because it involves binary translation
which is rather time-consuming. At the time of this writing, the performance of full virtualization
on the x86 architecture is typically 80 percent to 97 percent that of the host mach
2.3 Host-Based Virtualization
An alternative VM architecture is to install a virtualization layer on top of the host OS. This host
OS is still responsible for managing the hardware. The guest OSes are installed and run on top of
the virtualization layer. Dedicated applications may run on the VMs. Certainly, some other
applications
can also run with the host OS directly. This host-based architecture has some distinct advantages,
as enumerated next. First, the user can install this VM architecture without modifying the host
OS. The virtualizing software can rely on the host OS to provide device drivers and other low-
level services. This will simplify the VM design and ease its deployment.
Second, the host-based approach appeals to many host machine configurations. Compared to the
hypervisor/VMM architecture, the performance of the host-based architecture may also be low.
3. Para-Virtualization with Compiler Support
Para-virtualization needs to modify the guest operating systems. A para-virtualized VM
provides special APIs requiring substantial OS modifications in user applications. Performance
degradation is a critical issue of a virtualized system. No one wants to use a VM if it is much
slower than using a physical machine. The virtualization layer can be inserted at different positions
in a machine soft-ware stack. However, para-virtualization attempts to reduce the virtualization
overhead, and thus improve performance by modifying only the guest OS kernel.
Figure 3.7 illustrates the concept of a paravirtualized VM architecture. The guest operating
systems are para-virtualized. The OS is responsible for managing the hardware and the privileged
instructions to execute at Ring 0, while user-level applications run at Ring 3. The best example of
para-virtualization is the KVM to be described below.
3.1 Para-Virtualization Architecture
When the x86 processor is virtualized, a virtualization layer is inserted between the hardware and
the OS. According to the x86 ring definition, the virtualization layer should also be installed at
Ring 0. Different instructions at Ring 0 may cause some problems. In Figure 3.8, we show that
para-virtualization replaces nonvirtualizable instructions with hypercalls that communicate
directly with the hypervisor or VMM. However, when the guest OS kernel is modified for
virtualization, it can no longer run on the hardware directly.
Although para-virtualization reduces the overhead, it has incurred other problems. First, its
compatibility and portability may be in doubt, because it must support the unmodified OS as well.
Second, the cost of maintaining para-virtualized OSes is high, because they may require deep OS
kernel modifications. Finally, the performance advantage of para-virtualization varies greatly due
to workload variations. Compared with full virtualization, para-virtualization is relatively easy and
more practical. The main problem in full virtualization is its low performance in binary translation.
To speed up binary translation is difficult. Therefore, many virtualization products employ the
para-virtualization architecture. The popular Xen, KVM, and VMware ESX are good examples.
3.2 KVM (Kernel-Based VM)
This is a Linux para-virtualization system—a part of the Linux version 2.6.20 kernel. Memory
management and scheduling activities are carried out by the existing Linux kernel. The KVM does
the rest, which makes it simpler than the hypervisor that controls the entire machine. KVM is a
hardware-assisted para-virtualization tool, which improves performance and supports unmodified
guest OSes such as Windows, Linux, Solaris, and other UNIX variants.
3.3 Para-Virtualization with Compiler Support
Unlike the full virtualization architecture which intercepts and emulates privileged and sensitive
instructions at runtime, para-virtualization handles these instructions at compile time. The guest
OS kernel is modified to replace the privileged and sensitive instructions with hypercalls to the
hypervi-sor or VMM. Xen assumes such a para-virtualization architecture.
The guest OS running in a guest domain may run at Ring 1 instead of at Ring 0. This implies
that the guest OS may not be able to execute some privileged and sensitive instructions. The
privileged instructions are implemented by hypercalls to the hypervisor. After replacing the
instructions with hypercalls, the modified guest OS emulates the behavior of the original guest OS.
On an UNIX system, a system call involves an interrupt or service routine. The hypercalls apply a
dedicated service routine in Xen.
Example 3.3 VMware ESX Server for Para-Virtualizati
VMware pioneered the software market for virtualization. The company has developed
virtualization tools for desktop systems and servers as well as virtual infrastructure for large data
centers. ESX is a VMM or a hypervisor for bare-metal x86 symmetric multiprocessing (SMP)
servers. It accesses hardware resources such as I/O directly and has complete resource
management control. An ESX-enabled server consists of four components: a virtualization layer,
a resource manager, hardware interface components, and a service console, as shown in Figure
3.9. To improve performance, the ESX server employs a para-virtualization architecture in which
the VM kernel interacts directly with the hardware without involving the host OS.
The VMM layer virtualizes the physical hardware resources such as CPU, memory, network and
disk controllers, and human interface devices. Every VM has its own set of virtual hardware
resources. The resource manager allocates CPU, memory disk, and network bandwidth and maps
them to the virtual hardware resource set of each VM created. Hardware interface components are
the device drivers and the
VMware ESX Server File System. The service console is responsible for booting the system,
initiating the execution of the VMM and resource manager, and relinquishing control to those
layers. It also facilitates the process for system administrators.
To support virtualization, processors such as the x86 employ a special running mode and
instructions, known as hardware-assisted virtualization. In this way, the VMM and guest OS run
in different modes and all sensitive instructions of the guest OS and its applications are trapped in
the VMM. To save processor states, mode switching is completed by hardware. For the x86
architecture, Intel and AMD have proprietary technologies for hardware-assisted virtualization.
Figure 3.17(b) illustrates a logical view of such a virtual cluster hierarchy in two levels. Each VM
operates in a isolated fashion at the first level. This will minimize both miss access time and
performance interference with other workloads or VMs. Moreover, the shared resources of cache
capacity, inter-connect links, and miss handling are mostly isolated between VMs. The second
level maintains a globally shared memory. This facilitates dynamically repartitioning resources
without costly cache flushes. Furthermore, maintaining globally shared memory minimizes
changes to existing system software and allows virtualization features such as content-based page
sharing. A virtual hierarchy adapts to space-shared workloads like multiprogramming and server
consolidation. Figure 3.17 shows a case study focused on consolidated server workloads in a tiled
architecture. This many-core mapping scheme can also optimize for space-shared
multiprogrammed workloads in a single-OS environment.
Desktop virtualization is technology that lets users simulate a workstation load to access a
desktop from a connected device remotely or locally. This separates the desktop environment
and its applications from the physical client device used to access it. Desktop virtualization is a
key element of digital workspaces and depends on application virtualization.
How does desktop virtualization work?
Desktop virtualization can be achieved in a variety of ways, but the most important two types of
desktop virtualization are based on whether the operating system instance is local or remote.
Local Desktop Virtualization
Local desktop virtualization means the operating system runs on a client device using
hardware virtualization, and all processing and workloads occur on local hardware. This
type of desktop virtualization works well when users do not need a continuous network
connection and can meet application computing requirements with local system resources.
However, because this requires processing to be done locally you cannot use local desktop
virtualization to share VMs or resources across a network to thin clients or mobile devices.
Remote Desktop Virtualization
Remote desktop virtualization is a common use of virtualization that operates in a
client/server computing environment. This allows users to run operating systems and
applications from a server inside a data center while all user interactions take place on a
client device. This client device could be a laptop, thin client device, or a smartphone. The
result is IT departments have more centralized control over applications and desktops, and
can maximize the organization’s investment in IT hardware through remote access to
shared computing resources.
What is virtual desktop infrastructure?
A popular type of desktop virtualization is virtual desktop infrastructure (VDI). VDI is a variant
of the client-server model of desktop virtualization which uses host-based VMs to deliver
persistent and nonpersistent virtual desktops to all kinds of connected devices. With a persistent
virtual desktop, each user has a unique desktop image that they can customize with apps and
data, knowing it will be saved for future use. A nonpersistent virtual desktop infrastructure
allows users to access a virtual desktop from an identical pool when they need it; once the user
logs out of a nonpersistent VDI, it reverts to its unaltered state. Some of the advantages of virtual
desktop infrastructure are improved security and centralized desktop management across an
organization.
What are the benefits of desktop virtualization?
1. Resource Management:
Desktop virtualization helps IT departments get the most out of their hardware investments by
consolidating most of their computing in a data center. Desktop virtualization then allows
organizations to issue lower-cost computers and devices to end users because most of the
intensive computing work takes place in the data center. By minimizing how much computing is
needed at the endpoint devices for end users, IT departments can save money by buying less
costly machines.
2. Remote work:
Desktop virtualization helps IT admins support remote workers by giving IT central control over
how desktops are virtually deployed across an organization’s devices. Rather than manually
setting up a new desktop for each user, desktop virtualization allows IT to simply deploy a
ready-to-go virtual desktop to that user’s device. Now the user can interact with the operating
system and applications on that desktop from any location and the employee experience will be
the same as if they were working locally. Once the user is finished using this virtual desktop,
they can log off and return that desktop image to the shared pool.
3. Security:
Desktop virtualization software provides IT admins centralized security control over which users
can access which data and which applications. If a user’s permissions change because they leave
the company, desktop virtualization makes it easy for IT to quickly remove that user’s access to
their persistent virtual desktop and all its data—instead of having to manually uninstall
everything from that user’s devices. And because all company data lives inside the data center
rather than on each machine, a lost or stolen device does not post the same data risk. If someone
steals a laptop using desktop virtualization, there is no company data on the actual machine and
hence less risk of a breach
t is the division of physical server into several virtual servers and this division is mainly done to
improvise the utility of server resource. In other word it is the masking of resources that are
located in server which includes the number & identity of processors, physical servers & the
operating system. This division of one physical server into multiple isolated virtual servers is
done by server administrator using software. The virtual environment is sometimes called the
virtual private-servers.
In this process, the server resources are kept hidden from the user. This partitioning of physical
server into several virtual environments; result in the dedication of one server to perform a single
application or task.
This technique is mainly used in web-servers which reduces the cost of web-hosting services.
Instead of having separate system for each web-server, multiple virtual servers can run on the
same system/computer.
Approaches To Virtualization:
1. Virtual Machine model: are based on host-guest paradigm, where each guest runs on a virtual
replica of hardware layer. This technique of virtualization provide guest OS to run without
modification. However it requires real computing resources from the host and for this a
hypervisor or VM is required to coordinate instructions to CPU.
2. Para-Virtual Machine model: is also based on host-guest paradigm & uses virtual machine
monitor too. In this model the VMM modifies the guest operating system's code which is called
'porting'. Like that of virtual machine, similarly the Para-virtual machine is also capable of
executing multiple operating systems. The Para-virtual model is used by both Xen & UML.
3. Operating System Layer Virtualization: Virtualization at OS level functions in a different
way and is not based on host-guest paradigm. In this model the host runs a single operating
system kernel as its main/core and transfers its functionality to each of the guests. The guest
must use the same operating system as the host. This distributed nature of architecture
eliminated system calls between layers and hence reduces overhead of CPU usage. It is also a
must that each partition remains strictly isolated from its neighbors because any failure or
security breach of one partition won't be able to affect the other partitions.
• Cost Reduction: Server virtualization reduces cost because less hardware is required.
• Independent Restart: Each server can be rebooted independently and that reboot won't affect
the working of other virtual servers.
Google App Engine (GAE) is a service for developing and hosting Web applications in Google's
data centers, belonging to the platform as a service (PaaS) category of cloud computing. Web
applications hosted on GAE are sandboxed and run across multiple servers for redundancy and
allowing for scaling of resources according to the traffic requirements of the moment. App
Engine automatically allocates additional resources to the servers to accommodate increased
load.
Google App Engine is Google's platform as a service offering that allows developers and
businesses to build and run applications using Google's advanced infrastructure. These
applications are required to be written in one of a few supported languages, namely: Java,
Python, PHP and Go. It also requires the use of Google query language and that the database
used is Google Big Table. Applications must abide by these standards, so applications either
must be developed with GAE in mind or else modified to meet the requirements.
GAE is a platform, so it provides all of the required elements to run and host Web applications,
be it on mobile or Web. Without this all-in feature, developers would have to source their own
servers, database software and the APIs that would make all of them work properly together, not
to mention the entire configuration that must be done. GAE takes this burden off the developers
so they can concentrate on the app front end and functionality, driving better user experience.
In 2006, Amazon Web Services (AWS) began offering IT infrastructure services to businesses in
the form of web services -- now commonly known as cloud computing. One of the key benefits
of cloud computing is the opportunity to replace up-front capital infrastructure expenses with
low variable costs that scale with your business. With the Cloud, businesses no longer need to
plan for and procure servers and other IT infrastructure weeks or months in advance. Instead,
they can instantly spin up hundreds or thousands of servers in minutes and deliver results faster.
Today, Amazon Web Services provides a highly reliable, scalable, low-cost infrastructure
platform in the cloud that powers hundreds of thousands of businesses in 190 countries around
the world. With data center locations in the U.S., Europe, Brazil, Singapore, Japan, and
Australia, customers across all industries are taking advantage of the following benefits:
Low Cost
AWS offers low, pay-as-you-go pricing with no up-front expenses or long-term commitments.
We are able to build and manage a global infrastructure at scale, and pass the cost saving benefits
onto you in the form of lower prices. With the efficiencies of our scale and expertise, we have
been able to lower our prices on 15 different occasions over the past four years. Visit the
Economics Center to learn more.
AWS is a language and operating system agnostic platform. You choose the development
platform or programming model that makes the most sense for your business. You can choose
which services you use, one or several, and choose how you use them. This flexibility allows you
to focus on innovation, not infrastructure
Secure
AWS is a secure, durable technology platform with industry-recognized certifications and audits:
PCI DSS Level 1, ISO 27001, FISMA Moderate, FedRAMP, HIPAA, and SOC 1 (formerly
referred to as SAS 70 and/or SSAE 16) and SOC 2 audit reports. Our services and data centers
have multiple layers of operational and physical security to ensure the integrity and safety of
your data.
Solutions
The AWS cloud computing platform provides the flexibility to launch your application
regardless of your use case or industry. Learn more about popular solutions customers are
running on AWS:
Application Hosting
Use reliable, on-demand infrastructure to power your applications, from hosted internal
applications to SaaS offerings.
Websites
Satisfy your dynamic web hosting needs with AWS’s scalable infrastructure platform.
Enterprise IT
Host internal- or external-facing IT applications in AWS's secure environment.
Content Delivery
Quickly and easily distribute content to end users worldwide, with low costs and high data
transfer speeds.
Databases
Take advantage of a variety of scalable database solutions, from hosted enterprise database
software or non-relational database solutions.
Cloud Federation, also known as Federated Cloud is the deployment and management of several
external and internal cloud computing services to match business needs. It is a multi-national
cloud system that integrates private, community, and public clouds into scalable computing
platforms. Federated cloud is created by connecting the cloud environment of different cloud
providers using a common standard.
Federated Cloud
1. In the federated cloud, the users can interact with the architecture either centrally or in a
decentralized manner. In centralized interaction, the user interacts with a broker to mediate
between them and the organization. Decentralized interaction permits the user to interact
directly with the clouds in the federation.
2. Federated cloud can be practiced with various niches like commercial and non-commercial.
3. The visibility of a federated cloud assists the user to interpret the organization of several
clouds in the federated environment.
4. Federated cloud can be monitored in two ways. MaaS (Monitoring as a Service) provides
information that aids in tracking contracted services to the user. Global monitoring aids in
maintaining the federated cloud.
5. The providers who participate in the federation publish their offers to a central entity. The
user interacts with this central entity to verify the prices and propose an offer.
6. The marketing objects like infrastructure, software, and platform have to pass through
federation when consumed in the federated cloud.
Federal Cloud Architecture
1. In cloud federation, it is common to have more than one provider for processing the incoming
demands. In such cases, there must be a scheme needed to distribute the incoming demands
equally among the cloud service providers.
2. The increasing requests in cloud federation have resulted in more heterogeneous
infrastructure, making interoperability an area of concern. It becomes a challenge for cloud
users to select relevant cloud service providers and therefore, it ties them to a particular cloud
service provider.
3. A federated cloud means constructing a seamless cloud environment that can interact with
people, different devices, several application interfaces, and other entities.
DevOps teams encapsulate individual pieces of functionality in micro services and build larger
systems by composing the micro services like building blocks. ... Using micro services can
increase team velocity. DevOps practices, such as Continuous Integration and Continuous
Delivery, are used to drive micro service deployments
5.1 DEFINING MICRO SERVICES
Micro services are an architectural and organizational approach to software development where
software is composed of small independent services that communicate over well-defined APIs.
These services are owned by small, self-contained teams.
Micro services architectures make applications easier to scale and faster to develop, enabling
innovation and accelerating time-to-market for new features.
Monolithic vs. Micro services Architecture
With monolithic architectures, all processes are tightly coupled and run as a single service. This
means that if one process of the application experiences a spike in demand, the entire
architecture must be scaled.
Adding or improving a monolithic application’s features becomes more complex as the code
base grows. This complexity limits experimentation and makes it difficult to implement new
ideas.
Monolithic architectures add risk for application availability because many dependent and
tightly coupled processes increase the impact of a single process failure.
With a microservices architecture, an application is built as independent components that run
each application process as a service.
These services communicate via a well-defined interface using lightweight APIs.
Services are built for business capabilities and each service performs a single function. Because
they are independently run, each service can be updated, deployed, and scaled to meet demand
for specific functions of an application.
Breaking a monolithic application into micro services
Characteristics of Micro services
Autonomous
Each component service in micro services architecture can be developed, deployed, operated,
and scaled without affecting the functioning of other services. Services do not need to share any
of their code or implementation with other services. Any communication between individual
components happens via well-defined APIs.
Specialized
Each service is designed for a set of capabilities and focuses on solving a specific problem. If
developers contribute more code to a service over time and the service becomes complex, it can
be broken into smaller services.
Benefits of Micro services
Agility
Microservices foster an organization of small, independent teams that take ownership of their
services. Teams act within a small and well understood context, and are empowered to work
more independently and more quickly. This shortens development cycle times. You benefit
significantly from the aggregate throughput of the organization.
Flexible Scaling
Microservices allow each service to be independently scaled to meet demand for the application
feature it supports. This enables teams to right-size infrastructure needs, accurately measure the
cost of a feature, and maintain availability if a service experiences a spike in demand.
Easy Deployment
Microservices enable continuous integration and continuous delivery, making it easy to try out
new ideas and to roll back if something doesn’t work. The low cost of failure enables
experimentation, makes it easier to update code, and accelerates time-to-market for new features.
Technological Freedom
Microservices architectures don’t follow a “one size fits all” approach. Teams have the freedom
to choose the best tool to solve their specific problems. As a consequence, teams building
microservices can choose the best tool for each job.
Reusable Code
Dividing software into small, well-defined modules enables teams to use functions for multiple
purposes. A service written for a certain function can be used as a building block for another
feature. This allows an application to bootstrap off itself, as developers can create new
capabilities without writing code from scratch.
Resilience
Service independence increases an application’s resistance to failure. In a monolithic
architecture, if a single component fails, it can cause the entire application to fail. With micro
services, applications handle total service failure by degrading functionality and not crashing the
entire application.
5.2 EMERGENCE OF MICRO SERVICE ARCHITECTURE
Several years back, the ‘cloud’ was considered the future of application development. While this
is still the case today, savvy experts say that the key to modernizing application development lies
in one particular cloud computing component: cloud-native technology.
This is an all-new approach that involves building applications using cloud-based technologies
only from bottom up. A cloud native application is distinct from cloud-based and cloud-enabled
apps in that the former is built and hosted on a cloud service from birth. Conversely, cloud-based
and cloud-enabled applications are originally developed on traditional architecture before being
reconfigured for execution in the cloud.
Combined with cloud native security, this new architecture continues to be a key component of
digital transformation for its excellent scalability, adaptability, and portability. Additionally,
cloud native technology is all about speed and agility. These 2 are among the most crucial
requirements in this fast-paced era where end-users want rapidly responsive applications with
lots of features but zero downtime.
Cloud Native Technology Foundational Pillars
The cloud native architecture is based on several critical components: the most critical of which
are the cloud infrastructure itself, microservices, modern design, containerization,
automation, and backing services.
For this post, we’re going to expound on microservices as they are considered the core of cloud
native architecture.
What are Microservices?
Microservices in cloud native architecture is building an application by separating each of its
functionalities into multiple independent services. These services are engineered to handle an
individual task in the application ranging from implementing capabilities to running processes.
Although these small software services operate largely independently, they are part of a more
extensive architecture and are made to ensure excellent communication and data exchange
between themselves.
A Peep at the Era before Microservices
The concept of microservices was conceived from the dire need to simplify the monolithic
application architecture.
Before developers embraced the idea of creating applications in separate software services, each
application comprised several layers built in a single stack and coded in one monolithic server.
These layers can be:
1. Authorization layer
2. Presentation layer- handles HTTP requests
3. Application layer- business logic
4. Database layer- responsible for retrieving data from the database
5. Application integration- creates links with other services or data sources
6. Notification layer- for sending notifications
The main challenges of this traditional application architecture set in when the business expands,
making it necessary to handle and process hundreds, thousands, or millions of users at once. The
obvious solution for this is vertical scaling, which involves installing powerful hardware to
sustain heavier applications. You may also make the server more capable, for instance, by
boosting its processing power and adding memory and storage. However, there’s only so much
that you can do to scale the infrastructure this way.
Secondly, the monolithic architecture creates a lot of areas where things can go wrong. What’s
worse is that a bug in one of the modules is potent to bring the entire system down. Furthermore,
since this architecture does not have self-healing properties, damage in one of its components
requires human intervention.
The other major drawback of monolithic applications is that you can’t make changes to a single
module without affecting the entire application. This makes it necessary to redeploy the whole
system, even when making a simple upgrade in one of the components.
How are Micro services Different?
The significant advantage of micro services is that each service can be deployed in its server with
dedicated resources. Even when deployed in a single server, each service can be made to reside
in a dedicated container. A container is technically a server by itself in that it features all the
executables, libraries, configuration files, and the binary code that each service requires to
function.
Microservices are expected to be among the cloud computing trends for 2021 because they
allow continuous delivery (CD), which enables producing software at any time and in short
cycles. One of the reasons why microservices enhance CD is the ability to upgrade one
microservice independently without affecting the other services.
Secondly, containers are self-healing, which means that they can auto-scale, auto-replicate, and
auto-restart without the need for human intervention. The real advantage here is that problems in
the application and infrastructure don’t cause downtimes and are fixed quickly.
Advantages of Microservices Architecture
• Faster deployments– microservices promote continuous delivery, which is releasing complex
applications within a short time.
• Continuous integration/continuous delivery (CI/CD)– this allows quick updates on code.
• Improved testability– because each service is small.
• Fault isolation– deploying each service in an independent server or container isolates faults.
This means that an issue with one module won’t affect the performance of the entire application.
• Improved scalability– separating the services allows horizontal scalability whenever necessary
as opposed to scaling the entire system. This helps a lot in cost-saving.
• Easy to understand– credit to the added simplicity, the IT team can easily understand
everything about each microservice and how it works.
• Enhanced security– because each service is a small independent component, the attack surface
is greatly reduced. An attack on one of the services is less likely to spread to other services as
they are isolated from each other.
Challenges of Microservices
While there’s no doubt that microservice architecture is ushering us into the future of application
development, it has a good share of its challenges, too:
• Testing takes time compared to monolith applications.
• Microservices are a distributed system, which developers find complex to build.
• Because services are hosted in independent servers or containers, there is a need to create extra
code to facilitate effective communication between the modules.
• Most IDEs (developer tools) are meant for creating monolithic applications and lack enough
support for distributed micro services.
• Deploying a distributed system of a cluster of services is generally complex.
• It’s not ideal for legacy applications as the process of re-architecting the codebase can be both
complex and costly.
1. Scalability
2. Availability
3. Resiliency
4. Independent, autonomous
5. Decentralized governance
6. Failure isolation
7. Auto-Provisioning
8. Continuous delivery through DevOps
Applying all these principles brings several challenges and issues. Let's discuss those problems
and their solutions.
1. Decomposition Patterns
Problem
Microservices is all about making services loosely coupled, applying the single responsibility
principle. However, breaking an application into smaller pieces has to be done logically. How do
we decompose an application into small services?
Solution
One strategy is to decompose by business capability. A business capability is something that a
business does in order to generate value. The set of capabilities for a given business depend on
the type of business. For example, the capabilities of an insurance company typically include
sales, marketing, underwriting, claims processing, billing, compliance, etc. Each business
capability can be thought of as a service, except it’s business-oriented rather than technical.
b. Decompose by Subdomain
Problem
Decomposing an application using business capabilities might be a good start, but you will come
across so-called "God Classes" which will not be easy to decompose. These classes will be
common among multiple services. For example, the Order class will be used in Order
Management, Order Taking, Order Delivery, etc. How do we decompose them?
Solution
For the "God Classes" issue, DDD (Domain-Driven Design) comes to the rescue. It uses
subdomains and bounded context concepts to solve this problem. DDD breaks the whole domain
model created for the enterprise into subdomains. Each subdomain will have a model, and the
scope of that model will be called the bounded context. Each microservice will be developed
around the bounded context.
Note: Identifying subdomains is not an easy task. It requires an understanding of the business.
Like business capabilities, subdomains are identified by analyzing the business and its
organizational structure and identifying the different areas of expertise.
c. Strangler Pattern
Problem
So far, the design patterns we talked about were decomposing applications for greenfield, but
80% of the work we do is with brownfield applications, which are big, monolithic applications.
Applying all the above design patterns to them will be difficult because breaking them into
smaller pieces at the same time it's being used live is a big task.
Solution
The Strangler pattern comes to the rescue. The Strangler pattern is based on an analogy to a vine
that strangles a tree that it’s wrapped around. This solution works well with web applications,
where a call goes back and forth, and for each URI call, a service can be broken into different
domains and hosted as separate services. The idea is to do it one domain at a time. This creates
two separate applications that live side by side in the same URI space. Eventually, the newly
refactored application “strangles” or replaces the original application until finally you can shut
off the monolithic application.
2. Integration Patterns
Problem
When an application is broken down to smaller microservices, there are a few concerns that need
to be addressed:
3. Different consumers might need a different format of the responses from reusable
microservices. Who will do the data transformation or field manipulation?
4. How to handle different type of Protocols some of which might not be supported by
producer microservice.
Solution
An API Gateway helps to address many concerns raised by microservice implementation, not
limited to the ones above.
1. An API Gateway is the single point of entry for any microservice call.
3. It can fan out a request to multiple services and aggregate the results to send back to the
consumer.
4. One-size-fits-all APIs cannot solve all the consumer's requirements; this solution can
create a fine-grained API for each specific type of client.
5. It can also convert the protocol request (e.g. AMQP) to another protocol (e.g. HTTP) and
vice versa so that the producer and consumer can handle it.
b. Aggregator Pattern
Problem
We have talked about resolving the aggregating data problem in the API Gateway Pattern.
However, we will talk about it here holistically. When breaking the business functionality into
several smaller logical pieces of code, it becomes necessary to think about how to collaborate the
data returned by each service. This responsibility cannot be left with the consumer, as then it
might need to understand the internal implementation of the producer application.
Solution
The Aggregator pattern helps to address this. It talks about how we can aggregate the data from
different services and then send the final response to the consumer. This can be done in two
ways:
1. A composite microservice will make calls to all the required microservices, consolidate the
data, and transform the data before sending back.
2. An API Gateway can also partition the request to multiple microservices and aggregate the
data before sending it to the consumer.
Solution
With microservices, the UI has to be designed as a skeleton with multiple sections/regions of the
screen/page. Each section will make a call to an individual backend microservice to pull the data.
That is called composing UI components specific to service. Frameworks like AngularJS and
ReactJS help to do that easily. These screens are known as Single Page Applications (SPA). This
enables the app to refresh a particular region of the screen instead of the whole page.
3. Database Patterns
Problem
There is a problem of how to define database architecture for microservices. Following are the
concerns to be addressed:
1. Services must be loosely coupled. They can be developed, deployed, and scaled
independently.
3. Some business transactions need to query data that is owned by multiple services.
Solution
To solve the above concerns, one database per microservice must be designed; it must be private
to that service only. It should be accessed by the microservice API only. It cannot be accessed by
other services directly. For example, for relational databases, we can use private-tables-per-
service, schema-per-service, or database-server-per-service. Each microservice should have a
separate database id so that separate access can be given to put up a barrier and prevent it from
using other service tables.
Problem
We have talked about one database per service being ideal for microservices, but that is possible
when the application is Greenfield and to be developed with DDD. But if the application is a
monolith and trying to break into micro services, denormalization is not that easy. What is the
suitable architecture in that case?
Solution
A shared database per service is not ideal, but that is the working solution for the above scenario.
Most people consider this an anti-pattern for microservices, but for brownfield applications, this
is a good start to break the application into smaller logical pieces. This should not be applied for
greenfield applications. In this pattern, one database can be aligned with more than one
microservice, but it has to be restricted to 2-3 maximum, otherwise scaling, autonomy, and
independence will be challenging to execute.
Problem
Once we implement database-per-service, there is a requirement to query, which requires joint
data from multiple services — it's not possible. Then, how do we implement queries in
microservice architecture?
Solution
CQRS suggests splitting the application into two parts — the command side and the query side.
The command side handles the Create, Update, and Delete requests. The query side handles the
query part by using the materialized views. The event sourcing pattern is generally used along
with it to create events for any data change. Materialized views are kept updated by subscribing
to the stream of events.
d. Saga Pattern
Problem
When each service has its own database and a business transaction spans multiple services, how
do we ensure data consistency across services? For example, for an e-commerce application
where customers have a credit limit, the application must ensure that a new order will not exceed
the customer’s credit limit. Since Orders and Customers are in different databases, the
application cannot simply use a local ACID transaction.
Solution
A Saga represents a high-level business process that consists of several sub requests, which each
update data within a single service. Each request has a compensating request that is executed
when the request fails. It can be implemented in two ways:
4. Observability Patterns
a. Log Aggregation
Problem
Consider a use case where an application consists of multiple service instances that are running
on multiple machines. Requests often span multiple service instances. Each service instance
generates a log file in a standardized format. How can we understand the application behavior
through logs for a particular request?
Solution
We need a centralized logging service that aggregates logs from each service instance. Users can
search and analyze the logs. They can configure alerts that are triggered when certain messages
appear in the logs. For example, PCF does have Loggeregator, which collects logs from each
component (router, controller, diego, etc...) of the PCF platform along with applications. AWS
Cloud Watch also does the same.
b. Performance Metrics
Problem
When the service portfolio increases due to microservice architecture, it becomes critical to keep
a watch on the transactions so that patterns can be monitored and alerts sent when an issue
happens. How should we collect metrics to monitor application perfomance?
Solution
A metrics service is required to gather statistics about individual operations. It should aggregate
the metrics of an application service, which provides reporting and alerting. There are two
models for aggregating metrics:
• Push — the service pushes metrics to the metrics service e.g. NewRelic, AppDynamics
• Pull — the metrics services pulls metrics from the service e.g. Prometheus
c. Distributed Tracing
Problem
In microservice architecture, requests often span multiple services. Each service handles a
request by performing one or more operations across multiple services. Then, how do we trace a
request end-to-end to troubleshoot the problem?
Solution
We need a service which
• Records information (e.g. start time, end time) about the requests and operations
performed when handling an external request in a centralized service.
d. Health Check
Problem
When microservice architecture has been implemented, there is a chance that a service might be
up but not able to handle transactions. In that case, how do you ensure a request doesn't go to
those failed instances? With a load balancing pattern implementation.
Solution
Each service needs to have an endpoint which can be used to check the health of the application,
such as /health. This API should o check the status of the host, the connection to other
services/infrastructure, and any specific logic.
Spring Boot Actuator does implement a /health endpoint and the implementation can be
customized, as well.
5. Cross-Cutting Concern Patterns
a. External Configuration
Problem
A service typically calls other services and databases as well. For each environment like dev,
QA, UAT, prod, the endpoint URL or some configuration properties might be different. A
change in any of those properties might require a re-build and re-deploy of the service. How do
we avoid code modification for configuration changes?
Solution
Externalize all the configuration, including endpoint URLs and credentials. The application
should load them either at startup or on the fly.
Spring Cloud config server provides the option to externalize the properties to GitHub and load
them as environment properties. These can be accessed by the application on startup or can be
refreshed without a server restart.
Problem
When microservices come into the picture, we need to address a few issues in terms of calling
services:
2. Each service URL has to be remembered by the consumer and become tightly coupled.
So how does the consumer or router know all the available service instances and locations?
Solution
A service registry needs to be created which will keep the metadata of each producer service. A
service instance should register to the registry when starting and should de-register
when shutting down. The consumer or router should query the registry and find out the location
of the service. An example of client-side discovery is Netflix Eureka and an example of server-
side discovery is AWS ALB.
Problem
A service generally calls other services to retrieve data, and there is the chance that the
downstream service may be down. There are two problems with this: first, the request will keep
going to the down service, exhausting network resources and slowing performance. Second, the
user experience will be bad and unpredictable. How do we avoid cascading service failures and
handle failures gracefully?
Solution
The consumer should invoke a remote service via a proxy that behaves in a similar fashion to an
electrical circuit breaker. When the number of consecutive failures crosses a threshold, the
circuit breaker trips, and for the duration of a timeout period, all attempts to invoke the remote
service will fail immediately. After the timeout expires the circuit breaker allows a limited
number of test requests to pass through. If those requests succeed, the circuit breaker resumes
normal operation. Otherwise, if there is a failure, the timeout period begins again.
Netflix Hystrix is a good implementation of the circuit breaker pattern. It also helps you to define
a fallback mechanism which can be used when the circuit breaker trips. That provides a better
user experience.
Problem
With micro service architecture, one application can have many micro services. If we stop all the
services then deploy an enhanced version, the downtime will be huge and can impact the
business. Also, the rollback will be a nightmare. How do we avoid or reduce downtime of the
services during deployment?
The homogenous nature of a monolithic architecture has both strengths and challenges:
• Because monolithic applications have all business services and functions, including
theirsupporting databases, deployed as a single platform, software
development and deployment are relatively faster and easier.
• Debugging is also more straightforward because you can open up the entire project within a
single IDE instance.
However, with those benefits, monoliths are complex to maintain, refactor, and scale.
Over the years, several architectural patterns evolved out of monoliths, aiming to address these
challenges by separating business functions into individually deployable services. Two such
evolved patterns are the microservices and miniservices architectures.
This article compares these two architectures and the benefits they offer as alternatives to a
monolith.
Microservices architecture
A microservices architecture follows a development approach that designs software applications
as a set of loosely coupled, independently deployable services with distinct interfaces. These
individual functional modules perform specifically defined, separate tasks autonomously.
Characteristics of a microservice architecture
• Each microservice contains one, and only one, responsibility, which is built around a
particular business function such as sending emails, raising alerts, assigning tickets, etc.
• Every microservice has its own database that does not share data storage with other
services.
• All services are developed, deployed, maintained, and run independently of other
microservices. Thus, each microservice has its own codebase and deployment
environments.
• Microservices are loosely coupled, i.e., you can change one microservice without
updating/impacting others.
• All microservices communicate with each other via an event-driven communication that
runs a Publisher-Subscriber pattern.
Adopting a microservice architecture brings a range of added benefits that aid efficiency to the
software development lifecycle (SDLC). These benefits include:
Limitations of microservices
Although a microservice architecture is gaining popularity due to its benefits of enhanced
efficiency and improved resiliency, it also comes with its limitations and challenges.
• Increased complexity. Having a collection of polyglot services introduces a higher level of
complexity into the development process. There are more components to manage, and these
components have different deployment processes. The introduction of event-driven
communication is another challenge: such design is comparatively complex and requires
new skills to manage.
• Complex testing. It is challenging to test microservice-based applications because of the
various testing dependencies required for each microservice. It is even more tasking to
implement automated testing in a microservice architecture because the services are running
in different runtime environments. Besides, the need to test each microservice before
running a global test adds more complexity to maintain the framework.
• Higher maintenance overhead. With more services to handle, you have additional
resources to manage, monitor, and maintain. There is also the need for full-time security
support: due to their distributed nature, microservices are more vulnerable to attack vectors.
(See when microservices might not be the best fit for your software.)
Now we’ll turn to miniservices.
Miniservices architecture
As monoliths are challenging to scale because of size, and microservices are a lot more complex
to orchestrate and maintain, there was a need for a framework that addressed these challenges.
To solve this, a miniservices architecture fits the middle ground between monolith and
microservices architectures, a design that assumes a more realistic approach to implementing the
microservices concept.
• Related services can share the same database. This allows modules that are related to
• each other in the functions they perform to share a database. For instance, a miniservice may
perform multiple functions including image processing, rendering of images, or any other
related functions for an application.
• Communication between services is through REST APIs.
• Related services can share codebase and infrastructure used for deployment.
Limitations of miniservices
• End-to-end testing can be a challenge with a miniservice framework due to the number of
• dependencies associated with a single service. This also raises complexities with respect
to efficient error handling and bug discovery.
Microservices vs miniservices
Fine-grained alternatives to a monolithic framework, both microservice and miniservice
architectures divide applications into smaller pieces within specific bounded contexts.
At its elemental level, miniservices differ from microservices by allowing shared data storage
and infrastructure. Miniservices are steadily gaining momentum as a more pragmatic approach
over microservices.
As each of these architectures has its benefits and limitations, it’s vital that your organization
perform thorough due diligence before choosing the right one. It is equally important to factor in
the technologies, skills, and effort each of these frameworks require to maintain in the long run
to avoid budget overruns and operational hiccups.
Dependency cycles will be familiar to you if you have ever locked your keys inside your house
or car. You can't open the lock without the key, but you can't get the key without opening the
lock. Some cycles are obvious, but more complex dependency cycles can be challenging to find
before they lead to outages. Strategies for tracking and controlling dependencies are necessary
for maintaining reliable systems.
A lockout, as in the story of the cyclic coffee shop, is just one way that dependency management
has critical implications for reliability. You can't reason about the behavior of any system, or
guarantee its performance characteristics, without knowing what other systems it depends on.
Without knowing how services are interlinked, you can't understand the effects of extra latency
in one part of the system, or how outages will propagate. How else does dependency
management affect reliability?
SLO
No service can be more reliable than its critical dependencies.8 If dependencies are not managed,
a service with a strict SLO1 (service-level objective) might depend on a back end that is
considered best-effort. This might go unnoticed if the back end has coincidentally high
availability or low latency. When that back end starts performing exactly to its SLO, however, it
will degrade the availability of services that rely on it.
High-fidelity testing
Distributed systems should be tested in environments that replicate the production environment
as closely as possible.7 If noncritical dependencies are omitted in the test environment, the tests
cannot identify problems that arise from their interaction with the system. This can cause
regressions when the code runs in production.
Data integrity
After a disaster, it may be necessary to start up all of a company's infrastructure without having
anything already running. Cyclic dependencies can make this impossible: a front-end service
may depend on a back end, but the back-end service could have been modified over time to
depend on the front end. As systems grow more complex over time, the risk of this happening
increases. Isolated bootstrap environments can also provide a robust QA environment.
Security
In networks with a perimeter-security model, access to one system may imply unfettered access
to others.9 If an attacker compromises one system, the other systems that depend on it may also
be at risk. Understanding how systems are interconnected is crucial for detecting and limiting the
scope of damage. You may also think about dependencies when deploying DoS (denial of
service) protection: one system that is resilient to extra load may send requests downstream to
others that are less prepared.
Dependency Cycles
Dependency cycles are most dangerous when they involve the mechanisms used to access and
modify a service. The operator knows what steps to take to repair the broken service, but it's
impossible to take those steps without the service. These control cycles commonly arise in
accessing remote systems. An error that disables sshd or networking on a remote server may
prevent connecting to it and repairing it. This can be seen on a wider scale when the broken
device is responsible for routing packets: the whole network might be offline as a result of the
error, but the network outage makes it impossible to connect to the device and repair it. The
network device depends on the very network it provides.
Dependency cycles can also disrupt recovery from two simultaneous outages. As in the isolated
bootstrap scenario, two systems that have evolved to depend upon each other cannot be restarted
while neither is available. A job-scheduling system may depend on writing to a data-storage
system, but that data-storage system may depend on the job-scheduling system to assign
resources to it.
Cycles may even affect human processes, such as oncall and debugging. In one example, a
source-control system outage left both the source-code repository and documentation server
unavailable. The only way to get to the documentation or source code of the source-control
system was to recover the same system. Without this key information about the system's
internals, the oncall engineer's response was significantly obstructed.
In the era of monolithic software development, dependency management was relatively clear-
cut. While a monolithic binary may perform many functions, it generally provides a single
failure domain containing all of the binary's functionality. Keeping track of a small number of
large binaries and storage systems is not difficult, so an owner of a monolithic architecture can
easily draw a dependency diagram, perhaps like that in figure 1.
Microservices offer many advantages. They allow independent component releases, smoother
rollbacks, and polyglot development, as well as allowing teams to specialize in one area of the
codebase. They are not easy to keep track of, however. In a company with more than a hundred
microservices, it is unlikely that employees could draw a diagram and get it right, or guarantee
that they're making dependency decisions that won't result in a cycle.
Both monolithic services and microservices can experience bootstrapping issues caused by
hidden dependencies. They rely on access to decryption keys, network, and power. They may
also depend on external systems such as DNS (Domain Name System). If individual endpoints of
a monolith are reached via DNS, the process of keeping those DNS records up to date may create
a cycle.
The adoption of SaaS (software as a service) creates new dependencies whose implementation
details are hidden. These dependencies are subject to the latency, SLO, testing, and security
concerns mentioned previously. Failure to track external dependencies may also introduce
bootstrapping risks. As SaaS becomes more popular and as more companies outsource
infrastructure and functionality, cyclic dependencies may start to cross companies. For example,
if two storage companies were to use each other's systems to store boot images, a disaster that
affected both companies would make recovery difficult or impossible.
At its essence, a service dependency is the need for a piece of data that is remote to the service. It
could be a configuration file stored in a file system, or a row for user data in a database, or a
computation performed by the back end. The way this remote data is accessed by the service
may vary. For the sake of simplicity, let's assume all remote data or computation is provided by a
serving back end via RPCs (remote procedure calls).
As just seen, dependency cycles among systems can make it virtually impossible to recover after
an outage. The outage of a critical dependency propagates to its dependents, so the natural place
to begin restoring the flow of data is the top of the dependency chain. With a dependency cycle,
however, there is no clear place to begin recovery efforts since every system is dependent on
another in the chain.
One way to identify cycles is to build a dependency graph representing all services in the system
and all RPCs exchanged among them. Begin building the graph by putting each service on a
node of the graph and drawing directed edges to represent the outgoing RPCs. Once all services
are placed in the graph, the existing dependency cycles can be identified using common
algorithms such as finding a topological sorting via a depth-first search. If no cycles are found,
that means the services' dependencies can be represented by a DAG (directed acyclic graph).
What happens when a cycle is found? Sometimes, it's possible to remove a cycle by inverting the
dependency, as shown in figure 2. One example is a notification system where the senders notify
the controllers about new data, and the controller then pulls data from the senders. The cycle here
can be easily removed by allowing the senders only to push data into the controller. Cycle
removal could also be accomplished by splitting the functionality across two nodes—for
example, by moving the new data notification to a third system.
Some dependencies are intrinsically cyclic and may not be removed. Replicated services may
periodically query their replicas in order to reinforce data synchronization and integrity.3 Since
all replicas represent a single service, this would be represented as a self-dependency cycle in the
graph. It's usually okay to allow self-dependencies as long as they do not prevent the isolated
bootstrapping of the system and can properly recover from a global outage.
In some environments, you can derive great benefit from just understanding the existing
dependency graph. In others, determining the existing state is not sufficient; mechanisms are
needed for preventing new undesirable dependencies. The two approaches examined here,
dependency tracking and dependency control, have different characteristics:
• Tracking dependencies is a passive approach. You use logging and monitoring to record
which services contact each other, then look back at that data in the future. You can understand
the dependencies by creating data structures that can be queried efficiently or by representing the
relationships visually.
• Controlling dependencies is an active approach. There are several points during design and
implementation where you can identify and avoid an undesirable dependency. Additionally, you
can prevent connections from being made while the code is running in production. If you wait
until the dependency has already been used and monitored, it will be too late to prevent the
issues it may cause.
These approaches overlap (e.g., data collected during dependency control can certainly be used
for tracking), but let's look at them separately.
Dependency tracking
Initially, dependency tracking often takes the form of information stored in engineers' heads and
visualized in whiteboard drawings. This is sufficient for smaller environments, but as the system
becomes more complex, the map of services becomes too complicated for any one person to
memorize. Engineers may be surprised by an outage caused by an unexpected dependency, or
they may not be able to reason about how to move a service and its associated back ends from
one data center to another. At this stage, organizations begin to consider programmatically
generated views of the system.
Different environments may use different ways of collecting information about how services are
interconnected. In some, a firewall or network device might record logs of which services are
contacting each other, and these logs can be mined for dependency data. Alternatively, a set of
services built on a common framework might export standard monitoring metrics about every
connection; or distributed tracing might be used to expose the paths a request takes through the
system, highlighting the connections.
You can aggregate whatever sources of information are available to you and create a dependency
graph, processing the data into a common structure and optimizing it for running queries over it.
From there, you can use algorithms on the graph to check whether it is a DAG, visualize it using
software such as Graphviz and Vizceral, or expose information for each service, perhaps using a
standard dashboard with a page for each service.
By continually monitoring traffic between systems and immediately integrating it into the graph,
new dependencies may be seen shortly after they reach production. Even so, the information is
available only after the new dependency has been created and is already in use. This is sufficient
for dependency tracking, where you want to describe the interconnections of an existing system
and become aware of new ones. Preventing the dependency, however, requires
dependency control.
Dependency control
Just like dependency tracking, dependency control typically starts as a manual process using
information stored in engineers' heads. Developers might include a list of proposed back ends in
all design documentation and depend on their colleagues' knowledge of the existing systems to
flag dangers. Again, this may be enough for a smaller environment. As services are born, grow,
change, and are deprecated, the data can quickly become stale or unwieldy. Dependency control
is most effective if enforced programmatically, and there are several points to consider in adding
it.
Although the owner of a server may want to control who its clients are for reasons such as
capacity planning or security, bad dependencies are much more likely to affect the client's SLO.
Because the client requires some functionality or data from the server for its own functionality or
performance, it needs to be prepared for server-side outages. The server, on the other hand, is
unlikely to notice an outage of one of its clients.
One approach to dependency control is to analyze the client's code and restrict dependencies at
build time. The behavior of the binary, however, will be influenced by the configuration and
environment it receives. Identical binaries might have very different dependencies in different
situations, and the existence of code inside a binary is not a reasonable predictor for whether that
binary has a dependency on another service. If a standard mechanism is used for specifying back
ends or connection types—for example, if all back ends are provided in configuration and not in
code—this might be an area worth exploring.
There are several options for runtime enforcement. Just as with dependency tracking, existing
infrastructure could be repurposed for dependency control. If all interservice connections pass
through a firewall, network device, load balancer, or service mesh, those infrastructure services
could be instrumented to maintain a list of acceptable dependencies and drop or deny any
requests that don't match the list. Silently dropping requests at a point between the client and
server may complicate debugging, though. A request that is dropped for being an unapproved
dependency may be indistinguishable from a failure of the server or the intermediate device: the
connections may seem to just disappear.
Another option is to use a dedicated external dependency-control service that the client can query
before allowing each new back-end connection. This kind of external system has the
disadvantage of adding latency since it requires extra requests to allow or deny each back end.
And, of course, the dependency-control service itself becomes a dependency of the service.
Authorizing RPCs
The dependency-control policy consists of an ACL (access control list) of the RPC names
expected to be initiated by a service. For performance reasons, the policy is serialized and loaded
by the service during startup. If the policy is invalid (because of syntax errors or data corruption),
it's not used and the dependency control isn't activated. If the policy is correct, it becomes active,
and all outgoing RPCs are matched against it. If an RPC is fired but isn't present in the policy, it
will be flagged as rejected. Rejected RPCs are reported via monitoring so that service owners can
audit them and decide on the correct course of action: remove the RPC from the binary if it's not
a desired dependency or add it to the ACL if it's indeed a necessary new dependency.
5.6 CHALLENGES WITH MICRO SERVICES
Design
Compared to monolithic apps, organizations face increased complexity when designing
microservices. Using microservices for the first time, you might struggle to determine:
Designing microservices requires creating them within a bounded context. Therefore, each
microservice should clarify, encapsulate, and define a specific responsibility.
To do this for each responsibility/function, developers usually use a data-centric view when
modeling a domain. This approach raises its own challenge—without logic, the data is
nonsensical.
Security
Microservices are often deployed across multi-cloud environments, resulting in increased risk
and loss of control and visibility of application components—resulting in additional vulnerable
points. Compounding the challenge, each microservice communicates with others via
various infrastructure layers, making it even harder to test for these vulnerabilities.
Data security within a microservices-based framework is also a prominent concern. As such, data
within such a framework remains distributed, making it a tricky exercise to maintain
the confidentiality, integrity, and privacy of user data.
Due to its distributed framework, setting up access controls and administering secured
authentication to individual services poses not only a technical challenge but also increases the
attack surface substantially.
Testing
The testing phase of any software development lifecycle (SDLC) is increasingly complex for
microservices-based applications. Given the standalone nature of each microservice, you have to
test individual services independently.
Exacerbating this complexity, development teams also have to factor in integrating services and
their interdependencies in test plans.
Increased operational complexity
Each microservice’s team is usually tasked with deciding the technology to use and manage it.
As each service should be deployed and operated independently, maintaining operations may
open a can of worms for those who are not prepared.
Communication
Independently deployed microservices act as miniature standalone applications that
communicate with each other. To achieve this, you have to configure infrastructure layers that
enable resource sharing across services.
• Increased latency
• Reduced speed of calls across different services
In this situation, you’ve got a non-optimized application with a slow response time.
When not to use microservices
Every organization shifting to a new framework should perform thorough due diligence to ensure
it’s the right fit.
When exploring microservices, these three situations will always help you decide when to skip
the microservice architecture for your chosen application.
Your defined domain is unclear/uncertain
Recall that you create microservices within a bounded context. Therefore, if it is logically
complex to break down your business requirements into specific domains, it will be equally
difficult for you to create adequately sized microservices.
Add to that the challenge of designing a proper means of communication among different
services—this complexity is likely too much for you to realize maximum benefits in
microservices.
Also, consider the future. If you’re not certain that your application’s domain will remain the
same over the coming years, it’s wise not to use a microservices-oriented approach.
• Employs automation
• Reduces cost and effort
• Brings operational efficiency
Carry out your due diligence to verify if transitioning to a microservices framework actually
helps achieve these goals. No organization would like to add up complexities and effort just to
adopt a culture without gaining improved efficiency.
When your application size does not justify the need to split it into many smaller components,
using a microservices framework may not be ideal. There’s no need to further break down
applications that are already small enough as-is.
5.7 SOA VS MICROSERVICE
Many of the chief characteristics of SOA and micro services are similar. Both involve a cloud or
hybrid cloud environment for developing and running applications, are designed to combine
multiple services necessary for creating and using applications, and each effectively breaks up
large, complicated applications into smaller pieces that are more flexible to arrange and deploy.
Because both micro services and SOA function in cloud settings, each can scale to meet the
modern demands of big data size and speeds.
Nevertheless, there are many differences between SOA and micro services that determine the use
case each is suitable for:
Micro services SOA
Designed to host services which can Designed to share resources
Architecture
function independently across services
Typically does not involve component Frequently involves component
Component sharing
sharing sharing
Granularity Fine-grained services Larger, more modular services
Each service can have an independent Involves sharing data storage
Data storage
data storage between services
Common governance protocols
Governance Requires collaboration between teams
across teams
Better for smaller and web-based
Size and scope Better for large scale integrations
applications
Communication Communicates through an API layer Communicates through an ESB
Coupling and
Relies on bounded context for coupling Relies on sharing resources
cohesion
Uses protocols like SOAP and
Remote services Uses REST and JMS
AMQP
Deployment Quick and easy deployment Less flexibility in deployment
Architecture
Microservices architecture is based on smaller, fine-grained services that are focused on a single
purpose and can function independently of one another — but interact to support the same
application. Consequently, microservices is architected to share as few service resources as
possible. Since SOA has larger, more modular services that are not independent of one another,
it’s architected to share resources as much as possible.
Component sharing
The independence of microservices minimizes the need to share components and makes the
services more resistant to failure. Additionally, the relative lack of component sharing enables
developers to easily deploy newer versions, and scale individual services much faster than with
SOA.
On the other hand, component sharing is much more common in SOA. In particular, services
share access to an ESB. Thus, if there are issues with one service in relation to the ESB, it can
compromise the effectiveness of the other connected services
Granularity
A SOA’s services are large, with some of the modular services resembling monolithic
applications. Due to each service’s capability to scale, SOAs typically have a wider range of
focus.
The more granular nature of microservices means that individual services excel in performing a
single specific task. Combining those tasks results in a single application.
Data storage
With microservices, the individual services generally have their own data storage. With SOA,
almost all of the services share the same data storage units.
Sharing the same data storage enables SOA services to reuse shared data. This capability is
useful for maximizing data’s value by deploying the same data or applications between business
units. However, this capability also results in tight coupling and an interdependence between
services.
Governance
Because SOA is based on the notion of sharing resources, it employs common data governance
mechanisms and standards across all services.
The independence of the services in microservices does not enable uniform data governance
mechanisms. Governance is much more relaxed with this approach, as individuals deploying
microservices have the freedom to choose what governance measures each service follows —
resulting in greater collaboration between teams.Download The Definitive Guide
tGovernance now.
Communication
SOA communication is traditionally handled by an ESB, which provides the medium by which
services “talk” to each other. However, using an ESB can slow the communication of services in
SOA. Microservices relies on simpler messaging systems, like APIs which are language agnostic
and enable quicker communication.
Remote services
SOA and micro services use different protocols for accessing remote services. The main remote
access protocols for SOA include Simple Object Access Protocol (SOAP) and messaging like
Advanced Messaging Queuing Protocol (AMQP) and Microsoft Messaging Queuing (MSMQ).
The most common protocols for micro services are Representational State Transfers (REST) and
simple messaging such as Java Messaging Service (JMS). REST protocols are frequently used
with APIs. The protocols for micro services are more homogenous than those for SOA, which
are typically used for heterogeneous interoperability.
Deployment
Ease of deployment is another major difference between micro services and SOA. Since the
services in micro services are smaller and largely independent of one another, they are deployed
much more quickly and easily than those in SOA. These factors also make the services in micro
services easier to build.
5.8 MICROSERVICE AND API
For example, if you consider an e-commerce application, then it will have mainly 3 functionalities.
The functionalities could be:
Now, before microservices came into the picture, monolithic architecture was used.
Monolithic Architecture
Monolithic architecture is an architectural style in which all the functionalities or the required
components would be inside one big block. So, if you build the above application, using the
monolithic style, then the architecture would look as below:
As you can refer from the above image, all the components of the application would reside in a
single area. But, there are few challenges of the monolithic architecture because of
which Microservices has become so popular in the market. So, if we refactor this application to
Microservices, then there would be three services (Customer Service, Cart Service, and Product
Service
Now, before I tell you how can we refactor this application into Microservices, next in this article
on Microservices vs API, let me give you an insight about APIs’.
Application Program Interface or most commonly known as APIs’ is a way through which you
can make sure two or more applications communicate with each other to process the client request.
So, you can understand APIS’ as a point of contact, through which all the services communicate
with each other to process the client’s request and send the response.
Now, while building and using applications, we generally do CRUD operations. When I say CRUD
operations, I mean that we create a resource, read a resource, update a resource and delete a
resource. So, APIs’ are generally developed by using the RESTful style, and these methods are
nothing but the methods of HTTP.
HTTP Methods
The methods associated with the HTTP actions are, as you can see in the below image:
The above methods help us standardize a way in which actions will be performed on various
applications having different interfaces. Also, with the help of these methods, you as a developer
can easily understand the inference of the actions taken across the different interfaces.
So, now that, you know what are APIs’, next in this article on Microservices vs APIs’, let us
understand where are APIs’ used in Microservices.
Consider a scenario, where you have built the above-considered e-commerce application using
Microservices. Them you will basically see three services, i.e. the customer service, cart service,
and products service. Now, how do you think these services communicate with each other to
process the client’s request?
Well, that is through the APIs’. So, each of these microservices will have their own APIs’ to
communicate with the other services. Refer to the below image:
Now, even if one microservice, does not work, then the application will not go down. Instead, only
that particular feature will not be working, and once it starts working, APIs’ can process the request
again and send the required response, back to the client.
Alright, so now that you know about Microservices and API, let us next look into the differences
between Microservices and APIs’.
Microservices vs API
Microservices API
An architectural style through which, you can A set of procedures and functions which allow
build applications in the form of small the consumer to use the underlying service of
autonomous services. an application.
Also, from the above example, it must be clear to you that APIs’ are a part of microservices and
thus help these services in communicating with each other. However, while communicating with
the other services, each service can have its own CRUD operations to store the relevant data in its
database.
Not only this but while performing CRUD operations, APIs’ generally accept and return
parameters based on the request sent by the user. With this folks, we come to an end to this article
on Microservices vs API. I hope you have understood what are microservices and APIs’ and how
are APIs’ used in microservices.
Architecture
This reference architecture shows Python Flask and Redis microservices deployed as Docker
containers in a Kubernetes cluster in Oracle Cloud Infrastructure. The containers pull Docker
images from Oracle Cloud Infrastructure Registry.
The following diagram illustrates this reference architecture.
Recommendations
Your requirements might differ from the architecture described here. Use the following
recommendations as a starting point.
• VCN
When you create a VCN, determine the number of CIDR blocks required and the size of
each block based on the number of resources that you plan to attach to subnets in the
VCN. Use CIDR blocks that are within the standard private IP address space.
Select CIDR blocks that don't overlap with any other network (in Oracle Cloud
Infrastructure, your on-premises data center, or another cloud provider) to which you
intend to set up private connections.
After you create a VCN, you can change, add, and remove its CIDR blocks.
When you design the subnets, consider your traffic flow and security requirements.
Attach all the resources within a specific tier or role to the same subnet, which can serve
as a security boundary.
Use regional subnets.
For simplicity, this architecture uses a public subnet to host Container Engine for
Kubernetes. You can also use a private subnet. In that case, use a NAT gateway to allow
access to the public internet from the cluster.
• Container Engine for Kubernetes
In this architecture, the worker nodes use the VM.Standard2.1 shape and they run on
Oracle Linux. Two worker nodes are used to host two different microservices, but you
can create up to 1000 nodes on each cluster.
• Registry
We use Oracle Cloud Infrastructure Registry as a private Docker registry for internal use,
pushing Docker images to and pulling them from the Registry. You can also use it as a
public Docker registry, enabling any user with internet access and the appropriate URL to
pull images from public repositories in the registry.
Considerations
• Scalability
You can scale out your application by updating the number of worker nodes in the
Kubernetes cluster, depending on the load. Similarly, you can scale in by reducing the
number of worker nodes in the cluster.
• Application availability
Fault domains provide the best resilience within a single availability domain. You can
also deploy instances or nodes that perform the same tasks in multiple availability
domains. This design removes a single point of failure by introducing redundancy.
• Manageability
This architecture uses two microservices. One is a Python Flask microservice, a simple
web application that performs CRUD operations. The other microservice is a Redis in-
memory database. The Python-Flask microservice communicates with the Redis
microservice to retrieve the data.
• Security
Use policies that restrict who can access which Oracle Cloud Infrastructure resources that
your company has and how.
Container Engine for Kubernetes is integrated with Oracle Cloud Infrastructure Identity
and Access Management (IAM). IAM provides easy authentication with native Oracle
Cloud Infrastructure identity functionality.
Deploy
The code required to deploy this reference architecture is available in GitHub. You can pull the
code into Oracle Cloud Infrastructure Resource Manager with a single click, create the stack, and
deploy it. Alternatively, download the code from GitHub to your computer, customize the code,
and deploy the architecture by using the Terraform CLI.
• Deploy by using Oracle Cloud Infrastructure Resource Manager:
1. Click
If you aren't already signed in, enter the tenancy and user credentials.
2. Review and accept the terms and conditions.
3. Select the region where you want to deploy the stack.
4. Follow the on-screen prompts and instructions to create the stack.
5. After creating the stack, click Terraform Actions, and select Plan.
6. Wait for the job to be completed, and review the plan.
To make any changes, return to the Stack Details page, click Edit Stack, and
make the required changes. Then, run the Plan action again.
7. If no further changes are necessary, return to the Stack Details page,
click Terraform Actions, and select Apply.
• Deploy by using the Terraform CLI:
1. Go to GitHub.
2. Download or clone the code to your local computer.
3. Follow the instructions in README.md.
5.10 REASON FOR HAVING DEVOPS
DevOps is no more than a set of processes that coordinate to unify development teams and
processes to complement software development. The main reason behind DevOps' popularity is
that it allows enterprises to create and improve products at a faster pace than traditional software
development methods.
Devops Popularity
According to the Previous survey, the implementation rate has increased significantly.
In 2016, 66 % of global organizations had adopted self-development, 19 percent had not adopted
DevOps, and 15 percent had not yet decided.
As of 2017, 74 percent of global organizations adopted DevOps, 16 percent did not adopt
DevOps, and 10 percent were not decided.
4. Greater Competencies
High efficiency helps accelerate development and makes it less prone to errors. There are ways
to automate DevOps tasks. Continuous integration servers automate the code testing process,
reducing the amount of manual work required. This means that software engineers can focus on
completing tasks that can not be automated.
Parallel workflows can be integrated into the continuous delivery chain to avoid delays; one
more team is expected to complete its work.
DevOps is a set of practices that works to automate and integrate the processes between
software development and IT teams, so they can build, test, and release software faster and
more reliably.
The term DevOps was formed by combining the words “development” and “operations” and
signifies a cultural shift that bridges the gap between development and operation teams,
which historically functioned in siloes.
The DevOps lifecycle consists of six phases, representing the processes, capabilities, and tools
needed for development on the left side of the loop, and the processes, capabilities, and tools
needed for operations on the right side of the loop. Throughout each phase, teams collaborate
and communicate to maintain alignment, velocity, and quality. The DevOps lifecycle includes
phases to plan, build, continuously integrate and deploy (CI/CD), monitor, operate, and respond
to continuous feedback.
Atlassian helps teams at each stage of the DevOps lifecycle by providing an open toolchain and
guidance on best practices. With Jira as the backbone, teams can choose to use Atlassian
products, or bring their favorite products to the open toolchain. The Atlassian ecosystem offers a
robust array of integrations and add-ons, allowing teams to customize their toolchain to meet
their needs.
he concept of DevOps emerged out of a discussion between Andrew Clay and Patrick Debois
in 2008. They were concerned about the drawbacks of Agile and wanted to come up with
something better. The idea slowly began to spread and after the DevOpsDays event held in
Belgium in 2009, it became quite a buzzword.
5.13 CONCEPTS AND TERMINOLOGY IN DEVOPS
DevOps principles
• Culture. ...
• Automation of processes. ...
• Measurement of KPIs (Key Performance Indicators) ...
• Sharing. ...
• Agile planning. ...
• Continuous development. ...
• Continuous automated testing. ...
• Continuous integration and continuous delivery (CI/CD)
The most important DevOps terms to know today include:
• Agile. Used in the DevOps world to describe infrastructure, processes or tools that are adaptable
and scalable. ...
• Continuous delivery. ...
• Continuous integration. ...
• Immutable infrastructure. ...
• Infrastructure-as-Code. ...
• Microservices. ...
• Serverless computing.
DevOps is a term that reflects what happens when seeming disparate concepts are turned into a
portmanteau. Combining developers and operations into one concept creates a new dynamic that
changes the way people think about IT and the role of the developer in the organization.
Our research shows there are really six that are most important to consider:
• Collaboration
• Automation
• Continuous integration
• Continuous testing
• Continuous delivery
• Continuous monitoring
Developers and operations have historically been separate organizations in IT. They have been
separated due in many respects to the constraints of enterprise systems practices and the shift
from waterfall to agile development processes. Before any app can be put into production it
needs to be configured so it performs as expected by the user. In production, the app and the
systems that support it need monitoring. Developers may create the app, but it is up to the
systems team to often manage hotspots, unusual spikes and transactions across a distributed
infrastructure.
But more than ever, developers and operations need to have shared practices. Efficiency matters
but the greater need is for app development. Apps needs to be designed faster, tested and
deployed across mobile and web platforms.
DevOps has lots to offer in this complex new world. It offers a process that can be put into place
and repeated without distracting from other work and a person’s personal life.
But it also offers impediments. “Navigating DevOps” is an ebook New Relic published that
covers the six capabilities of DevOps to help companies get a grip on what they want to
accomplish. These points adapted from the book can help offer some perspective on ways to
approach the DevOps topic:
1. Collaboration
Instead of pointing fingers at each other, development and IT operations work together (no,
really). While the disconnect between these two groups created the impetus for its creation,
DevOps extends far beyond the IT organization, because the need for collaboration extends to
everyone with a stake in the delivery of software. As Laurie Wurster et al. explained in a recent
Gartner report: “Successful DevOps requires business, development, QA, and operations
organizations to coordinate and play significant roles at different phases of the application
lifecycle. She further said:
2. Automation
DevOps relies heavily on automation—and that means you need tools. Tools you build. Tools
you buy. Open source tools. Proprietary tools. And those tools are not just scattered around the
lab willy-nilly: DevOps relies on toolchains to automate large parts of the end-to-end software
development and deployment process.
3. Continuous Integration
The continuous integration principle of agile development has a cultural implication for the
development group. Forcing developers to integrate their work with other developers
frequently—at least daily—exposes integration issues and conflicts much earlier than is the case
with waterfall development. However, to achieve this benefit, developers have to communicate
with each other much more frequently—something that runs counter to the image of solitary
genius coders working for weeks or months on a module before they are “ready” to send it out
into the world. That seed of open, frequent communication blooms in DevOps.
4. Continuous Testing
The testing piece of DevOps is easy to overlook—until you get burned. As one industry
expert puts it, “The cost of quality is the cost of failure.” While continuous integration and
delivery get the lion’s share of the coverage, continuous testing is quietly finding its place as an
equally critical piece of DevOps.
5. Continuous Delivery
In the words of one commentator, “continuous delivery is nothing but taking this concept of
continuous integration to the next step.” Instead of ending at the door of the development lab,
continuous integration in DevOps extends to the entire release chain, including QA and
operations. The result is that individual releases are far less complex and come out much more
frequently.
6. Continuous Monitoring
Given the sheer number of releases, there’s no way to implement the kind of rigorous pre-release
testing that characterizes waterfall development. Therefore, in a DevOps environment, failures
must be found and fixed in real time. How do you do that? A big part is continuous monitoring.
According to one pundit, the goals of continuous monitoring are to quickly determine when a
service is unavailable, understand the underlying causes, and most importantly, apply these
learnings to anticipate problems before they occur. In fact, some monitoring experts advocate
that the definition of a service must include monitoring—they see it as integral to service
delivery.
5.15 LIFE CYCLE OF DEVOPS
DevOps defines an agile relationship between operations and Development. It is a process that is
practiced by the development team and operational engineers together from beginning to the final
stage of the product.
Learning DevOps is not complete without understanding the DevOps lifecycle phases. The
DevOps lifecycle includes seven phases as given below:
1) Continuous Development
This phase involves the planning and coding of the software. The vision of the project is decided
during the planning phase. And the developers begin developing the code for the application. There
are no DevOps tools that are required for planning, but there are several tools for maintaining the
code.
2) Continuous Integration
This stage is the heart of the entire DevOps lifecycle. It is a software development practice in
which the developers require to commit changes to the source code more frequently. This may be
on a daily or weekly basis. Then every commit is built, and this allows early detection of problems
if they are present. Building code is not only involved compilation, but it also includes unit testing,
integration testing, code review, and packaging.
The code supporting new functionality is continuously integrated with the existing code.
Therefore, there is continuous development of software. The updated code needs to be integrated
continuously and smoothly with the systems to reflect changes to the end-users.
Jenkins is a popular tool used in this phase. Whenever there is a change in the Git repository, then
Jenkins fetches the updated code and prepares a build of that code, which is an executable file in
the form of war or jar. Then this build is forwarded to the test server or the production server.
3) Continuous Testing
This phase, where the developed software is continuously testing for bugs. For constant testing,
automation testing tools such as TestNG, JUnit, Selenium, etc are used. These tools allow QAs
to test multiple code-bases thoroughly in parallel to ensure that there is no flaw in the functionality.
In this phase, Docker Containers can be used for simulating the test environment.
Selenium does the automation testing, and TestNG generates the reports. This entire testing phase
can automate with the help of a Continuous Integration tool called Jenkins.
Automation testing saves a lot of time and effort for executing the tests instead of doing this
manually. Apart from that, report generation is a big plus. The task of evaluating the test cases that
failed in a test suite gets simpler. Also, we can schedule the execution of the test cases at predefined
times. After testing, the code is continuously integrated with the existing code.
4) Continuous Monitoring
Monitoring is a phase that involves all the operational factors of the entire DevOps process, where
important information about the use of the software is recorded and carefully processed to find out
trends and identify problem areas. Usually, the monitoring is integrated within the operational
capabilities of the software application.
5) Continuous Feedback
The application development is consistently improved by analyzing the results from the operations
of the software. This is carried out by placing the critical phase of constant feedback between the
operations and the development of the next version of the current software application.
6) Continuous Deployment
In this phase, the code is deployed to the production servers. Also, it is essential to ensure that the
code is correctly used on all the servers.
The new code is deployed continuously, and configuration management tools play an essential
role in executing tasks frequently and quickly. Here are some popular tools which are used in this
phase, such as Chef, Puppet, Ansible, and SaltStack.
Containerization tools help to maintain consistency across the environments where the application
is tested, developed, and deployed. There is no chance of errors or failure in the production
environment as they package and replicate the same dependencies and packages used in the testing,
development, and staging environment. It makes the application easy to run on different
computers.
7) Continuous Operations
All DevOps operations are based on the continuity with complete automation of the release process
and allow the organization to accelerate the overall time to market continuingly.
It is clear from the discussion that continuity is the critical factor in the DevOps in removing steps
that often distract the development, take it longer to detect issues and produce a better version of
the product after several months. With DevOps, we can make any software product more efficient
and increase the overall count of interested customers in your product
Adopting DevOps allows you to streamline your software delivery lifecycle and to be able to
deliver better software faster. ... The reason why organizations are interested in adopting
DevOps is to streamline their software delivery lifecycle and to be able to deliver better software
faster
If you’re considering a move to a DevOps delivery model, here are six approaches I’ve found to
be critical for ensuring a successful DevOps adoption within an organization.
• Production failure rate: how often the software fails in production during a fixed period of time
• Mean time to recover: how long it takes an application in production to recover from a failure
• Average lead time: how long it takes for a new requirement to be built, tested, delivered, and
deployed into production
• Deployment speed: how fast you can deploy a new version of an application to a particular
environment (integration, test, staging, preproduction, or production environments)
• Deployment frequency: how often you deploy new release candidates to test, staging,
preproduction, and production environments
• Mean time to production: how long it takes when new code is committed into a code repository
for it to be deployed to production
There are many other metrics you can collect too, but avoid collecting vanity metrics that look
impressive but don’t tie to business benefit, as well as metrics that are easily gamed—meaning
they make your team look good but don’t actually contribute to business improvements, such as
the number of commits your team makes.
Once you’ve determined the metrics you wish to collect and have a baseline of where you
currently stand, set goals for each metric so the team knows what to strive for.
Most importantly, constantly share your DevOps goals, metrics, and progress with everyone
involved. Set up metrics dashboards that display current metrics and progress toward your goals.
Providing complete transparency is sometimes a difficult thing for teams to do, but it will foster
more effective communication and collaboration, breaking down barriers between the dev and
ops teams in the process.
4. Adopt Iteratively
When getting started, don’t try to boil the ocean with a complete, enterprisewide DevOps
initiative. Identify a pilot application, form a cross-functional DevOps team that includes dev,
test, and operations, examine your value stream to determine constraints and bottlenecks, and
create an initial deployment pipeline that addresses some of your process constraints. Measure
progress and success, wash, rinse, and repeat.
Generally, you should look at tackling your biggest value stream constraints first, as doing so
will have the largest business impact. Some of these constraints will be easy to resolve, while
others will take a significant amount of time to correct—and often a whole lot of convincing
others to change.
You’ll want to go through a few iterations to build confidence in the framework and the pilot
before you start expanding to other projects. Ensure you’re making progress against your metrics
before moving on and applying those lessons to other teams. Most importantly, make sure those
involved are influencers who can take the principles back to their respective teams; keeping all
your expertise locked up on your pilot won't help you expand to the enterprise effectively.
If you’re beginning your DevOps journey from inside a software development organization,
consider starting from the beginning of your delivery process and moving toward production.
Properly implementing branch management strategies and build automation is key to fast
feedback that will enable efficient downstream processes in the future.
Once sound build automation is in place, a more comprehensive continuous integration
capability that includes continuous testing is in order. Getting your continuous integration
process working effectively will allow you to begin shifting left your assurance activities over
time and speeding up delivery.
adoption of new techniques, better tools, and improved collaboration methods continue to be on
the rise in the DevOps universe. Enterprises today are looking for automation in the area of
continuous integration, continuous testing, and continuous delivery to facilitate their DevOps
adoption.
A typical DevOps process consists of 8 stages: plan, code, build, test, release, deploy, operate
and monitor. There is a plethora of tools available — open source and OEM solutions — that can
be used for each of these stages and some across various stages. There’s no single magical tool to
implement or facilitate DevOps. As organizations embark on their DevOps journey, they will
have to research, evaluate and try various tools for various functionalities. To make it simple for
DevOps teams, we have put together a list of 10 DevOps tools that can be used to achieve a
successful DevOps transformation.
DevOps
stages
Read on to see our pick of 10 tools. We hope you benefit from them in your DevOps journey.
2. Gradle Build
3. Selenium Test
Build tools are programs that automate the creation of executable applications from source
code. Building incorporates compiling, linking and packaging the code into a usable or
executable form. In small projects, developers will often manually invoke the build process
Build automation is the process of automating the retrieval of source code, compiling it into
binary code, executing automated tests, and publishing it into a shared, centralized repository.
Build automation is critical to successful DevOps processes. ... That's why build automation is so
important in DevOps
The Build Promotion capability lets you automatically promote successful builds across the
pipeline in
Automic Continuous Delivery Director
. You can use this capability to promote successful builds across release phases. Application
build numbers are included in, and can be automatically tracked across, the lifecycle of a release.
As a business manager you spend the working day focusing on everything from sales figures and
customer satisfaction to employee experience and product range. You’re probably also keeping a
close eye on the online sales conversion rate, delivery process, and accompanying marketing
costs. But, are you taking enough interest in the value, quality and development of digital
services?
There are many different types of quality: speed, reliability, flawlessness and scalability for
different devices. Potential customers go through their decision making process as they get to
know the service providers. For this reason the development of digital services becomes
particularly important when the product itself is a digital service.
With DevOps practices the process linking the development environment to the production
environment can be automated.
If everything is automated doesn't that reduce costs? Yes, in the long run. Developing
automation takes time and money, but as manual work is automated the re-loops of various
activities become cheaper.
The customer starts to benefit from automation as the project becomes more transparent,
changes are deployed to the production, and it is known which features are being used by
the end users. The development team can focus on their work, challenges can be fixed quickly,
and releasing a fixed version does not require additional work.
Theme: Business-oriented goal for the product. The business owner owns and prioritizes the
theme with the product owner
Epic: Large chunk of work that enables the feasibility (S-XL) and viability (business value) of a
clearly defined value generating functionality to be evaluated. The product owner owns and
prioritizes the epic with the business owner
Story: Something a user can accomplish with clearly defined “Definition of done” (DoD) and
effort (story points). The product owner owns and prioritizes the story with the development
team
Task: A single milestone in getting the story done with time as an estimate. The task is owned
and prioritized by the development team according to agreed methodology within the team.
These categorizations relate to the decision-making process because they give the business
owner oversight of what the development team is doing. This means they can prioritize the
development theme and the epics beneath it while retaining the freedom to quickly change
direction if required. If development starts heading in the wrong direction wasteful tasks and
stories can be easily abandoned and work reprioritized.
DevOps also allows a certain degree of transparency in costs. The best work focuses on
maximizing customer value and automating unnecessary manual tasks, which relate to improving
business results. In this case the business owner and the product owner spend money wisely and
the results matter. Measuring customer value is difficult, but it is easy, for example, to look at
inbound money and conversions in an e-commerce store and mirror them in the amount of
money spent on development.
Changing culture
The change will not be managed. The change will be made. One of the barriers to successful
transformation comes when top management entrusts a single person with the task of changing
the way the organization does things. The management itself then follows the change through
steering group meetings, management group meetings, and powerpoint presentations. This
approach will probably not lead to best success.
Instead, management should use sprints in their own work. This would give them first-hand
experience of working in the newly adapted ways. It would clarify in their own minds what is
being asked of the organization as a whole and provide them with direct experience of the
benefits of a systematic, goal-oriented, and structured way of working. Of course, it's not
realistic that all senior management jobs are planned for a week or two, but some are and can be
treated as sprints.
One form of cultural change is early failure. It's the best way to save a lot of money on
development. When concepts are validated often and at an early stage only valued features are
brought up to the development backlog. However, people often rely too much on their own ideas
and insights and are unwilling to show unfinished solutions to end users, even though it would be
beneficial and effective. At this stage, the lowest-cost development ideas and the service to be
developed are truly relevant to the customer's needs.
DevOps enables Agile development. Full time, continuous value creation can only be achieved
when time and energy is not wasted on manual work steps or on problems with tooling. And to
fully realize that idea the management needs to lead from the front, and practice what they
preach. To find out more, read this blog "Agile vs. DevOps: the grand debate."