First steps in
Native Cloud Applications
Mauricio “Maltron” Leal <maltron@redhat.com>
LATAM Developer Experience Expert
January/2017
Is your application ready to
scale out ?
Is this my
problem ? I think it should
be handled by
the infra guys
I will think
about that later.
Let’s focus on
my code.
Yes. The
sizing is well
cover for the
whole year
Resources
are Infinite
and Cheap
Infrastructure is
Immutable
Very
specialized
and Silo
Linear
Thinking
Little
Monitoring
(or none)
No
Production
Feedback
Change is Hard
Change is Expensive
Change is Labor intensive
“Any organization that designs a
system (defined broadly) will
produce a design whose
structure is a copy of the
organization’s communication
structure”Melvyn Conway
1967
Web Design
Developers
Database
Administration
Development
Department
Database
Department
Design
Department
Knowledge &
Experience
Border
No
Experience
Shared
No Cross
Knowledge
Cloud is a Solution?
Scale On
Demand
Improve
Time to Market
More Resilient
Systems
Low Productivity
High Control
High Productivity
Low Control
IaaS
Legacy
Hosting
IaaS+
Middleware
IaaS+
Container
xPaaS
SaaS
BPaaS
Legacy
Applications
Cloud-Based
Applications
Native Cloud
Applications
http://searchitoperations.techtarget.com/definition/native-cloud-application-NCA
"A Native Cloud Application (NCA) is a
program that is designed specifically
for a Cloud Computing Architecture."
"NCAs are designed to take advantage of cloud computing
frameworks, which are composed of loosely-coupled cloud
services. That means that developers must break down
tasks into a separate services that can run on several
servers in different locations. Because the infrastructure
that supports a Native Cloud App does not run locally,
NCAs must be planned with redundancy in mind so the
application can withstand equipment failure and be able to
remap IP addresses automatically should hardware fail."
http://searchitoperations.techtarget.com/definition/native-cloud-application-NCA
http://searchitoperations.techtarget.com/definition/native-cloud-application-NCA
"NCAs are designed to take advantage of cloud computing
frameworks, which are composed of loosely-coupled cloud
services. That means that developers must break down
tasks into a separate services that can run on several
servers in different locations. Because the infrastructure
that supports a Native Cloud App does not run locally,
NCAs must be planned with redundancy in mind so the
application can withstand equipment failure and be able to
remap IP addresses automatically should hardware fail.”
Resources
are costly
It can
change
anytime
Technology Process
People
Organic
Observable
Prioritize
Fail Fast
Measurements
Cross
Functional
Group
Empowerment
Small Pieces
Standards
Open
Manageable
Elastic Circular
Automation
Utility
Focus on
Products
Creating
Native Cloud Applications
Highly
observable
Modeled around
business concepts
Culture of
Automation
Autonomous
Small and
Focused
Design for
failure
Products not
Projects
1.0
Orchestration
(Central brain to guide and
drive the process)
Choreography
(Inform each part of the
system of its job and let it
work out the details)
Deploy
independently of
the rest of the
system
Faster boot
(Elasticity also faster)
Isolation quickly
(in case of failure)
First Steps in Native Cloud Application
First Steps in Native Cloud Application

First Steps in Native Cloud Application

Editor's Notes

  • #5 Resources are Infinite and Cheap Infrastructure is Immutable (don’t change and it won’t change… Changes are ultimately costly and very intense work) Delegate some functions to large/proprietary/closed software: Black boxes. Integration only possible “by the book” Very specialized and ignorant to other areas: Silo Based Delivery. Done. Next Problem (Linear Thinking) Very little (or sometimes none) Monitoring and Production Feedback.