SlideShare une entreprise Scribd logo
1  sur  42
©2013 LinkedIn Corporation. All Rights Reserved.
Safety with power tools
©2013 LinkedIn Corporation. All Rights Reserved.
Who’s this guy?
2
©2013 LinkedIn Corporation. All Rights Reserved.
What is SRE?
 Hybrid of operations and engineering
 Heavily involved in architecture and design
 Application support ninjas
 Masters of automation
3
©2013 LinkedIn Corporation. All Rights Reserved.
So, what do I do with salt?
 Heavy user
 Active developer
 Administrator (less so)
4
©2013 LinkedIn Corporation. All Rights Reserved.
What’s LinkedIn?
 Professional social network
 You probably all have an account
 You probably all get email from us too
5
©2013 LinkedIn Corporation. All Rights Reserved.
Salt @ LinkedIn
 When LinkedIn started
– Aug 2011: Salt 0.8.9
– ~5k minions
 When I got involved
– May 2012: Salt 0.9.9
– ~10k minions
 Today
– Now: 2014.01
– ~30k minions
6
©2013 LinkedIn Corporation. All Rights Reserved.
How should you manage a service?
7
©2013 LinkedIn Corporation. All Rights Reserved.
That’s not much of an answer…
 Depends on use
– Home
– School
– Hack
– Work
 How you manage the service changes over time
– Make it work – very manual long time to get it to work (more of a work of art…)
– Reproducibly make it work
– Script it out
– And more?
8
©2013 LinkedIn Corporation. All Rights Reserved.
Apache Traffic Server
©2013 LinkedIn Corporation. All Rights Reserved.
ATS: Apache Traffic Server
 Fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
 Non-blocking IO
 Plugin architecture
 This is the real logo
©2013 LinkedIn Corporation. All Rights Reserved.
Example: ATS deployment @ LinkedIn
 When I started, deployment was less than ideal:
– Check into SVN
– SCP files to hosts
– Manually remove host from rotation
– Replace files and install RPMs
– Restart trafficserver
– Check some logs to see if its broken
– Put it in rotation and hope you didn’t miss anything
11
©2013 LinkedIn Corporation. All Rights Reserved. 12
©2013 LinkedIn Corporation. All Rights Reserved.
Example: ATS deployment @ LinkedIn
 So many steps!
– Manual config management
– Manual rpm deployment
– Manual * (<- seriously, you name it!)
 Works for a while, but doesn’t scale
 Very VERY error prone
13
©2013 LinkedIn Corporation. All Rights Reserved.
Solution? Automation with Salt!
 Pillars, runners, and modules, Oh My!
 States make this dead simple
©2013 LinkedIn Corporation. All Rights Reserved.
Obligatory SLS formulas
ats:
pkg:
- installed
- pkgs:
- trafficserver: x.x.x-xx
- trafficserver-plugin-header-rewrite: x.x.x-x
... (there are lots)
service:
- name: trafficserver
- running
/etc/trafficserver/records.config:
file.managed:
- makedirs: True
- user: nobody
- group: nobody
- mode: 600
- source: http://repo/ats/records.config
- source_hash: md5=20d90b82bb3a4f95d7f17d1be6257246
15
©2013 LinkedIn Corporation. All Rights Reserved.
Great, SLS– like I wasn’t going to see those @ SaltConf
 Had to, sorry!
16
©2013 LinkedIn Corporation. All Rights Reserved.
What is Salt?
17
©2013 LinkedIn Corporation. All Rights Reserved.
What is Salt @ LinkedIn?
 Remote execution
– Salt * cmd.run date -s "`date`” (leap-pocalypse anyone?)
 “Catchall” deployment system
– ATS
– Couchbase
– Etc.
 Automation platform
– Remote execution behind LinkedIn’s new standardized deployment
– Cache copy + torrent-style file distribution (in migration to Salt!)
18
©2013 LinkedIn Corporation. All Rights Reserved.
So what’s this about power tools?
 Growing up my dad and I did a lot of cabinetry work
 In the old days you did all this by hand
 There are actually quite a few similarities
19
©2013 LinkedIn Corporation. All Rights Reserved.
Learning to be a carpenter
 Learning in general you start with the basics and move up
– Calculator-less math classes anyone?
 Carpentry 101: learn the basic tools
– Hand saws
– Sandpaper
– Hammer
20
©2013 LinkedIn Corporation. All Rights Reserved.
Learning to be a carpenter
 As a kid I always thought it was ridiculous to use these since I could *see*
