0% found this document useful (0 votes)
151 views112 pages

Cloud-Native Application Development - Participant Guide

Uploaded by

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

Cloud-Native Application Development - Participant Guide

Uploaded by

robel_arega
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 112

CLOUD-NATIVE

APPLICATION
DEVELOPMENT

PARTICIPANT GUIDE

PARTICIPANT GUIDE
Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page i


Table of Contents

Cloud-Native Application Development ................................................................................ 2

Application Modernization - Traditional to Cloud Native........................................ 3


Why Modernize Legacy Applications? .................................................................................. 4
Application Modernization Overview .................................................................................... 5
Application Modernization Steps .......................................................................................... 6
Application Assessment Best Practices ............................................................................... 9
Identifying the Applications for Modernization .................................................................... 10
Checklist for Identifying Applications .................................................................................. 12
Modernization Options ....................................................................................................... 14
Modernization Benefits....................................................................................................... 15
Modernization Challenges.................................................................................................. 17

Knowledge Check .................................................................................................... 18


Question 1 ......................................................................................................................... 19

Cloud-Native Approach ........................................................................................... 20


Cloud-Native Approach ...................................................................................................... 21
Cloud-Native Technologies are a New Standard ................................................................ 22
Embracing a Cloud-Native Approach ................................................................................. 23
Cloud-Native Benefits ........................................................................................................ 24
Cloud-Native Strategy ........................................................................................................ 26
DevOps - Why Is It Important? ........................................................................................... 27
DevOps Overview .............................................................................................................. 29
DevOps and Application Lifecycle Combined ..................................................................... 31
Key DevOps Principles ...................................................................................................... 33
DevOps Transformation Services from Dell Technologies ................................................. 35
Continuous Integration and Continuous Delivery (CI/CD) ................................................... 36
Best Practices to Implement CI/CD Pipeline ...................................................................... 38
Version Control System (VCS) ........................................................................................... 39
Benefits of a VCS............................................................................................................... 40
Key Elements of a VCS...................................................................................................... 41

Cloud-Native Application Development

Page ii © Copyright 2021 Dell Inc.


Implementation Options for a VCS ..................................................................................... 42
Types of Development Workflows ...................................................................................... 44
Best Practices of Using a VCS ........................................................................................... 47
DevSecOps........................................................................................................................ 49
Key Benefits of DevSecOps ............................................................................................... 50
Best Practices for a Successful DevSecOps Implementation ............................................. 51
Site Reliability Engineering ................................................................................................ 53
Need for 12-Factor App Methodology ................................................................................ 54
12-Factor App .................................................................................................................... 56
Microservices ..................................................................................................................... 60
Key Tenets of Microservices .............................................................................................. 61
Microservices Ecosystem................................................................................................... 63
Key Questions to Ask Before Adopting Microservices Architecture .................................... 65
Best Practices for Implementing Microservices .................................................................. 66
Containers Overview.......................................................................................................... 67
Containers vs. VMs ............................................................................................................ 68
Why Application Development Team Prefers to Use Containers ........................................ 69
Container Use Cases ......................................................................................................... 71
Container Orchestration ..................................................................................................... 72
Container Orchestration (Contd.) ....................................................................................... 73
Container Orchestration Example: Kubernetes .................................................................. 74
Container as a Service (CaaS)........................................................................................... 75
PaaS vs CaaS vs FaaS...................................................................................................... 77
Cloud-Native Platform ........................................................................................................ 79
Cloud-Native Platform Deployment Options ....................................................................... 81
Operational Readiness for Cloud-Native Architecture ........................................................ 82
Concepts in Practice: VMware Tanzu on Dell EMC VxRail ................................................ 83
Example of Application and Workload Migration ................................................................ 85

Knowledge Check .................................................................................................... 88


Question 1 ......................................................................................................................... 89
Question 2 ......................................................................................................................... 90

NanCo Case Study ................................................................................................... 91

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page iii


NanCo Case Study ............................................................................................................ 92
NanCo Case Study ............................................................................................................ 93
NanCo Case Study: Discussion Area ................................................................................. 94

Lab - Containers ....................................................................................................... 95


Container Lab Demonstration ............................................................................................ 96
Proven Professional Certification ....................................................................................... 97
You Have Completed This eLearning................................................................................. 98

Appendix .................................................................................................... 99

Cloud-Native Application Development

Page iv © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 1


Application Modernization - Traditional to Cloud Native

Cloud-Native Application Development

Cloud-Native Application Development

Page 2 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Application Modernization - Traditional to Cloud Native

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 3


Application Modernization - Traditional to Cloud Native

Why Modernize Legacy Applications?

For many organizations, legacy applications are seen as


obstacles that are holding back the business. This is
because:

• Most of the organization’s budget that is spent on


traditional applications and services goes towards
maintaining the applications.
• Legacy applications are often monolithic which makes it
difficult to scale and becomes expensive to update them
or add new features.
• Monolithic applications are often built and maintained using waterfall
methodology which lack agility; they can also cause integration challenges.
• Legacy applications lack support for modern infrastructure such as containers
and microservices, tools, and development processes.

Therefore, these legacy applications need to be modernized to support businesses


that want to optimize their IT spending and gain competitive advantage in the
market.

Cloud-Native Application Development

Page 4 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Application Modernization Overview

Application modernization is a process of modernizing the platform components


including programming languages and frameworks, internal architecture, and
features of a legacy application.

A key success to application modernization lies in selecting a robust modernization


strategy that depends on the business problem to be solved.

A few factors that are fundamental to application modernization include:

• Adopting software-defined infrastructure


• Moving into cloud and adopting multi-cloud strategies to enable agility and
scalability
• Using containers
• Using microservices architecture
• Incorporating DevOps practices
• Implementing orchestration and automation in application development and
deployment

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 5


Application Modernization - Traditional to Cloud Native

Application Modernization Steps

According to Gartner, there is a three-step evaluation process to determine how to


approach application modernization.

Click each list item to view details.

Evaluate Legacy Systems and Applications

• Perform an assessment of an organization’s application portfolio including


legacy systems and applications.
• Evaluate existing and legacy applications according to:

− 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.

Evaluate Modernization Options

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.

Cloud-Native Application Development

Page 6 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

