0% found this document useful (0 votes)
2 views14 pages

Module 04

The document discusses hybrid multi-cloud environments, which integrate on-premise private clouds with public clouds, allowing businesses to scale applications and workloads efficiently. It highlights use cases in industries like flower delivery and airlines, showcasing how hybrid multi-cloud strategies enable better resource management and modernization. Additionally, it covers microservices architecture, serverless computing, and cloud-native applications, emphasizing their roles in improving application development and operational efficiency.

Uploaded by

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

Module 04

The document discusses hybrid multi-cloud environments, which integrate on-premise private clouds with public clouds, allowing businesses to scale applications and workloads efficiently. It highlights use cases in industries like flower delivery and airlines, showcasing how hybrid multi-cloud strategies enable better resource management and modernization. Additionally, it covers microservices architecture, serverless computing, and cloud-native applications, emphasizing their roles in improving application development and operational efficiency.

Uploaded by

Shamima Chishty
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Module 04

# Hybrid Multicloud

Hybrid cloud, as we covered in the previous lesson, is a computing environment that connects
an organization's on-premise private cloud and third-party public cloud into a single
infrastructure for running the organization's applications. Multi-cloud is a cloud adoption
strategy that embraces a mix of cloud models from different service providers, public, private,
and managed, across infrastructure, platform, or software services. For example, a business
may consume email as a service from one provider, a CRM application from another, and
infrastructure from yet another provider. So essentially, a hybrid multi-cloud implies you are
able to leverage the best of cloud models and services across different service providers and
have your applications and workloads working seamlessly across multiple different clouds. In
this session, we will look at some use cases for why a business may want to use a hybrid multi-
cloud approach.
>> In this video, I want to touch on a few of those use cases for why a business may want to to
use hybrid or multi-cloud. Let's start with the basic one, cloud scaling.
Now, most of us are probably familiar with this. It's one of the main reasons for adopting the
cloud. Now let's say we have a flower delivery service that is able to hit a certain bottom line of
users. They have on premise infrastructure and it can hit a certain amount of user load. So
visualizing this here. Throughout a calendar year, you can imagine that their load maybe goes
up and down and responds to specific holidays. Now, to hit those peaks, they could scale up
their on premise architecture, but that's met with upfront costs and costs of upkeep. Now
instead, what they'll instead do is take advantage of cloud that allows them to scale up in
response to that load and then automatically deprovision resources when they no longer need
them. Now, this concept is kind of general to cloud computing, not just hybrid or multi-cloud.
But that brings me to my next topic, and here we're going to be talking about how it can be
used to build a composite cloud. So essentially this is going to be applications that are spread
across multiple cloud environments. So back to the flower delivery service. Let's say they have
on premise architecture that allows them to run three major components of their app. So let's
say they have the Web UI, they have some billing APIs, as well as a rewards framework. Now
let's say that this service is actually based in EU and their European customers are happy. But
for their North American or American customers, specifically around Veterans Day or
Thanksgiving, they're noticing that the system is bogging down. And so they decide to take
advantage of a hybrid cloud or multi-cloud architecture by composing their application across
multiple cloud environments. So, they'll take advantage of data centers in America and
essentially they've identified that although the rewards framework can stay on prem in their
European side, they want to move the billing and the UI capabilities over. So, they'll move just
those two to a cloud platform of their choice in a North American or American data center. This
kind of allows them to scale up portions in response to, say, American holidays while keeping
their EU portions individually scaled. So in this example, the flower delivery service is able to
take advantage of scaling at a global level by using the hybrid or multi-cloud architecture.
Next, let's talk about the airline or travel industry. So we can first start with an example of
modernization. Now, in the past we've seen that reservation systems may have been difficult to
work with or you might have had to call in. But almost all all the airline companies now have a
mobile application. So most of the time, and we've actually found that it's about, in general not
just in the travel industry, but 80% of all enterprise applications are actually still on prem. And
that's likely the case in this industry as well. So in this specific example, let's say they have a
reservation system that's running on prem, but to create new experiences for their end users,
let's say they've created a mobile application. That mobile app, of course, has a mobile backend
that's maybe running in a public cloud and that in turn works with the reservation service. So,
again, the mobile app can hit the mobile backend and that in turn works with the reservation
capabilities. So in this case they've modernized and new user experiences are possible. But let's
take that a step further. Now, a source for a lot of dissatisfaction for users is whenever their
flights are delayed. So when a flight is delayed, they may have to rebook new flights. The
solution is almost always the same. The traveler wants to get to his destination in the easiest
way possible. So what airline industries have been doing is taking advantage of the cloud to
create maybe a recommendation feature. So, it allows them to book new flights as soon as a
delay is recommended or as soon as a delay is incurred. And that's going to connect up to that
mobile back end service, allowing users to be able to book flights through their phone the
second a flight is delayed. This not only improves the bottom line for the airline industry, but
leads to happier users. So that's one way the modernization has been done. Next, let's take it
even a step further and talk about data and AI. For data and AI, the airline industry has been
taking advantage of lots of historical data. So over the decades that a company has been
around, let's say they have historical data of when unplanned maintenance has happened on
their airline. In fact, 30% of all delay time in the airline industry is actually when unplanned
maintenance happens. So by taking advantage of, let's say, machine learning or AI capabilities,
they could hook into all of the legacy data that they have, large volumes and connect them up
to machine learning and AI capabilities. This allows airline industries to take advantage of
predictive analytics and get insights before errors or before the unplanned maintenance ever
occurs. This again improves their bottom line, leading to happier users and a more efficient
airline industry.
Now, today we talked about four major use cases for hybrid and multi-cloud platforms. So
cloud scaling and composite cloud in the flower delivery service as well as modernize and data
and AI for the airline industry.
>> Another reason for adopting hybrid multi-cloud strategy is to prevent lock-in to a specific
vendor's cloud platform and having flexibility of being able to move work loads from one cloud
platform to another as the need arises. In the next session, we will understand what a
microservices architecture is, its features, benefits, and use cases.

