app development evolution: what has changed?
Post on 13-Apr-2017
179 Views
Preview:
TRANSCRIPT
App Development Evolution What 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 IT
Understanding Bimodal IT
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
I. Codebase One codebase tracked in revision control, many deploys
II. DependenciesExplicitly declare and isolate dependencies
III. ConfigStore config in the environment
IV. Backing ServicesTreat backing services as attached resources
V. Build, release, runStrictly separate build and run stages
VI. ProcessesExecute the app as one or more stateless processes
VII. Port bindingExport services via port binding
VIII. ConcurrencyScale out via the process model
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown
X. Dev/prod parityKeep development, staging, and production as similar as possible
XI. LogsTreat logs as event streams
XII. Admin processesRun admin/management tasks as one-off processes
I. ResponsiveThe system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability and utility, but more than that, responsiveness means that problems may be detected quickly and dealt with effectively.
II. ResilientThe system stays responsive in the face of failure. This applies not only to highly-available, mission critical systems — any system that is not resilient will be unresponsive after a failure.
III. ElasticThe system stays responsive under varying workload. Reactive Systems can react to changes in the input rate by increasing or decreasing the resources allocated to service these inputs.
IV. Message drivenReactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, location transparency, and provides the means to delegate errors as messages.
12 factor appmanifesto
The Reactive manifesto
http://12factor.net/ http://www.reactivemanifesto.org/
Microservices Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110101010101010101010101010101010101011010101101010101010
01010101110101010101010101010101010101010101011010101101010101010
API
API
Microservices Application architected as a suite of small services,
each running in its own process, and communicating with lightweight mechanisms
Monolithic Microservices
01010101110101010101010101010101010101010101011010101101010101010
01010101110101010101010101010101010101010101011010101101010101010
01010101110101010101010101010101010101010101011010101101010101010
Scaling
01010101110101010101010101010101010101010101011010101101010101010
01010101110101010101010101010101010101010101011010101101010101010
01010101110101010101010101010101010101010101011010101101010101010
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
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 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
AP
I Con
sum
erA
PI 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 & 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 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 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
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/
Containers Containers are relatively new concept allowing for
convenient packaging your developments and „shipping” them to any destination.
Build
ShipRunAny 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 & 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
010101011101010101010101010101010101010101010110101011
Documents
Graphs
Key-Value
.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
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 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 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 & ITPros:• 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+
Clou
d bu
rstin
g
Clou
d m
igra
tion
Clou
d in
tegr
atio
n
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 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…
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!
top related