1© Copyright 2015 EMC Corporation. All rights reserved.
HOW CAN MODERN APPLICATIONS DRIVE ORGANIZATIONAL EFFICIENCY?JONAS ROSLAND, DEVELOPER ADVOCATE @EMCCODE
1© Copyright 2015 EMC Corporation. All rights reserved.
22© Copyright 2015 EMC Corporation. All rights reserved.
Jonas RoslandDeveloper AdvocateEMC {code}
@jonasrosland
Loves travelingand retro gamingTalks a lot
3© Copyright 2015 EMC Corporation. All rights reserved.
4
This is not a tech talk
5
This is an organizational change talk
6
But to make those organizational changes…
7
You need to embrace modern technologies
8
Just like when we move to better engines, phones, etc
9
Let’s look at thehistory of our apps
10
From 10 years ago
11
Or perhaps 2 days ago
12
Consider astandard monolithic
application
13
http://cantina.co/monolithic-architecture-doesnt-scale/
14
How do you scale it?
15
http://cantina.co/monolithic-architecture-doesnt-scale/
16
http://cantina.co/monolithic-architecture-doesnt-scale/
17
So what to do?
18
It’s not all about scale
19
But also aboutseparation of concern
21
http://cantina.co/monolithic-architecture-doesnt-scale/
22
Everything isloosely coupled
23
Enables parts to be fixed, updated and worked on…
24
Independently!
25
Traditional apps will not
• Drive your organization forward
• Allow you to innovate quickly
• Enable your staff to develop new skills with modern tools
27
Some might say…
28
We're just anIT organization,
not the line of business
29
We're just anIT organization,
not the line of business
30
You're the machinery, the glue, the conduit
31
You make things work
32
You help drive thebusiness forward
33
How about making your business more profitable?
35
Let’s talk about some real pain points in your orgs
36
You can't wait 6 monthsfor a feature/upgrade/
bug fix/etc
37
Solve configurationdrift issues quickly
38
Know what’s wrong, where and why. Not who!
39
Last and most importantly, improve team communication
and collaboration
40
Let’s have a look at somepopular languages/frameworks
41
Python 2.7
JRE 8
NodeJS 0.12.2
Haskell 7.8.4
Go 1.4.2
Rust 1.0.0-beta.3
Ruby on Rails 4.2
42
Will they solve your 6 month cycle? Your config drift? Your errors?
43
Most probably not
44
How long would it take your organization to deploy a change
that involves just one single line of code?
- Mary Poppendieck
45
Manually configured environments are like a house of cards in a china
shop
- Neal Ford
46
Up to 60% of failures are caused by human error,
not hardware failure
47
Example - Knight Capital Group
https://infocus.emc.com/wp-content/uploads/2012/08/KCG.jpg
48
• Manual deployment of new trading software
• 7 of 8 servers correctly updated
• Old function still alive on the 8th server led to…
Knight Capital Group - What happened?
49
$440 million lossin 45 minutes
60
Introduce the following mentality to mitigate inefficient processes
61
http://46zwyrvli634e39iq2l9mv8g.wpengine.netdna-cdn.com/wp-content/uploads/2013/06/DevOps-infinity-loop2.png
62
What is DevOps?
63
A collaborative culture/philosophy between technical teams
64
Unified processes and tools for faster end-to-end delivery of quality
software
65
It’s all about removing nonvalue-adding waste
66
Make the timeline from customer order to cash in your bank as
short as possible
67
DevOps practices and IT performance impact
organizational performance
https://puppetlabs.com/2015-devops-report
68
Not only do you get faster and more successful deployments
69
You’re also more likely to exceed profitability goals and increase
your market capitalization
72
Wait a minute…
73
You get all that from modernizing your apps?
74
Of course not, you can't buy efficiency
75
But modernizing your apps enables you to make smarter choices and
change your processes
76
Modernized apps will
• Give your teams smaller focus areas
• Enable your teams to innovate faster
• Let you practice Kaizen
77
The word Kaizen is Japaneseand means
Continuous Improvement
78
So should youreally do this?
81
Questions?
Jonas Rosland
Developer Advocate @ EMC {code}
@jonasrosland
84
Let's start with
infrastructure as code
85
What do we define as infrastructure?
89
• Deploy, monitor and connect together all the pieces needed to run services for the organization
• Processes and tools for faster end-to-end delivery of quality services
• Automation comes built-in
Why define infrastructure as code?
90
• Desired state specified in text files
• Autonomic (self-corrects to desired state)
• State should be known through monitoring
• Remove snowflake servers
How do we do this?
91
• Easy to read and edit
• Shareable
• Can use standard version control like Git or SVN
• Becomes executable documentation
Why store them in text files?
92
node 'www2' {
class { 'apache': } # use apache module
apache::vhost { 'awesomewebsite.com': # define vhost
port => '80',
docroot => '/var/www/html'
}
}
Simple example
93
user { root:
ensure => present,
password => '$ecretP@ssw0rd',
}
Change root password
94
Manually configured environments are like a house of cards in a china
shop
- Neal Ford
95
• Deploying, provisioning and scaling automatically is virtually impossible if every server is unique
• Adds friction between the requestor and the deployer
• Mistakes happen
• We're all human
Snowflake servers
96
What can happen if you don't treat infrastructure as code?
97
Up to 60% of failures are caused by human error,
not hardware failure
98
Example - Knight Capital Group
https://infocus.emc.com/wp-content/uploads/2012/08/KCG.jpg
99
• Manual deployment of new trading software
• 7 of 8 servers correctly updated
• Old function still alive on the 8th server led to…
Knight Capital Group - What happened?
100
$440 million lossin 45 minutes
102
Treat your infrastructure as code
103
• Self documenting infrastructure
• You now have source code for how anything in your datacenter is setup
• Executable documentation
Recap of the benefits
106
How aboutautomating some more?
107
• Jenkins CI
• Travis CI
• Codeship
• CloudFoundry
• OpenShift
Deployment automation
108
• Docker
• Framework for application container management
• HUGE community
Containers
109
• Splunk
• Loggly
• LogInsight
• ELK Stack– ElasticSearch– LogStash– Kibana
Log management
110
• vCenter Operations
• New Relic
• AppDynamics
• DataDog
Performance management
111
• Nagios
• Sensu
• VictorOps
• PagerDuty
Monitoring
112
• Slack
• HipChat
• Trello
• Asana
Communication
113
• Github
• Quip
Collaboration
114
• And by smartly we mean cooperatively between Devs and Ops
• Will help operators understand what's running and happening in the infrastructure
• Will give developers insight into the underlying infrastructure and the way it behaves under load
Use these tools smartly
115
• Start talking about it
• Choose low-hanging fruit
• Learn, make wrong decisions, learn again
• Involve the broader team– Give books, presentations, blog posts etc.
So how do we get started?