SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
ì	
  
Build	
  &	
  Release	
  Engineering	
  
By:	
  Pranesh	
  Vi.al	
  CG	
  
h.p://linkedin.com/in/praneshvi.al	
  	
  
Main	
  Agenda	
  of	
  this	
  session	
  
h"p://linkedin.com/in/praneshvi"al	
  
2	
  
Key	
  Takeaways	
  from	
  this	
  session	
  	
  
ì  So<ware	
  Release	
  Principles	
  &	
  its	
  importance.	
  
ì  Not	
  to	
  expect	
  results	
  from	
  “Day	
  1”.	
  It’s	
  a	
  slow	
  process.	
  Takes	
  months	
  or	
  at	
  
Lmes	
  even	
  years	
  to	
  reach	
  perfecLon	
  levels.	
  	
  
ì  What	
  is	
  “ConLnuous	
  IntegraLon”?	
  
ì  Steps	
  associated	
  with	
  “ConLnuous	
  IntegraLon”?	
  
ì  What	
  is	
  a	
  “ConLnuous	
  Delivery”?	
  
ì  Steps	
  associated	
  with	
  “ConLnuous	
  Delivery”?	
  
ì  What	
  is	
  a	
  “ConLnuous	
  Deployment”?	
  
ì  Release	
  Engineering	
  Steps.	
  
ì  Main	
  Focus	
  of	
  Release	
  Engineering.	
  
h"p://linkedin.com/in/praneshvi"al	
  
3	
  
Key	
  Takeaways	
  from	
  this	
  session	
  	
  
ì  ConfiguraLon	
  Management.	
  
ì  Principles	
  of	
  Managing	
  ApplicaLon	
  ConfiguraLon.	
  
ì  Its	
  not	
  just	
  about	
  the	
  tools.	
  Its	
  about	
  the	
  big	
  “Cultural	
  Change”	
  that	
  
everyone	
  has	
  to	
  go	
  through	
  .	
  
ì  Release	
  Engineering	
  Architecture.	
  
ì  Deep	
  dive	
  into	
  commit	
  /	
  component	
  builds.	
  
ì  AnL-­‐Pa.erns	
  in	
  commit	
  /	
  component	
  builds.	
  
ì  Aim	
  of	
  Deployment	
  Pipeline.	
  
ì  AnL-­‐Pa.erns	
  of	
  Deployment	
  Pipeline.	
  
ì  Best	
  qualiLes	
  of	
  a	
  Deployment	
  Pipeline.	
  
h"p://linkedin.com/in/praneshvi"al	
  
4	
  
Key	
  Takeaways	
  from	
  this	
  session	
  	
  
ì  Deployment	
  on	
  Large	
  Scale	
  ProducLon	
  Environments.	
  
ì  Why	
  Automated	
  Deployment	
  is	
  an	
  indispensable	
  goal	
  ???	
  
ì  Deep	
  dive	
  into	
  TesLng	
  Quadrant.	
  
ì  Deep	
  Dive	
  into	
  Automated	
  Acceptance	
  Tests.	
  
ì  Few	
  more	
  Generic	
  AnL-­‐Pa.erns.	
  
ì  AdapLon	
  of	
  Release	
  Engineering.	
  
ì  Tools	
  Used	
  at	
  each	
  of	
  the	
  stages.	
  
ì  Managing	
  Environments.	
  
ì  Managing	
  Releases	
  of	
  complex	
  systems.	
  
h"p://linkedin.com/in/praneshvi"al	
  
5	
  
Key	
  Takeaways	
  from	
  this	
  session	
  	
  
ì  Steps	
  involved	
  to	
  build	
  a	
  deployment	
  pipeline.	
  
ì  Everyone	
  is	
  an	
  equal	
  contributor	
  to	
  reach	
  “ConLnuous	
  Deployment”	
  stage.	
  	
  
ì  MulL-­‐Tenancy	
  Cloud.	
  
ì  MulL-­‐Instance	
  ApplicaLons.	
  
ì  Zero	
  DownLme	
  Deployment.	
  
ì  ExtracLng	
  the	
  server	
  logs.	
  
ì  Next	
  generaLon	
  tools	
  in	
  the	
  DevOps	
  world.	
  
ì  PreparaLon	
  for	
  the	
  Release.	
  
ì  Maturity	
  of	
  a	
  “Deployment	
  Pipeline”.	
  
h"p://linkedin.com/in/praneshvi"al	
  
6	
  
Target	
  Audience	
  
ì  Product	
  Managers	
  /	
  Business	
  Analysts.	
  
ì  Engineering	
  Managers.	
  
ì  Development	
  Teams.	
  
ì  Quality	
  Engineering	
  Teams.	
  
ì  System	
  Admins.	
  
ì  Service	
  Engineering	
  /	
  ProducLon	
  Engineering	
  Teams.	
  
ì  On-­‐site	
  Coordinators.	
  
h"p://linkedin.com/in/praneshvi"al	
  
7	
  
Software	
  Release	
  Principles	
  &	
  its	
  importance.	
  
ì  Should	
  be	
  Fast	
  /	
  Predictable	
  /	
  Repeatable.	
  
ì  Automate	
  almost	
  everything.	
  
ì  Keep	
  everything	
  in	
  Version	
  Control.	
  
ì  If	
  it	
  hurts,	
  do	
  it	
  more	
  o<en.	
  
ì  Improve	
  the	
  quality	
  of	
  the	
  Builds.	
  Push	
  the	
  boundaries	
  of	
  test	
  
automaLon	
  so	
  that	
  quality	
  is	
  not	
  compromised.	
  
ì  Done	
  means	
  the	
  so<ware	
  is	
  released	
  and	
  has	
  reached	
  the	
  
producLon.	
  
h"p://linkedin.com/in/praneshvi"al	
  
8	
  
What	
  is	
  Deployment?	
  
ì  Run	
  the	
  same	
  commands	
  in	
  several	
  hosts.	
  
ì  Install	
  the	
  required	
  so<ware	
  from	
  a	
  central	
  repository	
  so	
  that	
  
the	
  end	
  state	
  of	
  every	
  host	
  is	
  same.	
  
ì  Based	
  on	
  the	
  host-­‐type,	
  install	
  the	
  required	
  packages.	
  
ì  End	
  goal	
  is	
  to	
  bring	
  all	
  the	
  hosts	
  of	
  the	
  respecLve	
  host-­‐type	
  in	
  
the	
  same	
  state.	
  
h"p://linkedin.com/in/praneshvi"al	
  
9	
  
What	
  is	
  “Continuous	
  Integration”?	
  
ì  Building,	
  deploying	
  and	
  tesLng	
  the	
  applicaLon.	
  
h"p://linkedin.com/in/praneshvi"al	
  
10	
  
Steps	
  associated	
  with	
  “Continuous	
  
Integration”?	
  
ì  Integrate	
  all	
  the	
  components	
  at	
  regular	
  intervals.	
  
ì  Binaries	
  built	
  only	
  once	
  and	
  used	
  in	
  all	
  the	
  environments.	
  
ì  Execute	
  Unit	
  Tests	
  before	
  the	
  packages	
  are	
  generated.	
  
ì  Deploy	
  the	
  latest	
  packages	
  onto	
  an	
  INT	
  environment.	
  
ì  Run	
  the	
  automated	
  tests,	
  validate	
  the	
  test	
  results.	
  
ì  Track	
  the	
  Code	
  quality	
  criteria	
  such	
  as	
  staLc	
  code	
  analysis,	
  test	
  coverage.	
  
ì  Deploying	
  to	
  other	
  environments	
  with	
  a	
  pre-­‐defined	
  frequency.	
  
ì  Repeat	
  the	
  process.	
  
ì  It’s	
  a	
  pracGce,	
  not	
  a	
  tool	
  
h"p://linkedin.com/in/praneshvi"al	
  
11	
  
What	
  is	
  a	
  “Continuous	
  Delivery”?	
  
ì  Building,	
  deploying,	
  tesLng,	
  promoLon	
  of	
  the	
  applicaLon	
  to	
  the	
  next	
  
environment.	
  
ì  Image	
  credit:	
  h.p://www.axonivy.com/	
  	
  
h"p://linkedin.com/in/praneshvi"al	
  
12	
  
Steps	
  associated	
  with	
  “Continuous	
  
Delivery”?	
  
ì  Steps	
  followed	
  in	
  “ConLnuous	
  IntegraLon”.	
  
ì  AutomaLc	
  promoLon	
  /	
  deployment	
  to	
  other	
  environments	
  (QA,	
  
Staging,	
  Performance	
  etc…)	
  upon	
  successful	
  execuLon	
  of	
  
automated	
  tests.	
  
ì  ApplicaLon	
  is	
  always	
  ready	
  to	
  deploy	
  to	
  producLon	
  through	
  a	
  
largely	
  automated	
  process.	
  
h"p://linkedin.com/in/praneshvi"al	
  
13	
  
What	
  is	
  a	
  “Continuous	
  Deployment”?	
  