• 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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 7


Application Modernization - Traditional to Cloud Native

Choose the Modernization Option with Highest Effect and Value

• Organizations must decide on the modernization option by determining which


option would provide the highest effect and value to their business.
• Map the modernization options with respect to their effect on technology,
process, functionality, risk, and cost.

For more information, refer: https://www.gartner.com/smarterwithgartner/7-options-


to-modernize-legacy-systems/

Cloud-Native Application Development

Page 8 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Application Assessment Best Practices

Some of the best practices for assessing


applications in an organization include:

• Ensure that there is a comprehensive


catalog of all applications that are used
to run the business.
• Categorize each application based on its
criticality and the strategic value it brings
to the business.
• Understand the value of each application
in terms of:
− Ability to meet business needs by
creating an impact in the business
− Size, complexity, and time involved
− Cost and risk involved
− Business value generation
• Assess TCO of a migration project
− Example: Compare developing, operating, and maintaining an application
on-premise to licensing cost and chargeback in a cloud environment.
• Legacy applications with outdated features and security patches can become
very challenging to migrate. Therefore, perform a thorough assessment of
legacy applications.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 9


Application Modernization - Traditional to Cloud Native

Identifying the Applications for Modernization

Not every application is a good candidate for modernization. Below are a few
factors to consider.

Click ‘arrow marks’ or ‘dots’ to navigate through each option.

Application Implementation Flexibility

• It is important for an organization to identify applications that are suitable for


modernization.
• Third-party applications cannot be fully modified, they are limited to only
customizable front-ends.
• Modernizing open-source applications is complex, requires certain skills, is time
consuming plus there are licensing implications.
• On-premise legacy applications are difficult to modernize due to use of older
technology and the source code and documentation may be obsolete.
• Mission critical applications often have strict requirements and use cases which
may not be suitable for modernization.

Security and Compliance

• Due to security and compliance requirements, some business critical


applications and data may not be able to be moved or hosted on a public cloud.
• Redeveloping an application in a cloud-native way to make it more loosely
coupled can help facilitate having some pieces onsite and in the public cloud.
• Example: Usually organizations would host front-end processing of an
application in the cloud and high-volume, back-end processing in the on-site
data center as it involves accessing and updating databases. Organizations
could use cloud-native development for some components of the application
hosted on-premise after a thorough design review.

Application Workloads

• Low consumption applications may not benefit by moving them to the cloud.

Cloud-Native Application Development

Page 10 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

• Organizations should focus on modernizing applications that have a high


consumption and workloads by distributing the workloads across multiple clouds
and on-premise environments.
• Example: It does not make sense to modernize a company application when it
is used by only limited number of employees. Instead, consider an application
such as banking or ecommerce that is accessed globally by customers and also
results in high workloads.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 11


Application Modernization - Traditional to Cloud Native

Checklist for Identifying Applications

When assessing an application as a modernization candidate, consider the


following questions:

Parameters Questions

Legacy ✓ Where was the application developed? If it is on-premise, then is


Applications the source code and documentation readily available?
✓ How many other applications or workloads are dependent upon
this one?
✓ What is the consumption rate of the application?
✓ How much business value is currently provided by this
application?
✓ How well is the application performing in the current
environment?

Criticality ✓ Who are the users of the application?


✓ How much downtime can this application tolerate?
✓ How critical is the application and data to your customers or to
the organization’s goals?
✓ Is the application used in production or will it disrupt other
development processes?
✓ Who manages the application? In-house expertise or third-party?

Security ✓ Which regulatory requirements are associated with the


and application?
Compliance ✓ What are the SLA standards committed for the application?
✓ How secure is the application in the current environment?

Cloud-Native Application Development

Page 12 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Skillset and ✓ Do you have the skilled resources or staff?


Resources ✓ Do you have the technology and tools required for
modernization?
✓ Do you have sufficient budget and time?

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 13


Application Modernization - Traditional to Cloud Native

Modernization Options

There are multiple options that organizations can use for application modernization.
Below are the three commonly used options:

Click each link to learn more.

Rehost Refactor Replatform

Cloud-Native Application Development

Page 14 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Modernization Benefits

The benefits of application modernization can typically be summarized as:

Benefits Description

Improves delivery of new features Adopting application modernization


technologies such as cloud-native,
containerization, and DevOps
process improve developer’s
productivity, thereby enabling release
of new features quickly.

Improves application scalability and Modernization options such as


performance replatforming helps to overcome the
challenges of legacy applications.
Adopting cloud as a part of
replatforming approach helps to scale
applications, distribute workloads,
and improve the overall performance.

Improves operational efficiency Adopting DevOps to modernize


applications enables automation
practices, such as continuous
development and integration and
process standardization, improving
the operational efficiency.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 15


Application Modernization - Traditional to Cloud Native

Accelerates digital transformation The need to transform business to


build and deliver capabilities quickly is
supported by application
modernization. It uses the latest
infrastructure, tools, and processes
that act as initiatives of IT
transformation.

Lowers cost and improves ROI Adopting a robust modernization


approach with proper application
assessment and the business
problem to be solved can help to
optimize resource utilization, improve
availability, lower cost and time
involved in application delivery and
eventually improves ROI.

Cloud-Native Application Development

Page 16 © Copyright 2021 Dell Inc.


Application Modernization - Traditional to Cloud Native

Modernization Challenges

With all the benefits modernization offers, organizations face challenges when
attempting to modernize their application. They are:

• Complexity: Inflexible and aging systems in an existing on-premise data center


can make the modernization process very complex.
− It also requires skilled IT staff with knowledge on new technologies and tools
that modernization uses to implement correctly.
• Cost: Modernizing applications without proper assessment on business
opportunities, ROI generation, and need might lead to a waste of organization’s
money.
− As modernization can become expensive due to the computational cost,
modern platform requirements and other factors, modernizing applications
just to keep up with the trend, might adversely affect ROI.
• Skillset and Resources: Highly-patched source code and the lack of
functional/technical documentation, makes it difficult for developers to
modernize the existing legacy applications.

− Implementing modernization requires advanced skills 9, so an organization


should invest in training their developers to gain the required skills and also
hire new developers.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 17


Knowledge Check

Knowledge Check