# Microservices

Microservices architecture is an approach in which a single application is composed of many


loosely coupled and independently deployable smaller components or services. These services
typically have their own stack running on their own containers. They communicate with one
another over a combination of APIs, event streaming, and message brokers. For a business,
what this means is that application components can be developed and updated more efficiently
by multiple developers working independently. Teams can use different stacks and runtime
environments for different components. Components facing too much load can be scaled
independently, reducing the waste and cost associated with having to scale entire applications.
In this session, we'll look at how microservices have shaped application development and also
look at a use case that illustrates microservices in action.
>> The way developers work to build applications is changing. In the past, software was built as
large monolithic applications where a team of developers would take months to construct a
large application built on a common code base. These developers would write every part of the
application from start to finish. Now, after decades of software development, there are vast
amounts of code already out there that developers can use as the base of an application,
meaning they no longer have to create every line of code from scratch. Cloud development
platforms provide developers with an ecosystem of code that can be easily and securely
integrated into applications. Now, instead of building one huge application on one team,
developers break into small independent teams where they write smaller amounts of code
called microservices. Microservices break down large applications into their core functions. For
example, Search, Recommendations, Customer Ratings, or Product Catalogs. Each is developed
independently of one another, yet work together on the Cloud development platform to create
a functioning application. A container is the distribution method for each microservice, meaning
it delivers the code where it needs to go. Containers are plug-and-play, so if one microservice
isn't working for an application, developers can take it out and put in a different one without
disrupting how the rest of the app functions. Check out microservices in action with Ron:
Ron is a soccer fan who uses an online streaming media service called Dream Game. Last night,
he missed watching his team play their crucial semi-final match. Luckily, he can watch the
match tonight on Dream Game. When he logs in, he sees the most popular content among all
Dream Game users. After some searching, he finds the match he's looking for. What he would
really like is to find his game with one click. Luckily, the Dream Game development team is
using microservices to develop a better user experience for viewers like Ron. The first
microservice is a Content Catalog housing the millions of games that Dream Game offers. The
small team of developers organizes each piece of content with metadata that describes them.
This metadata feeds into a second microservice: the Search Function, which ensures that Ron's
search results are captured and compared to the Dream Game catalog. The third microservice,
Recommendations, captures data about the most popular content among all Dream Game
users. This is what generates the homepage that Ron saw when he first logged in. These three
microservices are all in their separate containers, ready to join the application. But before they
can work together, they have to find one another. They do this by using something called
Service Discovery, which creates a roadmap for these and many other microservices to
communicate. When microservices find each other, they communicate using an application
programming interface or an API. So when Ron searches for his favorite soccer team, the Search
microservice is communicating to the Content Catalog (in an API) about what Ron is looking for.
Now back to the goal at hand: to get Ron to his soccer game with just one click. The
development team working on the Recommendations microservice is updating the code,
adding an analytics algorithm. Using analytics, the Recommendations microservice will compare
Ron's viewing history and preferences to popular content among other users, including soccer
fans and viewers in Ron's geographical region and demographic. Since the developers didn't
need to create the code from scratch, they are able to deploy this new functionality in a matter
of days. These updates happen behind the scenes as the rest of the microservice containers
function normally. The next time Ron checks Dream Game, instead of just seeing the most
popular or newest content, he sees a personalized playlist that will continue to refine itself as
the system learns more about his viewing habits and preferences. The result: Ron finds his
favorite team's latest game right away. The microservice approach lets developers quickly
innovate applications in parallel and lets users like Ron focus on the things that really interest
them. And when those interests are changing and growing faster every day, microservices help
businesses keep up and grow with their customers.

