This document discusses how cloud techniques can be used to reduce friction in software development. It identifies common problems in development such as estimation, quality, and communication. Problems in deployment include packaging, configuration, and testing. Runtime issues include monitoring, availability, and deploying patches. The cloud aims to simplify development and deployment through automation, flexible quality of service levels, and usage monitoring. Benefits of the cloud include push-based deployment, standardized configuration, multi-tenancy, and simplified runtime support. The document advocates exposing software components through RESTful APIs to control their lifecycle and integrate with cloud services.
3. SOME PROBLEMS
DURING DEVELOPMENT
Setting Expectation
Estimation
Quality
Communication
Maintainability
4. PROBLEMS DEPLOYING
Making packages available to deployment groups
Installing the packages
ConïŹguring packages with runtime environment parameters
Smoke Testing to Ensure Installation works
5. PROBLEMS AT RUNTIME
Monitoring usage at runtime
Resource monitoring
Adjusting to new usage patterns
Deploying patches
Stabilising releases
Allowing multiple users to use same infrastructure
6. CAPACITY & AVAILABILITY
PROBLEMS
Components may fail
Components may become overloaded and slow to respond
Network connections to components may not be reliable
8. Cloud Characteristics
Deployment and Provisioning Quality of Service
Runtime Usage Monitoring
Software Development
Development Process Production Management
9. Deploying and
Provisioning
Automated - API and tool driven
Agile
Device and Location Neutral
16. SOFTWARE DEVELOPMENT
DEVELOPMENT PRODUCTION
PROCESS (ALM) MANAGEMENT
release planning installing + conïŹguring
development + unit testing supporting released
software
acceptance testing
maintaining live systems
packaging/bundling for release
21. PUSH BASED DEPLOYMENT
Packages are pushed when ready to deploy
Deployment engine is automated
Will unpack, install and conïŹgure
Will bring online
22. PUSH BASED DEPLOYMENT
Automated
ConïŹguration ïŹles standardised
User error reduced
ConïŹguration errors reduced
23. DEPLOYMENT
$ git push -f heroku
heroku uses git - a cloud based SCM - for
deployment
24. DEPLOYMENT
$ vmc push
cloudfoundry can be used for on-premises or off-
premises clouds
agent notiïŹed for deployment
25. WHY IS THIS BETTER?
âą Limit Installation User Error
âą Automated means
repeatable
âą Deployed artefacts fully
traceable to underlying
source
26. STANDARDISED
CONFIGURATION
Deployment tools substitute runtime environment details for
data sources, messaging end-points
27. RUNTIME SUPPORT AND
MAINTENANCE
multi-tenancy
multi-version
monitoring and alerting QoS
28. PRODUCTION MANAGEMENT
push model for deployment
standardised conïŹguration ïŹles
multiple deployed versions and multi-tenancy allow easier
support and maintenance
29. CLOUD APIS
Custom Code
Familiar
Middleware and Data
Sources Simple
Provisioning Environment Powerful
Comprehensive
Runtime Environment
APIs for Everything Restful APIs
30. FOLLOW THE PATTERN
A set of Restful APIs for your software components, to control
their lifecycle, gather usage.
Thanks for attending. About this presentation:\n- tough topic \n- dev and cloud \n\nAbout me: I am mobile architect with Citi, I was a cloud architect at HP \n\nThis is not about the business case for cloud, nor a sales pitch. It is about the technical aspects.\n\nSome people think of the cloud as an operating system with it’s specific APIs and deployment, runtime behaviours.\n \n The advantages of Cloud computing are usually thought of as runtime/deployment advantages and programming API level advantages.\n \n\n
First UP \n\nSome points of friction - \nDuring Development\n\ndeploying\nconfiguring\ndealing with runtime issues (unavailable services, overloaded services)\nmonitoring\n\nWHAT Are some of your pain points?\n
laundry list of friction points - not exhaustive! \n\n\n
\n
\n
\n
Clearly cant talking about addressing all these issues, but will show how, in general, alot of these can be resolved\n\n\nSo far -dev problems\nNOW - Cloud overview\n\n\n \n\n
+ more: reliability, performance, cost (opex vs capex) \n
\n
API - convention\nrest based\n \n\n
\n
\n
Ultimately \nCloud is the drive towards simplicity\n\n\n
Predictability - the advantage of agile development and cloud\nWe can use cloud (+Agile) to remove hope from software releases:\n- I hope the release works\n- I hope the deployment works\n\n
What’s involved in Software dev?\n
What’s involved in Software dev?\n
\n
\n
talk about push advantages - allows automation and not waiting for \ncloudfoundry and heroku approaches.\n\nmulti deploy versions and multi-tenancy : how does this help? \n- multi deploy allows you to limit releases and bed them in\n- gradually spread usage of release as it becomes more stable\n\n
\n
\n
\n
Talk about heroku and cloudfoundry\nmulti language\n\n
Talk about heroku and cloudfoundry\nmulti language\n\n
\n
types of resources and files \nallow tools to configure runtime values\n\n
multi-tenancy - multiple users share the same runtime\n multi-version - multiple software versions deployed and used simultaneously\n monitoring and alerts when QoS expectations breached\n allows releases to stabilise and bed in\n migrate more users to stable release\n
\n\n
apis are the advantage of cloud\nreduce integration cost + time\n\n