ì  Building,	
  deploying,	
  tesLng,	
  promoLon	
  of	
  the	
  applicaLon	
  to	
  the	
  
producLon.	
  
ì  Image	
  credit:	
  Yassal	
  Sundman	
  
h"p://linkedin.com/in/praneshvi"al	
  
14	
  
Release	
  Engineering	
  Principles	
  &	
  its	
  importance.	
  
ì  Minimize	
  Cycle	
  Time	
  from	
  check-­‐in	
  to	
  producLon	
  push.	
  
ì  Everybody	
  is	
  responsible	
  for	
  the	
  Delivery	
  Process.	
  
ì  ConLnuous	
  Improvement.	
  
ì  AcLviLes	
   such	
   as	
   SCM,	
   Release	
   planning,	
   Automated	
  
Deployment,	
  Acceptance	
  TesLng,	
  Performance	
  TesLng	
  are	
  NOT	
  
SECONDARY.	
  
ì  Generates	
  no	
  revenue	
  Lll	
  its	
  in	
  the	
  hands	
  of	
  the	
  end-­‐users.	
  
ì  Customer	
   SaLsfacLon	
   through	
   early	
   &	
   conLnuous	
   delivery	
   of	
  
so<ware.	
  
h"p://linkedin.com/in/praneshvi"al	
  
15	
  
Release	
  Engineering	
  Steps	
  
ì  SCM	
  (Git,	
  SVN,	
  Clearcase).	
  
ì  Automated	
  Commit	
  /	
  Component	
  Builds	
  (Generate	
  Binaries).	
  
ì  Generate	
  Code	
  Quality	
  Metrics.	
  
ì  Build	
  Deployment	
  Pipeline.	
  
ì  Automated	
  Acceptance	
  TesLng.	
  
ì  Automated	
  PromoLon	
  to	
  subsequent	
  Environments.	
  
ì  Single	
  click	
  or	
  automated	
  push	
  to	
  producLon.	
  
h"p://linkedin.com/in/praneshvi"al	
  
16	
  
Main	
  Focus	
  of	
  Release	
  Engineering	
  
ì  Build	
  -­‐>	
  Deploy	
  -­‐>	
  Test	
  -­‐>	
  Release	
  
ì  Every	
  single	
  check-­‐in	
  should	
  potenLally	
  be	
  in	
  a	
  releasable	
  state.	
  	
  
h"p://linkedin.com/in/praneshvi"al	
  
17	
  
Configuration	
  Management	
  
ì  Using	
  Version	
  Control	
  and	
  commit	
  everything.	
  
ì  Check-­‐in	
  the	
  changes	
  at	
  regular	
  frequency.	
  
ì  Use	
  meaningful	
  messages	
  for	
  every	
  commit.	
  
ì  Managing	
  Dependencies	
  (External	
  Libraries,	
  Components).	
  
ì  Managing	
  the	
  Infrastructure	
  (Consistent	
  network	
  topology,	
  firewall,	
  
OS	
  configuraLon,	
  patches	
  etc...	
  across	
  all	
  the	
  environments).	
  
ì  Managing	
  the	
  Environments	
  &	
  the	
  tools	
  to	
  be	
  used	
  for	
  the	
  same.	
  
ì  Managing	
  the	
  Change	
  Process.	
  
h"p://linkedin.com/in/praneshvi"al	
  
18	
  
Principles	
  of	
  Managing	
  Application	
  
Configuration	
  
ì  Good	
  understanding	
  of	
  the	
  stage	
  in	
  which	
  the	
  configuraLon	
  should	
  
be	
  injected	
  (Assembly,	
  Deployment,	
  Restart	
  etc…)	
  
ì  ConfiguraLon	
  sefngs	
  for	
  the	
  applicaLon	
  to	
  be	
  in	
  the	
  project’s	
  root	
  
directory.	
  
ì  Should	
  always	
  be	
  automated	
  and	
  values	
  checked	
  into	
  repository.	
  
ì  Use	
  clear	
  naming	
  convenLon.	
  
ì  Avoid	
  Over-­‐engineering.	
  Keep	
  it	
  as	
  simple	
  as	
  possible.	
  
ì  Ensure	
  that	
  the	
  configuraLon	
  is	
  tested	
  properly	
  a<er	
  deployment.	
  
h"p://linkedin.com/in/praneshvi"al	
  
19	
  
Release	
  Engineering	
  Architecture	
  
ì  Its	
  all	
  about	
  building	
  the	
  “Build	
  &	
  Release”	
  pipeline.	
  
ì  Built	
  using	
  Jenkins	
  or	
  similar	
  ConLnuous	
  IntegraLon	
  Tools.	
  
ì  IllustraLon	
   of	
   a	
   “Delivery	
   Pipeline”	
   (Image	
   Courtesy:	
  
“ConLnuous	
  Delivery”	
  by	
  Jez	
  Humble	
  &	
  David	
  Farley).	
  
h"p://linkedin.com/in/praneshvi"al	
  
20	
  
Deep	
  dive	
  into	
  commit	
  /	
  component	
  builds:	
  
ì  Aim:	
  
ì  Eliminate	
  builds	
  that	
  are	
  unfit	
  for	
  producLon.	
  	
  
ì  Steps:	
  
ì  Compile	
  the	
  code.	
  
ì  Run	
  a	
  set	
  of	
  commit	
  tests.	
  
ì  Run	
  Lint	
  based	
  tests	
  or	
  some	
  of	
  the	
  basic	
  staLc	
  code	
  analysis	
  tasks.	
  
ì  Publish	
  the	
  results.	
  
ì  Once	
  above	
  steps	
  are	
  done,	
  build	
  the	
  package	
  and	
  upload	
  the	
  binary	
  to	
  
a	
  centralized	
  repository.	
  	
  
ì  Add	
  tests	
  on	
  an	
  ongoing	
  basis.	
  
ì  Keep	
  a	
  watch	
  on	
  the	
  build	
  execuLon	
  Lme	
  and	
  opLmize	
  frequently.	
  
ì  Explore	
  the	
  ‘Pre-­‐Commit’	
  or	
  ‘Pre-­‐Flight’	
  build	
  opLons	
  provided	
  by	
  some	
  
of	
  the	
  CI	
  tools.	
  
h"p://linkedin.com/in/praneshvi"al	
  
21	
  
Anti-­‐Patterns	
  in	
  commit	
  /	
  component	
  builds:	
  
ì  Don’t	
  check-­‐in	
  new	
  code	
  on	
  a	
  broken	
  build.	
  The	
  only	
  fix	
  that	
  has	
  to	
  go	
  are	
  the	
  changes	
  
that	
  fix	
  the	
  broken	
  build.	
  
ì  Always	
  run	
  commit	
  tests	
  locally	
  before	
  the	
  commit.	
  
ì  Always	
  wait	
  for	
  commit	
  tests	
  to	
  pass	
  before	
  next	
  check-­‐in.	
  
ì  Developers	
   who	
   have	
   commi.ed	
   their	
   code	
   are	
   responsible	
   for	
   the	
   build	
   process	
   to	
  
succeed.	
  
ì  Never	
  go	
  home	
  on	
  a	
  broken	
  build.	
  	
  
ì  Time-­‐box	
   during	
   every	
   failed	
   build.	
   Give	
   about	
   10-­‐20	
   minutes	
   to	
   fix,	
   else	
   rollback	
   the	
  
changes.	
  
ì  Don’t	
  EVER	
  comment	
  failing	
  tests.	
  
ì  Take	
   ownership	
   for	
   all	
   the	
   breakages	
   that	
   result	
   from	
   your	
   changes	
   and	
   fix	
   them	
  
accordingly.	
  	
  
h"p://linkedin.com/in/praneshvi"al	
  
22	
  
Aim	
  of	
  Deployment	
  Pipeline	
  
ì  Every	
  Step	
  should	
  be	
  visible	
  (Results	
  in	
  be.er	
  collaboraLon).	
  
ì  Deliver	
  useful,	
  working	
  so<ware	
  to	
  the	
  users	
  as	
  early	
  as	
  possible.	
  	
  
ì  Early	
  feedback	
  (IdenLfy	
  &	
  resolve	
  issues	
  in	
  the	
  early	
  stages).	
  
ì  Enable	
  teams	
  to	
  deploy	
  &	
  release	
  any	
  version	
  of	
  their	
  so<ware	
  at	
  any	
  point	
  to	
  
any	
  of	
  the	
  environments.	
  
ì  Avoid	
  last	
  day	
  heroics	
  on	
  the	
  release	
  day.	
  
ì  Release	
  in	
  small	
  chunks	
  (Avoid	
  “Big	
  Bang”	
  release).	
  
ì  Should	
  be	
  driven	
  by	
  tools	
  &	
  not	
  by	
  sviduals.	
  
ì  Ability	
   for	
   every	
   change	
   to	
   be	
   transparent	
   &	
   propagate	
   them	
   through	
   the	
  
pipeline.	
  