# Serverless Computing

Serverless is an approach to computing that offloads responsibility for common infrastructure


management tasks such as scaling, scheduling, patching, and provisioning application stacks to
cloud providers allowing developers to focus their time and effort on the code and business
logic specific to their applications or process. Serverless doesn't mean there are no servers, only
that the management of the underlying physical or virtual servers is removed from their users.
The serverless computing environment allocates resources as needed for the applications.
Let's look at some key attributes that distinguish serverless computing from other compute
models. The serverless model requires no provisioning of servers, installation of application
stacks and software or operation of the infrastructure by the developer. Serverless computing
runs code only on-demand on a per request basis, scaling transparently with the number of
requests being served. Serverless enables end users to pay only for resources being used, never
paying for idle capacity, which is unlike virtual servers on the cloud, where end users pay for
VMs as long as they are running, even if idle. Effectively serverless abstracts the infrastructure
away from developers, code is executed as individual functions, where each function runs
inside a stateless container. No prior execution context is required to serve a request, and with
each new request, a new instance of the function is invoked.
Let's look at a scenario, you could, for example, have a serverless platform between the front
end of your website and your storage layer running individual functions, the serverless app
could be translating text files and storing it in a cloud-based storage service. Using the front end
of your website, you send text files to a serverless app. The app creates translations in different
languages and then stores these translated files in a Cloud Storage and sends you their links
back to you. Some of the key serverless computing services today include IBM Cloud functions,
which is based on Apache OpenWhisk, AWS Lambda and Microsoft Azure functions. It is
important to note that serverless may not be the best fit for all applications or scenarios. You
need to evaluate application characteristics and ensure that the application is aligned to
serverless architecture patterns. Applications that qualify for a serverless architecture include
some of the following characteristics, short-running stateless functions (seconds or minutes),
seasonal workloads with varying off peak and peaks, production volumetric data that shows too
much idle time, event-based processing or asynchronous request processing for implementing
use cases. Microservices that can be built as functions that are stateless.
Serverless architectures are well suited for use cases around, data and event processing, IoT,
microservices, and mobile back ends. Given its inherent and automatic scaling, rapid
provisioning and a pricing model that does not change for idle time, supporting microservices
architecture has become one of the most common use cases of serverless computing today.
Serverless is well suited to working with structured text, audio, image, and video data around
tasks such as data enrichment, transformation, validation, and cleansing, PDF processing, audio
normalization, thumbnail generation, and video transcoding. Parallel tasks such as data search
and processing and genome processing are also well suited to be run on a serverless runtime.
Serverless is also well suited for working with all sorts of data stream ingestions, including
business data streams, IoT sensor data, log data, and financial market data.
And finally, let's look at some challenges worth considering about serverless. Serverless
workloads are designed to scale up and down in response to workload. But for workloads
characterized by long-running processes, managing a traditional server environment might be
simpler and more cost effective. The serverless application architecture can be vendor
dependent, and so there is a potential for vendor lock-in, particularly involving platform
capabilities such as authentication, scaling, monitoring, or configuration management. Because
serverless architectures scale up and down in response to workload, they also sometimes need
to start up from zero to serve a new request. For certain applications, this delay isn't much of
an impact, but for something like a low latency financial application, this delay wouldn't be
acceptable.

# Cloud Native Applications