Cloud-Native Application Development

Page 18 © Copyright 2021 Dell Inc.


Knowledge Check

Question 1

1. Which application modernization approach involves making changes to the


application code to convert the tightly coupled application components into
microservices architecture?
a. Replatform
b. Refactor
c. Rehost
d. Redesign

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 19


Cloud-Native Approach

Cloud-Native Approach

Cloud-Native Application Development

Page 20 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Cloud-Native Approach

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 21


Cloud-Native Approach

Cloud-Native Technologies are a New Standard

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.

Cloud-native applications are becoming a new standard. In fact, according to IDC


in their FutureScape study, by 2025, nearly two thirds of enterprises will be prolific
software producers with code deployed daily and over 90% of apps will be
delivered using cloud-native approaches.

of new enterprise applications will be


apps will be built using cloud native
delivered using cloud native approaches by
approaches by 2024
2025

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.

Reference: IDC FutureScape 2020

Cloud-Native Application Development

Page 22 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Embracing a Cloud-Native Approach

In the past, organizations would rely on waterfall development and ITIL change
management operational practices. This meant organizations had to plan for:

BEFORE-TRADITIONAL AFTER-CLOUD NATIVE

Dev and IT Operations

Lengthy development Rapid iteration, quick


cycles before handling an releases to power faster
application to ops production innovation
Waterfall / ITIL Agile / DevOps

Application Architectures

Centralized scheduling and


Long load times for
monitoring of the entire fleet
developers and difficult to
of microservices via
reconfigure architecture
APP kubernetes

Monolithic / Virtualized Microservices / Containerized

• Long development cycles before handing an application to ops


• IT ops often resisting change and slowing innovation

Now organizations want to take advantage of a new development cycle called Agile
along with DevOps operational practices.

• Rapid iteration and quick releases


• Collaboration via involving the IT ops teams throughout the process

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.

In cloud-native applications, components of the application are segmented into


microservices, which are then bundled and deployed via containers. The container
and microservice relationship allows cloud-native applications to be updated and
scaled independently.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 23


Cloud-Native Approach

Cloud-Native Benefits

Cloud-native approach present many benefits for enterprises that adopt them.

Click ‘arrow marks’ or ‘dots’ to navigate through each option.

Workload Mobility

• Move workloads closer to where their data


resides: this reduces latency and increases
data security.
• Move workloads to where they are most
cost-effective, whether Public or Private
cloud, or at Edge deployments.

Agile Development

Developing applications with agile methodology


and using a microservices approach allows
organizations to provide rapid feature releases
(updates) and patches with little downtime.

Cloud-Native Application Development

Page 24 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Unlock Innovation

DevOps supports developers and IT Ops to


work more effectively together and will drive
businesses to new levels of innovation. It allows
developers to focus on building coding rather
than spending time in other production activities.

Competitive Edge

With agile development and a focus on


innovation, businesses will be able to engage
customers better and drive efficiencies that will
result in a competitive edge.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 25


Cloud-Native Approach

Cloud-Native Strategy

To adopt cloud-native architecture, an organization should focus not only on


technology also on cultural aspect.

Cultural Aspect

Cultured practices are required for the successful implementations of cloud-native


architecture. The following are some of the key practices that need to be adopted:

• DevOps
− CI/CD
− Versioning
• DevSecOps
• Site Reliability Engineering (SRE)

Technology Aspect

• 12-factor App
• Microservices
• Containers
• Container orchestration
• Cloud platform

We will cover these in detail in the pages to follow.

Cloud-Native Application Development

Page 26 © Copyright 2021 Dell Inc.


Cloud-Native Approach

DevOps - Why Is It Important?

Especially in software application phases warrants more releases, more frequent


updates and adding more frequent functionality. It is not about being the first, it is
also about being the first and staying there.

In a traditional software development method, for a concept to make cash, it should


go through various phases. The first is development, then testing which raises
bugs, then bug fixes, then release, then production.

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.

It is also important to note that in a traditional application development


environment, the development team and operation team work independently.
Typically, after design and build, testing and deployment activities are done
independently. This takes more time than actual build cycles.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 27


Cloud-Native Approach

Also, doing code deployment manually may lead to errors in production.


Development team and operations team have their own timelines and working
independently causing further delays. This is the reason why organizations are
interested in a DevOps model to overcome these challenges.

Cloud-Native Application Development

Page 28 © Copyright 2021 Dell Inc.


Cloud-Native Approach

DevOps Overview

Quality Assurance IT Operations

DevOps

Development

DevOps is a methodology where the software developers and IT operations staff


collaborate in the entire software lifecycle. The collaboration starts from the design
phase through the development and production phases. It focuses on
communication, collaboration, and integration between all functions required to
deploy and run applications.

DevOps helps organizations to improve their software release cycles, software


quality, and ability to get rapid feedback on product development.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 29


Cloud-Native Approach

Click here10 to learn about the goals of DevOps.

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

Cloud-Native Application Development

Page 30 © Copyright 2021 Dell Inc.


Cloud-Native Approach

DevOps and Application Lifecycle Combined

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.

Click each tab to view details.

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

• In this phase, applications are deployed into production environments in a more


reliable way.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 31


Cloud-Native Approach

• Team implement automation to move applications between various stages till


they are available to customers.
• This helps to make them scalable, repeatable, controlled.

Manage

• In this phase, the running applications in production are continuously monitored


for various purposes.
• DevOps teams ensure the required reliability, availability, and security.
• DevOps teams takes proactive measure to identify any issues before they occur
and act quickly to resolve the issues.

Cloud-Native Application Development

Page 32 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Key DevOps Principles

There are key principles which are essential when adopting DevOps.

Click each list item to view details.

Encourage a Collaborative Environment

• DevOps combines development and operations teams that focuses on


delivering common objectives.
• These two teams need to collaborate throughout the entire development and
deployment processes.
• DevOps makes an organization to continuously adopting market changes, and
investing their budgets in developing new features that brings new customers.

Continuous Improvement

• In a DevOps approach, it is important to focus on continuous improvement. This


helps to improve optimization of cost, reduce waste, and improve the products
offering to customers continuously.

Customer-centric

• DevOps team must focus on a customer-centric approach and have short