ì  Ability	
  to	
  roll-­‐back	
  to	
  a	
  previous	
  stable	
  state	
  in	
  case	
  of	
  any	
  failures.	
  
h"p://linkedin.com/in/praneshvi"al	
  
23	
  
Anti-­‐Patterns	
  of	
  Deployment	
  Pipeline	
  
ì  Manual	
  Deployment	
  of	
  So<ware.	
  
ì  Deployment	
  performed	
  by	
  mulLple	
  teams.	
  
ì  The	
  order	
  of	
  steps	
  are	
  not	
  defined.	
  
ì  No	
  proper	
  “Run	
  books”	
  for	
  failures.	
  
ì  Too	
  much	
  of	
  reliance	
  of	
  manual	
  tesLng.	
  
ì  CorrecLon	
  to	
  the	
  release	
  process	
  during	
  the	
  actual	
  producLon	
  release.	
  
ì  ConfiguraLon	
  across	
  all	
  the	
  environments	
  varies	
  to	
  a	
  large	
  extent.	
  
ì  Manual	
  ConfiguraLon	
  management	
  of	
  ProducLon	
  Environment.	
  
ì  Deployment	
  to	
  a	
  producLon-­‐like	
  environment	
  is	
  done	
  only	
  development	
  is	
  
100%	
  complete.	
  
h"p://linkedin.com/in/praneshvi"al	
  
24	
  
Best	
  qualities	
  of	
  a	
  Deployment	
  Pipeline	
  
ì  Deployments	
  should	
  be	
  automated.	
  
ì  Deployments	
  should	
  be	
  done	
  frequently	
  (If	
  possible,	
  for	
  every	
  
single	
  check-­‐in).	
  
ì  Provide	
  early	
  feedback	
  so	
  that	
  the	
  development	
  team	
  can	
  act	
  
on	
  the	
  failures	
  in	
  a	
  faster	
  way.	
  
ì  Good	
  AutomaLon	
  Coverage	
  to	
  test	
  early.	
  
ì  Should	
  be	
  scalable.	
  
ì  Should	
  enable	
  one-­‐click	
  deployment.	
  
h"p://linkedin.com/in/praneshvi"al	
  
25	
  
Deployment	
  on	
  Large	
  Scale	
  Production	
  
Environments	
  
ì  What	
  are	
  host-­‐types?	
  
ì  What	
  are	
  recipes	
  /	
  cookbooks?	
  
ì  Tools	
  like	
  Pogo	
  OR	
  other	
  agent	
  based	
  deployment	
  tools.	
  
	
  
$	
  ssh	
  <target-­‐host-­‐name>	
  'whoami;’	
  
praneshv	
  
h"p://linkedin.com/in/praneshvi"al	
  
26	
  
Why	
  Automated	
  Deployment	
  is	
  an	
  indispensable	
  goal	
  ???	
  
ì  On	
  most	
  occasions,	
  the	
  deployment	
  documentaLon	
  is	
  outdated.	
  
ì  Logging	
  all	
  the	
  steps	
  in	
  the	
  form	
  of	
  scripts	
  is	
  very	
  beneficial	
  for	
  book	
  keeping	
  
purposes.	
  
ì  Works	
  seamlessly	
  if	
  all	
  the	
  steps	
  are	
  taken	
  care	
  of.	
  
ì  Even	
  non-­‐experts	
  should	
  be	
  able	
  to	
  deploy	
  effortlessly.	
  
ì  Every	
   team	
   using	
   automated	
   deployment	
   scripts	
   results	
   in	
   its	
   maturity	
   &	
   less	
  
prone	
  to	
  errors.	
  
ì  Take	
  off	
  the	
  dependency	
  from	
  the	
  deployment	
  expert	
  and	
  uLlize	
  them	
  for	
  more	
  
challenging	
  tasks.	
  
ì  Its	
  fast,	
  cheap.	
  Facilitates	
  in	
  early	
  tesLng	
  &	
  faster	
  feedback	
  cycles.	
  
ì  Deployment	
  Logs	
  are	
  auditable	
  for	
  future	
  references.	
  
h"p://linkedin.com/in/praneshvi"al	
  
27	
  
Deep	
  dive	
  into	
  Testing	
  Quadrant	
  