the power tools my dad was using
 With more experience you can use more tools, once you know how to use
the ones you have
– Tools need to be respected and used properly
– Some tools aren’t worth learning the hard way (chainsaws!)
21
©2013 LinkedIn Corporation. All Rights Reserved.
So, SaltConf is about carpentry??
 Well, not so much
 Computers have lots of different tools
– ssh
– scp
– Package managers
– Etc.
 As we scale it’s no longer practical to use all these manual tools, so we use
power tools (automation)
22
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt?
 Understand the problem
 Learn the tool
 Test the solution
 Watch for the result
23
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Understand the problem
 “If you can't explain it simply, you don't understand it well enough.”
– Albert Einstein
 What are you trying to automate?
– Is this full stack? Or just the application?
– What is already automated?
– Should it be automated?
 Learn how to do it without the tooling
– Knowing how to do the deploy manually will help you when you need to debug
24
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Learn the tool
 “99% of the time you don’t have to write modules to use salt”
– *Most* things you want to do can be done with existing code
– If you find something that you think needs new code, reach out to the
community– someone else probably wants it too!
 Learn what it can and can’t do
 Keep up with new features coming out as well as coming up
 Continually train yourself and your users
 Little things can add up:
– In your __virtual__ function check your dependencies(~5 lines x ~30K minions)
25
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Test the Solution
 Don’t’ be that guy
26
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Test the Solution
 Fact: “AUTOMATION IS CODE!”
 It is common to set up extensive tests for code, but less so for automation
 In many ways automation testing is just as if not more important!
– This applies to SLS formulas, modules, runners, AND salt itself.
– Staging is production for infrastructure!
27
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Test the Solution
 How do we do this @ LinkedIn?
– Code reviews
– VM environment: a pre-staging environment for testing
– Stress tests: pathological test cases
– Canary process: careful code rollouts
28
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Watch for the result
 Once we’ve tested our automation, we need to verify that it does what we
expect.
– Code can sometimes have unintended consequences
29
©2013 LinkedIn Corporation. All Rights Reserved.
Innocent enough right?
@_withJMXConnection
def domains(connection):
'''
returns a list of domains available
'''
domains = list(connection.getDomains())
domains.sort()
return domains
30
Wait, what’s that decorator?
©2013 LinkedIn Corporation. All Rights Reserved.
See the problem?
class _withJMXConnection(object):
connection = None
def __init__(self, fn, url):
self.fn = fn
if not _withJMXConnection.connection:
# set up a jmx connection ...
jpype.startJVM(“libjvm.so",
"-Dcom.sun.management.jmxremote.authenticate=false",
"-Xms20m",
"-Xmx20m")
jmxurl = jpype.javax.management.remote.JMXServiceURL(url)
jmxsoc = jpype.javax.management.remote.JMXConnectorFactory.connect(jmxurl)
_withJMXConnection.connection = jmxsoc.getMBeanServerConnection()
self.connection = _withJMXConnection.connection
31
Spins up a JVM!
©2013 LinkedIn Corporation. All Rights Reserved.
How should you use Salt: Watch it
 Once we’ve tested our automation, we need to verify that it does what we
expect.
– Code can sometimes have unintended consequences
 What metrics do we watch?
– CPU (load and utilization)
– Memory (real AND virtual)
– TCP sessions (and overflows!)
– Event bus (MasterEvent and MinionEvent)
– Etc.
32
©2013 LinkedIn Corporation. All Rights Reserved.
Now everything is AWESOME!!!
33
©2013 LinkedIn Corporation. All Rights Reserved.
NOPE! Still can have problems
34
©2013 LinkedIn Corporation. All Rights Reserved.
Problems @ scale
 timeouts that didn’t work
