devops and agile methodology – lessons learned · 2019-06-24 · – build automation • ant,...

19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | DevOps and Agile Methodology – Lessons Learned Susan Duncan - @SusanDuncanOr Senior Principal Product Manager Oracle Cloud Development Tools June, 2019 Confidential – Oracle Internal/Restricted/Highly Restricted 1

Upload: others

Post on 03-Aug-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|

DevOpsandAgileMethodology–LessonsLearned

SusanDuncan-@SusanDuncanOrSeniorPrincipalProductManagerOracleCloudDevelopmentToolsJune,2019

Confidential–OracleInternal/Restricted/HighlyRestricted 1

Page 2: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirection.Itisintendedforinformationpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfunctionality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andtimingofanyfeaturesorfunctionalitydescribedforOracle’sproductsremainsatthesolediscretionofOracle.

Confidential–OracleInternal/Restricted/HighlyRestricted

Page 3: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted

TheCloudChangedEverything

• ReleaseFrequency• QualityofSoftware•  SpeedofFixingIssues• DevelopmentTechnologies• DevelopmentProcess

Page 4: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 4

AgileMethodologyatOracle

•  Shortdeliverycycles• Deliveryofincrementalsolutions•  Focusonhighestprioritytasks• Adaptconstantly

4

Page 5: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 5

Plan

Code

Build

Test

Release

Deploy

Operate

Monitor

DevOps–EnablerforAgile

•  DevOpsisaculture,movementorpracticethatemphasizesthecollaborationandcommunicationofbothsoftwaredevelopersandotherinformation-technology(IT)professionalswhileautomatingtheprocessofsoftwaredeliveryandinfrastructurechanges.Itaimsatestablishingacultureandenvironmentwherebuilding,testing,andreleasingsoftware,canhappenrapidly,frequently,andmorereliably.– Wikipedia

5

Page 6: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|

Howwedoit

Confidential–OracleInternal/Restricted/HighlyRestricted 6

Page 7: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 7

OracleDevelopmentTeamsOverview

~280DevelopmentOrganisations

Sprints

OracleDeveloperCloudService

7

~23,250Users

~6250Projects

~18000GitRepositories

Page 8: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 8

•  Code/CIManagement–  VersionManagement–Git–  BuildAutomation

•  Ant,Maven,Gradle,npm,Grunt,Bower,Gulp,SQLcl,Shell

–  TestAutomation•  Selenium,JUnit,Findbugs,Sonar,utPLSQL,others

–  Deployment&ProvisioningAutomation•  Docker,K8S,Terraform,PSM,OCICLI

–  ContinuousIntegrationEnginewithPipelines

•  Team/AgileManagement–  IssuesTracking–  AgileProcessManagement–  PeerCodeReview–  Wiki–  Activitystream

OracleDeveloperCloudService–What’sInside

Page 9: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 9

~200ProjectMembers

1000sLOCs

2WeekSprints

OracleDeveloperCloudService

OneTeamOverview

Page 10: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 10

SourceManagement

40GitRepositories

ComponentPerRepositoryTask&Issue

Tracker

10

OneProject–DeveloperCloudServiceTeam

Page 11: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 11

TaskWork•  ~200commitsaweek

Master

Newfeature/bugfixes

CompletecodeMergerequest

totarget

Codereview

Iterate,fix&review

Codeapproved Automatebuild

11

Page 12: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 12

PreparingforRelease

Master

ReleaseBranch

CriticalBugFix Automatebuild

Release

12

Page 13: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 13

CodeManagementTips

•  It’soktohavemorethanonegitrepository•  Leveragegitflowprocess–provideagility• UnitTests,unittests,unittests• Automatecodereviewprocess• Defaultcodereviewerperarea• Branchmainforarelease– Lockbranchtorequireapprovalforshowstoppersonly

• Databasescriptsarepartofyourcodebase

13

Page 14: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 14

• Commit/pushbuilds– ~50buildsaday

•  +2timesaday– Allgitrepositories– DeploytodevVM– Automatedtests– QAtests

• Masterbranchedevery2weeks– Allgitrepositories– DeploytostageVM– Automatedtests– ManualQA– Candidateforproductiondeploy

– ~Candidateforcustomers

BuildProcess

Development Production

14

Page 15: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 15

BuildTips

• Automatenotificationfrombuilds(prevent“Ididn’tknowitbroke”)– Email,Slack,PagerDuty,etc

• Requireatestscriptinabuildfornewcapabilities• Regularbuildsleadtoregulartestingleadtoearlyissuedetection•  Thereisnosuchthingasbuildsoverload– Buildexecutorsdon’tneedarest

• Buildsformonitoringproductionenvironmentsruntime

15

Page 16: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 16

AdditionalLessonsLearned

•  IntegratedAgile+DevOpsiskey• Cloudbasedenvironmentissomuchsimpler•  Teamcollaboration–everyoneisacommittedowneroftheproduct

Page 17: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|

DemoADayInTheLifeOfADevelopmentTeam

Confidential–OracleInternal/Restricted/HighlyRestricted 17

Page 18: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.| Confidential–OracleInternal/Restricted/HighlyRestricted 18

SummaryofCombinedToolBenefits

18

•  Fulltraceability–issue->codechange->build->deploy•  Fasterfeedbackoncodecommits•  Improvedteamcollaboration• OnestopshopforAgile+DevOps• Accessibilityofprojectartifacts•  Easyprovisioningandscaling•  IntegratedAgile+DevOpsiskey• Cloudbasedenvironmentissomuchsimpler•  Teamcollaborationiskey–everyoneisacommittedowneroftheproduct

Page 19: DevOps and Agile Methodology – Lessons Learned · 2019-06-24 · – Build Automation • Ant, Maven, Gradle, npm, Grunt, Bower, Gulp, SQLcl, Shell – Test Automation • Selenium,

Copyright©2018,Oracleand/oritsaffiliates.Allrightsreserved.|

Questions?

Confidential–OracleInternal/Restricted/HighlyRestricted 19