Image	
  Credit:	
  Concept	
  defined	
  by	
  ‘Brian	
  Marick’	
  (Diagram	
  obtained	
  from	
  “ConLnuous	
  Delivery”	
  by	
  	
  
‘Jez	
  Humble’	
  &	
  ‘David	
  Farley’.	
  
h"p://linkedin.com/in/praneshvi"al	
  
28	
  
Deep	
  Dive	
  into	
  Automated	
  Acceptance	
  Tests	
  
ì  Aim:	
  
ì  Avoid	
  manual	
  tests	
  to	
  whatever	
  extent	
  possible.	
  
ì  Steps	
  to	
  be	
  followed:	
  
ì  Tests	
  to	
  be	
  performed	
  in	
  producLon-­‐like	
  environment.	
  
ì  If	
   sefng	
   up	
   environment	
   is	
   expensive,	
   use	
   a	
   scaled-­‐down	
  
environment.	
  
ì  Setup	
  the	
  actual	
  user’s	
  environment	
  on	
  a	
  grid.	
  
ì  Use	
  Business	
  language	
  in	
  the	
  scripts	
  instead	
  of	
  technical	
  jargon	
  
(‘Place	
  Order’	
  instead	
  of	
  ‘Clicking	
  on	
  bu.on	
  XYZ’).	
  
ì  Well-­‐defined	
  exit	
  criteria	
  for	
  Pass	
  /	
  Fail	
  of	
  tests.	
  
ì  Don’t	
  fail	
  the	
  test	
  due	
  to	
  minor	
  issues.	
  
h"p://linkedin.com/in/praneshvi"al	
  
29	
  
Deep	
  Dive	
  into	
  Automated	
  Acceptance	
  Tests	
  
continued…	
  
ì  Steps	
  to	
  be	
  followed:	
  
ì  Include	
  a	
  few	
  tests	
  to	
  assert	
  external	
  systems.	
  
ì  If	
  you	
  don’t	
  care	
  about	
  a	
  parLcular	
  field,	
  don’t	
  bother	
  tesLng	
  it.	
  
ì  These	
  tests	
  should	
  be	
  run	
  a<er	
  every	
  deployment.	
  
ì  Block	
  the	
  pipeline	
  when	
  there	
  are	
  massive	
  failures.	
  
ì  Parallelize	
  the	
  tests	
  to	
  whatever	
  extent	
  possible.	
  
ì  Outcome	
  of	
  this	
  step	
  are	
  the	
  so<ware	
  packages	
  that	
  have	
  fought	
  
against	
  all	
  the	
  tests	
  &	
  challenges	
  like	
  a	
  mythical	
  hero	
  and	
  ready	
  
to	
  take	
  on	
  the	
  world	
  !!!	
  
h"p://linkedin.com/in/praneshvi"al	
  
30	
  
Few	
  more	
  Generic	
  Anti-­‐Patterns	
  
ì  TesLng	
  done	
  on	
  developer	
  machines.	
  
ì  Service	
  Engineering	
  team	
  hasn’t	
  even	
  seen	
  the	
  applicaLon	
  Lll	
  the	
  
actual	
  release	
  date.	
  
ì  Installers,	
  ConfiguraLons	
  etc…	
  not	
  done	
  Lll	
  the	
  release	
  date.	
  
ì  No	
  collaboraLon	
  between	
  development	
  team	
  &	
  SE	
  teams.	
  
ì  Late	
  setup	
  of	
  Staging	
  Environment.	
  
ì  Release	
  too	
  many	
  changes,	
  unable	
  to	
  figure	
  out	
  what	
  caused	
  the	
  
failure.	
  
ì  Changing	
  the	
  configuraLons	
  directly	
  on	
  ProducLon	
  o<en	
  resulLng	
  in	
  
disasters.	
  
h"p://linkedin.com/in/praneshvi"al	
  
31	
  
Adaption	
  of	
  Release	
  Engineering	
  
ì  Change	
  in	
  the	
  mindset	
  of	
  the	
  team	
  members.	
  
ì  All	
  aspects	
  of	
  development,	
  tesLng,	
  staging,	
  producLon	
  environments	
  (most	
  
importantly	
  configuraLon	
  management)	
  to	
  be	
  managed	
  through	
  a	
  VCS.	
  
ì  Integrate	
  development,	
  tesLng,	
  release	
  teams	
  as	
  a	
  part	
  of	
  the	
  development	
  
process.	
  
ì  Manage	
  the	
  Infrastructure	
  to	
  build	
  environments	
  in	
  no	
  Lme.	
  
ì  Beef	
  up	
  the	
  test	
  automaLon	
  coverage	
  so	
  that	
  there’s	
  not	
  much	
  reliance	
  on	
  
Manual	
  tesLng.	
  
ì  Rehearse	
  the	
  release	
  &	
  rollback	
  process	
  so	
  that	
  its	
  easy	
  to	
  do	
  it	
  Lme	
  &	
  
again.	
  
ì  Reach	
  a	
  stage	
  wherein	
  “So<ware	
  Release”	
  is	
  in	
  self-­‐service	
  mode.	
  
h"p://linkedin.com/in/praneshvi"al	
  
32	
  
Tools	
  Used	
  at	
  each	
  of	
  the	
  stages.	
  
ì  Version	
  control	
  –	
  Git	
  
ì  Build	
  Tools	
  –	
  Ant,	
  Nant,	
  MSBuild,	
  gmake,	
  Maven,	
  Buildr,	
  Psake.	
  
ì  Agile	
  /	
  Scrum	
  –	
  Jira.	
  
ì  StaLc	
  validaLon	
  –	
  Coverity,	
  SonarQube	
  
ì  Unit	
  tesLng	
  –	
  junit	
  
ì  Test	
  automaLon	
  –	
  Protractor,	
  Selenium	
  
ì  ConLnuous	
  IntegraLon	
  –	
  Jenkins,	
  Atlassian	
  Bamboo,	
  Thoughtworks	
  Go,	
  UrbanCode	
  
AntHillPro	
  
ì  Deployment	
  –	
  Pogo,	
  Chef	
  
ì  Environment	
  provisioning	
  –	
  Puppet,	
  Chef	
  
ì  IAAS,	
  PAAS	
  –	
  AWS,	
  Azure,	
  Docker,	
  Vagrant	
  
h"p://linkedin.com/in/praneshvi"al	
  
33	
  
Tools	
  Used	
  at	
  each	
  of	
  the	
  stages.	
  
ì  Image	
  Credit	
  :	
  h.p://maestrodev.com	
  	
  
h"p://linkedin.com/in/praneshvi"al	
  
34	
  
Managing	
  Environments	
  
ì  No	
  ApplicaLon	
  is	
  an	
  Island.	
  
ì  Poor	
  ConfiguraLon	
  Management	
  results	
  in	
  significant	
  waste	
  of	
  Lme,	
  
addiLonal	
  costs,	
  tech	
  debt	
  etc…	
  
ì  Should	
  always	
  be	
  cheaper	
  to	
  create	
  a	
  new	
  environment	
  than	
  repairing	
  a	
  
broken	
  environment.	
  
ì  Few	
  of	
  the	
  names	
  used	
  for	
  Environments	
  
ì  Development	
  
ì  IntegraLon	
  
ì  QA	
  /	
  TesLng	
  
ì  Staging	
  /	
  Pre-­‐ProducLon	
  
ì  Performance	
  
ì  Canary	
  /	
  Bucket	
  TesLng	
  
ì  ProducLon	
  
h"p://linkedin.com/in/praneshvi"al	
  
35	
  
Managing	
  Releases	
  of	
  complex	
  systems	
  
h"p://linkedin.com/in/praneshvi"al	
  
36	
  
Image	
  Credit:	
  Slide	
  deck	
  available	
  at	
  h.ps://learn.chef.io/	
  	
  
Managing	
  Releases	
  of	
  complex	
  systems	
  
h"p://linkedin.com/in/praneshvi"al	
  
37	
  
OrchestraLon:	
  	
  
ì  Automated	
  arrangement,	
  coordinaLon,	
  and	
  management	
  of	
  complex	
  computer	
  systems,	
  
middleware,	
  and	
  services.	
  	
  
ì  Aligning	
  the	
  business	
  request	
  with	
  the	
  applicaLons,	
  data,	
  and	
  infrastructure	
  
ì  Deployment	
  Rhythm	
  
ì  Its	
  about	
  gefng	
  the	
  perfect	
  configuraLon,	
  checking	
  in	
  these	
  values	
  and	
  automate	
  the	
  
release	
  using	
  these	
  values.	
  
ì  Have	
  the	
  right	
  sequence	
  of	
  steps	
  in	
  the	
  configuraLon	
  file.	
  
ì  Have	
  the	
  right	
  kind	
  of	
  checks	
  &	
  balances	
  at	
  every	
  stage.	
  
ì  PracLce	
  roll-­‐backs	
  in	
  case	
  of	
  issues.	
  
ì  Implement	
  fail-­‐safe	
  methodologies	
  in	
  case	
  of	
  issues.	
  
ì  Build	
  environments	
  wherein	
  the	
  ProducLon	
  traffic	
  can	
  be	
  replayed	
  (Use	
  of	
  access	
  logs	
  to	
  
simulate	
  user	
  acLons).	
  
Steps	
  involved	
  to	
  build	
  a	
  deployment	
  pipeline	
  
ì  Model	
  your	
  value	
  stream	
  &	
  create	
  a	
  walking	
  skeleton.	
  
ì  Automate	
  the	
  build	
  &	
  deployment	
  process.	
  
ì  Automate	
  unit	
  tests	
  &	
  code	
  analysis.	
  
ì  Automate	
  Acceptance	
  Tests.	
  
ì  Automate	
  Releases.	
  
h"p://linkedin.com/in/praneshvi"al	
  
38	
  
Multi-­‐Tenant	
  Applications	
  
ì  Customers	
  share	
  the	
  same	
  cloud	
  plavorm	
  and	
  infrastructure	
  and	
  their	
  data	
  
is	
  commingled.	
  
ì  Single	
  code-­‐base	
  for	
  the	
  applicaLon.	
  
ì  Upgrades	
  are	
  executed	
  easily	
  by	
  the	
  SaaS	
  provider.	
  
ì  All	
  the	
  tenants	
  are	
  using	
  the	
  same	
  version.	
  
ì  Data	
  of	
  different	
  tenants	
  is	
  stored	
  in	
  the	
  same	
  place,	
  however,	
  measures	
  
taken	
  to	
  make	
  it	
  inaccessible	
  to	
  other	
  tenants.	
  
ì  BuckeLze	
  the	
  access	
  based	
  on	
  the	
  IP	
  Range	
  /	
  Cookie	
  range	
  /	
  Header	
  
InformaLon	
  etc...	
  
ì  Toggle	
  a	
  Feature	
  using	
  configuraLon.	
  	
  
ì  Hard	
  to	
  maintain	
  different	
  versions	
  for	
  different	
  tenants.	
  
h"p://linkedin.com/in/praneshvi"al	
  
39	
  
Multi-­‐Instance	
  Applications	
  
ì  MulLple	
  customers	
  run	
  their	
  own	
  separate	
  instance	
  of	
  an	
  
applicaLon	
  and	
  OS	
  running	
  on	
  a	
  separate	
  VM.	
  
ì  Avoid	
  comingling	
  of	
  data.	
  
ì  Develop	
  &	
  use	
  their	
  own	
  logical	
  piece	
  of	
  the	
  cloud	
  service.	
  
ì  Allows	
  for	
  greater	
  flexibility	
  and	
  control	
  of	
  configuraLon,	
  
customizaLon,	
  updates	
  and	
  upgrades.	
  
ì  Ability	
  to	
  migrate	
  instance	
  to	
  an	
  on-­‐premise	
  server,	
  or	
  to	
  
another	
  cloud	
  hosLng	
  provider	
  
h"p://linkedin.com/in/praneshvi"al	
  
40	
  
Zero	
  Downtime	
  Deployment	
  
ì  What	
  is	
  ‘Zero	
  DownLme	
  Deployment’?	
  
ì  What	
  is	
  ‘Out	
  Of	
  RotaLon’	
  (OOR)	
  ?	
  
ì  What	
  is	
  ‘Concurrency’	
  ?	
  
ì  Colo	
  (Data-­‐Center)	
  based	
  deployments.	
  
h"p://linkedin.com/in/praneshvi"al	
  
41	
  
Extracting	
  the	
  server	
  logs	
  
ì  Standardize	
  the	
  logging	
  messages.	
  Involves	
  lot	
  of	
  effort	
  from	
  
the	
  development	
  teams.	
  
ì  Setup	
  Splunk	
  alerts	
  for	
  ‘FATAL’	
  errors	
  in	
  the	
  code.	
  
h"p://linkedin.com/in/praneshvi"al	
  
42	
  
Next	
  generation	
  tools	
  in	
  the	
  DevOps	
  world	
  
ì  Chef	
  
ì  Puppet	
  
ì  Cfengine	
  
ì  Salt	
  
h"p://linkedin.com/in/praneshvi"al	
  
43	
  
Preparation	
  for	
  the	
  Release	
  
ì  Any	
  issues	
  during	
  the	
  release,	
  stop	
  or	
  postpone	
  the	
  release.	
  
Stability	
  takes	
  the	
  highest	
  priority.	
  
ì  Prepare	
  Release	
  Plan	
  or	
  Runbook	
  with	
  correct	
  sets	
  and	
  if	
  
possible	
  automate	
  them.	
  
ì  IdenLfy	
  the	
  error-­‐prone	
  steps	
  and	
  automate	
  them.	
  
ì  Perform	
  the	
  drill	
  for	
  performing	
  rolling	
  back	
  of	
  the	
  releases.	
  
ì  Should	
  be	
  as	
  simple	
  as	
  selecLng	
  a	
  value	
  and	
  clicking	
  a	
  bu.on.	
  
ì  Let	
  one	
  team	
  perform	
  all	
  the	
  releases.	
  (Too	
  many	
  cooks	
  spoil	
  
the	
  broth).	
  	
  
h"p://linkedin.com/in/praneshvi"al	
  
44	
  
Maturity	
  of	
  a	
  “Deployment	
  Pipeline”	
  ?	
  
h"p://linkedin.com/in/praneshvi"al	
  
45	
  
ì  Image	
  Credit:	
  h.p://www.praqma.com/	
  	
  
Q	
  &	
  A	
  
h"p://linkedin.com/in/praneshvi"al	
  
46	
  
Thank	
  You	
  
h"p://linkedin.com/in/praneshvi"al	
  
47	
  
References:	
  
ì  Details	
  about	
  each	
  of	
  the	
  phases	
  from	
  “ConLnuous	
  Delivery”	
  by	
  Jez	
  Humble,	
  
David	
  Farley	
  
ì  Source	
  of	
  some	
  of	
  the	
  generic	
  images	
  used	
  –	
  “Unknown”.	
  
ì  RespecLve	
  credits	
  given	
  to	
  the	
  images	
  used	
  in	
  the	
  same	
  slide.	
  
ì  h.ps://gigaom.com/2014/01/26/mulL-­‐tenant-­‐or-­‐mulL-­‐instance-­‐cloud-­‐lets-­‐
do-­‐both/	
  	
  
ì  h.p://diginomica.com/2013/12/20/mulL-­‐tenant-­‐mulL-­‐instance-­‐saas-­‐
spectrum/	
  	
  
ì  h.ps://msdn.microso<.com/en-­‐us/library/hh534478.aspx	
  	
  
ì  h.ps://www.youtube.com/watch?v=CE4hLYhfmBE	
  -­‐	
  Deployment	
  using	
  
pogo.	
  
h"p://linkedin.com/in/praneshvi"al	
  
48	
  

Contenu connexe

Tendances

SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...
SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...
SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...New Relic
 
DevOps Torino Meetup - SRE Concepts
DevOps Torino Meetup - SRE ConceptsDevOps Torino Meetup - SRE Concepts
DevOps Torino Meetup - SRE ConceptsRauno De Pasquale
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategiesjstack
 
CI/CD Best Practices for Your DevOps Journey
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps JourneyDevOps.com
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesSlideTeam
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
Implementing DevOps
Implementing DevOpsImplementing DevOps
Implementing DevOpsMike McGarr
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To JenkinsKnoldus Inc.
 
Release Management
Release Management Release Management
Release Management Vyom Labs
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersAmazon Web Services
 
How to Build a Platform Team
How to Build a Platform TeamHow to Build a Platform Team
How to Build a Platform TeamVMware Tanzu
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java worldAshok Kumar
 
Bjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and youBjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and youIT Arena
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to ChefKnoldus Inc.
 

Tendances (20)

The Devops Handbook
The Devops HandbookThe Devops Handbook
The Devops Handbook
 
SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...
SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...
SRE-iously: Defining the Principles, Habits, and Practices of Site Reliabilit...
 
DevOps Torino Meetup - SRE Concepts
DevOps Torino Meetup - SRE ConceptsDevOps Torino Meetup - SRE Concepts
DevOps Torino Meetup - SRE Concepts
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
CI/CD Best Practices for Your DevOps Journey
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps Journey
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation Slides
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Implementing DevOps
Implementing DevOpsImplementing DevOps
Implementing DevOps
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Release Management
Release Management Release Management
Release Management
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
How to Build a Platform Team
How to Build a Platform TeamHow to Build a Platform Team
How to Build a Platform Team
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Bjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and youBjorn Rabenstein. SRE, DevOps, Google, and you
Bjorn Rabenstein. SRE, DevOps, Google, and you
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Continuous delivery-with-maven
Continuous delivery-with-mavenContinuous delivery-with-maven
Continuous delivery-with-maven
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
DevOps Best Practices
DevOps Best PracticesDevOps Best Practices
DevOps Best Practices
 

En vedette

Fundamental of apache maven
Fundamental of apache mavenFundamental of apache maven
Fundamental of apache mavenRajesh Kumar
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineeringgaoliang641
 
On Software Release Engineering (Bram Adams)
On Software Release Engineering (Bram Adams)On Software Release Engineering (Bram Adams)
On Software Release Engineering (Bram Adams)Bram Adams
 
The Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps WorldThe Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps WorldPerforce
 
Top 10 release engineer interview questions and answers
Top 10 release engineer interview questions and answersTop 10 release engineer interview questions and answers
Top 10 release engineer interview questions and answersboomboom6711
 
Building A Strong Engineering Culture - my talk from BBC Develop 2013
Building A Strong Engineering Culture - my talk from BBC Develop 2013Building A Strong Engineering Culture - my talk from BBC Develop 2013
Building A Strong Engineering Culture - my talk from BBC Develop 2013Kevin Goldsmith
 
Code as Craft: Building a Strong Engineering Culture at Etsy
Code as Craft: Building a Strong Engineering Culture at EtsyCode as Craft: Building a Strong Engineering Culture at Etsy
Code as Craft: Building a Strong Engineering Culture at EtsyChad Dickerson
 

En vedette (10)

EFL QA Statistics
EFL QA StatisticsEFL QA Statistics
EFL QA Statistics
 
Cruise control
Cruise controlCruise control
Cruise control
 
Fundamental of apache maven
Fundamental of apache mavenFundamental of apache maven
Fundamental of apache maven
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
On Software Release Engineering (Bram Adams)
On Software Release Engineering (Bram Adams)On Software Release Engineering (Bram Adams)
On Software Release Engineering (Bram Adams)
 
The Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps WorldThe Changing Role of Release Engineering in a DevOps World
The Changing Role of Release Engineering in a DevOps World
 
Top 10 release engineer interview questions and answers
Top 10 release engineer interview questions and answersTop 10 release engineer interview questions and answers
Top 10 release engineer interview questions and answers
 
Introducing DevOps
Introducing DevOpsIntroducing DevOps
Introducing DevOps
 
Building A Strong Engineering Culture - my talk from BBC Develop 2013
Building A Strong Engineering Culture - my talk from BBC Develop 2013Building A Strong Engineering Culture - my talk from BBC Develop 2013
Building A Strong Engineering Culture - my talk from BBC Develop 2013
 
Code as Craft: Building a Strong Engineering Culture at Etsy
Code as Craft: Building a Strong Engineering Culture at EtsyCode as Craft: Building a Strong Engineering Culture at Etsy
Code as Craft: Building a Strong Engineering Culture at Etsy
 

Similaire à Build & Release Engineering

Preparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsPreparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsXebiaLabs
 
Continous Delivery Toronto Presentation
Continous Delivery Toronto PresentationContinous Delivery Toronto Presentation
Continous Delivery Toronto PresentationXebiaLabs
 
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterMatt Tesauro
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Matt Tesauro
 
Introducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseIntroducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseXebiaLabs
 
Test Automation at the Speed of Agile: Making It Work Every Build
Test Automation at the Speed of Agile: Making It Work Every BuildTest Automation at the Speed of Agile: Making It Work Every Build
Test Automation at the Speed of Agile: Making It Work Every BuildTechWell
 
A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...Vincenzo Ferme
 
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?What to Do—Develop Your Own Automation or Use Crowdsourced Testing?
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?TechWell
 
Release Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROIRelease Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROITechWell
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Tzach Zohar
 
Agile Testing 2020
Agile Testing 2020Agile Testing 2020
Agile Testing 2020arzu TR
 
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesDocker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesAndrew Phillips
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workManuel de la Peña Peña
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueRapidValue
 
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...apidays
 
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileKenAtIndeed
 
Continuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersContinuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersSergey Bolshchikov
 
Lean Kanban India 2018 | Leveraging Lean and Kanban to implement Continuous ...
Lean Kanban India 2018 |  Leveraging Lean and Kanban to implement Continuous ...Lean Kanban India 2018 |  Leveraging Lean and Kanban to implement Continuous ...
Lean Kanban India 2018 | Leveraging Lean and Kanban to implement Continuous ...LeanKanbanIndia
 
LKIN2018: leveraging Lean and Kanban to implement continuous improvement
LKIN2018: leveraging Lean and Kanban to implement continuous improvementLKIN2018: leveraging Lean and Kanban to implement continuous improvement
LKIN2018: leveraging Lean and Kanban to implement continuous improvementRavi Tadwalkar
 

Similaire à Build & Release Engineering (20)

Preparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsPreparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
 
Continous Delivery Toronto Presentation
Continous Delivery Toronto PresentationContinous Delivery Toronto Presentation
Continous Delivery Toronto Presentation
 
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016
 
Introducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseIntroducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the Enterprise
 
Test Automation at the Speed of Agile: Making It Work Every Build
Test Automation at the Speed of Agile: Making It Work Every BuildTest Automation at the Speed of Agile: Making It Work Every Build
Test Automation at the Speed of Agile: Making It Work Every Build
 
A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...A Declarative Approach for Performance Tests Execution in Continuous Software...
A Declarative Approach for Performance Tests Execution in Continuous Software...
 
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?What to Do—Develop Your Own Automation or Use Crowdsourced Testing?
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?
 
Release Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROIRelease Automation: Better Quality, Faster Deployment, Amazing ROI
Release Automation: Better Quality, Faster Deployment, Amazing ROI
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)
 