– (#3431) original implementation relied on the zmq poller timeout, which you
never hit if the event bus was relatively busy
 salt-master memory leaks (all gone now )
– Zeromq3
– Reaping master child processes which crash
 Performance problems on master (we’ve dropped CPU usage by ~80%)
– Change max open files check to not run per minion request
– Don't load minion modules every pillar call
 Slow yumpkg5 module
– Went from 20s -> 60s! Now down to ~9s (for 55 packages)
35
©2013 LinkedIn Corporation. All Rights Reserved.
Other features we’ve added
 yumpkg
– support for specific versions (back in the day)
– major performance enhancements to the yumpkg module
 Compound matchers (range & minion data)
 Prereq state
 Client_acl_blacklist
 Check and set (cas) to the data module
 depends decorator
 iterative file hashing in fileclient
 hash cache for fileserver + hash cache reaping
 limit memory consumption on module load in *nix
 kwarg passing with types
 Profiler within master process
36
©2013 LinkedIn Corporation. All Rights Reserved.
client_acl_blacklist (new in 0.13.0)
 Salt had support for whitelisting, and per-user access control
 Wanted to blacklist certain modules/users
– No root (require sudo)
– No cmd module (protect against fat-fingering)
client_acl_blacklist:
users:
- root
- '^(?!sudo_).*$' # all non sudo users
modules:
- cmd
37
©2013 LinkedIn Corporation. All Rights Reserved.
Prereq state (new in 0.16.0)
 Came up as we started migrating our deployments to salt states
 Motivation was to take hosts out of rotation before deployment
 This feature lets us remove our own custom wrappers!
graceful-down:
cmd.run:
- name: service apache graceful
- prereq:
- file: site-code
site-code:
file.recurse:
- name: /opt/site_code
- source: salt://site/code
38
©2013 LinkedIn Corporation. All Rights Reserved.
Kwarg passing with types
 Found while trying to pass a pillar as a kwarg to a module (p.s. don’t)
 Kwargs were cast as strings and passed as an arg
– Fine if the __str__ representation == yaml
– Problem if the __str__ representation != yaml
 Put all kwargs in a single dict (marked as the kwarg dict) to maintain type
39
©2013 LinkedIn Corporation. All Rights Reserved.
Takeaways
 Respect the tool!
– Understand the problem
– Learn the tool
– Test the solution
– Watch for the result
 Be active in the community
 Don’t just consume, Contribute!
 Have FUN!
40
©2013 LinkedIn Corporation. All Rights Reserved.
Got more questions about Salt @ LinkedIn
 Interested in how we manage Salt @ Scale?
– Breakout session with Craig Sebenik @ 11:15 am in Sundance
 Got questions?
– Drop by our SaltConf booth!
– Connect with me on LinkedIn www.linkedin.com/in/jacksontj
– Jacksontj on #salt on freenode
41
SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools

Contenu connexe

Tendances

Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02Yazz Atlas
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet
 
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...SaltStack
 
Red Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetRed Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetMichael Lessard
 
The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016effie mouzeli
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltStack
 
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...SaltStack
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Puppet
 
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterSaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterThomas Jackson
 
Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionWalter Liu
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013databus.pro
 
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltStack
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the PipelinePuppet
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Puppet
 
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
De-centralise and Conquer: Masterless Puppet in a Dynamic EnvironmentDe-centralise and Conquer: Masterless Puppet in a Dynamic Environment
De-centralise and Conquer: Masterless Puppet in a Dynamic EnvironmentPuppet
 
Automating the Network
Automating the NetworkAutomating the Network
Automating the NetworkPuppet
 
OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooinovex GmbH
 
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner) Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner) Puppet
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetMarc Cluet
 

Tendances (20)

Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
 
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
 
Red Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetRed Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with Puppet
 
The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
 
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014
 
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterSaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
 
Salty OPS – Saltstack Introduction
Salty OPS – Saltstack IntroductionSalty OPS – Saltstack Introduction
Salty OPS – Saltstack Introduction
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013
 
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the Pipeline
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
 
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
De-centralise and Conquer: Masterless Puppet in a Dynamic EnvironmentDe-centralise and Conquer: Masterless Puppet in a Dynamic Environment
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
 
Automating the Network
Automating the NetworkAutomating the Network
Automating the Network
 
Ansible - A 'crowd' introduction
Ansible - A 'crowd' introductionAnsible - A 'crowd' introduction
Ansible - A 'crowd' introduction
 
OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
 
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner) Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and Puppet
 

Similaire à SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools

SaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertoolsSaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertoolsThomas Jackson
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakSigma Software
 
Building a Modern Enterprise SOA at LinkedIn
Building a Modern Enterprise SOA at LinkedInBuilding a Modern Enterprise SOA at LinkedIn
Building a Modern Enterprise SOA at LinkedInJens Pillgram-Larsen
 
Decrease build time and application size
Decrease build time and application sizeDecrease build time and application size
Decrease build time and application sizeKeval Patel
 