Simply put, a cloud native application is an application developed from the outset to to work
only in the cloud environment, or an existing app that has been refactored and reconfigured
with cloud native principles. A cloud native application consists of microservices working
together as a whole to comprise an application, yet each can be independently scaled and
iterated through automation and orchestration processes. These microservices are often
packaged in containers, which are executable units of software in which the application code is
packaged along with its libraries and dependencies so that it can be run from anywhere. The
independence enables frequent, iterative improvement of cloud native applications, without
disrupting the experience of end-users. Cloud native applications are unlike traditional, or
monolithic, applications, that are built out of one huge piece of software; applications that
tightly couple the user interface, business-logic layer, and data-layer.
Let’s take the example of how a cloud native application might be used on a travel website.
Each topic covered by the site—flights, hotels, cars, specials—is its own microservice. Each
microservice may roll out new features independent of the other microservices. Specials and
discounts can also scale out independently. While the travel site is presented to customers as a
whole, each microservice remains independent and can be scaled or updated as needed
without affecting other services. Whether creating a new cloud native application or
modernizing an existing application, developers adhere to a consistent set of development
principles: Follow the microservices architectural approach by breaking applications down to
single-function microservices. Rely on containers for maximum flexibility, scalability, and
portability. Adopt Agile methods that speed the creation and improvement process through
quick, iterative updates based on user feedback. In this session, we’ll take a closer look at the
key concepts of cloud native, its benefits, and use cases.
Hi. I'm Andrea Crawford and I'm with IBM Cloud. Today we're going to talk about cloud native
apps. In the heritage world, we have our lumpy, monolithic apps. And in the new world, we
have our microservices living on the cloud. If we take a look at this diagram here, we see we
have cloud infrastructure. This is your private, your public, and your enterprise infrastructure.
Cloud native apps apply to hybrid and multicloud situations. We also have our scheduling and
orchestration layer. This layer is all about control planes, like our kubernetes. We also have our
application and data services layer. This layer is all about backing services, and being able to
integrate our application code with existing services that may be available on other clouds, or
even on-premise. We have our application runtimes: these are what were traditionally, or
conventionally, known as middleware. And over here, well, that's where we have our cloud
native apps. This is the sweet spot right up here. So our application code is actually designed,
built, and delivered very differently for cloud native, than it would be for conventional,
monolithic, lumpy apps over here.
So let's talk a little bit about why cloud native apps can actually leverage benefits like: enabling
innovation, business agility, and most importantly from a technology perspective, the
commoditization of this solution stack over here. So as time has progressed and technologies
have matured and emerged, a lot of the services are actually being refactored lower down in
this stack. This means that core services are starting to have a lower center of gravity, freeing
up innovation at this level over here.
So, what are our use cases for when to build a cloud native app? *Everything*
Everything that lives in the cloud should have a cloud native app design and approach. This
means our application code needs to be instrumented with things like: standardized logging,
standardized events, and being able to match those logging and events to a standard catalog,
that multiple microservices and cloud native apps can use. The last thing we want to do is have
our development squads have to figure out what their log and event messages should be.
Let's standardize that, because we want to be able to commoditize that as well. We also need
to have things like distributed tracing. When we get over into the microservices world over here
(scheduling and orchestration layer), we have a lot of moving parts. This means we're going to
need to leverage services core to the system, like: load balancing, service discovery, and
routing. These are the kinds of things that are commoditized in this layer here, with things like
Istio, and with the emergence of newer projects, like Knative. And so, if we were to recognize
the benefits for cloud native apps and to sum it all up, we are all about enterprise and
engineering at scale.

# DevOps on the Cloud

