Cloud-Native Application Development - Participant Guide
Cloud-Native Application Development - Participant Guide
APPLICATION
DEVELOPMENT
PARTICIPANT GUIDE
PARTICIPANT GUIDE
Cloud-Native Application Development
Appendix .................................................................................................... 99
− Business fit, business value, and agility perspectives to validate if they are
meeting the new business requirements and delivering value.
− Cost, complexity, and risk perspectives to validate if they are meeting
security, compliance, and scalability requirements. Also verify if the TCO is
high or the technology used is very complex to manage.
− IT and business drivers - modernize the applications if there are multiple
drivers from both business and IT perspectives.
After identifying the opportunity and the problem to be solved, choose the
modernization options. These options describe which components1 of an
application need to change. Below are a few options ranked based on the ease of
implementation by Gartner:
1
Application components include hardware, OS, platform, code, and architecture.
• Encapsulate 2
• Rehost (Lift and Shift)3
• Replatform4
• Refactor5
• Rearchitect6
• Rebuild7
• Replace8
The widely used options, along with examples, will be discussed later.
2
Extend application features by making them available as services securely
through an API and hide their internal implementation details, data, and functions.
3
Migrate/rehost the applications to other environments such as physical, virtual, or
cloud without modifying code or features.
4
Migrate the application to a new runtime platform by making minimal changes to
the application code but without changing its core architecture or functionality.
5
Modify or restructure the application code to better suit the new environment by
ensuring the changes do not impact the external behavior of the application.
6
Modify the application code completely to develop a new application architecture
which delivers higher performance and provides better functionalities.
7
Rewrite/redesign the application from scratch without modifying its scope and
functionalities.
8
Retire the existing application and replace it with a new application by
accommodating new requirements and business needs.
Not every application is a good candidate for modernization. Below are a few
factors to consider.
Application Workloads
• Low consumption applications may not benefit by moving them to the cloud.
Parameters Questions
Modernization Options
There are multiple options that organizations can use for application modernization.
Below are the three commonly used options:
Modernization Benefits
Benefits Description
Modernization Challenges
With all the benefits modernization offers, organizations face challenges when
attempting to modernize their application. They are:
9
For example: These skills include the ability to design and develop modern
applications using microservices, and APIs. It also requires the capability to work in
Agile and DevOps environment to establish collaboration between operations and
development teams. Overall, it requires a new engineering mindset.
Knowledge Check
Question 1
Cloud-Native Approach
Cloud-Native Approach
Applications are the key to gain the advantage of digital business such as product
and service innovation, faster time-to-market, and improved business operation.
What is interesting is the sheer volume of applications that will be developed with
these new approaches. IDC says that over 500 Million new applications will be built
using cloud-native practices by 2024.
In the past, organizations would rely on waterfall development and ITIL change
management operational practices. This meant organizations had to plan for:
Application Architectures
Now organizations want to take advantage of a new development cycle called Agile
along with DevOps operational practices.
For years, monolithic architectures were the standard for application architectures.
However, these applications have proven costly to reconfigure, update, and take a
long time to load.
Cloud-Native Benefits
Cloud-native approach present many benefits for enterprises that adopt them.
Workload Mobility
Agile Development
Unlock Innovation
Competitive Edge
Cloud-Native Strategy
Cultural Aspect
• DevOps
− CI/CD
− Versioning
• DevSecOps
• Site Reliability Engineering (SRE)
Technology Aspect
• 12-factor App
• Microservices
• Containers
• Container orchestration
• Cloud platform
The cash portion comes from the deploy/ops portion, when the ops team deploy it.
It means it is available. But what happens when it does not work? Feature delays,
product launch delays and more.
DevOps Overview
DevOps
Development
10
The goals of DevOps are:
1. Improve the frequency of application deployment
2. Reduce new releases failure rate
3. Improve time-to-market
4. Reduce lead time between fixes
DevOps impacts the application software lifecycle throughout its various phases
such as plan, develop, implement, and operate (manage). In DevOps approach,
each phase depends on the other phases and to some extent each role (developer,
IT, testing) is involved in each phase.
Plan
• In this phase, DevOps teams state features of the applications they are
developing.
• DevOps teams plan with agility by using scrum methodology.
Develop
• During this phase the team develops the code, perform testing, and build the
code.
• DevOps team automate most of the manual processes and iterate in small
increments through automated testing and continuous integration.
Implement
Manage
There are key principles which are essential when adopting DevOps.
Continuous Improvement
Customer-centric
Increment Releases
Automate Everything
• For DevOps teams, automation is a central principle that reinforces all the other
principles of DevOps.
• It encourages better collaboration and communication by allowing to automate
redundant tasks, so that DevOps team can spend more time working with each
other and less time doing tedious manual work.
• Automation helps to rapidly release new features and products.
Continuous Monitoring
Agile DevOps services enable organizations to build and operate a multi cloud
platform that employs the architectural blueprints and operating patterns used by
leading public cloud providers.
• Enables teams to produce software in short cycles, ensuring the rapid and
reliable delivery of software at any time in a low-risk manner.
• Continuous delivery extends continuous integration practices by adding a fully
automated suite of tests, including acceptance tests.
• Also, an automated deployment pipeline runs by the click of a button – or a
programmatic trigger.
11
CI/CD allows developers to spend more time coding and developing software
features instead of being concerned about internal meetings and approval cycles.
Performing automated testing allows to identify any bug at an early stage. CI/CD
aims at building, testing, and releasing software faster and more frequently so that
application development teams can integrate user feedback into their applications
more quickly. Now, developers can work on the most useful features. It is also
important to implement artifact repository. Artifacts are large binary packages that
are created throughout the development and release process. Using an artifact
repository provides consistency to CI/CD workflow. It saves team time and increase
build performance.
To add or update to the application, they made modifications in the source code. It
is important to have a mechanism in place to manage the changes made to the
code and need an option to revert it back.
A version control system is a tool that helps to track all the changes that have been
made to the source code. The system also keep record of who made and what
change has been made.
12
A separate branch is created for each developer and who works on the project.
The updates made by the developer are not merged into the source code unless
the changes are verified and approved. Developers should be making small
Benefits of a VCS
changes and implementing their code into the main branch as often as possible.
Version control system is independent of the kind of project, technology, and
framework. It is not a replacement of a backup or a deployment system, no need to
change or replace any other part of development tool chain when started using
version control.
Repository
• It is a database where the developers working on a project can store their code.
• Contains all the changes and versions of the project.
• Sometimes the repository contains changes that may not be updated to the
working copy.
• The working copy can be updated to incorporate any new edits or versions that
have been added to the repository since the last update.
Working Copy
• It is a copy (snapshot) of the repository and a developer owns the copy to work
on it.
• Updates made to the working copy are merged to the main repository.
Server Repository
(Database)
Commit Commit
Commi Update
t
Update Update
• Changes made to the files are tracked under the centralized server.
• Centralized server has the information about all the versioned files.
• Any changes made to the files are automatically shared with other individuals
as well.
• Once a developer commit, the other developers can see the changes
immediately.
13
The implementation enables collaboration and allows developers to view what
others are doing on the project. There is a risk involved in using a centralized
version control system because the developers only have the last version of files in
their system. There is a chance they may lose the entire history of their files if the
server gets corrupted and fail-safe procedures are not implemented.
Repository
Server
(Database)
Push Push
Push Pull
Pull Pull
GitFlow
In the GitFlow development workflow, which is a particular model for Git, there is
one main branch and developers create feature branches when they want to
develop new features. The feature branch (code) is merged to the main code only if
the developers are fine with the feature branch code that is ready for release.
• Master14
• Develop15
• Feature16
14
The main branch contains production ready code that can be released. In
GitFlow, the main branch is created at the beginning of a project and is maintained
throughout the development process. The branch can be tagged at various
commits in order to show different versions or releases of the code. The other
branches will be merged into the main branch after they have been sufficiently
vetted and tested.
15
The develop branch is created at the beginning of a project and is maintained
throughout the development process. This contains pre-production code with newly
developed features that are in the process of being tested.
• Release17
• Hotfix18
In a GitFlow model, only developers who are authorized can approve changes that
ensures code quality.
Depending on the complexity of the software product, the GitFlow model can
overcomplicate and slow the development process and release cycle. This due to
the long development cycle.
Trunk-based
16
The feature branch is created from the develop branch when a developer works
on a new feature. Later, merge the changes to the develop branch when the
feature is developed and reviewed properly.
17
The release branch is created from develop branch, when it is time to make a
release. The code in the release branch is tested, and the issues are resolved in
the release branch. Once the release is completed, the release branch is merged
into master. It is also merged to develop too, to make sure that any changes made
in the release branch are not lost.
18
Hotfix branches are created when there is time to fix last minute critical bugs.
• There is a repository with a steady stream of commits flowing into the master
branch.
• Adding an automated test suite and code coverage monitoring for this stream of
commits enables continuous integration.
• When new code is merged into the trunk, automated integration and code
coverage tests run to validate the code quality.
When committing the changes, it is important to run the commit with a specific file
name. Otherwise, this would commit every changed file and may create some
issues.
− For example, when two developers make edits simultaneously, it may create
a conflict and then human intervention is needed to resolve the conflict.
− If the developer works with updated version, then the working copy had
already got the changes of other developer's before started to edit.
It is always good to use source files (editable) rather than generated files (pdf,
binary files) in a version control system. Generated files are likely to create
conflicts.
DevSecOps
Typically, there is a dedicated security team and they come into the picture during
the final stage of development. This would not create any problem when the project
development takes several months to years, but in today’s cloud-native world this is
not acceptable.
Outdated security policies and practices can hinder the benefits of DevOps
approach to organizations.
• Reliability
− DevSecOps implements security throughout the application development
cycle to improve the overall reliability and trust of the product and services.
• Product quality
− Security threats and issues can be identified and resolved during the early
stages of development. This increases the quality of the product and gain
customer attention.
• Compliance
− In DevSecOps, monitoring and auditing are implemented with automated
workflows that provides better compliance.
• Collaboration
Infrastructure as Code
• Security training ensures that the development team is familiar with industry
standards and can identify, assess, and respond to security issues.
• Training should be provided to employees for making them to understand of
their responsibilities, improves their confidence and performance, and reduces
the risk of a breach.
• DevSecOps teams must use tools that securely manage and store secrets.
• They should also implement access controls that do not affect the automated
workflows of DevOps.
Continuous monitoring
• Monitoring can identify security issues and help you resolve them early to
prevent incidents in production.
The two important aspects of the SRE model are standardization and automation.
SREs and application developers collaborate to develop the product that meets the
non-functional requirements such as availability, security, and performance.
19
Site reliability engineers spend time between development and operations
activities. According to SRE best practices from Google, a site reliability engineer
can only spend a maximum of 50% of their time on operations, and the remaining
time should be spent on development tasks like developing new features, scaling
Many business applications that exist today were developed using monolithic
architecture. The applications may be widely used and continue to evolve with new
features. However, at some point in time, organizations have started finding it
difficult to manage the applications.
These challenges have moved organizations to consider the 12-factor app while
designing and developing applications.
12-Factor App
In 2012, early cloud pioneer Heroku developed the 12-Factor App, a set of rules or
practices. These practices are widely accepted approaches for developers to follow
when building robust, reliable modern applications.
Applications built this way can scale and deploy rapidly, allowing their development
teams to add new features and react quickly to market changes.
1 2 3 4
5 6 7 8
9 10 11 12
1:
• Put all the code in a single repository that belongs to a version control system.
• The application is always tracked with version control system, for example using
Git.
2:
3:
• Applications at times store config as constants in the code. But, the 12-factor
App requires strict separation of config from code.
4:
• A backing service is any service the application access over the network during
its operation, example services include datastores, messaging/queueing
systems and caching systems.
• Treat backing services same as attached resources, accessed via a URL or
other locator stored in the config.
5:
• During the build stage, the code is converted into an executable bundle of
scripts, assets, and binaries known as a build.
• The release stage takes the build, and combines it with the current config. The
resulting release contains both the build and the config and is ready for
immediate execution.
• The run stage runs the application in the execution environment. The 12-factor
application uses strict separation between the build, release, and run stages.
This separation is because the build stage requires lot of work, and developers
manage it.
• The run stage should be as simple as possible. So that application runs well,
and that if a server gets restarted, the application starts up again on launch
without the need for human intervention.
6:
• Run application as one or more stateless processes. Any data that required
persistence must be stored in a stateful backing service, typically a database.
• Usually the application may run on many servers for providing load balancing
and fault tolerance.
• The right approach is that the state of the system is stored in the database and
shared storage, not on the individual server instances. If a server goes down
due to some reasons, another server can handle the traffic.
7:
8:
• Scale out via the process model. When an application runs, lot of processes are
performing various tasks. By running processes independently, and the
application scales better.
• It allows doing more stuff concurrently by dynamically adding extra servers.
9:
10:
11:
12:
• Ensure that all administrative activities become defined processes that can
easily repeat by anyone.
• Do not leave anything that must be completed to operate or maintain the
application inside someone’s head.
• If it must be completed as a part of the administrative activity, build a process to
perform by anyone.
Microservices
20
Microservices architecture helps in Agile delivery, and easily fits in the DevOps
model (continuous integration, continuous deployment and continuous delivery).
This also helps applications to scale easily and accelerates time-to-market for new
features.
Modularity
Loosely Coupled
Stateless
Microservices provide stateless communication between the client and the server.
Self-contained
Open Standards
Microservices can be built using open standards such as REST, JSON, OAuth and
others.
Resiliency
Cloud Readiness
Language Neutral
Microservices Ecosystem
Client Applications: This layer consists of clients such as mobile apps, web
applications, IoT devices, third party services, and others. The clients invoke
stateless microservices with required details.
Security:
• The cloud environment has various security related managed services such as:
Container-based Microservices:
Caching: Static data and service response will be cached for optimal performance.
Load Balancer: The Load Balancer routes the requests to the microservice
instance.
Discovery:
API Gateway:
• The API Gateway acts as a proxy for the client to access the microservices.
• It performs routing request, and protocol translation.
✓ Is the organization have self-sufficient teams that build and operate services?
✓ Do the key applications you want to transition serve business-critical functions?
✓ Are services coordinated?
✓ Will it be hard to keep dozens of microservices up to date with the latest
application configuration?
✓ Can you track dependencies and identify applications at risk?
✓ Is it difficult to patch or upgrade underlying machines?
✓ Does the organization have the team dedication and budget to invest in
microservices?
Containers Overview
21
Many containers can run on the same machine concurrently. For example, You
might have one container on a system running Red Hat Linux, serving a database,
through a virtual network to another container running Ubuntu Linux, running a web
Containers VMs
Stateless Stateful
server that talks to that database, and that web server might also be talking to a
caching server that runs in a SUSE Linux based container.
Lightweight
• Containers eliminate the need for a full OS instance per application and makes
container small.
• This helps to spin up quickly and support cloud-native applications.
Portability
Container applications can be developed once and run just about anywhere (for
example., on bare metal servers, on virtualized infrastructure in core data centers
or at the edge, along with private- or public cloud environments).
Higher Resilience
Container applications run as multiple container instances, any of which can fail, be
tossed away and if needed, another instance deployed.
Scalability
Consistency
API driven
Containers are designed to be fully API managed, i.e., deployed, run and updated
under API control, to minimize manual intervention.
Containers are so small and require fewer resources. This enables to run multiple
containers on a single machine.
• Microservices
− Containers are small and lightweight, that makes it a suitable choice for
running microservices where applications are constructed of many, loosely
coupled and independently deployable smaller services.
• DevOps
− Containers can simplify the build/test/deploy pipelines in DevOps.
• Multi-cloud
− In a multi-cloud environment, containers are widely implemented because it
can run consistently between clouds and on-premise data center.
• Application Modernizing and Migration
Container Orchestration
✓ Configuring of containers
✓ Scheduling of containers
✓ Container provisioning and deployments
✓ Container's availability
✓ Scaling of containers to meet the workload requirements
✓ Resource allocation for containers
✓ Balancing the load of containers
✓ Monitoring containers’ health to take necessary actions
✓ Containers’ security
22
Kubernetes containers execute under pods running in worker nodes. Each pod
typically runs one container instance or a select few that share resources that need
to execute together. A Kubernetes pod contains the OS and runtime environment
that enables the container application to run. Container networking is configured
and managed by Kubernetes control plane, master nodes and worker nodes and
23
On-Premises infrastructure for serverless computing: "In a FaaS architecture,
applications contain stateless, event-triggered bits of code with a certain amount of
server-side logic. The compute/server infrastructure is entirely managed by a third-
party service provider. These work well for high volume transactions, where each
transaction is isolated and serviced by an instance of a function. Scaling is very
simple for application developers as multiple instances of a function can be initiated
to handle multiple requests based on events.
- Chethan N. and Ravi S., Dell Technologies
Cloud-Native Platform
24
Cloud-native applications help organizations to bring new features to market
faster to meet customer expectations. To gain this benefit, organizations require an
application runtime that supports continuous delivery and scalability. Cloud-native
platform offers nearly limitless computing power, on-demand for developers. They
also provide capabilities such as application auto-scaling, application portability,
dynamic load balancing and routing, resilience and fault tolerance, application
health management through monitoring, and role-based access for deployed
applications.
Structured
Unstructured
25
It’s important to prepare for the new infrastructure before it arrives. Organizations
need to adopt a new approach to IT operations; an approach that includes
automating operations, and organizing around service delivery. Need to make it
easy for users to find and understand the services they need. Start with an IaaS
service catalog with role-based access control. The services should be clearly
defined with service tiers, pricing and SLAs. Publish the service catalog in a self-
service portal with automated service approval routing and resource provisioning
for faster consumption. Re-organize in a way that’s focused on delivering holistic
end-to-end services. Implement an initial set of IT processes and roles to effectively
manage service delivery lifecycle and infrastructure. Organizations should
Enterprises looking to develop and run modern applications in order to keep pace
with today’s business demands are adopting Kubernetes to deploy and manage
containers used to build those applications.
understand how their applications are used, how they’re deployed, and how they
interact with each other as well as with the infrastructure, before they move them.
And how do you do that? App profiling. Application profiling can help clients
determine four things: Which applications are most valuable to their organization?
How cloud technologies influence their portfolio strategy. Which applications are
candidates for investment And, where and how do they start moving workloads
from platform to another platform is not easy. Organizations need people with the
right knowledge and expertise to maximize efficiency and quality. Need a proven,
repeatable process for migrating workloads that will improve reliability and
predictability. And need automation tools that will simplify and speed the
migrations.
Tanzu on VxRail helps make a cloud native strategy easy by leveraging consistent
infrastructure and operations to support faster application development, scalability,
and lifecycle management that ensures they are using the latest tools and
features.
Business Challenges
• How do you carve out resources and time to dedicate to efficiently discover your
environment and its dependencies, without disrupting your existing operations?
• What criteria will you use to decide what goes to the cloud? How will you select
the best-fit cloud provider?
• How do you ensure that the migration risk is mitigated? How will you analyze
the financial impact and any potential ROI?
• How will you manage and maintain control the solution after a cloud migration is
completed?
transformation; and identify the right skill set and expertise to maximize efficiency,
performance and quality.
Requirements
Solution
Knowledge Check
Question 1
Question 2
Click the
NanCO Art Services Company link below
to
understan
d the
multi-cloud
requireme
nts of
NanCo.
• Scenar
io
Lab - Containers
Cloud Architect
Available for all audiences, the cloud architect certification journey begins with
either the CIS course or the ISM course. CIS provides fundamental details about
digital transformation and the critical role of cloud computing. ISM provides
comprehensive details for various infrastructure components in a modern data
center environment. The specialist level CIPD course focuses on cloud
infrastructure including: CI/HCI, cloud management platform, application
development and deployment platform, plus hybrid and multi-cloud. The expert
level Cloud Services Management curriculum concentrates on IT transformation,
service lifecycle and management, workforce transformation, multi-cloud strategy,
cloud operating model, cloud-native application development, and business
resiliency.
Cloud Architect,
Cloud Services
(C) - Classroom
Rehost
Click 'next arrow >' to learn about refactor approach.
Description
Note: Sometimes, even with the rehost approach, organizations use a replatform
option to gain the benefit of the target platform and the migration effort.
Example
When to Use?
Refactor
Click 'next arrow >' to learn about refactor approach.
Description
• Involves making changes to the application code so that it better suits the new
environment.
• Goal is to add enhancements to an existing business or end user functionality.
• May involve migrating an application to a cloud environment to take advantage
of cloud-based features.
• This approach is complex as it requires changes to application code.
• Changes need to be tested carefully to ensure they do not affect the current
application functionality.
• A resource-intensive process that requires more time and advanced skill set.
Example
When to Use?
Replatform
Click 'next arrow >' to learn about replatform approach.
Description
Example
When to Use?
Scenario
NanCo has planned to expand their business and has got more customers across the globe. These customers are complaining about the scalability and
performance issues with ArtPort applications. During the application assessment, NanCo’s team identified that the existing ArtPort applications (Gallery,
Museum, and Consumer version) were developed in-house using monolithic architecture which caused various challenges.
To address the customer challenges, NanCo tried to modify the applications using various approaches such as:
But these approaches did not yield any improvements. NanCo decided to take the help from consulting firms to ex plore the options for improving the applications.