feedback loops with end users.
• To meet customers’ requirements, organizations can innovate continuously and
invests in products and services.

Increment Releases

• A delay in code release often impacts time-to-market.


• In a DevOps approach, incremental releases make the development and
deployment cycle more efficient. This makes the teams to respond faster to the
changes and resolve the issues or bugs quickly.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 33


Cloud-Native Approach

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

• Continuous monitoring ensures the application environment has no issues.


• DevOps teams use monitoring tools to track the various aspects of application
such as performance, availability, and security.
• Monitoring tools also allows to monitor logs and infrastructure components.
• Monitoring helps DevOps teams to detect issues and resolve them as quickly as
possible.

Cloud-Native Application Development

Page 34 © Copyright 2021 Dell Inc.


Cloud-Native Approach

DevOps Transformation Services from Dell Technologies

Dell Technologies Consulting Services offers DevOps Transformation services


to organizations to innovate and respond to an ever-changing marketplace and
technology landscape.

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.

Dell Technologies does this by:

• Building automated, continuous delivery platforms


• Developing customer capabilities and capacity
• Re-engineering process based on Lean and DevOps
• Piloting digital operating patterns, team structures, and management methods

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 35


Cloud-Native Approach

Continuous Integration and Continuous Delivery (CI/CD)

Continuous integration and continuous delivery – CI and CD are important aspects


in software deployment. CI and CD deal with the build and test part of the
development cycle for each version.

Click each tab to view details.

Continuous Integration (CI)

• In a continuously integrated environment, developers merge changes to the


main source branch often.
• When these changes are detected, a CI server automatically checks out the
main branch and runs automated integration tests against the main branch.
• CI allows early feedback from committed code changes to ensure that the
updates have not broken anything when integrating with other code changes.
• CI relies heavily on automated testing and tooling.

Continuous Delivery (CD)

• 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.

Cloud-Native Application Development

Page 36 © Copyright 2021 Dell Inc.


Cloud-Native Approach

• Continuous delivery processes are automated, and supporting tools are


integrated to minimize manual steps and human intervention.
• Developers push code to a server that automatically builds it, runs tests against
it, and offers immediate feedback if things go wrong.
• Successfully built code is versioned, made available for reuse and ready “on
demand” for extra testing and deployment.
• Updates are made seamlessly, typically with zero downtime.
• The goal of CD is to ensure that at any point in time, software can be deployed
in a consistent, low-risk manner.

Click here11 to know more about CI/CD.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 37


Cloud-Native Approach

Best Practices to Implement CI/CD Pipeline

✓ Keep the CI/CD pipelines fast.


✓ Secure the CI/CD system.
✓ CI/CD pipeline should be the only way to deploy to production.
✓ Prioritize quick running tests early.
✓ Reduce number of branches in versioning.
✓ Infrastructure configuration has to be automated.

Cloud-Native Application Development

Page 38 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Version Control System (VCS)

In a software development environment, an application is usually developed by a


group of developers they may be located across various regions. Each developer
contributes to add new or updated features or functions.

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.

Click here12 to know more about version control systems.

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

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 39


Cloud-Native Approach

Benefits of a VCS

• Allows group of application developers to simultaneously work on a project. A


developer can edit the copy of his or her own files and can share those updates
with the team.
• Records changes to the source code by keeping a track of changes made to the
code. This allows restoring to specific version later.
• Improves collaboration among the team members.
• Streamlining the development process and keeping a history of all changes
within a code. This reduces the possibilities of errors and conflict
• Developers can be part of the project and develop the code from anywhere.

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.

Cloud-Native Application Development

Page 40 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Key Elements of a VCS

Click each tab to view details.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 41


Cloud-Native Approach

Implementation Options for a VCS

Click ‘arrow marks’ or ‘dots’ to navigate through each option.

Centralized Version Control System

Server Repository
(Database)

Commit Commit

Commi Update
t
Update Update

Working Copy Working Copy Working Copy

Dev 1 System Dev 2 System Dev 3 System

• 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.

For more information click here13.

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.

Cloud-Native Application Development

Page 42 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Distributed Version Control System

Repository
Server
(Database)

Push Push

Push Pull
Pull Pull

Repository Repository Repository


(Database) (Database) (Database)

Commit Update Commit Update Update


Commit

Working Copy Working Copy Working Copy

Dev 1 System Dev 2 System Dev 3 System

• Each developer owns a dedicated repository and a working copy.


• Even after a developer commit, other developers do not have access to the
updates until the developer push the changes to the central repository.
• When the developer updates, the developer does not get others' changes
unless the developer pull those changes into his or her repository.
• Commit and update commands move changes between the working copy and
the local repository, without impacting other repositories.
• Push and pull commands allow to move the updates between the local
repository and the central repository.
• Git and Mercurial are examples of distributed version control systems.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 43


Cloud-Native Approach

Types of Development Workflows

The two key development workflows are GitFlow and trunk-based.

Click ‘arrow marks’ or ‘dots’ to navigate through each option.

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.

In the GitFlow workflow, there are various branch types namely:

• 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.

Cloud-Native Application Development

Page 44 © Copyright 2021 Dell Inc.


Cloud-Native Approach

• 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

• In Trunk-based development, developers merge small, frequent updates to a


master (trunk) branch.
• Trunk-based development is a more open model since all developers have
access to the main code.
• Developers can create short-lived branches with a few small commits compared
to other long-lived feature branching strategies. This enables teams to iterate
quickly and implement CI/CD.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 45


Cloud-Native Approach

• 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.

Cloud-Native Application Development

Page 46 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Best Practices of Using a VCS

Click each tab to view details.

Add a descriptive message for commit

It is a best practice to write a descriptive commit message because it is useful to


understand the purpose and intention of the change.

Avoid unselective commits

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.

Work with most updated version

• It is always a best practice to work with the most updated version.

− 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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 47


Cloud-Native Approach

Do not commit generated files

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.

Collaborate with other team members

• It is common to merge changes that different people made simultaneously in


version control system.
• In some situation, two developers may edit the same line, and this would create
a conflict.
• The best way to avoid conflicts is to have a good collaboration among
developers.

Cloud-Native Application Development

Page 48 © Copyright 2021 Dell Inc.


Cloud-Native Approach