Development teams need to design, develop, deliver, and run software as reliably and
efficiently as possible. Operations teams need to identify and resolve problems as soon as
possible by monitoring, predicting failure, managing the environment, and fixing issues.
Combining development and operations with the ability to monitor and analyze and optimize
bottlenecks gives us DevOps. A collaborative approach where business owners, and the
development, operations, and quality assurance teams collaborate to continuously deliver
software. A DevOps approach applies agile and lean thinking principles to all stakeholders in an
organization who develop, operate, or benefit from the business's software systems, including
customers, suppliers, partners. By extending lean principles across the software supply chain,
DevOps capabilities improve productivity through accelerated customer feedback cycles.
Unified measurements and collaboration across an enterprise, and reduced overhead,
duplication, and rework. Using the DevOps approach, developers can produce software in short
iterations on a continuous delivery schedule of new features and bug fixes in rapid cycles. And
businesses can seize market opportunities and reduce time to include customer feedback in
their products.
The DevOps process involves continuous delivery: which is about delivering small, well-
designed, high quality increments of software to customers.
Continuous integration: creating packaged builds of the code changes released as immutable
images. Where immutable implies that when modifications are needed, the entire component
is replaced with an upgraded version.
Continuous deployment: which involves progressing each new packaged build through the
deployment lifecycle as rapidly as possible.
Continuous monitoring with tools that help developers understand the performance and
availability of their applications even before they are deployed to production.
Delivery pipeline: which is an automated sequence of steps that involves the stages of ideation,
coding, building, deploying, managing, and continuous improvement, which loops back to the
ideation phase in the delivery pipeline.
While DevOps can apply to applications anywhere, there is especially a compelling case for
DevOps when it comes to cloud ready and cloud native applications. With its near limitless
compute power and available data and application services, cloud computing platforms come
with their own risks and challenges. DevOps tools, practices, and processes are helping tackle
some of the complexities and challenges posed by the cloud and allowing solutions to be
delivered quickly and reliably. Let's look at some core capabilities that DevOps provides to help
building and running applications in the cloud a lot more manageable. DevOps best practices
make it possible to programmatically provision servers, build middleware, install application
code, and fully automate the installation process in a way that is documented, repeatable,
verifiable, and traceable. Application deployments often involve considerable complexity. The
DevOps practices of continuous integration and continuous deployment help create a fully
automated deployment pipeline, which is important all through the application development
lifecycle. Cloud native applications form a complex distributed system with multiple moving
parts, independent tech stacks, and rapid release cycles. DevOps principles are essential to
define how people work together to build, deploy, and manage applications in a cloud native
approach. With the DevOps best practices of automated provisioning and continuous
deployment, developers, quality professionals, and other stakeholders can test in low cost
production-like test environments that were previously not available, enhancing both
productivity and quality. When systems are compromised or struggling to recover from natural
disasters, DevOps best practices make it possible to rebuild these systems quickly and reliably.
DevOps provides a powerful set of principles, practices, and tools to realize the full potential of
cloud native computing as well as for modernizing existing applications to leverage cloud
benefits.
# Harnessing the Power of DevOps on Cloud Platforms
Introduction:
Organizations strive to deliver software solutions swiftly, reliably, and efficiently in our ever-
evolving digital landscape. DevOps, a collaborative approach that unifies software development
and operations, has emerged as a significant change. This topic will explain the essence of
DevOps, explore its benefits when applied to cloud platforms, and provide real-world use cases
that demonstrate its transformative capabilities on popular cloud providers such as AWS,
Azure, GCP, and IBM Cloud.
What is DevOps?
DevOps is an approach that fosters collaboration between development and operations teams,
streamlining the entire software delivery lifecycle. By promoting a culture of collaboration,
automation, and continuous feedback, DevOps enables organizations to deliver software
products more efficiently and reliably.
The DevOps Process:
To better understand the DevOps process, let's explore its key components:
 Continuous Integration (CI): Developers integrate their code changes into a shared
repository frequently, ensuring early detection of integration issues. Version control
systems like Git and Subversion support this process.
 Continuous Delivery (CD): Continuous delivery ensures that code changes are always in
a state that can be released immediately. This state allows organizations to deploy
software anytime with minimal manual intervention. Tools like Jenkins and Bamboo
facilitate the automation of build, test, and deployment processes.
 Continuous Deployment (CDep): Continuous deployment takes automation further,
enabling organizations to automatically deploy software changes into production
environments after passing the necessary tests.
 Continuous Monitoring (CM): Continuous monitoring provides real-time insights into
application and infrastructure performance, allowing organizations to detect issues
promptly and take proactive measures. Tools like Prometheus and ELK Stack are
commonly used for monitoring in DevOps.
Benefits of DevOps on Cloud Platforms:
Implementing DevOps practices on cloud platforms offers several significant advantages:
 Scalability and Flexibility: Cloud platforms provide the scalability and flexibility required
for DevOps workflows. Organizations can leverage cloud resources to scale
infrastructure dynamically, accommodate varying workloads, and optimize resource
utilization based on demand.
 Rapid Provisioning and Deployment: DevOps on the cloud facilitates rapid provisioning
and deployment of infrastructure and applications. Cloud services offer pre-configured
environments, automated provisioning, and deployment pipelines, enabling faster time-
to-market and reducing manual effort.
 Cost Optimization: Cloud-based DevOps enables cost optimization by leveraging the
pay-as-you-go model. Organizations can scale resources up or down based on demand,
eliminating the need for upfront infrastructure investments, and reducing operational
costs.
 Collaboration and Team Efficiency: DevOps practices on the cloud foster collaboration
and enhance team efficiency. Cloud platforms provide centralized repositories, version
control systems, and collaboration tools that facilitate seamless communication and
shared code repositories, enabling effective collaboration across teams.
 Continuous Integration and Delivery: Cloud services seamlessly integrate with popular
DevOps tools, enabling continuous integration and delivery (CI/CD). This automation
streamlines build, test, and deployment processes, reducing errors and facilitating
faster, more reliable software releases.
DevOps Use Cases on Cloud Platforms
Let's explore real-world use cases that highlight the benefits of DevOps on different cloud
platforms:
 DevOps on Amazon Web Services (AWS): Organizations leveraging DevOps on AWS can