2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with BlackfireMarko Mitranić
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper DiveJustin Reock
 
Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Haytham Elkhoja
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedJoão Pedro Martins
 
Hive at LinkedIn
Hive at LinkedIn Hive at LinkedIn
Hive at LinkedIn mislam77
 
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSkynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSylvain Kalache
 
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...Codemotion
 
Real World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCReal World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCCarlo Bonamico
 
What Permissions Does Your Database User REALLY Need?
What Permissions Does Your Database User REALLY Need?What Permissions Does Your Database User REALLY Need?
What Permissions Does Your Database User REALLY Need?Denim Group
 
Velocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing SystemsVelocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing SystemsSOASTA
 
Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)SOASTA
 
Delhi MuleSoft Meetup - 19 march2022
Delhi MuleSoft Meetup - 19 march2022Delhi MuleSoft Meetup - 19 march2022
Delhi MuleSoft Meetup - 19 march2022AnuragSharma900
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first designKyrylo Reznykov
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceMatthew Lancaster
 
Oracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningOracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningChris Muir
 

Similaire à SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools (20)

SaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertoolsSaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertools
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Building a Modern Enterprise SOA at LinkedIn
Building a Modern Enterprise SOA at LinkedInBuilding a Modern Enterprise SOA at LinkedIn
Building a Modern Enterprise SOA at LinkedIn
 
Decrease build time and application size
Decrease build time and application sizeDecrease build time and application size
Decrease build time and application size
 
2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
Hive at LinkedIn
Hive at LinkedIn Hive at LinkedIn
Hive at LinkedIn
 
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the CloudSkynet project: Monitor, analyze, scale, and maintain a system in the Cloud
Skynet project: Monitor, analyze, scale, and maintain a system in the Cloud
 
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...
Real World AngularJS recipes: beyond TodoMVC - Carlo Bonamico, Sonia Pini - C...
 
Real World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCReal World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVC
 
What Permissions Does Your Database User REALLY Need?
What Permissions Does Your Database User REALLY Need?What Permissions Does Your Database User REALLY Need?
What Permissions Does Your Database User REALLY Need?
 
Velocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing SystemsVelocity 2015: Building Self-Healing Systems
Velocity 2015: Building Self-Healing Systems
 
Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)Velocity 2015 building self healing systems (slide share version)
Velocity 2015 building self healing systems (slide share version)
 
Delhi MuleSoft Meetup - 19 march2022
Delhi MuleSoft Meetup - 19 march2022Delhi MuleSoft Meetup - 19 march2022
Delhi MuleSoft Meetup - 19 march2022
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first design
 
L23 Summary and Conclusions
L23 Summary and ConclusionsL23 Summary and Conclusions
L23 Summary and Conclusions
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery Conference
 
Oracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningOracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & Tuning
 

Plus de SaltStack

Integration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceIntegration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceSaltStack
 
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltStack
 
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)SaltStack
 
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltStack
 
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStackSaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStackSaltStack
 
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...SaltStack
 
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltStack
 
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltStack
 
SaltStack - An open source software story
SaltStack - An open source software storySaltStack - An open source software story
SaltStack - An open source software storySaltStack
 
Real-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStackReal-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStackSaltStack
 
Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013SaltStack
 
Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013SaltStack
 
Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013SaltStack
 

Plus de SaltStack (13)

Integration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container serviceIntegration testing for salt states using aws ec2 container service
Integration testing for salt states using aws ec2 container service
 
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
 
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
Salt Air 19 - Intro to SaltStack RAET (reliable asyncronous event transport)
 
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
 
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStackSaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
SaltConf14 - Yazz Atlas, HP Cloud - Installing OpenStack using SaltStack
 
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...
SaltConf14 - Saurabh Surana, HP Cloud - Automating operations and support wit...
 
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
 
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
 
SaltStack - An open source software story
SaltStack - An open source software storySaltStack - An open source software story
SaltStack - An open source software story
 
Real-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStackReal-time Cloud Management with SaltStack
Real-time Cloud Management with SaltStack
 
Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013Adding to your Python Armory - OpenWest 2013
Adding to your Python Armory - OpenWest 2013
 
Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013Real-time Infrastructure Management with SaltStack - OpenWest 2013
Real-time Infrastructure Management with SaltStack - OpenWest 2013
 
Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013Writing SaltStack Modules - OpenWest 2013
Writing SaltStack Modules - OpenWest 2013
 

