confoo - devops & agile infrastructure

19
@cloudops_ www.cloudops.com DevOps & Agile Infrastructure Confoo 2015

Upload: will-stevens

Post on 16-Jul-2015

265 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

DevOps & Agile Infrastructure

Confoo 2015

Page 2: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Who Am I● Will Stevens - Lead Developer @ CloudOps

● CloudStack Committer & PMC Member

● CloudOps is a Montreal based company with customers around the world

● We build and operate clouds of all shapes and sizes

● We develop cloud infrastructure solutions and operational models

● We created and operate cloud.ca

Page 3: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Winds of Change

The way infrastructure is consumed and managed is changing. But is this relevant to developers?

Page 4: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

What is DevOps

● Solve operational problems with software and automation

● Gives the application deployment process efficiency and repeatability

● Gives deployments the agility and flexibility to be implemented on a variety of infrastructures

● Gives quicker turn around on application changes and security fixes

● Improve application quality by adding automated testing into the release cycle

Page 5: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

What is Agile Infrastructure

● Infrastructure orchestrated through APIs

● Cloud enabled resources are the backbone of agile infrastructure

● Self service and provision resources on demand

● Remove the need for IT departments to provision resources for other departments

● Manage the infrastructure as a whole rather than a collection of small distinct sub-systems

● Pooling resources to bring down the overall infrastructure cost

Page 6: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

● Enabling developers to be involved and engaged through the entire application lifecycle

● Close the loop between development and operation to add consistency throughout

● Developers will play a major role in continuing the advancements in the DevOps space

Why do I care?

Page 7: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Lets change gears a bit

“Less theory please. I care about practical stuff!”

Page 8: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Tools of the trade (not exhaustive)● CloudStack

○ Manage infrastructure

● Jenkins

○ Build/test/deploy code

● KitchenCI

○ Test infrastructure as code

● Chef

○ Manage configurations

● Fabric

○ Deployment recipes

Page 9: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

CloudStack

● Infrastructure as a Service platform

○ Multi-tenant environment

○ Can share resources in groups

○ Virtual Machines

○ Network automation

○ Storage and snapshots

○ Everything is controlled by APIs

● Open source and actively developed

● Build enterprise private clouds with CloudStack

Page 10: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Jenkins

● Integrates with code repositories (Git, SVN, etc) to access developers code

● Builds a variety of languages (Java, .Net, etc)

● Runs tests and reports (JUnit, TestNG, etc)

● Runs code analyzers (Checkstyle, FindBugs, etc)

● Deploy artifacts to systems (Tomcat, SSH, etc) on successful build completion

● Package deployments into OS specific packages (rpm, deb, etc) and publish to a repository

● Has a strong plugin ecosystem for extension

Page 11: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

KitchenCI

● Integrates with all the major IaaS providers (Amazon EC2, CloudStack, OpenStack, etc)

● Supports many test frameworks (RSpec, Serverspec, etc)

● Tight integration with Chef so you can test your infrastructure with your configuration manager

● Automate the validation of deployments on different operating systems and hardware

● Plugin architecture enables you to write the tests you want to run on your infrastructure

Page 12: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Chef

● Implements infrastructure as code

● All environments are configured using the same process from a library of core components

● Never manually change env configuration, automate so your changes propagate correctly

● Centralized source of truth for all your configurations and components

● Enables collaboration between the people managing the application and the people who manage the infrastructure

Page 13: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Fabric

● It is a stretch to add this one (but I love it)

● Simple Python command line tool to manage application lifecycle

● Self contained so deployment procedures can be tracked with the application for portability

● Deploy code into multiple environments with the same procedure

● Can take care of copying deployed files as well as managing release revisions and backups

● A very simple tool, but the options are endless

Page 14: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Use cases

“I thought we were getting to practical stuff…”

Page 15: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

cloud.ca application lifecycle

A software development use case...

● Develop and commit Java code into Git

● Jenkins builds and runs tests on the commit

● If the tests pass, then a WAR file is created

● Jenkins pushes the WAR file into a staging env

● The new WAR file are validated in staging

● Once all the validation is completed in staging, the WAR files are pushed into production

● There is still more we can automate

Page 16: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

cloud.ca infrastructure config

Automate environment configuration…

● Create and configure a Chef role for each required application environment

● Chef (knife) will then deploy and configure the environments according to the needed roles

● Chef cookbook manages all the installed software and configuration

● Chef is used to manage performance and tuning configurations for the different environments

Page 17: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Automate from end to end

● Develop and commit code into Git

● Jenkins builds and unit tests the commit

● Jenkins kicks off KitchenCI for infra testing

● KitchenCI provisions real infra in multiple flavors (CentOS, Ubuntu, etc) using Chef

● Chef configures all aspects of the env including the new code we are developing

● KitchenCI runs tests against the envs to validate

● If all the functional tests pass we have validated both the application and the configuration

Page 18: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Build what fits your needs

Page 19: Confoo - DevOps & Agile Infrastructure

@cloudops_ www.cloudops.com

Questions

Will Stevens : @swillops | CloudOps : @cloudops_