take advantage of services such as AWS CodePipeline for CI/CD pipelines, AWS Elastic
Beanstalk for simplified application deployment, and AWS Lambda for serverless
computing. This use case enables seamless scalability, efficient resource management,
and rapid delivery of software solutions.
 DevOps on Microsoft Azure: DevOps on Azure empowers organizations with services
like Azure DevOps for collaboration, Azure Kubernetes Service (AKS) for container
orchestration, and Azure Functions for serverless computing. Organizations can achieve
automated deployments, efficient scaling, and improved application performance by
leveraging these services.
 DevOps on Google Cloud Platform (GCP): DevOps on GCP offers services such as Cloud
Build for CI/CD pipelines, Google Kubernetes Engine (GKE) for container management,
and Cloud Functions for serverless computing. This use case enables organizations to
automate infrastructure provisioning, manage complex containerized applications
effectively and optimize resource utilization.
 DevOps on IBM Cloud: DevOps on IBM Cloud provides services like IBM Continuous
Delivery for automated deployments, IBM Kubernetes Service (IKS) for container
orchestration, and IBM Functions for serverless computing. These use cases allow
organizations to achieve streamlined software delivery, efficient infrastructure
management, and seamless scaling on the IBM Cloud platform.
Conclusion
When combined with cloud platforms, DevOps empowers organizations to streamline software
delivery, enhance collaboration, and leverage scalable resources. By implementing DevOps on
popular cloud providers such as AWS, Azure, GCP, and IBM Cloud, organizations can accelerate
their software delivery cycles, reduce time-to-market, and adapt to changing business needs
effectively. It is a winning combination that enables organizations to stay competitive in today's
fast-paced digital landscape.

# Application Modernization

Many organizations have huge investments in existing applications that are often siloed in
legacy systems and are very difficult and expensive to update and maintain. Modernizing these
applications can unlock great benefits for these organizations such as accelerating their digital
transformations, enabling them to take advantage of new technologies and services, and
becoming more responsive to their customers' needs and changing market dynamics. Cloud
computing is one of the three main ingredients in Application Modernization. In the rest of this
session we will see how, and what else Application Modernization entails.
Hi, I'm Eric Minick, with IBM Cloud, and I want to talk about application modernization and
three huge transformations that have been going on together. We've got three things going on,
they're interrelated, and this is what we're seeing, this change in how we're doing architecture,
infrastructure, and our ways of working - how we deliver. And if we go back in time a little bit,
we saw applications that were very monolithic, they were running on physical servers and we
used waterfall style development where we'd have long plans and we'd say okay, this is gonna
be our planning phase, our development phase, our testing phase, and we could plan out a year
as a project. And that's really what we've gone away from. So if we look at how most
organizations are working today, architecturally, they've got some sort of distributed
architecture. It's usually related to a service-oriented architecture; the big buzzwords a few
years ago, but some sort of distributed architecture: we have a bunch of web services, they're
talking to each other, we've got some databases on the back end, and then some front ends
that kind of go through all that. On an infrastructure level, they're running on some sort of a
virtual machine, alright? So, we said: we could probably do better than having to order a new
server every time we have a new service. Let's virtualize this stuff, and we need a little more
density along the way. And from a way of working; you know, Agile development, pretty
normal-- and then trying to figure out a little bit of what happens downstream. So this takes us
up to where a lot of teams are today, but not really where they're going. And so if we look at
that next phase. We're taking another pass at this service-oriented architecture, and really
shrinking the sizes of the services, taking advantage of the more dynamic infrastructure we
have. And we're calling these now microservices, right? Microservices. So we've got a
microservice architecture, so very small, very focused services, moving away from a lot of the
heavyweight XML-based communication we saw in SOA, towards more REST-based
communication, things like that. But same idea, let's keep breaking into smaller and smaller
pieces. We have more independence of what we ship. More rigor in saying this service needs to
be independent from another service, so I can change these things by themselves. On the
infrastructure side: Cloud. Cloud's pretty popular. And this could be public cloud, this could also
be private cloud. I'm painting with a very broad brush when I say cloud here. And then from a
delivery, in a way of working: we could say that DevOps is really key. And I would include in this,
approaches like site reliability engineering, SRE. More the ways of working we have today. Now
that that's fine and interesting. But what do these things have to do with each other? I'd argue
that what we're really seeing is modernization in in how the applications are delivered, and
how they're built--and what they are. And while you could walk into any large enterprise today
and you'll find someone who says "We are going through a cloud transformation." You'll often
find someone who says, "Yes, I'm in charge of leading the DevOps transformation." You'll walk
into enterprise architecture, they'll say, "Yes, we are pushing microservice architectures."
Individuals think that they're going through three separate transformations. But they're really
tied. Right? If I'm doing microservices, and I have new microservices all the time. And in order
to get a new microservice up and running, I'm over here, and I have to order a new physical
server, and then rack and stack it a couple months later. I'm not gonna get any time-to-market
benefits. The resilience benefits that I'm gonna normally look for from microservices are gonna
be modest, at best. Microservices want cloud infrastructure. You want to be able to say, I've got
a new microservice; let me put it in a container and just run that container right now and scale
that dynamically. Similarly, cloud really likes running microservices. The benefits of being able
to dynamically scale are really cool when you have a lot of small things that you might need a
few of or a lot of. It's not as interesting when I've got a monolith that isn't even distributed.
How do I scale that? I get a bigger cloud server? And then all of this is kind of, baking in this idea
of speed and resiliency, and DevOps brings that together. The developers who have always
wanted speed, the operations people who've always wanted that resiliency. They're going to be
programming that cloud. Right? The programmable infrastructure that cloud provides needs
operations people who understand resiliency-- but bring some of that development skill in. And
to really take advantage of these new infrastructures, the new architectures, you need these
new ways of working. And you also are gonna say, "if this is going to give me time-to-market
benefits, I can't be back here, and say 'Yeah, we've got a one-year project plan that we're just
gonna execute.'" I need to be able to be more agile, and adapt in my planning and my
responsiveness to the business. I need to better wire up my applications so they can be more
easily monitored and more resilient. We have to have the application in a way that, it knows
when one of these services is failing, and we can spin up another. So this is really, for me,
fascinating, that you walk into these organizations everywhere, and they're undergoing these
three different transformations. But they're always doing them together. And when they don't -
it doesn't quite work. So you've got these three transformations going on at once. And you'll
hear us talk a lot about application modernization. See it written across the top here? When I
think of application modernization, I think it's just this. It's this transformation right here; going
from these kind of monoliths, or service-oriented architectures, to microservices; adopting
Cloud; modernizing our ways of working towards DevOps and SRE. That's AppMod. It's a really
exciting time. And it's really great when you're able to go after it in a holistic fashion.