DevSecOps

To gain the advantage of a DevOps approach, it is important to consider IT security


in the life cycle of applications.

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.

DevSecOps refers to development, security, and operations. It integrates security


into each phase of the DevOps pipeline.

• Automates security activities by implementing security measures early in the


application development lifecycle.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 49


Cloud-Native Approach

Key Benefits of DevSecOps

• 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

− DevSecOps improves collaboration among team members and creates a


culture of openness and transparency.

Cloud-Native Application Development

Page 50 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Best Practices for a Successful DevSecOps Implementation

Click each tab to view details.

Infrastructure as Code

• Leverage IaC to control and test installation and deployment


processes and ensure they are in line with security practices.
• Security and ops staff should review and approve configuration flows.

Integrate automated testing into the pipeline

• Integrate security testing into the build and deployment process.


• Perform automated functional security tests to verify that features like
authentications are working as per need.
• Implement a testing framework that integrates with CI/CD server, so that the
development, security, and ops teams can use comfortably.

Train employees in Secure DevOps

• 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.

Use security management tools

• 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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 51


Cloud-Native Approach

• Continuous, proactive monitoring helps improve user experience in production


while avoiding expensive rollbacks.
• Monitoring can also assist development by including integration and acceptance
tests to ensure the application works as intended while it is running in
production.

Cloud-Native Application Development

Page 52 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Site Reliability Engineering

Site Reliability Engineering (SRE) follows software engineering approach to


automate IT operations aspects such as change management, performance and
capacity planning, and disaster response, that would otherwise be performed
manually by systems administrators. Typically, site reliability engineers look for a
way to improve and automate IT operations.

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.

Click here19 to know learn more about site reliability engineering.

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

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 53


Cloud-Native Approach

Need for 12-Factor App Methodology

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.

Some key challenges’ that organizations may encounter are:

the system, and deploying automation.


Typically, the SRE team connects development and operations teams, enabling the
development team to bring new software or new features to production as quickly
as possible. They also ensure an agreed-upon acceptable level of IT operations
performance and error risk in line with the service level agreements (SLAs).
SRE team enables to establish error budgets. An error budget refers to the
maximum amount of time a system can fail or underperform without violating the
SLA. The error budget is the tool a site reliability engineering team uses to
automatically reconcile an organization’s pace of innovation with its service
reliability.

Cloud-Native Application Development

Page 54 © Copyright 2021 Dell Inc.


Cloud-Native Approach

• Applications have become more complicated which makes them difficult to


understand.
• Even a small module failure might bring an entire application down.
• Adding new features is time consuming.
• Updates are expensive to implement.
• Even a small release requires a full deployment of the entire application.

These challenges have moved organizations to consider the 12-factor app while
designing and developing applications.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 55


Cloud-Native Approach

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.

The 12-factor app methodology can be applied to applications written in any


programming language, and which use any combination of backing services such
as databases, queues, and memory cache.

Click each component to learn more.

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:

• Define the dependencies of the application, automate the collection of the


dependent components, and isolate the dependencies for minimizing their
impact on the application.

Cloud-Native Application Development

Page 56 © Copyright 2021 Dell Inc.


Cloud-Native Approach

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:

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 57


Cloud-Native Approach

• Access services through well-defined URLs or ports. The 12-factor application


is self-contained and does not rely on runtime creation of a web-facing service.
• The application exports HTTP as a service by binding to a port, and listening to
requests coming in on that port. For example, by using the port binding
recommendations, it is possible to point to another service simply by pointing to
another URL.
• That URL could be on the same physical machine or at a public cloud service
provider.

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:

• Maximize robustness with fast startup and graceful shutdown.


• Factor #6 – Processes describes a stateless process that has nothing to
preload, nothing to store on shutdown. This method enables applications to
start and shut down quickly.
• Application should be robust against crashing, if it does, it should always be
able to start back up cleanly.

10:

• Keep development and production environments, and everything in between as


identical as possible.
• In recent times, organizations have a much more rapid cycle between
developing a change to the application and deploying that change into
production.
• For many organizations, this implementation happens in a matter of hours.
• To facilitate that shorter cycle, it is desirable to keep a developer’s local
environment as similar as possible to production.

11:

Cloud-Native Application Development

Page 58 © Copyright 2021 Dell Inc.


Cloud-Native Approach

• Logging is important for debugging and checking up on the general health of an


application.
• Treat logs as event streams. This method enables orchestration and
management tools to parse these event streams and create alerts.
• Furthermore, this method makes easier to access and examine logs for
debugging and management of the application.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 59


Cloud-Native Approach

Microservices

Microservice architecture, or simply microservices, is


a distinctive method of developing software systems
that has grown in popularity in recent years. In this
architecture, the application is decomposed into
small, loosely coupled, and independently operating
services.

A classic or traditional application is one big pile of


code, while microservices are many very tiny pieces Microservices

of code bound together by APIs.

Microservices are organized around business capabilities.

For more information, Click here.20

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.

Cloud-Native Application Development

Page 60 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Key Tenets of Microservices

Click each list item to view details.

Modularity

A microservice is logically a cohesive, lightweight, highly granular, and can be


independently built and deployed.

Loosely Coupled

Microservices are designed to be loosely coupled with minimal dependency on


other services and libraries. Microservices communicate with each other with well-
defined APIs.

Stateless

Microservices provide stateless communication between the client and the server.

Self-contained

The microservice deployment unit is self-contained as it includes all dependent


libraries, storage units, databases and more. As each microservice can be
independently deployed along with all the dependencies, they can also be
independently scaled based on the load.

Open Standards

Microservices can be built using open standards such as REST, JSON, OAuth and
others.

Resiliency

The microservices design provides graceful degradation of functionality. Even if a


single service goes down, the application will continue to work.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 61


Cloud-Native Approach

Cloud Readiness

The microservices design can be easily integrated with cloud environments on


cloud native containers or over cloud-based virtual machines.

Language Neutral

Microservices can be developed using various programming languages.

Cloud-Native Application Development

Page 62 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Microservices Ecosystem

Click each component to learn more.

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:

− User directory service


− Authentication service
− Authorization service
− SSO service
Management (Monitoring): This includes components for monitoring and
managing availability, performance, security, and capacity of the IT resources in
order to meet the required SLAs.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 63


