the app evolution
TRANSCRIPT
App Development EvolutionWhat has changed?
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 featuresApplication 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?
Bimodal ITThe 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
Brief review
Code
Data
Runtime
Middleware
OS
Compute
Code
Data
Runtime
Middleware
OS
Compute
Custom Managed
Platform Managed
Code
Data
Runtime
Middleware
OS
Compute
Bare metal
Code
Data
Runtime
Middleware
OS
Compute
Containers
On Premises / Cloud Enabled Cloud Native
Platform as a Service
Infrastructureas a Service
Code
Data
Runtime
Middleware
OS
Compute
Serverless
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
12 factor appmanifesto
The Reactive manifesto
http://12factor.net/ http://www.reactivemanifesto.org/
MicroservicesApplication 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
MicroservicesApplication 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
APIsAPIs allows for easy, quick and dynamic access to the business content of your application.
API is a glue between Microservices.
Attributes of an APIConsumer driven
Defined by ConfigurationSelf ServiceFast, Easy
Fine-grained, Does one thingFocus 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
API C
onsu
mer
API P
rovi
der
ApplicationsA Consuming Application uses one or more APIs
API’sAn API productizes specific tasks of a service
Multiple APIs can be “leveraged” from the same service
ServicesA Service exposes a function of an Business Asset
Multiple Services can be “derived” from a Business Asset
Business AssetsCan provide multiple functions
Attributes of a ServiceProvider driven
Defined by CodingOn-boarding
Managed Change, StabilityMedium-Grained, Does several things
Focus on connectivity, reuseExpose Functions for broad use
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
Standards: OpenStack & CloudFoundryCloud 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 PacksService
Connector
Messaging
Cloud Foundry BOSH
NovaCompute node
KeyStoneIdenity service
SwiftObject Store
NeuronNetworking
GlanceImage Store
CinderVolume service
HirizonDashboard
https://www.openstack.org/
https://www.cloudfoundry.org
OAuth
Standards (continued)
Platforms: Bluemix & other PaaSPaaS 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
WatsonMobile
DevOps
Web
Applications
IoTIntegration
Big
Dat
a
DataManagement
Secu
rity
Business Analytics
Check the service catalog online:https://console.ng.bluemix.net/?direct=classic/#/store/cloudOEPaneId=store
More information:https://console.ng.bluemix.net/
ContainersContainers are relatively new concept allowing for
convenient packaging your developments and „shipping” them to any destination.
RunAny App
Anywhere
What is a Container?
AppA
AppA’
AppB
Bins / Libs
Bins / Libs
Bins / Libs
Guest OS
Guest OS
Guest OS
Hypervisor (Type 2)
Host OS
Server
App A
Bins / Libs
Bins / Libs
Host OS
Server
App A’
App B
’’
App B
App B
’
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/
NoSQL & LanguagesNew 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
010101011101010101010101010101010101010101010110101011
Documents
Graphs
Key-Value
.java
.js
.go
.php
.rb
.py
.net
.swift
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
MethodsCloud 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 ThinkingIt 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.
AgileIt 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.
DevOpsIt 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/
Hybrid CloudHybrid 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 CloudThe 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+
Clo
ud b
urst
ing
Clo
ud m
igra
tion
Clo
ud in
teg
rati
on
While developing for the cloud do consider:
Self service and AutomationCloud heavily relays on automation. Now developers can use many toolsfor 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 monitoringexecutions 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…
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.”
Thank you!