12
CLOUD NATIVE Leveraging the cloud in software development

CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

C L O U D N A T I V E

Leveraging the cloud in software development

Page 2: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

CONTENTS

1. Introduction ....................................................................................................................... 1 2. Why cloud native development? ..................................................................... 2

Business benefits .............................................................................................................. 2

Benefits for software development .................................................................... 3

3. Technical foundations of cloud native development ....................... 5

Serverless platforms ...................................................................................................... 6

Efficient use of managed services ........................................................................6

DevOps ..................................................................................................................................... 7

Information security ........................................................................................................ 7

4. The path from legacy to cloud native .......................................................... 9

5. Poplatek value-add ................................................................................................. 10

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Page 3: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

Adoption of cloud services is a huge global IT trend. Typically, all the new “as-

a-service” products utilized by businesses and the public sector are built on

the cloud.

New software development is increasingly cloud native. We define cloud native

software development as the development of software that explicitly targets

the cloud. It makes use of managed services and new compute platforms of-

fered by cloud providers and combines them with a new, more dynamic ap-

proach to development and operations enabled by the cloud.

For business decision makers and IT managers struggling with budgets, the

promise of cost-savings has been the leading driver. But cloud native devel-

opment brings a lot more to the table – it enables faster time-to-market, easy

iteration of new ideas, and more. For us at Poplatek and for other software spe-

cialists, the benefits look slightly different: we get to focus on solving problems

that matter, and build better, more robust software.

A growing concern is the fate of existing software. Developers and develop-

ment organizations are adapting to the new processes enabled by the cloud,

and would rather turn off and discard the old machines required by pre-cloud

native software. In response, organizations should establish viable plans for

migrating their software to the cloud.

The purpose of this white paper is to open up the basics and educate the reader

about cloud native development in a concise and easy-to-read format.

Introduction1

1

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Page 4: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

Traditionally, software development projects were massive undertakings, and

the entire projects were usually planned beforehand to a precise level of detail

in what was called the waterfall model. Since the early 00’s, organizations have

mostly transitioned to an agile method of software development, where devel-

opment happens incrementally, with faster time-to-market, and the possibility

to evolve the software according to the needs of its users.

Cloud native development brings many of the advantages of agile to the infra-

structure side of things, allowing software development teams to provision the

infrastructure they need at the click of a button.

Furthermore, making use of managed services for things like databases, or cloud-

based user authentication solutions, avoids the need for having dedicated teams for

managing these, or developing them in-house.

All in all, cloud native development allows development organizations to move

faster with fewer resources, while still delivering the expected results.

Business benefits

Modern businesses are heavily dependent on software. From this perspective,

what are the main business benefits of cloud native development?

1. Agility: fast reaction to business demands and faster time to market

2. Lower costs

3. More robustness and better fault tolerance

Time to market is a key issue for any business, and it is one of the things that

benefits greatly from cloud native development. The faster a company can ship

more value to customers the more likely it is to succeed. And in any modern

business, customer value is very often delivered as applications. To rephrase:

the faster a company is able to release new applications, new features, updates,

or security patches, the happier its customers are.

Why cloud native development?

2

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

2

Page 5: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

Cloud native development also accelerates innovation and the release cycle significantly

compared to the old model: the response time to changed business requirements be-

comes much shorter.

Cost reductions result partly from the pay-as-you-go model, and partly from the scala-

bility, elasticity, and automation enabled by the cloud. The cloud obsoletes the need for

buying, running and updating in-house servers and data centers, and the large up-front

investments required for this. The scalability of cloud native also eliminates one of the

big cost pains in the old infrastructure model: infrastructure capacity had to be planned

to cope with maximum capacity usage peaks.

Finally, the increased reliability of cloud native applications is a boon: if an application is

running on a traditional server that suddenly becomes unavailable business operations

grind to a halt. When an application is developed and operated in a cloud native fashion, it

is robust and survives bugs, errors and other failures better.

Benefits for software development

Cloud native is a fundamentally new style of software development. It aims

at maximizing all the opportunities that the cloud enables. From a developer

standpoint, here are the most important benefits of cloud native development:

1. Agility and speed brought by independence from physical architecture

2. Automation, ease of management & minimal administration

3. Scalability, high availability & fault tolerance by default

