Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
C L O U D N A T I V E
Leveraging the cloud in software development
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
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
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
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
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.
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
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.
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,
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.
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.
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!