2. Cloud not ready
Cloud light
Cloud centric
Cloud native
Cloud enabled
Intended for the cloud. Using
highly specific cloud features
Application moved to the
cloud but uses minimal
cloud features
Application with
increases utilization of
cloud features
Born on the cloud.
Maximizes features of the
cloud.
Applications tied to legacy
infrastructures, runtimes
and designs
Levels of apps
‘cloudification’
How well your application fits the cloud?
3. Bimodal IT
The practice of managing two separate but coherent styles of work,
one focused on predictability and the other on exploration
Source: Gartner (April 2015)
System of
Engagement
System of
Record
3
5. Architectural patterns Components, Platforms & Products Methods & Approaches
2.
ü Standards
ü Platforms
ü Containers
ü NoSQL DBs
ü Languages
1.
ü The 12 factor app
ü Reactive frameworks
ü Microservices
ü APIs
3.
ü Design Thinking
ü Agile
ü DevOps
ü Hybrid Cloud
ü Self service & Automation
7. Microservices
Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
API
API
8. Microservices
Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
Scaling
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
01010101110
10101010101
01010101010
10101010101
01101010110
1010101010
API
API
Scaling
Why Microservices?
Agility
• Services evolve independently and at difference speeds
• Easier to adopt new technology and evolve architecture
• Enables continuous delivery
Resilience
• Use services boundaries for fault tolerance and isolation
• Design for failure
Runtime scalability
• Stateless services designed for horizontal scalability
• Services can be scaled independently
Dev organization scalability
• Easier to develop services in parallel
• Smaller working set for each developer
9. APIs
APIs allows for easy, quick and dynamic access to the business content of your application.
API is a glue between Microservices.
Attributes of an API
Consumer driven
Defined by Configuration
Self Service
Fast, Easy
Fine-grained, Does one thing
Focus on ease of consumption
Easy access to Tasks / Data
Business Asset Owner
Service Intent:
How can I effectively expose
data / functions of my Business
Asset
Application Designer
API Intent:
How can I quickly and
easily access specific data
APIConsumerAPIProvider
Applications
A Consuming Application uses one or more APIs
API’s
An API productizes specific tasks of a service
Multiple APIs can be “leveraged” from the same service
Services
A Service exposes a function of an Business Asset
Multiple Services can be “derived” from a Business Asset
Business Assets
Can provide multiple functions
Attributes of a Service
Provider driven
Defined by Coding
On-boarding
Managed Change, Stability
Medium-Grained, Does several things
Focus on connectivity, reuse
Expose Functions for broad use
10. Architectural patterns Components, Platforms & Products Methods & Approaches
2.
ü Standards
ü Platforms
ü Containers
ü NoSQL DBs
ü Languages
1.
ü The 12 factor app
ü Reactive frameworks
ü Microservices
ü APIs
3.
ü Design Thinking
ü Agile
ü DevOps
ü Hybrid Cloud
ü Self service & Automation
11. Standards: OpenStack & CloudFoundry
Cloud related standards allow for interoperability, portability, automation and
easier maintenace and development of the cloud applications.
Applications
Data
Runtime
Middleware
O/S
Virtualization
Servers
Storage
Networking
ü Software to manage compute,
network, and storage for cloud
ü The foundation of IBM’s IaaS
interoperability
ü Over 20k participants, 400
companies: Larger than Linux
ü Built on a highly scalable
distributed architecture
ü The basis for IBM Bluemix
ü De facto open PaaS platform
ü Foundation established Dec. 2014; DEA Pools
Router
User Authentication &
Authorization
Cloud
Controller
Health
Manager
Service
Gateway Apps
Build Packs
Service
Connector
Messaging
Cloud Foundry BOSH
Nova
Compute node
KeyStone
Idenity service
Swift
Object Store
Neuron
Networking
Glance
Image Store
Cinder
Volume service
Hirizon
Dashboard
https://www.openstack.org/
https://www.cloudfoundry.org
13. Platforms: Bluemix & other PaaS
PaaS aims at make cloud developer life easier. It handles many requirements automatically
allowing developer to focus on coding business logic.
ü An implementation of IBM's Open
Cloud Architecture based on
Cloud Foundry
ü Delivers enterprise-level services
that can easily integrate with your
cloud applications without you
needing to know how to install or
configure them.
ü Enables organizations and
developers to quickly and easily
create, deploy, and manage
applications on the cloud.
What is Bluemix? Bluemix features Bluemix services
ü Containers
ü Buildpacks
ü Boilerplates
ü Virtual Machines
ü Monitoring
ü Management Console
ü API Management
ü Auto scaling
ü DevOps support
ü Lots of services from IBM & 3rd parties
Watson
Mobile
DevOps
Web
Applications
IoT
Integration
Big
Data
Data
Management
Security
Business Analytics
Check the service catalog online:
https://console.ng.bluemix.net/?direct=classic/#/store/cloudOEPaneId=store
More information:
https://console.ng.bluemix.net/
14. Containers
Containers are relatively new concept allowing for
convenient packaging your developments and „shipping” them to any destination.
Run
Any App
Anywhere
What is a Container?
App
A
App
A’
App
B
Bins /
Libs
Bins /
Libs
Bins /
Libs
Guest
OS
Guest
OS
Guest
OS
Hypervisor (Type 2)
Host OS
Server
AppA
Bins /
Libs
Bins /
Libs
Host OS
Server
AppA’
AppB’’
AppB
AppB’
Docker
Containers are isolated but share OS and,
where appropriate, bins/libraries.
It results in significantly faster deployment, much less
overhead, easier migration & faster restart
Docker
VMs
ü Image repository
ü Image authoring
ü Multi-container deployment
ü Image signing
ü Image Distribution
ü Declarative model for deploy
ü Container relationships
ü Deploy/Manage containers
ü Engine monitoring
ü Image lifecycle management
ü Business policy for deployment
https://www.docker.com/
15. NoSQL & Languages
New tools and programming languages increasing productivity,
responsiveness and easiness of development.
NoSQL Languages
NoSQL (also translated as Not Only SQL)
are the databases which allows you to
store other structures than
records/columns.
GeoSpacial data
010101011
101010101
010101010
101010101
010101010
110101011
Documents
Graphs
Key-Value
.java
.js
.go
.php
.rb
.py
.net
.swift
16. Architectural patterns Components, Platforms & Products Methods & Approaches
2.
ü Standards
ü Platforms
ü Containers
ü NoSQL DBs
ü Languages
1.
ü The 12 factor app
ü Reactive frameworks
ü Microservices
ü APIs
3.
ü Design Thinking
ü Agile
ü DevOps
ü Hybrid Cloud
ü Self service & Automation
17. Methods
Cloud development is about speed, agility and user experience.
Waterfall is not enough anymore…
Requirements Design Delivery OperationsGAP! GAP! GAP!
ü How to „discover” & capture the real
users requirements?
ü Is the list of a 1000+ functional
requirements useful?
„ 400 features? No human would be able to use
software with that level of complexity” - Dilbert
ü How to assure that the developer’s
understanding of requirements is aligned
with the end user?
ü How to include user feedback into
development process?
ü How to make sure that bugs are fixed
almost instantly?
ü How to make your solution „alive” and
responsive to the new requirements?
Design Thinking
It is a formal method for practical,
creative resolution of problems and
creation of solutions, with the intent of
an improved future result.
It focuses on user and the way how the
solution will be used rather then on
requirements.
Agile
It is a group of software development
methods in which requirements and
solutions evolve through collaboration
between self-organizing, cross-
functional teams. It allows for bringing
the user into the development process.
DevOps
It is a software development method
that stresses communication,
collaboration, integration, automation, &
measurement of cooperation between
development & operations team. It
brings together people who build with
people who run the solution.
https://design.ibm.com/thinking.html https://en.wikipedia.org/wiki/Agile_software_development http://www.ibm.com/ibm/devops/us/en/
18. Hybrid Cloud
Hybrid cloud demands portable architecture.
Cloud apps should be able to run everywhere.
Cloud is not a specific solution,
platform nor product.
Cloud is a new way in which IT solutions
are delivered & consumed by Business.
Private Cloud & IT
Pros:
• Full control
• Advanced management
• Strong security
IBM PoV: Hybrid Cloud
The best features from both worlds
Maximization of investment
Matching infrastructure with application
Balance between security and elasticity
Equalized investment (Capex vs. Opex)
Shorter innovation cycles
Pros:
• Low entry costs
• Pay-per-use,
• Elasticity
Off-premises / Public Cloud
Dynamic Hybrid
Hybrid Cloud+
Cloudbursting
Cloudmigration
Cloudintegration
While developing for
the cloud do consider:
19. Self service and Automation
Cloud heavily relays on automation. Now developers can use many tools
for automated provisioning, management and deployment of their code.
One of the most well-known cloud infrastructure
automation tools, Chef delivers configuration
management and continuous delivery. By turning
infrastructure into code, Chef helps cloud engineers
and IT professionals automate infrastructure build,
deployment, and management.
Puppet is the configuration management system that
enables cloud engineers and IT professionals to
define the state of their IT infrastructure and then
automatically enforces the correct state. Puppet
automates time-consuming manual tasks.
Some other tools are described here: https://blog.profitbricks.com/48-best-cloud-tools-for-infrastructure-automation/
Jenkins is an application that monitors executions of
repeated jobs, such as building a software project or
jobs run by cron. It helps with building/testing
software projects continuously and monitoring
executions of externally-run jobs.
UrbanCode is a tool for automating application
deployments through your environments. It is
designed to facilitate rapid feedback and continuous
delivery in agile development while providing the
audit trails, versioning and approvals needed in
production.
IBM Cloud Orchestrator provides cloud management
for your IT services, allowing you to accelerate the
delivery of software and infrastructure. Based on
open standards, it reduces the number of steps to
manage public, private and hybrid clouds by using
an easy-to-use interface.
Bluemix Delivery Pipeline service automates builds
and deployments, test execution, configure build
scripts, and automate execution of unit tests.
And many many more…
20. Is your application cloud centric/native/ready?
If you are not sure… use Chaos Monkey –
if your overall solution survives this encounter, you are good to go!
https://github.com/Netflix/SimianArmy/wiki/Chaos-Monkey
„Chaos Monkey is a service
which identifies groups of
systems and randomly
terminates one of the systems
in a group.”
I. Codebase :: One codebase tracked in revision control, many deploys
II. Dependencies :: Explicitly declare and isolate dependencies
III. Config :: Store config in the environment
IV. Backing services :: Treat backing services as attached resources
V. Build, release, run :: Strictly separate build and run stages
VI. Processes :: Execute the app as one or more stateless processes
VII. Port binding :: Export services via port binding
VIII. Concurrency :: Scale out via the process model
IX. Disposability :: Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity :: Keep development, staging, and production as similar as possible
XI. Logs :: Treat logs as event streams
XII. Admin processes :: Run admin/management tasks as one-off processes
API’s and Services are very Different
API’s are single, fast and easy
Services are larger, provider driven, for broad use
Hadoop – Java based programming framework that supports the processing of large datasets in a distributed computing environment
Open Power – Collaboration around Power architecture products initiated by IBM. Opening up the technology surrounding Power architecture
Open Daylight – Software Defined Network allows admins to manage network services through abstraction of higher level functionality
Private Cloud & IT – Internal Data Center
Off-premises / Public Cloud
Random failures to test infrastructure during defined times (test before the 3am crash)