Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable...

21
Meta Infrastructure as Code: How Capital One Automates our Automation Tools with an Immutable Jenkins George Parris III Master Software Engineer, Retail Bank DevOps @ Capital One

Transcript of Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable...

Page 1: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

Meta Infrastructure as Code: How Capital One Automates our Automation Tools with an Immutable JenkinsGeorge Parris IIIMaster Software Engineer, Retail Bank DevOps @ Capital One

Page 2: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

2

Why automation is necessary

Our basic principles for success

Continuous Integration & Continuous Delivery

Page 3: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

3

Software development has come a long way!

The rise of –Agile Methodologies–Infrastructure As Code–DevOps Culture

Page 4: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

4

How Capital One OAO deploys code:

Infrastructure As Code–AWS–Configuration Management–TEST! TEST! TEST!

*IMMUTABILITY

Continuous Integration

Continuous Delivery… Approved and Scheduled Deployments

Page 5: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

5

And how do we do that?

Page 6: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

6

Page 7: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

7

Our Basic Principles

–Infrastructure As Code

–Configuration As Code

–Immutability

–Backup and Restore Strategy

Page 8: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

8

Infrastructure As Code

– Using AWS, everything is Cloud Formation Templates

– Custom tooling to pass variables (now available in CFT)

– Every change is tested

– Easily can spin up environments

Page 9: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

9

Configuration As Code

– Chef and Ansible

– No central server (Chef Server or Ansible Tower)

– Changes are version controlled

– ”Innersourcing” of changes, such as plugins

Page 10: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

10

Immutability

– Prevents “special snowflakes” and regressions

– Changes are made in code

– Testing pipelines and code review

Page 11: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

11

Backup and Restore Strategy

– A backup is only as good as your restore strategy

– Useful for catastrophic event or accidental deletion

– Necessary for new deployments

– Pause the server, save the current state, restore to that state

Page 12: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

12

Who Watches the Watchmen?

Page 13: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

13

Page 14: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

14

Continuous Integration: The First Step is TESTING

–Test Your Application Code

–Test Your Configuration Management Code

–Test Your Infrastructure Code

–Test In an Integrated Environment (QA)

–Test After You Launch a New Version to Prod

Page 15: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

15

Continuous Integration: Second Step is Automating the Testing

–On Pull Request to Application Code

–On Pull Request to Configuration Management Code

–On Pull Request to Infrastructure Code

Page 16: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

16

And What About Continuous Delivery?

–High confidence in our changes

–How do we deploy a new version of the tool that we usually use to deploy new versions???

Page 17: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

17

“Mini Jenkins”, the Jenkins Deployer

–Reusability

–Can run our tests

–Can update our stacks

Page 18: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

18

Other Options

–Bootstrapping

–AWS Lambda

–MultiMaster Active/Active

–AWS CodeDeploy

Page 19: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins

19

Takeaways

–Infrastructure and Config As Code

–Backup and Restore Strategy

–Testing

Page 20: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins
Page 21: Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable Jenkins