Dernier

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Dernier (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

SaltConf14 - Thomas Jackson, LinkedIn - Safety with Power Tools

  • 1. ©2013 LinkedIn Corporation. All Rights Reserved. Safety with power tools
  • 2. ©2013 LinkedIn Corporation. All Rights Reserved. Who’s this guy? 2
  • 3. ©2013 LinkedIn Corporation. All Rights Reserved. What is SRE?  Hybrid of operations and engineering  Heavily involved in architecture and design  Application support ninjas  Masters of automation 3
  • 4. ©2013 LinkedIn Corporation. All Rights Reserved. So, what do I do with salt?  Heavy user  Active developer  Administrator (less so) 4
  • 5. ©2013 LinkedIn Corporation. All Rights Reserved. What’s LinkedIn?  Professional social network  You probably all have an account  You probably all get email from us too 5
  • 6. ©2013 LinkedIn Corporation. All Rights Reserved. Salt @ LinkedIn  When LinkedIn started – Aug 2011: Salt 0.8.9 – ~5k minions  When I got involved – May 2012: Salt 0.9.9 – ~10k minions  Today – Now: 2014.01 – ~30k minions 6
  • 7. ©2013 LinkedIn Corporation. All Rights Reserved. How should you manage a service? 7
  • 8. ©2013 LinkedIn Corporation. All Rights Reserved. That’s not much of an answer…  Depends on use – Home – School – Hack – Work  How you manage the service changes over time – Make it work – very manual long time to get it to work (more of a work of art…) – Reproducibly make it work – Script it out – And more? 8
  • 9. ©2013 LinkedIn Corporation. All Rights Reserved. Apache Traffic Server
  • 10. ©2013 LinkedIn Corporation. All Rights Reserved. ATS: Apache Traffic Server  Fast, scalable and extensible HTTP/1.1 compliant caching proxy server.  Non-blocking IO  Plugin architecture  This is the real logo
  • 11. ©2013 LinkedIn Corporation. All Rights Reserved. Example: ATS deployment @ LinkedIn  When I started, deployment was less than ideal: – Check into SVN – SCP files to hosts – Manually remove host from rotation – Replace files and install RPMs – Restart trafficserver – Check some logs to see if its broken – Put it in rotation and hope you didn’t miss anything 11
  • 12. ©2013 LinkedIn Corporation. All Rights Reserved. 12
  • 13. ©2013 LinkedIn Corporation. All Rights Reserved. Example: ATS deployment @ LinkedIn  So many steps! – Manual config management – Manual rpm deployment – Manual * (<- seriously, you name it!)  Works for a while, but doesn’t scale  Very VERY error prone 13
  • 14. ©2013 LinkedIn Corporation. All Rights Reserved. Solution? Automation with Salt!  Pillars, runners, and modules, Oh My!  States make this dead simple
  • 15. ©2013 LinkedIn Corporation. All Rights Reserved. Obligatory SLS formulas ats: pkg: - installed - pkgs: - trafficserver: x.x.x-xx - trafficserver-plugin-header-rewrite: x.x.x-x ... (there are lots) service: - name: trafficserver - running /etc/trafficserver/records.config: file.managed: - makedirs: True - user: nobody - group: nobody - mode: 600 - source: http://repo/ats/records.config - source_hash: md5=20d90b82bb3a4f95d7f17d1be6257246 15
  • 16. ©2013 LinkedIn Corporation. All Rights Reserved. Great, SLS– like I wasn’t going to see those @ SaltConf  Had to, sorry! 16
  • 17. ©2013 LinkedIn Corporation. All Rights Reserved. What is Salt? 17
  • 18. ©2013 LinkedIn Corporation. All Rights Reserved. What is Salt @ LinkedIn?  Remote execution – Salt * cmd.run date -s "`date`” (leap-pocalypse anyone?)  “Catchall” deployment system – ATS – Couchbase – Etc.  Automation platform – Remote execution behind LinkedIn’s new standardized deployment – Cache copy + torrent-style file distribution (in migration to Salt!) 18
  • 19. ©2013 LinkedIn Corporation. All Rights Reserved. So what’s this about power tools?  Growing up my dad and I did a lot of cabinetry work  In the old days you did all this by hand  There are actually quite a few similarities 19
  • 20. ©2013 LinkedIn Corporation. All Rights Reserved. Learning to be a carpenter  Learning in general you start with the basics and move up – Calculator-less math classes anyone?  Carpentry 101: learn the basic tools – Hand saws – Sandpaper – Hammer 20
  • 21. ©2013 LinkedIn Corporation. All Rights Reserved. Learning to be a carpenter  As a kid I always thought it was ridiculous to use these since I could *see* the power tools my dad was using  With more experience you can use more tools, once you know how to use the ones you have – Tools need to be respected and used properly – Some tools aren’t worth learning the hard way (chainsaws!) 21
  • 22. ©2013 LinkedIn Corporation. All Rights Reserved. So, SaltConf is about carpentry??  Well, not so much  Computers have lots of different tools – ssh – scp – Package managers – Etc.  As we scale it’s no longer practical to use all these manual tools, so we use power tools (automation) 22
  • 23. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt?  Understand the problem  Learn the tool  Test the solution  Watch for the result 23
  • 24. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Understand the problem  “If you can't explain it simply, you don't understand it well enough.” – Albert Einstein  What are you trying to automate? – Is this full stack? Or just the application? – What is already automated? – Should it be automated?  Learn how to do it without the tooling – Knowing how to do the deploy manually will help you when you need to debug 24
  • 25. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Learn the tool  “99% of the time you don’t have to write modules to use salt” – *Most* things you want to do can be done with existing code – If you find something that you think needs new code, reach out to the community– someone else probably wants it too!  Learn what it can and can’t do  Keep up with new features coming out as well as coming up  Continually train yourself and your users  Little things can add up: – In your __virtual__ function check your dependencies(~5 lines x ~30K minions) 25
  • 26. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Test the Solution  Don’t’ be that guy 26
  • 27. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Test the Solution  Fact: “AUTOMATION IS CODE!”  It is common to set up extensive tests for code, but less so for automation  In many ways automation testing is just as if not more important! – This applies to SLS formulas, modules, runners, AND salt itself. – Staging is production for infrastructure! 27
  • 28. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Test the Solution  How do we do this @ LinkedIn? – Code reviews – VM environment: a pre-staging environment for testing – Stress tests: pathological test cases – Canary process: careful code rollouts 28
  • 29. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Watch for the result  Once we’ve tested our automation, we need to verify that it does what we expect. – Code can sometimes have unintended consequences 29
  • 30. ©2013 LinkedIn Corporation. All Rights Reserved. Innocent enough right? @_withJMXConnection def domains(connection): ''' returns a list of domains available ''' domains = list(connection.getDomains()) domains.sort() return domains 30 Wait, what’s that decorator?
  • 31. ©2013 LinkedIn Corporation. All Rights Reserved. See the problem? class _withJMXConnection(object): connection = None def __init__(self, fn, url): self.fn = fn if not _withJMXConnection.connection: # set up a jmx connection ... jpype.startJVM(“libjvm.so", "-Dcom.sun.management.jmxremote.authenticate=false", "-Xms20m", "-Xmx20m") jmxurl = jpype.javax.management.remote.JMXServiceURL(url) jmxsoc = jpype.javax.management.remote.JMXConnectorFactory.connect(jmxurl) _withJMXConnection.connection = jmxsoc.getMBeanServerConnection() self.connection = _withJMXConnection.connection 31 Spins up a JVM!
  • 32. ©2013 LinkedIn Corporation. All Rights Reserved. How should you use Salt: Watch it  Once we’ve tested our automation, we need to verify that it does what we expect. – Code can sometimes have unintended consequences  What metrics do we watch? – CPU (load and utilization) – Memory (real AND virtual) – TCP sessions (and overflows!) – Event bus (MasterEvent and MinionEvent) – Etc. 32
  • 33. ©2013 LinkedIn Corporation. All Rights Reserved. Now everything is AWESOME!!! 33
  • 34. ©2013 LinkedIn Corporation. All Rights Reserved. NOPE! Still can have problems 34
  • 35. ©2013 LinkedIn Corporation. All Rights Reserved. Problems @ scale  timeouts that didn’t work – (#3431) original implementation relied on the zmq poller timeout, which you never hit if the event bus was relatively busy  salt-master memory leaks (all gone now ) – Zeromq3 – Reaping master child processes which crash  Performance problems on master (we’ve dropped CPU usage by ~80%) – Change max open files check to not run per minion request – Don't load minion modules every pillar call  Slow yumpkg5 module – Went from 20s -> 60s! Now down to ~9s (for 55 packages) 35
  • 36. ©2013 LinkedIn Corporation. All Rights Reserved. Other features we’ve added  yumpkg – support for specific versions (back in the day) – major performance enhancements to the yumpkg module  Compound matchers (range & minion data)  Prereq state  Client_acl_blacklist  Check and set (cas) to the data module  depends decorator  iterative file hashing in fileclient  hash cache for fileserver + hash cache reaping  limit memory consumption on module load in *nix  kwarg passing with types  Profiler within master process 36
  • 37. ©2013 LinkedIn Corporation. All Rights Reserved. client_acl_blacklist (new in 0.13.0)  Salt had support for whitelisting, and per-user access control  Wanted to blacklist certain modules/users – No root (require sudo) – No cmd module (protect against fat-fingering) client_acl_blacklist: users: - root - '^(?!sudo_).*$' # all non sudo users modules: - cmd 37
  • 38. ©2013 LinkedIn Corporation. All Rights Reserved. Prereq state (new in 0.16.0)  Came up as we started migrating our deployments to salt states  Motivation was to take hosts out of rotation before deployment  This feature lets us remove our own custom wrappers! graceful-down: cmd.run: - name: service apache graceful - prereq: - file: site-code site-code: file.recurse: - name: /opt/site_code - source: salt://site/code 38
  • 39. ©2013 LinkedIn Corporation. All Rights Reserved. Kwarg passing with types  Found while trying to pass a pillar as a kwarg to a module (p.s. don’t)  Kwargs were cast as strings and passed as an arg – Fine if the __str__ representation == yaml – Problem if the __str__ representation != yaml  Put all kwargs in a single dict (marked as the kwarg dict) to maintain type 39
  • 40. ©2013 LinkedIn Corporation. All Rights Reserved. Takeaways  Respect the tool! – Understand the problem – Learn the tool – Test the solution – Watch for the result  Be active in the community  Don’t just consume, Contribute!  Have FUN! 40
  • 41. ©2013 LinkedIn Corporation. All Rights Reserved. Got more questions about Salt @ LinkedIn  Interested in how we manage Salt @ Scale? – Breakout session with Craig Sebenik @ 11:15 am in Sundance  Got questions? – Drop by our SaltConf booth! – Connect with me on LinkedIn www.linkedin.com/in/jacksontj – Jacksontj on #salt on freenode 41

Notes de l'éditeur

  1. SaltConf keynote review - Thomas Jackson, LinkedInSafety with Power toolsAs infrastructure scales, simple tasks become increasingly difficult. For large infrastructures to be manageable, we use automation. But automation, like any power tool, comes with its own set of risks and challenges. Automation should be handled like production code, and great care should be exercised with power tools. This talk will cover how SaltStack is used at LinkedIn and offer tips and tricks for automating management with SaltStack at massive scale including a look at LinkedIn-inspired Salt features such as blacklist and pre-req states. It will also cover Salt master and minion instrumentation and a compilation of how not to use Salt.
  2. Professional, fewer cats
  3. How long we’ve been using itTom is embarrased that we started so early 0.8.9runners just addedOutputters just addedCross calling salt modules using __salt__0.9.9Highstate test=TrueExternal pillarmInion swarm
  4. We all manage some service, so lets talk about it
  5. To get some context, I’m going to talk a little about the main service I support
  6. When I started ATS was new– so we had a lot of manual things ;)First question is going to be…
  7. Consistency problems (missing a file, or a package)Missing a log entry
  8. Really are useful and AMAZINGLY simple
  9. Taken fromwikipedia, TODO: get a better one?
  10. Remote- faster than old one 30m
  11. 14m
  12. Tools to use all the toolsOne such tool is Salt, as with any other tools there are some things to keep in mind while using
  13. Similar to power tools
  14. Other automaton(Don’t step on toes)Clear lines of ownership
  15. JMX example
  16. Nice doc string!Whatup with decorator?
  17. startJVM WAT?Our feature: limit memory consumption on module load in *nix (modules_max_memory)
  18. Consume event bus to get information on jobs running
  19. Well, not necessarily..
  20. Lots of features (and more coming I’m sure)Lets take some time to talk about 2
  21. Migrating because we had re-implemented states before it existed, had wrappers to do OOR/IR operationsAnother example of where something you think you need, others want too!
  22. No only new features, but we find + fix bugs too!Find the root cause, usually simpler than you’d think