Agile Testing 2020
Agile Testing 2020Agile Testing 2020
Agile Testing 2020
 
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesDocker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to work
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
 
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
 
Continuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersContinuous Delivery for Front-End Engineers
Continuous Delivery for Front-End Engineers
 
Lean Kanban India 2018 | Leveraging Lean and Kanban to implement Continuous ...
Lean Kanban India 2018 |  Leveraging Lean and Kanban to implement Continuous ...Lean Kanban India 2018 |  Leveraging Lean and Kanban to implement Continuous ...
Lean Kanban India 2018 | Leveraging Lean and Kanban to implement Continuous ...
 
LKIN2018: leveraging Lean and Kanban to implement continuous improvement
LKIN2018: leveraging Lean and Kanban to implement continuous improvementLKIN2018: leveraging Lean and Kanban to implement continuous improvement
LKIN2018: leveraging Lean and Kanban to implement continuous improvement
 

Dernier

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Dernier (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Build & Release Engineering

  • 1. ì   Build  &  Release  Engineering   By:  Pranesh  Vi.al  CG   h.p://linkedin.com/in/praneshvi.al    
  • 2. Main  Agenda  of  this  session   h"p://linkedin.com/in/praneshvi"al   2  
  • 3. Key  Takeaways  from  this  session     ì  So<ware  Release  Principles  &  its  importance.   ì  Not  to  expect  results  from  “Day  1”.  It’s  a  slow  process.  Takes  months  or  at   Lmes  even  years  to  reach  perfecLon  levels.     ì  What  is  “ConLnuous  IntegraLon”?   ì  Steps  associated  with  “ConLnuous  IntegraLon”?   ì  What  is  a  “ConLnuous  Delivery”?   ì  Steps  associated  with  “ConLnuous  Delivery”?   ì  What  is  a  “ConLnuous  Deployment”?   ì  Release  Engineering  Steps.   ì  Main  Focus  of  Release  Engineering.   h"p://linkedin.com/in/praneshvi"al   3  
  • 4. Key  Takeaways  from  this  session     ì  ConfiguraLon  Management.   ì  Principles  of  Managing  ApplicaLon  ConfiguraLon.   ì  Its  not  just  about  the  tools.  Its  about  the  big  “Cultural  Change”  that   everyone  has  to  go  through  .   ì  Release  Engineering  Architecture.   ì  Deep  dive  into  commit  /  component  builds.   ì  AnL-­‐Pa.erns  in  commit  /  component  builds.   ì  Aim  of  Deployment  Pipeline.   ì  AnL-­‐Pa.erns  of  Deployment  Pipeline.   ì  Best  qualiLes  of  a  Deployment  Pipeline.   h"p://linkedin.com/in/praneshvi"al   4  
  • 5. Key  Takeaways  from  this  session     ì  Deployment  on  Large  Scale  ProducLon  Environments.   ì  Why  Automated  Deployment  is  an  indispensable  goal  ???   ì  Deep  dive  into  TesLng  Quadrant.   ì  Deep  Dive  into  Automated  Acceptance  Tests.   ì  Few  more  Generic  AnL-­‐Pa.erns.   ì  AdapLon  of  Release  Engineering.   ì  Tools  Used  at  each  of  the  stages.   ì  Managing  Environments.   ì  Managing  Releases  of  complex  systems.   h"p://linkedin.com/in/praneshvi"al   5  
  • 6. Key  Takeaways  from  this  session     ì  Steps  involved  to  build  a  deployment  pipeline.   ì  Everyone  is  an  equal  contributor  to  reach  “ConLnuous  Deployment”  stage.     ì  MulL-­‐Tenancy  Cloud.   ì  MulL-­‐Instance  ApplicaLons.   ì  Zero  DownLme  Deployment.   ì  ExtracLng  the  server  logs.   ì  Next  generaLon  tools  in  the  DevOps  world.   ì  PreparaLon  for  the  Release.   ì  Maturity  of  a  “Deployment  Pipeline”.   h"p://linkedin.com/in/praneshvi"al   6  
  • 7. Target  Audience   ì  Product  Managers  /  Business  Analysts.   ì  Engineering  Managers.   ì  Development  Teams.   ì  Quality  Engineering  Teams.   ì  System  Admins.   ì  Service  Engineering  /  ProducLon  Engineering  Teams.   ì  On-­‐site  Coordinators.   h"p://linkedin.com/in/praneshvi"al   7  
  • 8. Software  Release  Principles  &  its  importance.   ì  Should  be  Fast  /  Predictable  /  Repeatable.   ì  Automate  almost  everything.   ì  Keep  everything  in  Version  Control.   ì  If  it  hurts,  do  it  more  o<en.   ì  Improve  the  quality  of  the  Builds.  Push  the  boundaries  of  test   automaLon  so  that  quality  is  not  compromised.   ì  Done  means  the  so<ware  is  released  and  has  reached  the   producLon.   h"p://linkedin.com/in/praneshvi"al   8  
  • 9. What  is  Deployment?   ì  Run  the  same  commands  in  several  hosts.   ì  Install  the  required  so<ware  from  a  central  repository  so  that   the  end  state  of  every  host  is  same.   ì  Based  on  the  host-­‐type,  install  the  required  packages.   ì  End  goal  is  to  bring  all  the  hosts  of  the  respecLve  host-­‐type  in   the  same  state.   h"p://linkedin.com/in/praneshvi"al   9  
  • 10. What  is  “Continuous  Integration”?   ì  Building,  deploying  and  tesLng  the  applicaLon.   h"p://linkedin.com/in/praneshvi"al   10  
  • 11. Steps  associated  with  “Continuous   Integration”?   ì  Integrate  all  the  components  at  regular  intervals.   ì  Binaries  built  only  once  and  used  in  all  the  environments.   ì  Execute  Unit  Tests  before  the  packages  are  generated.   ì  Deploy  the  latest  packages  onto  an  INT  environment.   ì  Run  the  automated  tests,  validate  the  test  results.   ì  Track  the  Code  quality  criteria  such  as  staLc  code  analysis,  test  coverage.   ì  Deploying  to  other  environments  with  a  pre-­‐defined  frequency.   ì  Repeat  the  process.   ì  It’s  a  pracGce,  not  a  tool   h"p://linkedin.com/in/praneshvi"al   11  
  • 12. What  is  a  “Continuous  Delivery”?   ì  Building,  deploying,  tesLng,  promoLon  of  the  applicaLon  to  the  next   environment.   ì  Image  credit:  h.p://www.axonivy.com/     h"p://linkedin.com/in/praneshvi"al   12  
  • 13. Steps  associated  with  “Continuous   Delivery”?   ì  Steps  followed  in  “ConLnuous  IntegraLon”.   ì  AutomaLc  promoLon  /  deployment  to  other  environments  (QA,   Staging,  Performance  etc…)  upon  successful  execuLon  of   automated  tests.   ì  ApplicaLon  is  always  ready  to  deploy  to  producLon  through  a   largely  automated  process.   h"p://linkedin.com/in/praneshvi"al   13  
  • 14. What  is  a  “Continuous  Deployment”?   ì  Building,  deploying,  tesLng,  promoLon  of  the  applicaLon  to  the   producLon.   ì  Image  credit:  Yassal  Sundman   h"p://linkedin.com/in/praneshvi"al   14  
  • 15. Release  Engineering  Principles  &  its  importance.   ì  Minimize  Cycle  Time  from  check-­‐in  to  producLon  push.   ì  Everybody  is  responsible  for  the  Delivery  Process.   ì  ConLnuous  Improvement.   ì  AcLviLes   such   as   SCM,   Release   planning,   Automated   Deployment,  Acceptance  TesLng,  Performance  TesLng  are  NOT   SECONDARY.   ì  Generates  no  revenue  Lll  its  in  the  hands  of  the  end-­‐users.   ì  Customer   SaLsfacLon   through   early   &   conLnuous   delivery   of   so<ware.   h"p://linkedin.com/in/praneshvi"al   15  
  • 16. Release  Engineering  Steps   ì  SCM  (Git,  SVN,  Clearcase).   ì  Automated  Commit  /  Component  Builds  (Generate  Binaries).   ì  Generate  Code  Quality  Metrics.   ì  Build  Deployment  Pipeline.   ì  Automated  Acceptance  TesLng.   ì  Automated  PromoLon  to  subsequent  Environments.   ì  Single  click  or  automated  push  to  producLon.   h"p://linkedin.com/in/praneshvi"al   16  
  • 17. Main  Focus  of  Release  Engineering   ì  Build  -­‐>  Deploy  -­‐>  Test  -­‐>  Release   ì  Every  single  check-­‐in  should  potenLally  be  in  a  releasable  state.     h"p://linkedin.com/in/praneshvi"al   17  
  • 18. Configuration  Management   ì  Using  Version  Control  and  commit  everything.   ì  Check-­‐in  the  changes  at  regular  frequency.   ì  Use  meaningful  messages  for  every  commit.   ì  Managing  Dependencies  (External  Libraries,  Components).   ì  Managing  the  Infrastructure  (Consistent  network  topology,  firewall,   OS  configuraLon,  patches  etc...  across  all  the  environments).   ì  Managing  the  Environments  &  the  tools  to  be  used  for  the  same.   ì  Managing  the  Change  Process.   h"p://linkedin.com/in/praneshvi"al   18  
  • 19. Principles  of  Managing  Application   Configuration   ì  Good  understanding  of  the  stage  in  which  the  configuraLon  should   be  injected  (Assembly,  Deployment,  Restart  etc…)   ì  ConfiguraLon  sefngs  for  the  applicaLon  to  be  in  the  project’s  root   directory.   ì  Should  always  be  automated  and  values  checked  into  repository.   ì  Use  clear  naming  convenLon.   ì  Avoid  Over-­‐engineering.  Keep  it  as  simple  as  possible.   ì  Ensure  that  the  configuraLon  is  tested  properly  a<er  deployment.   h"p://linkedin.com/in/praneshvi"al   19  
  • 20. Release  Engineering  Architecture   ì  Its  all  about  building  the  “Build  &  Release”  pipeline.   ì  Built  using  Jenkins  or  similar  ConLnuous  IntegraLon  Tools.   ì  IllustraLon   of   a   “Delivery   Pipeline”   (Image   Courtesy:   “ConLnuous  Delivery”  by  Jez  Humble  &  David  Farley).   h"p://linkedin.com/in/praneshvi"al   20  
  • 21. Deep  dive  into  commit  /  component  builds:   ì  Aim:   ì  Eliminate  builds  that  are  unfit  for  producLon.     ì  Steps:   ì  Compile  the  code.   ì  Run  a  set  of  commit  tests.   ì  Run  Lint  based  tests  or  some  of  the  basic  staLc  code  analysis  tasks.   ì  Publish  the  results.   ì  Once  above  steps  are  done,  build  the  package  and  upload  the  binary  to   a  centralized  repository.     ì  Add  tests  on  an  ongoing  basis.   ì  Keep  a  watch  on  the  build  execuLon  Lme  and  opLmize  frequently.   ì  Explore  the  ‘Pre-­‐Commit’  or  ‘Pre-­‐Flight’  build  opLons  provided  by  some   of  the  CI  tools.   h"p://linkedin.com/in/praneshvi"al   21  
  • 22. Anti-­‐Patterns  in  commit  /  component  builds:   ì  Don’t  check-­‐in  new  code  on  a  broken  build.  The  only  fix  that  has  to  go  are  the  changes   that  fix  the  broken  build.   ì  Always  run  commit  tests  locally  before  the  commit.   ì  Always  wait  for  commit  tests  to  pass  before  next  check-­‐in.   ì  Developers   who   have   commi.ed   their   code   are   responsible   for   the   build   process   to   succeed.   ì  Never  go  home  on  a  broken  build.     ì  Time-­‐box   during   every   failed   build.   Give   about   10-­‐20   minutes   to   fix,   else   rollback   the   changes.   ì  Don’t  EVER  comment  failing  tests.   ì  Take   ownership   for   all   the   breakages   that   result   from   your   changes   and   fix   them   accordingly.     h"p://linkedin.com/in/praneshvi"al   22  
  • 23. Aim  of  Deployment  Pipeline   ì  Every  Step  should  be  visible  (Results  in  be.er  collaboraLon).   ì  Deliver  useful,  working  so<ware  to  the  users  as  early  as  possible.     ì  Early  feedback  (IdenLfy  &  resolve  issues  in  the  early  stages).   ì  Enable  teams  to  deploy  &  release  any  version  of  their  so<ware  at  any  point  to   any  of  the  environments.   ì  Avoid  last  day  heroics  on  the  release  day.   ì  Release  in  small  chunks  (Avoid  “Big  Bang”  release).   ì  Should  be  driven  by  tools  &  not  by  sviduals.   ì  Ability   for   every   change   to   be   transparent   &   propagate   them   through   the   pipeline.   ì  Ability  to  roll-­‐back  to  a  previous  stable  state  in  case  of  any  failures.   h"p://linkedin.com/in/praneshvi"al   23  
  • 24. Anti-­‐Patterns  of  Deployment  Pipeline   ì  Manual  Deployment  of  So<ware.   ì  Deployment  performed  by  mulLple  teams.   ì  The  order  of  steps  are  not  defined.   ì  No  proper  “Run  books”  for  failures.   ì  Too  much  of  reliance  of  manual  tesLng.   ì  CorrecLon  to  the  release  process  during  the  actual  producLon  release.   ì  ConfiguraLon  across  all  the  environments  varies  to  a  large  extent.   ì  Manual  ConfiguraLon  management  of  ProducLon  Environment.   ì  Deployment  to  a  producLon-­‐like  environment  is  done  only  development  is   100%  complete.   h"p://linkedin.com/in/praneshvi"al   24  
  • 25. Best  qualities  of  a  Deployment  Pipeline   ì  Deployments  should  be  automated.   ì  Deployments  should  be  done  frequently  (If  possible,  for  every   single  check-­‐in).   ì  Provide  early  feedback  so  that  the  development  team  can  act   on  the  failures  in  a  faster  way.   ì  Good  AutomaLon  Coverage  to  test  early.   ì  Should  be  scalable.   ì  Should  enable  one-­‐click  deployment.   h"p://linkedin.com/in/praneshvi"al   25  
  • 26. Deployment  on  Large  Scale  Production   Environments   ì  What  are  host-­‐types?   ì  What  are  recipes  /  cookbooks?   ì  Tools  like  Pogo  OR  other  agent  based  deployment  tools.     $  ssh  <target-­‐host-­‐name>  'whoami;’   praneshv   h"p://linkedin.com/in/praneshvi"al   26  
  • 27. Why  Automated  Deployment  is  an  indispensable  goal  ???   ì  On  most  occasions,  the  deployment  documentaLon  is  outdated.   ì  Logging  all  the  steps  in  the  form  of  scripts  is  very  beneficial  for  book  keeping   purposes.   ì  Works  seamlessly  if  all  the  steps  are  taken  care  of.   ì  Even  non-­‐experts  should  be  able  to  deploy  effortlessly.   ì  Every   team   using   automated   deployment   scripts   results   in   its   maturity   &   less   prone  to  errors.   ì  Take  off  the  dependency  from  the  deployment  expert  and  uLlize  them  for  more   challenging  tasks.   ì  Its  fast,  cheap.  Facilitates  in  early  tesLng  &  faster  feedback  cycles.   ì  Deployment  Logs  are  auditable  for  future  references.   h"p://linkedin.com/in/praneshvi"al   27  
  • 28. Deep  dive  into  Testing  Quadrant   Image  Credit:  Concept  defined  by  ‘Brian  Marick’  (Diagram  obtained  from  “ConLnuous  Delivery”  by     ‘Jez  Humble’  &  ‘David  Farley’.   h"p://linkedin.com/in/praneshvi"al   28  
  • 29. Deep  Dive  into  Automated  Acceptance  Tests   ì  Aim:   ì  Avoid  manual  tests  to  whatever  extent  possible.   ì  Steps  to  be  followed:   ì  Tests  to  be  performed  in  producLon-­‐like  environment.   ì  If   sefng   up   environment   is   expensive,   use   a   scaled-­‐down   environment.   ì  Setup  the  actual  user’s  environment  on  a  grid.   ì  Use  Business  language  in  the  scripts  instead  of  technical  jargon   (‘Place  Order’  instead  of  ‘Clicking  on  bu.on  XYZ’).   ì  Well-­‐defined  exit  criteria  for  Pass  /  Fail  of  tests.   ì  Don’t  fail  the  test  due  to  minor  issues.   h"p://linkedin.com/in/praneshvi"al   29  
  • 30. Deep  Dive  into  Automated  Acceptance  Tests   continued…   ì  Steps  to  be  followed:   ì  Include  a  few  tests  to  assert  external  systems.   ì  If  you  don’t  care  about  a  parLcular  field,  don’t  bother  tesLng  it.   ì  These  tests  should  be  run  a<er  every  deployment.   ì  Block  the  pipeline  when  there  are  massive  failures.   ì  Parallelize  the  tests  to  whatever  extent  possible.   ì  Outcome  of  this  step  are  the  so<ware  packages  that  have  fought   against  all  the  tests  &  challenges  like  a  mythical  hero  and  ready   to  take  on  the  world  !!!   h"p://linkedin.com/in/praneshvi"al   30  
  • 31. Few  more  Generic  Anti-­‐Patterns   ì  TesLng  done  on  developer  machines.   ì  Service  Engineering  team  hasn’t  even  seen  the  applicaLon  Lll  the   actual  release  date.   ì  Installers,  ConfiguraLons  etc…  not  done  Lll  the  release  date.   ì  No  collaboraLon  between  development  team  &  SE  teams.   ì  Late  setup  of  Staging  Environment.   ì  Release  too  many  changes,  unable  to  figure  out  what  caused  the   failure.   ì  Changing  the  configuraLons  directly  on  ProducLon  o<en  resulLng  in   disasters.   h"p://linkedin.com/in/praneshvi"al   31  
  • 32. Adaption  of  Release  Engineering   ì  Change  in  the  mindset  of  the  team  members.   ì  All  aspects  of  development,  tesLng,  staging,  producLon  environments  (most   importantly  configuraLon  management)  to  be  managed  through  a  VCS.   ì  Integrate  development,  tesLng,  release  teams  as  a  part  of  the  development   process.   ì  Manage  the  Infrastructure  to  build  environments  in  no  Lme.   ì  Beef  up  the  test  automaLon  coverage  so  that  there’s  not  much  reliance  on   Manual  tesLng.   ì  Rehearse  the  release  &  rollback  process  so  that  its  easy  to  do  it  Lme  &   again.   ì  Reach  a  stage  wherein  “So<ware  Release”  is  in  self-­‐service  mode.   h"p://linkedin.com/in/praneshvi"al   32  
  • 33. Tools  Used  at  each  of  the  stages.   ì  Version  control  –  Git   ì  Build  Tools  –  Ant,  Nant,  MSBuild,  gmake,  Maven,  Buildr,  Psake.   ì  Agile  /  Scrum  –  Jira.   ì  StaLc  validaLon  –  Coverity,  SonarQube   ì  Unit  tesLng  –  junit   ì  Test  automaLon  –  Protractor,  Selenium   ì  ConLnuous  IntegraLon  –  Jenkins,  Atlassian  Bamboo,  Thoughtworks  Go,  UrbanCode   AntHillPro   ì  Deployment  –  Pogo,  Chef   ì  Environment  provisioning  –  Puppet,  Chef   ì  IAAS,  PAAS  –  AWS,  Azure,  Docker,  Vagrant   h"p://linkedin.com/in/praneshvi"al   33  
  • 34. Tools  Used  at  each  of  the  stages.   ì  Image  Credit  :  h.p://maestrodev.com     h"p://linkedin.com/in/praneshvi"al   34  
  • 35. Managing  Environments   ì  No  ApplicaLon  is  an  Island.   ì  Poor  ConfiguraLon  Management  results  in  significant  waste  of  Lme,   addiLonal  costs,  tech  debt  etc…   ì  Should  always  be  cheaper  to  create  a  new  environment  than  repairing  a   broken  environment.   ì  Few  of  the  names  used  for  Environments   ì  Development   ì  IntegraLon   ì  QA  /  TesLng   ì  Staging  /  Pre-­‐ProducLon   ì  Performance   ì  Canary  /  Bucket  TesLng   ì  ProducLon   h"p://linkedin.com/in/praneshvi"al   35  
  • 36. Managing  Releases  of  complex  systems   h"p://linkedin.com/in/praneshvi"al   36   Image  Credit:  Slide  deck  available  at  h.ps://learn.chef.io/    
  • 37. Managing  Releases  of  complex  systems   h"p://linkedin.com/in/praneshvi"al   37   OrchestraLon:     ì  Automated  arrangement,  coordinaLon,  and  management  of  complex  computer  systems,   middleware,  and  services.     ì  Aligning  the  business  request  with  the  applicaLons,  data,  and  infrastructure   ì  Deployment  Rhythm   ì  Its  about  gefng  the  perfect  configuraLon,  checking  in  these  values  and  automate  the   release  using  these  values.   ì  Have  the  right  sequence  of  steps  in  the  configuraLon  file.   ì  Have  the  right  kind  of  checks  &  balances  at  every  stage.   ì  PracLce  roll-­‐backs  in  case  of  issues.   ì  Implement  fail-­‐safe  methodologies  in  case  of  issues.   ì  Build  environments  wherein  the  ProducLon  traffic  can  be  replayed  (Use  of  access  logs  to   simulate  user  acLons).  
  • 38. Steps  involved  to  build  a  deployment  pipeline   ì  Model  your  value  stream  &  create  a  walking  skeleton.   ì  Automate  the  build  &  deployment  process.   ì  Automate  unit  tests  &  code  analysis.   ì  Automate  Acceptance  Tests.   ì  Automate  Releases.   h"p://linkedin.com/in/praneshvi"al   38  
  • 39. Multi-­‐Tenant  Applications   ì  Customers  share  the  same  cloud  plavorm  and  infrastructure  and  their  data   is  commingled.   ì  Single  code-­‐base  for  the  applicaLon.   ì  Upgrades  are  executed  easily  by  the  SaaS  provider.   ì  All  the  tenants  are  using  the  same  version.   ì  Data  of  different  tenants  is  stored  in  the  same  place,  however,  measures   taken  to  make  it  inaccessible  to  other  tenants.   ì  BuckeLze  the  access  based  on  the  IP  Range  /  Cookie  range  /  Header   InformaLon  etc...   ì  Toggle  a  Feature  using  configuraLon.     ì  Hard  to  maintain  different  versions  for  different  tenants.   h"p://linkedin.com/in/praneshvi"al   39  
  • 40. Multi-­‐Instance  Applications   ì  MulLple  customers  run  their  own  separate  instance  of  an   applicaLon  and  OS  running  on  a  separate  VM.   ì  Avoid  comingling  of  data.   ì  Develop  &  use  their  own  logical  piece  of  the  cloud  service.   ì  Allows  for  greater  flexibility  and  control  of  configuraLon,   customizaLon,  updates  and  upgrades.   ì  Ability  to  migrate  instance  to  an  on-­‐premise  server,  or  to   another  cloud  hosLng  provider   h"p://linkedin.com/in/praneshvi"al   40  
  • 41. Zero  Downtime  Deployment   ì  What  is  ‘Zero  DownLme  Deployment’?   ì  What  is  ‘Out  Of  RotaLon’  (OOR)  ?   ì  What  is  ‘Concurrency’  ?   ì  Colo  (Data-­‐Center)  based  deployments.   h"p://linkedin.com/in/praneshvi"al   41  
  • 42. Extracting  the  server  logs   ì  Standardize  the  logging  messages.  Involves  lot  of  effort  from   the  development  teams.   ì  Setup  Splunk  alerts  for  ‘FATAL’  errors  in  the  code.   h"p://linkedin.com/in/praneshvi"al   42  
  • 43. Next  generation  tools  in  the  DevOps  world   ì  Chef   ì  Puppet   ì  Cfengine   ì  Salt   h"p://linkedin.com/in/praneshvi"al   43  
  • 44. Preparation  for  the  Release   ì  Any  issues  during  the  release,  stop  or  postpone  the  release.   Stability  takes  the  highest  priority.   ì  Prepare  Release  Plan  or  Runbook  with  correct  sets  and  if   possible  automate  them.   ì  IdenLfy  the  error-­‐prone  steps  and  automate  them.   ì  Perform  the  drill  for  performing  rolling  back  of  the  releases.   ì  Should  be  as  simple  as  selecLng  a  value  and  clicking  a  bu.on.   ì  Let  one  team  perform  all  the  releases.  (Too  many  cooks  spoil   the  broth).     h"p://linkedin.com/in/praneshvi"al   44  
  • 45. Maturity  of  a  “Deployment  Pipeline”  ?   h"p://linkedin.com/in/praneshvi"al   45   ì  Image  Credit:  h.p://www.praqma.com/    
  • 46. Q  &  A   h"p://linkedin.com/in/praneshvi"al   46  
  • 48. References:   ì  Details  about  each  of  the  phases  from  “ConLnuous  Delivery”  by  Jez  Humble,   David  Farley   ì  Source  of  some  of  the  generic  images  used  –  “Unknown”.   ì  RespecLve  credits  given  to  the  images  used  in  the  same  slide.   ì  h.ps://gigaom.com/2014/01/26/mulL-­‐tenant-­‐or-­‐mulL-­‐instance-­‐cloud-­‐lets-­‐ do-­‐both/     ì  h.p://diginomica.com/2013/12/20/mulL-­‐tenant-­‐mulL-­‐instance-­‐saas-­‐ spectrum/     ì  h.ps://msdn.microso<.com/en-­‐us/library/hh534478.aspx     ì  h.ps://www.youtube.com/watch?v=CE4hLYhfmBE  -­‐  Deployment  using   pogo.   h"p://linkedin.com/in/praneshvi"al   48