# Expert Viewpoints: Cloud Native and Emergent Cloud Trends

in this session, we will listen to several cloud application professionals discuss trends and
technologies in cloud computing.
>> The top three trends that I see coming in the next couple of years are as follows. First, is this
idea of a hybrid cloud, as IBM has predicted, a lot of companies and clients will move from a
single cloud provider to multiple cloud providers. That could be multiple public clouds or a
public cloud and on-premise private cloud. Second, I see this big surge of edge computing
becoming more prominent in cloud computing. Now the terms may seem quite different from
each other and disjointed, but in many sense the cloud computing will go on the edge. The
numbers state that quite overwhelmingly, there are 75 billion devices that are supposed to
come up online by 2075. And the edge computing, in order to be able to communicate between
devices and back to the server, is going to be very crucial. And lastly, it's the usage of machine
learning and artificial intelligence to make decisions for us in the cloud computing space. So,
these are my top three trends that I see coming in the next couple of years.
>> So one of the emerging trends in cloud computing is serverless and that's the area of cloud
computing where, all you need to do is give the cloud your application logic. And that means
you don't need to patch any servers, you don't need to manage the high availability of your
infrastructure, you don't have to put in multiple availability zones. The cloud provider takes
care of all of those operational issues for you and all you do is give it the code and it runs it on
demand. So, every time you have an event triggered, let's say it's a voice assistant, and every
time you talk to it, it triggers a cloud function-- that is what serverless is. And so, developers
love it because with serverless, you don't need to do all the undifferentiated work, the work
that does not make your app unique. You can focus on the logic that makes your app unique.
>> So in terms of emerging technologies, one of the big ones is cloud native, cloud native
architecture. And that includes the trend towards microservices, basically dividing up
monolithic applications, what would have been monolithic legacy applications into granular
microservices. And this affords a whole range of advantages. Another one is containers and
container orchestration systems and most notably, the Docker and Kubernetes technologies.
Another is serverless services, where some functional code can be spun up with very low
latency without the need to manage any virtual servers. And the term cloud native architecture
really encompasses some combination of all of these.
>> So I'd like to discuss a couple trends I see all the time in cloud computing right now. First of
all, we have serverless computing, and that's the idea that you don't have to worry about
anything other than writing the code for your application. You don't need to know "are you
deploying Kubernetes?" "Do you need to know IP addresses?" "Is this Linux?" Nothing. and I
really see this as the future because you don't want to have to worry about how it's deployed,
managing RAM, managing CPU, any of that stuff; you just want to create code. And the easier
that it is to get your code from written to deployed and running well, the better, and it's a win
for everybody.
>> Another area that's emerging in cloud technology is DevOps and with DevOps, you have the
developers a lot more integrated with operations. So you've got a CICD pipeline where the
developers can push their own code and see it live on the servers or the serverless functions.
And DevOps is a term that has a lot of different definitions. One definition I've enjoyed hearing
is that it means the developers are talking with operations and vice versa, that there's a
dialogue going on. And it's not just how it was in the past where the developers hand over the
code, but the developers really see the lifecycle through to it being maintained in production.
>> In terms of emerging trends, we're seeing comprehensive cloud services for building data
pipelines, data science in general, and artificial intelligence services. And specifically, we're
seeing low-level AI services to build AI solutions from the ground up, along with higher level
pre-trained AI solutions for things like image recognition, speech applications, just to name a
few. Another whole area of advancement is in the area of cybersecurity, it's obvious that
cybersecurity is something that we have to be constantly aware of and improving all the time.
And we're seeing a constant stream of improvements to secure your network perimeter,
compute resources, and data in the cloud.
>> Another emerging trend in cloud computing is application modernization. So, with cloud
providers coming out with all these amazing services that do a lot of things for you, the
companies are thinking, "Wait a second, the cloud provider is doing certain features of our
application better than we are." "And instead of continuing to maintain that part of our
application ourselves, let's rewrite the application to take advantage of these cloud native
services." For example, there are services now that do transcription or image recognition. And
rather than, have your own... inference and training servers that you manage, and use open
source machine learning models that you host, and you train those models on data that you
give it-- Don't do any of that! Just drop the images in an... image recognition service of a cloud
provider, and you're not managing any service-- you just get the data.