Cloud native development is agile by default. Cross functional teams following

the DevOps model can act quickly and iteratively to create new features to in-

crease customer value. Teams can manage everything by themselves, and they

don’t depend on physical infrastructure. Cloud native applications are designed

for cloud deployment and to capitalize on everything that the cloud enables.

Another important feature of cloud native development is the aim to mini-

mize manual work by using automation and managed services. The point is

to avoid reinventing the wheel. Cloud native development avoids consuming

3

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Page 6: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

4

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

resources for something that does not create business value. It is wasteful to

build and maintain something that someone else is better at and provides

as a managed service. Managed services make operating production much

easier and more efficient.

Scalability is important since it ensures the application keeps up when user

numbers increase. True cloud native software is flexible and adapts easily to

match the exact demand at any given moment, also scaling down at times.

This is achieved using horizontally scalable redundant microservices as well as

managed services and platforms. The same architectural patterns which bring

scalability also make cloud native software fault tolerant by default.

Page 7: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

5

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Technical foundations of cloud native development3

Cloud native takes advantage of the cloud computing delivery model and uses

techniques such as serverless, containers, and managed services. Common

to all these techniques is that they raise the abstraction level. They hide tech-

nical details from the eyes of developers, and thereby simplify processes and

enable focusing on core issues and creating business value.

Without going deep into technicalities, it is good to know the most important

technical foundations. We can summarize them as three pillars:

3 pillars of cloud native

• Develop and maintain software, not servers

• Pay-per-use

• Built-in scalling and HA

• Think AWS Lambda and API Gateway

• No need to reinvent the wheel or install software

• Provider maintains, patches and operates

• Customize with code to meet business requirements

• Serverless is also managed

• Developers build the infrastructure and operate the software

• Relies on automation and Infrastructure-as-Code

• DevOps is a cloud native process

• Information security still needs attention in the Cloud

1. Serverless platforms 2. Efficient use of

managed services

3. DevOps

Page 8: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

6

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Serverless platforms

Serverless is a new compute model enabled by the cloud that further raises

the level of abstraction. Essentially, the developer only provides the software,

which is then executed by the platform in response to events such as incoming

requests by users. Servers are abstracted away, and don’t have to be config-

ured or maintained by the developers.

Serverless enables a new pay-per-use pricing model, where the cost depends only

on real execution, and not on pre-allocated server capacity. Server time is bought

by the millisecond, in exactly the required amount. This is very cost-effective.

Another advantage to the serverless model is that since server capacity is ab-

stracted away, scaling becomes a non-issue. Serverless applications scale up

or down instantly on demand. This also results in automated high availability.

Efficient use of managed services

Serverless itself is a great example of managed services. In general, managed

services mean that instead of building any desired functionality themselves

cloud native developers utilize ready-made cloud services that execute the

functionality they need. Managed services can be somewhat tailored by adding

some new code to get the desired results in a specific use case.

Previously, similar services had to be either developed in-house, or acquired as

commercial software packages. Additionally, resources had to be dedicated to

learning, installing and maintaining these solutions. Compared to this, managed

services bring remarkable direct cost savings, as well as indirect savings in terms

of saved effort.

To illustrate this, here are some examples that cloud has changed: data stor-

age, file sharing, databases, authentication, face recognition, chatbots and ma-

chine learning. For instance, when a developer wants a database as a managed

service, he/she can simply set up an instance on the cloud, and instantly gets

a database with backups and failover handling taken care of. Previously this

would have required acquiring hardware, acquiring and configuring the soft-

ware, as well as continued maintenance. If a customer needs a chatbot for a

customer service, the developer doesn’t have to write a complete chatbot but

can instead integrate it as a managed service.

Page 9: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

7

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

DevOps

Along with technical evolution, the culture and organizational structure of de-

velopment is undergoing a fundamental change. This paradigm shift is called

DevOps, a compound of the words development and operations. The cloud

enabled DevOps, and it is at the heart of cloud native development.

The idea of DevOps is to tear down the traditional wall between developers

and the people who are responsible for running operations and managing in-

frastructure. Earlier, they were far from each other in separate organizational

silos, had minimal communication, and minimal mutual understanding.

In DevOps, developers and operators collaborate, work closely together and,

optimally, merge together. The development teams design the infrastructure