Cloud-Native Approach

DevOps: DevOps includes components for release management, automated


deployments, continuous build, deployment pipeline, source control management
and provisioning.

Container-based Microservices:

• The actual business logic is implemented using various microservices.


• Container images are the preferred deployment units of microservices.
• The container orchestrator is an important element that is responsible for
managing the lifecycle of containers, monitoring the container’s health, and
others.
• Based on the container’s availability, traffic volume and health status, the load
balancer evenly distributes the load to various containers.

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 acts as a directory service for all microservices.


• It checks with the service directory to route all client requests.
• Microservices also leverage a service directory to communicate between them.

API Gateway:

• The API Gateway acts as a proxy for the client to access the microservices.
• It performs routing request, and protocol translation.

Cloud-Native Application Development

Page 64 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Key Questions to Ask Before Adopting Microservices


Architecture

It is important to consider the following questions before adopting microservices


architecture:

✓ 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?

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 65


Cloud-Native Approach

Best Practices for Implementing Microservices

✓ Version control system should be used to manage the microservice releases.


✓ Monitoring tools should be used to check the performance, security, and
availability of the microservices. Other monitoring services can be configured to
monitor the capacity, CPU utilization and others. It is also important to configure
appropriate thresholds to alert the operations teams if there is a SLA violation.
✓ Should include feature such as auto-scaling and circuit breaker to handle
failures.
✓ Each microservice should be designed to represent one business function.
Also, each microservice should be designed in a way that it should be
independently upgradable without impacting the other services.
✓ Cloud native application is composed of multiple microservices, so it is
important to have an optimal service decomposition, and appropriate database
for each service.
✓ Automation should be implemented to reduce the operational complexity of
microservices architecture. For example, automate operational tasks such as
build, deployment, error reporting, alerting, monitoring, autoscaling and others.
✓ Each microservice can have its own CI/CD pipeline. CI/CD pipelines need to be
set up so that changes to the source code automatically result in a new
container being built, tested and deployed in staging and eventually pushed to
production.

Cloud-Native Application Development

Page 66 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Containers Overview

Imagine needing multiple versions of applications for testing or production. IT team


would need multiple Virtual Machines which are running multiple iterations of
applications with necessary binaries and libraries. This would be challenging as
moving around large amounts of data limits VM mobility.

Containerization is an operating system-level virtualization method that simplifies


application deployment and requires fewer resources than virtual machines.
Containers bundle applications with the software libraries that they depend on,
allowing developers to create “build once, run anywhere” code making applications
very portable.

Containers do not require a hypervisor, rather they isolate application resources in


a small package that can be rapidly scaled dynamically based on usage.
Furthermore, containers are very often a foundational component in “Devops”
based application development and delivery processes.

For more information about Containers, Click here.21

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

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 67


Cloud-Native Approach

Containers vs. VMs

Containers VMs

Shared Operating System Separate Operating System

Small Image Footprint, (MB) Large Image Footprint, (GB)

Quick start times Full boots

Stateless Stateful

Easily transportable Not easily portable, (exports/conversions/etc)

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.

Cloud-Native Application Development

Page 68 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Why Application Development Team Prefers to Use


Containers

Development teams use containers for several reasons.

Click each tab to view details.

Faster Development and Deployment

• Container applications can be built from existing or new microservices,


programmatically deployed across large infrastructure farms and updated
automatically.
• Moreover, when new functionality or application updates are implemented using
containers, applications can evolve in smaller increments rather than through
major releases.
• This capability allows DevOps to supply a quicker rollout of new features and a
more agile development lifecycle.

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 69


Cloud-Native Approach

Scalability

Container instances can be automatically scaled up or down in response to service


demand.

Consistency

• Because containers retain all dependencies and configurations internally, they


ensure developers can work in a consistent environment regardless of where
the containers are deployed.
• This makes developers not to invest time in troubleshooting environmental
differences and they can focus on addressing new app functionality.

API driven

Containers are designed to be fully API managed, i.e., deployed, run and updated
under API control, to minimize manual intervention.

Resource Utilization and Optimization

Containers are so small and require fewer resources. This enables to run multiple
containers on a single machine.

Cloud-Native Application Development

Page 70 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Container Use Cases

In today’s digital world, containers are increasingly used in cloud environments.


Some organizations also started using containers as their compute platform to run
applications. The key use cases of containers are:

• 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

− Containers are used to deploy modern applications (microservices) and also


helps to migrated applications to the cloud or between clouds.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 71


Cloud-Native Approach

Container Orchestration

When containers used for microservices (application) deployment, this


containerized application might be translated into multiple containers. This
environment may create complexity if managed manually.

Container orchestration helps to reduce this operational complexity. Container


orchestration provides automation to run containerized workloads. It manages or
schedules the work of each container through automated process.

Multi-cloud container orchestration uses an orchestration tool to manage containers


across different clouds (private and public clouds). Multi-cloud environments and
containers go together because of the portability offer by containers.

Cloud-Native Application Development

Page 72 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Container Orchestration (Contd.)

The following tasks can be automated using 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

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 73


Cloud-Native Approach

Container Orchestration Example: Kubernetes

• Kubernetes is an open source automation platform that improves the


development process by simplifying container management, automating
updates, and minimizing downtime so developers can focus on improving and
adding new features to applications.
• It schedules and manages container application execution using master
node(s).

− Master nodes provide the environment to execute the Kubernetes control


plane, to construct clusters and to schedule container execution.
Click here22 to understand the working of Kubernetes.

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

Cloud-Native Application Development

Page 74 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Container as a Service (CaaS)

Container-as-a-Service allows users to deploy and manage container-based


applications. It reduces application delivery cycle times and improves business
agility.

provides the IP connections required by container applications. Container


applications can be automatically scaled up by Kubernetes, increasing the number
of pods executing its instances. It is not unusual for highly active applications to
have multiple pods executing the same exact container instances to meet
performance requirements and for high availability. In Kubernetes, container-
persistent volumes (data storage) are provisioned to pods; as a result, container
instances running in those pods can read and write persistent data storage
volumes.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 75


Cloud-Native Approach

CaaS helps users to build containerized applications with features such as