# SUMMARY AND HIGHLIGHTS


In this module, you have learned:
 Hybrid multi-cloud is a cloud adoption strategy that makes it possible for public clouds,
private clouds, and on-premises IT to interoperate seamlessly while leveraging the best
cloud-based services from different public cloud providers.
 Microservices architecture is an approach in which an application is built as a collection
of loosely coupled and independently deployable components or services, leading to
efficient development, maintenance, and upgradation cycles.
 Serverless computing is an approach to computing that offloads responsibility for
common infrastructure management tasks for application runtimes to cloud providers,
allowing developers to focus their time and effort on development and testing, and not
have to worry about provisioning, maintaining, and scaling compute resources.
 Cloud native applications are applications that are built or refactored to work in the
cloud environment. These applications, developed using DevOps methodologies, consist
of microservices packaged in containers that can run in any environment—making it
possible to create and update features in quick iterative cycles.
 DevOps is a collaborative approach that enables development and operations teams to
continuously deliver software in quick iterative cycles while reducing overhead,
duplication, and rework. DevOps’ tools, practices, and processes help tackle the
complexities and challenges posed by the cloud, allowing solutions to be delivered and
updated quickly and reliably.
 Application modernization helps organizations accelerate their digital transformation,
take advantage of new technologies and services, and become more responsive to
changing market dynamics. Cloud computing is one of the key enablers of application
modernization.

# M4: Emergent Trends and Practices

Glossary

Term Definition
API Application Programming Interface
Application Helps organizations accelerate their digital
modernization transformation, take advantage of new technologies and
services, and become more responsive to changing
market dynamics
Cloud native An application developed from the outset to work only in
application the cloud environment, or an existing app that has been
refactored and reconfigured with cloud native principles
Continuous delivery Delivering small, well-designed, high-quality increments
of software to customers
Continuous Progressing each new packaged build through the
deployment deployment lifecycle as rapidly as possible
Continuous integrationCreating packaged builds of the code changes released as
immutable images
Continuous monitoring Monitoring with tools that help developers understand the
performance and availability of their applications, even
before they’re deployed to production
Delivery pipeline An automated sequence of steps that involves the stages
of Ideation, Coding, Building, Deploying, Managing, and
Continuous Improvement
DevOps Collaborative approach where business owners and the
development, operations, and quality assurance teams
collaborate to continuously deliver software
Hybrid multicloud An open standards-based stack that can be deployed on
any public cloud infrastructure
Microservices Break down large applications into their core functions
Microservices Approach in which a single application is composed of
architecture many loosely coupled and independently deployable,
smaller components or services
Monolithic Approach in which a single application is built out of one
architecture piece of software
Serverless Approach to computing that offloads responsibility for
common infrastructure management tasks
Service discovery Creates a roadmap for microservices to communicate

You might also like