that becomes an integral part of the software, and the same teams manage

infrastructure and operations at least to some extent.

This is enabled by the cloud making infrastructure more abstract; less focused

on the underlying servers and operating systems, and more focused on the

software platforms and services. This is commonly known as “Infrastructure as

Code”, i.e. changes to the infrastructure are made by modifying the code that

describes it. This means cloud operations is closer in nature to software devel-

opment than previously, making dealing with infrastructure and operations a

natural part of a team’s responsibilities.

DevOps embraces lean and agile practices. Because DevOps demands a deep

cultural change, cloud native development can’t be adopted overnight. The

cloud does, however, support the transition, offering excellent tooling such as

Infrastructure as Code.

Information security

With the increased responsibilities that the DevOps shift has brought, cloud

native developers need to have a broader understanding of information secu-

rity than before.

Configuring firewalls and managing operating system patches previously fell

under the responsibility of systems administrators. With cloud native software,

Page 10: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

8

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

firewalls are part of the infrastructure-as-code configuration, and operating

systems are packaged into containers deployed by developers.

Developers need to understand network configuration, routing and segmenta-

tion, and firewalls. They need to understand the different authorization models

employed by managed services, and how to apply the principle of least privi-

lege to these to make their applications as secure as possible.

So, while cloud providers are responsible for the security of the platform itself,

the responsibility for creating secure applications and running them in a secure

fashion rests squarely on the shoulders of the developers.

Page 11: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

9

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

The path from legacy to cloud native4

For any new software development, building cloud native software from day

one is an easy choice. For IT departments in established companies, however,

the situation is complicated by having to take into account varying amounts of

legacy software.

An IT manager considering adopting the cloud for existing software has a

range of choices: from retaining existing on-premise software, and doing new

application development in the cloud in a so called “hybrid cloud” approach,

to rehosting the existing environment on the cloud (a so-called “lift and shift”

operation), to re-architecting the existing software to be cloud native.

Often, the selected migration path is a combination of different approaches: a

company can start by rehosting the existing software on the cloud and reap a

sizeable reduction in TCO, gaining valuable experience with the cloud in the

process, and afterwards proceed to selectively re-architect critical parts to

be cloud native. The appropriate strategy for each component depends on a

range of factors, such as where the application is in its expected lifecycle, and

how much business will benefit from capabilities enabled by the cloud.

The effort of re-architecting an application to be cloud native can also vary quite

a bit. A fairly modern microservice based architecture will be quite straightfor-

ward to re-architect piece by piece, while a large monolithic application pre-

sents a much bigger challenge. In this, an intermediary step might be to adapt

the application to the new platform by making use of managed services such

as databases, and replacing expensive commercial components such as appli-

cation servers with open source alternatives.

Whatever the starting point, having an experienced partner to help with

choosing and executing a migration strategy is the best way to ensure a suc-

cessful outcome.

Page 12: CLOUD NATIVE Leveraging the cloud in software development · Finally, the increased reliability of cloud native applications is a boon: if an application is running on a traditional

10

C L O U D N A T I V ELeveraging the cloud in software development

© Poplatek 2019

Poplatek value-add5

Poplatek is on a strategic mission to make the world cloud native. We prefer

doing everything in the cloud because we have learned how beneficial it is for

our customers.

We have a decade of experience in building software on the cloud, and know

the ins and outs of it. We have experience in migrating legacy software to the

cloud, as well as in building large cloud native applications from scratch. Being

cloud native means we use managed services wherever we can, and focus on

writing code that actually provides value for our customers.

Anyone can decide to go cloud native, but doing it successfully demands skill,

experience and understanding. Poplatek has extensive experience in operat-

ing payment services in the cloud, which is a very demanding domain in terms

of requirements placed on information security and reliability. This experience

carries over to everything we do, meaning that we build software that is secure

by design.

At this point, you will want to know how to proceed. Our recommendation is

simple: start by deciding that the next application your organization develops

will target the cloud; be cloud native. That way you get hands-on experience

on the benefits and receive user feedback. Getting outside assistance to help

you with this is an excellent to bootstrap your own cloud native expertise.

We suggest that you start thinking “cloud native”, and we encourage you to

take the first steps towards cloud native development – we are here to help

you forward!