scalability, availability, and security. CaaS provides built-in features such as auto
scaling and orchestration management.

With Container as a Service enterprises can:

• Enable better application development


• Decrease overhead operation
• Deploy applications operating in containers to different operating environments
quickly

Cloud-Native Application Development

Page 76 © Copyright 2021 Dell Inc.


Cloud-Native Approach

PaaS vs CaaS vs FaaS

Platform as a Service Container as a Function as a Service


(PaaS) Service (CaaS) (FaaS)

• PaaS is an integrated • CaaS allows users • FaaS (serverless


application to gain more control computing) is a cloud
development and over container computing model that
deployment solution. orchestration tasks. abstracts server
management and low-
• PaaS is a • CaaS supports
level infrastructure.
recommended solution developers to
when multiple deploy applications • Advantages of a FaaS
developers are on containers are primarily that
working on single without worrying developers can focus on
complex application. It about the limitations writing code rather than
provides the ability to on container thinking about
automate testing and orchestration infrastructure
deployment. provided by the management,
typical PaaS. implementation, load
• PaaS solution enables
balancing, or scaling.
to faster development
of new applications. • Consumers are charged
only for the time it takes
to execute the code.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 77


Cloud-Native Approach

Thoughts from a Cloud Expert23

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 Application Development

Page 78 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Cloud-Native Platform

Cloud-native platform is an integrated stack from infrastructure through application


development framework. The platform is optimized for scaling modern application
rapidly to meet the business demand. The cloud-native development platforms
support development and timely delivery of these applications.

Cloud-native platform supports application developers with:

• Multiple languages – such as Java, Ruby, Python, and Node.js


• Frameworks – such as Spring
• Middleware – such as MySQL, RabbitMQ, and Redis

A variety of different applications can be designed through cloud native and


deployed across hybrid and multi-cloud infrastructures.

Cloud-native platform supports container and container orchestration that enables


IT to develop, deploy, scale, and manage software delivery more quickly and
reliably.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 79


Cloud-Native Approach

To learn more about cloud platform, click here.24

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.

Cloud-Native Application Development

Page 80 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Cloud-Native Platform Deployment Options

There are two different architectural cloud-native platform options.

Click each tab to view details.

Structured

• This platform provides built-in capabilities to support organization-wide user


management, security, and compliance.
• It provides everything that is needed to run applications in a repeatable way,
regardless of what infrastructure is used.
• Structured platforms simplify the overall operational model rather than focusing
on integrating, operating, and maintaining numerous individual components.
• VMware Tanzu Application Service is an example of a structured platform.

Unstructured

• This platform provides the flexibility to define a personalized solution at a


granular level.
• The unstructured platform is generally involving a “Do-It-Yourself” approach that
provides an option to choose the required products and tools.
• Usually with a mix of cloud-provided services and native tools, assembled to
build cloud-native platform that meets the need for an organization.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 81


Cloud-Native Approach

Operational Readiness for Cloud-Native Architecture

Be ready to run when your infrastructure is

- Create new processes and roles


Operating Model - Create IaaS services

- Deliver a compelling consumption experience

Determine application optimization opportunities


Application - Identify applications that benefit most with HCI
Profiling
- Understand cloud suitability and effort
- Remove cost and reduce technical debt

Migrate the most important workloads first


Workload
Migration - Understand workload dependencies
- Minimize service distribution

- Eliminate data loss, ensure security during and post migration

To know more about operational readiness, Click here25.

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

Cloud-Native Application Development

Page 82 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Concepts in Practice: VMware Tanzu on Dell EMC VxRail

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.

Depending on the customers business needs, operational model and Kubernetes


expertise, there may be different requirements for the underlying infrastructure to
run Kubernetes and modern 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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 83


Cloud-Native Approach

VxRail offers multiple infrastructure options that meet customers on their


Kubernetes journey across the core, edge and cloud.

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.

Cloud-Native Application Development

Page 84 © Copyright 2021 Dell Inc.


Cloud-Native Approach

Example of Application and Workload Migration

Consider an example of application and workload migration services from Dell


Technologies.

Click each tab to view details.

Business Challenges

Every IT organization must have a cloud strategy. The challenges with


organization’s existing portfolio often take up most of their personnel just to keep
them up and running.

• 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?

These questions highlight some of the complexities of putting together a


comprehensive strategy for your application and associated workload portfolio.

Moving applications or workloads from one platform to another is not easy or


simple. You need to factor in security, availability, people and processes

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 85


Cloud-Native Approach

transformation; and identify the right skill set and expertise to maximize efficiency,
performance and quality.

Requirements

The requirements must be understood; they may include:

• Migrate applications and workloads quickly and reliably.


• Minimize service disruption and reduce risk.
• Free your staff to work on other business critical tasks.
• Right-size workloads to minimize costs.
• Preserve application performance, customization and optimization.
• Decision support for the right cloud.
• Dell Technologies ProConsult Migration Services for fixed scope engagements
or custom services for more complex environments.

Solution

The solution may include:

Cloud-Native Application Development

Page 86 © Copyright 2021 Dell Inc.


Cloud-Native Approach

• Application and Workload Migration Services from Dell Technologies are


designed to help organizations with the adoption of the right cloud for their IT
environment.
• Using Dell’s proven methodology, Dell can design solutions and migrate
applications and workloads quicker and more reliably while minimizing service
disruption.
• Our factory approach allows us to execute and validate migrations, taking what
we have learned and applying it to subsequent migrations for continual
improvement and optimization of the end state.
• By the best end state, we mean that we address the end-to-end migration life
cycle from discovering dependencies, to developing a migration plan, to
executing the migrations, to validating the completed migration.
• After detailed analysis, we will even be able to determine which public cloud
provider offers the features and service level agreements that best align with
your organization’s needs. We reduce the burden on your IT organization to
allow them to focus on business-critical tasks by right-sizing workloads to
minimize costs. We provide decision support for the right cloud to meet your
organization’s needs.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 87


Knowledge Check

Knowledge Check

Cloud-Native Application Development

Page 88 © Copyright 2021 Dell Inc.


Knowledge Check

Question 1

1. Which is a cloud service model that enables IT and DevOps professionals to


