Post on 21-Apr-2017
MITREBill & Aimee’s Excellent DevOps Journey
How a Not-for-profit CorporationAdopted DevOps
Aimee Bechtleabechtle@mitre.org
Bill Donaldsonwbd@mitre.org
Approved for Public Release; Distribution Unlimited. Case Number: 14-3400 ©2014 The MITRE Corporation. ALL RIGHTS RESERVED.
MITREWhat is MITRE?MITRE is
a not-for-profit
organization that operates
Federally Funded Research
and Development Centers
MITRE
Production
1. Code, Build,Unit Test
1...n
2. Commit
3. Run Build, Development Test
1...n
3a. Export Code4. Writes/MaintainsCM Form, Creates Change
Ticket
6. RejectsCM Form
17. InstallFailed
7a. Export Code
14. Email Instructions
9. ExecuteTask
18. Export Code
19. Install FailedRollback & Restore
Integration
Development
DBA
5. Receives & Reviews CM Form
Instructions
7. Executes Instructions(logs on, Exports code, Runs Build, runs scriptsCopies files, cleans up)
8. EmailInstructions
10. NotifyComplete
16. Notify Complete
DeployMgr
Sys Admin
13. NotifyComplete
11. Email Instructions
12. ExecuteTask
15. ExecuteTask
Other
DEV
20. UseApplication
User
Sandbox
SCM
OPERATIONS(Deploys)
The Starting Line
Paperwork
People
Processing• JAVA, .Net
• ANT, Maven
• Subversion (SVN)
• Oracle, SqlServer, MySQL
• RHEL, Windows 2008
• Avg Cycle Time = 15 days (30 mins – 486 days)
• # Deploys/yr = 2579
MITRE
Ops
In The Beginning – Aug 2009
The service we provide is great!
They are slowing
me down!
Dev
MITREAcceptance Criteria
I can live with that.
Single command to build app given an SVN revision #
Single command to deploy to environment given an SVN revision #
Build once. No development tools utilized on target environment.
Deploy to test environment is self-service and can be done by any user without handoffs (no SA, DBA) or additional passwords
Deploy to PROD is done by release team without handoffs (no SA, DBA)
Prior to deploying validates compliance with SONAR quality reports and code coverage
Can determine what SVN revision is deployed in each environment, by who and when
In PROD, on error or abort application is restored to prior state
No additional instruction documentation is needed.
In phase 1, utilize existing request system for approvals
System validation is manual and outside of scope
MITRE
MITRE
Build and Release Engineer
Sys Admin
DBAJava, .NET Developers
The Launch – May 2011DevOps
DevOps
Everyone on Board!
MITRECourse Correction – April 2012
Got Training Brought in Expertise
Freed Up Resources A New Plan!
MITRE
1 Developer develops commits code to repository
2 Commits automatically trigger builds
3 Depending on environment developer or Release Engineer deploys build
Our DevOps Solution– June 2012
Source Code Repository
Build WorkflowCheckoutCompile
Run Unit TestsRun Code Analysis
Store Artifacts
Deploy WorkflowCleanup EnvironmentBackup Environment
Deploy BinariesExecute Rollback & Restore
Artifact Repository
CommitCode &
BuildFiles
Application &Build Files
ReleaseArtifacts
ReleaseArtifacts
RunBuild
(revision #)Run
Deploy(build #)
Repeated for each targetEnvironment using the
same Build
Build/CI Server
2
1
3
* Developers can deploy to Non-Production Environments
CI
DEV
Test
Prod
DEV OPS
MITREThe Results• 68 applications in system
• Multiple Platformso ANT, Maven, Gradleo SVN, GITo JAVA, .Net, NodeJSo Oracle, MySQL, SQL
Server, MongoDB
• Avg Cycle Time = 9 days (-40%) (range 2 mins – 483 days)
• ~75% of deploys are automatedo # Deploys/year = 3555
o Auto = 2665o Manual = 890 (-65%)
o 38% Throughput Increase
• Freed up 2.5 deployment staff
MITRE
Build & Release Engineer
Sys Admin
DBAJava, .NET Developers
The Future: Continuous DeliveryaDevOps
aDevOps
OpsAutomationEngineer
TestAutomationEngineer
Let’s do it again
Pleeease!
MITREBill & Aimee’s Excellent DevOps Journey
Aug ’09:Old
Process
July ’10:Confront
May ’11:Success Defined, Launch
Jun ’12:Success!
• Anyone can do it• Know where you want to go and why• Patience - it takes time for change• Education, education, education• Use Agile (minimal product, iterations, product demonstrations)
Apr ’12:Got Help
Today:Results
MITRE
• Changing skillsets and mindsets to:– Support infrastructure and test automation– Break up silos and organize into cross-functional delivery teams
• Incorporating ERP and large COTS (or non-typical, non-web) applications into a DevOps model
What We Need Help With