6. Developers vs. Sys Admins (aka Love
Story)
Photo Credit: Joseph Viles/ The CW Photo Credit: http://www.sysadminday.com/people.html
6
7. <sarcastic mode=“on” />
M. Developer M. Sys Admin/ops
Interests & Hobbies: Interests and Hobbies:
• Give a try to the last framework • Not to be beeped at 2am in the
• Put in the production application morning
the last shiny object seen at a • Not to be beeped at 4am in the
conference morning
• Participate to the Scala vs. Ceylon • Participate to the Debian vs.
debate, static vs. dynamic typing, Fedora vs. Ubuntu debate
etc. • Dream of meeting with Linus
• Dream of meeting with James Torvald
Gosling
7 7
8. Development? Friction!
Unit
Test
Functional
Test
Source Jenkins
Code Continuous Load
Managemnt Integration Test
Developer IT
“Cloud you please provision a server for me?” Integration
“Could I get X, Y and Z installed on that server?” Test
“Could you please patch my server?”
“Could I please get a database dump?”
Could I get a new Git server?
Where could I run my Jenkins integration tests?
8
9. Deployment? Friction!
Deploy App:
Provision Deploy
Provision DB
cluster schema
Deploy App to
(not a transparent update process)
each node
Provision cluster:
provision Install load-
Configure LB
nodes balancer (LB)
Setup BC for
Secure LB QA cluster
cluster
Configure
DNS
Provision DB:
Provision
Install DB Configure DB
node
Setup BC for
Secure DB
DB
Provision node:
Configure OS Secure OS Setup JVM
Install AS on
Configure AS Secure AS
OS
Manage environment (recurring)
Analyse sec. Analyse QA Analyse
bulletins bulletins AS/OS logs
maintain OS maintain JVM maintain AS
maintain DB
Validate/QA
maintain FW
stack
Metering/Scaling (recurring)
Measure App Acquire Provision
performance Hardware node
Update Update
Update LB
Cluster Security
9
10. Friction, friction, friction
Deploy App:
Provision Deploy
cluster
Provision DB
schema Deploy App:
Deploy App to
(not a transparent update process)
each node
Provision cluster:
provision Install load-
Configure LB
Provision Provision Deploy
nodes balancer (LB)
cluster DB schema
Setup BC for
Secure LB QA cluster
cluster
Configure
DNS Deploy App (not a transparent update
Provision DB: to each node process)
Provision
Install DB Configure DB
node
Provision cluster:
Setup BC for
Secure DB
DB
Install load-
Provision node: provision Configure
Configure OS Secure OS Setup JVM balancer
nodes LB
(LB)
Install AS on
Configure AS Secure AS
OS
Manage environment (recurring) Setup BC for
Secure LB QA cluster
Analyse sec. Analyse QA Analyse cluster
bulletins bulletins AS/OS logs
maintain OS maintain JVM maintain AS
Configure
maintain DB
Validate/QA
maintain FW DNS
stack
Metering/Scaling (recurring)
Measure App Acquire Provision
performance Hardware node
Update Update
Update LB
Cluster Security
10 10
11. Why do we do software development
again?
11 11
12. To serve the BUSINESS obviously!
Business Implementa-
Specification Deployment
Needs tion
12 12
43. Lower Risk and Cheap Experimentation
Packaged Software As-A-Service
v1.0.x
v1.0 v2.0 Continuous
Ri Release
Release Ri Releases
sk/ sk/
Co Co
st st
Time Time
Same basic value prop as agile, but code is being released
continuously
43
54. Example: Lose it!
• Lose it!
– Mobile application
– >> millions of users
– > 30,000 transactions per minute, at peak time
• And… only 4 employees and …2 developers!
– No IT, no servers, no DevOps
– Complete focus on SOFTWARE DEVELOPMENT
– Anything else is handled by CloudBees
• Unmatched productivity level!
– This is possible TODAY
– Will you wait for your competitors to shoot first?
54
55. Continuous Cloud Delivery at CloudBees
Web Console
API
SDK
Staging
Identity
Provisioning
Monitoring
Messaging
Services Platform
Unit
Cross Service Tests Stage UAT Prod
Git Tests
SVN
Forge
Jenkins Core
Jenkins Plugins
As needed,
Generic App Container
multiple times Production
Router
Database
per day
Curated Stack
55
56. Typical Mobile App with Java back-end
Custom
???
Mobile
Back-end
Fast-Iteration Stable
Discovery NO-discovery
56
57. First Demo
• Complete Java Server Application…
• (Backbone.js front-end, REST back-end, DB)
• … with full lifecycle automation …
• (Code, build, test, deploy)
• … and do it in a single click!
ClickStart
59. Continous Delivery at work
cloudbees.com
Partner
Partner
Service
Service
Local Git Database
Repo Bind
git commit Bind
Changes
App
I want to make some CloudBees Deploy
Wow! Trigger Build/Test At your
changes! Git
Repo
service
59
60. Mobile!
• Build on several • Deploy in the
Deploy Code
targets: iOS, field on real users
Android, etc. • Gather input
• If it fails, stop • Retrieve dumps
• Etc.
• If it fails, stop Test Build
Beta GA
Build
Code Test Deplo Deplo
App y y
#fail #fail #fail #fail
• Get started fast! • Test is costly! • D-Day!
• Team Work • Easy-first, then • Push apps to
• Automatically increase! real-life users!
push new code to • Basic test • If it fails, stop
test • Multi-device
• Gesture
• Etc.
• If it fails, stop
61. Build Matrix
• Testing mobile application requires testing on lots
of different devices, form factors, etc.
• Create one build job per form factor/generation?
• No!
• Jenkins Build Matrix!
64. Getting started
• Lots of new things to learn!
• (delegation of trust, access to legacy data,
latency, elasticity, iterativity, etc.)
• Identify an application
• Start small & Non-critical
• Focus on « Learning »
• And extend from there
• (and enjoy!)