deploy, manage, and scale container-based applications and services easily?
a. Container Orchestration
b. Containerized application
c. Container as a Service
d. Containerized VM

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 89


Knowledge Check

Question 2

2. What is a key advantage of using containers in a multi-cloud environment?


a. Allows to consolidate multiple virtual machines running in a multi-cloud
environment to improve the performance of the applications deployed in
cloud
b. Allows to quickly and easily deploy the same containerized application into
multiple environments or readily move it from one cloud to another
c. Reduces the overall cost of cloud implementation due to the fact containers
always use a fixed resources irrespective of the applications deployed on
the container
d. Reduces the dependency of using only open source cloud management
platform to perform workload migration across multiple clouds

Cloud-Native Application Development

Page 90 © Copyright 2021 Dell Inc.


NanCo Case Study

NanCo Case Study

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 91


NanCo Case Study

NanCo Case Study

Cloud-Native Application Development

Page 92 © Copyright 2021 Dell Inc.


NanCo Case Study

NanCo Case Study

Click the
NanCO Art Services Company link below
to
understan
d the
multi-cloud
requireme
nts of
NanCo.
• Scenar
io

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 93


NanCo Case Study

NanCo Case Study: Discussion Area

The online course contains an interaction here.

[Detailed description of the Interaction for Guides]

Cloud-Native Application Development

Page 94 © Copyright 2021 Dell Inc.


Lab - Containers

Lab - Containers

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 95


Lab - Containers

Container Lab Demonstration

Click here to view a container lab demonstration.

Cloud-Native Application Development

Page 96 © Copyright 2021 Dell Inc.


Lab - Containers

Proven Professional Certification

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

Transforming Traditional IT to Digital IT


Cloud Services Lifecycle and Management
Cloud Services Management Workforce Transformation for Cloud Services
Multi-Cloud Strategy for Cloud Services (ODC)
(C, VC) Cloud Services Operating Model
Cloud-Native Application Development
Business Resiliency for Cloud Services

Cloud Architect, Cloud


Infrastructure

Cloud Infrastructure Planning and Design


(C, VC, ODC)

Cloud Infrastructure and Services Information Storage and Management

Cloud Infrastructure and Services Information Storage and Management


(C, VC, ODC) (C, VC, ODC)

(C) - Classroom

(VC) - Virtual Classroom

(ODC) - On Demand Course

For more information, visit: http://dell.com/certification

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 97


Lab - Containers

You Have Completed This eLearning

Go to the next eLearning or assessment, if applicable.

Cloud-Native Application Development

Page 98 © Copyright 2021 Dell Inc.


Appendix

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 99


Appendix

Rehost
Click 'next arrow >' to learn about refactor approach.

Description

• A part of the application or a complete application is moved “as-is” to a new


environment.
• May be required to change the host configuration due to the underlying
infrastructure change, but the application will not undergo any changes.
• It is important to ensure that the application still has access to the data stored in
a previous environment for it to run successfully.

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

A commercial BI application was moved to a cloud environment from an on-


premises data center. Even though the application was moved as-is, its database
layer was hosted on to a different SQL platform provided by the cloud service
provider to reduce the database administration overhead.

When to Use?

• Time Constraints: When organizations need a quick migration approach


without disturbing the application workflow
• Commercial and Off-the-shelf Applications: When organizations use
applications that cannot easily be broken down into individual components or it
is not possible to do any code changes
• Retain Functionality: When applications are working as expected and there is
no need to change any functionalities immediately but need to reduce on-prem
infrastructure cost
• Strict Cost, Effort, and Duration: When there is a tight constraint on cost,
effort, and duration because rehost does not involve significant changes to the
application or infrastructure

Cloud-Native Application Development

Page 100 © Copyright 2021 Dell Inc.


Appendix

− Example: Sometimes a data center will be scheduled to be closed or they


don't want to renew a contract because of tight budget constraints and they
have to get out before penalties apply.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 101


Appendix

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

• A back-end database management system was moved to a cloud environment.


• The functionality of the system was to receive files, perform operations such as
compression, and encryption, and later transfer the files to another destination.
This application faced scalability and performance issues.
• This application was moved to cloud by using microservices architecture that
provided scalability and improved performance. It also reduced the burden on
the IT teams.

When to Use?

• Monolithic: When organizations use monolithic or legacy applications


developed in-house.
• New Features: When there is a need for organizations to add new features to
an application or improve scalability and performance.

Cloud-Native Application Development

Page 102 © Copyright 2021 Dell Inc.


Appendix

• Need Continuous Improvements: When businesses need continuous


improvements in their functionality to meet the market demands, and it is not
possible with the current application design.
• Long-term Cost Savings/High ROI: Refactoring an application by moving to
cloud may help in better resource utilization due to the elasticity feature of
cloud. It may also provide higher return on investment compared to on-prem.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 103


Appendix

Replatform
Click 'next arrow >' to learn about replatform approach.

Description

• Applications are migrated to a new environment or platform without major


changes to take advantage of a new environment.
• The application is moved “as-is”, but certain application components may be
moved to a different platform.
• Helpful to start small and scale as needed; does not involve making changes to
core application architecture.
• Replatform while moving an application from on-site to cloud or replatform an
application that is already rehosted; some common ways include:

− Changing the operating system or middleware that supports the application


− Containerizing the application
− Using cloud-native managed databases
Note: This approach acts a middle ground between rehost and refactor.

Example

A traditional java application was moved to a cloud environment having a different


platform. In this case, the application was moved “as-is” but the underlying platform
was different.

Database hosting is another example.

When to Use?

• Individual Services or Components: When an application has loosely coupled


components, it becomes easier to move a few components to a new platform.
• Need New Platform or To Reduce Licensing Cost: When organizations must
address scaling challenges due to platform or licensing cost.
• Leverage Cloud-native Capability: When organizations want to leverage
cloud features such as autoscaling, IaC, flexibility, and so on.

Cloud-Native Application Development

Page 104 © Copyright 2021 Dell Inc.


Appendix

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:

1. Moving the ArtPort applications as is into the cloud environment

2. Adding new features which involved huge time and cost

3. Changing to a new application development and deployment platform

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.

Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 105


Cloud-Native Application Development

© Copyright 2021 Dell Inc. Page 106

You might also like