Today, the development and operations landscape has shifted to a more collaborative model merging the two (DevOps). Developers need to know much more about the operational components of their software - especially around network programming, services development, and continuous deployment. Likewise, the developer's IT counterpart needs to know much more about development - especially around infrastructure automation (Chef/Puppet), automated testing, and continuous deployment.
1. Infrastructure as Code
Merging Development and Operations for a more
effective application development process
FIN talk
Ryan Roark
Clement Yu
Robert Greiner
February 19, 2014
2. Table of Contents
1. The Problem
2. Infrastructure
3. Application
4. Code
5. Putting it all together
6. AWS Goodness
7. Wrapping Up
5. Operations
• Server Admins
• DBAs
• Release
• Networking
• Security
• Monitoring
• Operators maintain
People who deal with applications after they are created
6. Typical Software Development Flow
Write Code
(Dev)
Create Tests Run all Tests
Deploy to
Dev/QA
(Ops)
Integration
Tests
QA Tests
Deploy to
UAT
More Testing
– Regression
(QA)
Performance
Tests
Configure
Production
Environment
Buy
Hardware
Install OS /
Software
Provision
Database
Upgrade
RAM
Deploy to
Production
Manual
Time Consuming
7. Poll: How long does it
take to provision a new
server at your client?
9. DevOps
DevOps is the practice of operations and development
engineers participating together in the entire service
lifecycle, from design through the development
process to production support. (TheAgileAdmin)
10. The New Normal
It’s up to us as developers to help enable our
operations counterparts. We can use our skills to
teach others how to make their jobs easier, so our jobs
become easier.
This requires developers to gain skills in operations:
networking, OS, patching, deployments, etc…
Every systems administrator should know Ruby and
every Developer should know how to configure an
automated deployment on a Windows or Linux server
they setup themselves
12. Infrastructure Automation
• Write your code and write the infrastructure it
runs on
• Servers, Networking, Users, etc…
• Documented, Repeatable, and Fast
• Fixing Deployment Pains
• A/B Deployments (blue/green)
• Rolling Deployments
13. Infrastructure Tooling
• CloudFormation for AWS
• Template driven design with JSON
• Templates versioned like code
• AWS::CloudFormation::Init
• Bootstrap other processes
• OPSWorks & Elastic BeanStalk for AWS
• Demo CloudFormation
16. Configuration Management
• Transform any server quickly
• Build it as a web server, DB server, etc.
• Automate build process
• Install and configuration steps are saved
as code
• Re-configure quickly
• Avoid dependency issues
17. Configuration Tools
• Powerful
• Robust
• Written
in Ruby
• Developer-
friendly
• Steep learning
curve for sys-
admins
• Mature
• Built for sys-
admins
• Easy JSON
data structure
• Master pushes
changes to
agents
• AWS version
of Chef
• Free to use
with instances
19. Continuous Integration
Deploy your code quickly, consistently,
and often
• Practice Deploying Code
• Detect problems faster
• Automatically build code & run tests
• Eliminate the “well it works on my machine”
dilemma
• Encourages public shaming
20. CI in the Sky Cloud
• Code Deploy
• Hook into source control and automate your
deployments to an elastic set of resources
• Code Pipeline
• Continuous delivery and software release automation
• Code Commit
• Code is ‘closer’ to servers it runs on
• Integrates with CodeDeploy and CodePipeline
• Demo Code Deploy
21. Automation outside AWS
• Jenkins
• Self hosted CI Server
• Travis-CI
• Hosted CI Server
• TFS / VisualStudio.com
• Does a little of EVERYTHING
• Easily integrate with Azure
24. Putting it all together
Infrastructure Provisioning
Application Provisioning
Code Provisioning
Now it’s your turn
Developers
Operations
Dev + Ops
25. 2015 AWS DevOps Challenge
Design and implement a fully-automated AWS
environment suitable for hosting and operating a
complex open-source application.
The current plan is to have a panel of judges decide
the winning team’s presentation and demo of solution
Monitor
• Dashboard
Status
Overview
Alert
• Active Push
Notifications
on Error
Log
• Application /
OS log
management
Audit
• Complete
History of
Interactions
Provision
• On-Demand
Environment
Manage
• Live
Changes to
Environment
Deploy
• Automated
Application
Deployment
Patch
• Live
Changes to
Application
26. What’s in it for me?
Gain real world, hands-on experience
with automated provisioning
(infrastructure, application, code)
Showcase your skills to the Dallas office
Gain experience on the AWS platform
Team up to design a solution that
outperforms the competition
Win a trip to the AWS re:Invent 2015
conference in Las Vegas, NV on October
6-8, 2015
27. You heard right… Your score will
(probably) be determined by Judges
29. New AWS Services
At re:Invent, AWS released a number of new services
to their line-up. Here are the highlights.
Lambda Aurora
EC2 Container
Service
31. The Automation Dream
• Automation is our client’s and your friend
• Automation is hard work
• Free to experiment
• AWS Free Tier
• Azure Free Trial