SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Common blind spots on the
Journey to Production
Vijay Raghavan Aravamudhan
Code/People Agitator @
ThoughtWorks Technologies (Chennai)
Email: vraravam@thoughtworks.com
Github: vraravam
Twitter: @avijayr1
Is it ….
CI/CD?
Delivery timelines?
Quality?
Maintainability?
Roadmap?
Customer / End User
Team – both dev team + ops
Architecture + Tech Stack
Delivery process
v2+
In the context of:
● A new product?
● For existing users?
● Personalization + Analytics
● A/B Testing [for product ideas]
● Non-clustered architecture
● Multiple responsibilities packaged into one “app”
● Sticky sessions
● Blocking requests even for long-running steps
● Hard-coded IP addresses for endpoint URLs
● Hard-coded “linked server” IP addresses in
database (SQL Server)
Do you have the right…
• Skillsets?
• Composition?
• Motivation?
• Goal?
SCM: {VSS, TFS}, {SVN, CVS}, DVCS
CI: Jenkins/Hudson, TeamCity, GoCD, CircleCI,
TravisCI
CD: GoCD
Testing: QTP, SpecFlow, Cucumber, Selenium
Perf: LoadRunner, SilkTest, Locust.io, Gatling,
Apache Bench, Wrk
Deployment: Gradle, Maven, Ant, Psake, Rake
• Central vs Distributed
• Branch per feature
• Trunk/Master
• Short-lived POC-style branches
• Checkout
• Clean
• Compile
• Run unit tests
• Run js tests
• Code coverage
metrics
• Run integration
tests
• Package
• Deploy to
Functional Test
env
• Run Functional
Tests
● Build time goes up as the codebase grows
● Time for feedback is longer
● More complex CI setup
● Checkout, Clean, Compile, Run unit tests
(parallellize), Run js tests, Headless tests, Collect
Code coverage metrics, Package
● Deploy to Functional Test env, Run FT
o Split randomly or by functional vertical into a
build/test grid (ala Selenium Grid)
Core product is chugging along
Customer1 gets a forked version - 3 month release
cycle
Customer2 gets another fork - 4/5 month release
cycle
Each gets the cumulative feature-set only once both
a complete
Both teams diverge in tools and process
Domain knowledge gets siloed
Technology-based career growth might become
stunted
Feature-merge/Integration hell
● Combine both teams at least for design stage so
that each understands what other’s client wants
o Rotate frequently among teams to cross-
pollinate knowledge (tools + techniques)
o “Software artisans”
● Use Dependency Injection (based on tech stack)
+ Feature Toggles
● Feature-branch based development
o Use feature branches @ SCM-level for
architectural changes while delivering BAU
Active development across branches
⇒
More CI pipelines
Think beyond “application deployment”
Think “environment deployment” or
“ecosystem deployment”
Use tools like Ansible, Vagrant, Puppet, Chef,
Docker*
• Db changes should be developed alongside the
story
• It should also be part of the commits into the
SCM
• Scripts should always be incremental in nature
• As part of the CI build, ensure both roll-forward
and roll-back works
Use tools like flywaydb, dbDeploy
● Most teams assume that the app-layer will be
enough to ensure data integrity
● What happens if the app is replaced by a new
app - the db will live on, correct?
● Data validations should also be applied at the db
level - for eg foreign keys, unique constraints,
non-null checks, case-sensitive checks
● ACID Transactionality should be ensured whether
or not an ORM is used
• Use tools like active_sanity (rails gem)
• Obfuscated database snapshot from production
uploaded into non-prod env for testing on weekly
basis
• [Unfortunately] Yet another checkpoint before
pushing to production
• App should be clustered, and cluster-aware
• Deployments should not have any manual
intervention (including DB)
• DB changes should be backwards compatible
 (n+1)th release can cleanup temporary stuff
from nth release
• API-changes should be backwards compatible
 Dont have a “long tail” of multi-version support
● SOX/PCI Compliance
● Data at rest
● Data in transit
● Threat Vectors
● Attack surface
OWASP Guidelines
Common blind spots on the journey to production  vijay raghavan aravamudhan

Weitere ähnliche Inhalte

Was ist angesagt?

QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
Rodrigo Russo
 

Was ist angesagt? (20)

Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Operations Validation for Infrastructure As Code - PSConfEU 2016
Operations Validation for Infrastructure As Code - PSConfEU 2016Operations Validation for Infrastructure As Code - PSConfEU 2016
Operations Validation for Infrastructure As Code - PSConfEU 2016
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Developing Infrastructure Code for CI & CD
Developing Infrastructure Code for CI & CDDeveloping Infrastructure Code for CI & CD
Developing Infrastructure Code for CI & CD
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Why Serverless?
Why Serverless?Why Serverless?
Why Serverless?
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
 
Trunk based development
Trunk based developmentTrunk based development
Trunk based development
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
 
Tfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and TricksTfs 2015 Upgrade Tips and Tricks
Tfs 2015 Upgrade Tips and Tricks
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestComplete
 
CICD Mule
CICD Mule CICD Mule
CICD Mule
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of Work
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
 
Api360 Summit The Automated Monolith
Api360 Summit  The Automated MonolithApi360 Summit  The Automated Monolith
Api360 Summit The Automated Monolith
 
Implementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using KubelessImplementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using Kubeless
 

Andere mochten auch

CVEnglish_2016
CVEnglish_2016CVEnglish_2016
CVEnglish_2016
Jurgen Put
 

Andere mochten auch (19)

XP in the full stack
XP in the full stackXP in the full stack
XP in the full stack
 
AQUAPRO SHOWER FILTER UAE
AQUAPRO SHOWER FILTER UAEAQUAPRO SHOWER FILTER UAE
AQUAPRO SHOWER FILTER UAE
 
CVEnglish_2016
CVEnglish_2016CVEnglish_2016
CVEnglish_2016
 
Mule Cloudhub Connector
Mule Cloudhub ConnectorMule Cloudhub Connector
Mule Cloudhub Connector
 
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...
 
Ramón Bañol Garcia
Ramón Bañol Garcia	Ramón Bañol Garcia
Ramón Bañol Garcia
 
Mulesoft Solutions for IoT
Mulesoft Solutions for IoTMulesoft Solutions for IoT
Mulesoft Solutions for IoT
 
Actionbound
ActionboundActionbound
Actionbound
 
εορτασμος ημερας νερού
εορτασμος ημερας  νερούεορτασμος ημερας  νερού
εορτασμος ημερας νερού
 
Pair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick WestPair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick West
 
Extreme sports
Extreme sportsExtreme sports
Extreme sports
 
Los test de cf
Los test de cfLos test de cf
Los test de cf
 
Tutorial Pixton
Tutorial PixtonTutorial Pixton
Tutorial Pixton
 
BNI Training: Hoe 10 minuten voor te bereiden 20-10-2016
BNI Training: Hoe 10 minuten voor te bereiden 20-10-2016BNI Training: Hoe 10 minuten voor te bereiden 20-10-2016
BNI Training: Hoe 10 minuten voor te bereiden 20-10-2016
 
Web.2.0 araçları
Web.2.0 araçlarıWeb.2.0 araçları
Web.2.0 araçları
 
Creating treasure hunt with Actionbound
Creating treasure hunt with ActionboundCreating treasure hunt with Actionbound
Creating treasure hunt with Actionbound
 
"Питательная поддержка в комплексном лечении курабельных осложнений противооп...
"Питательная поддержка в комплексном лечении курабельных осложнений противооп..."Питательная поддержка в комплексном лечении курабельных осложнений противооп...
"Питательная поддержка в комплексном лечении курабельных осложнений противооп...
 
Vorgia
VorgiaVorgia
Vorgia
 
25o final program scientific
25o final program scientific25o final program scientific
25o final program scientific
 

Ähnlich wie Common blind spots on the journey to production vijay raghavan aravamudhan

Ähnlich wie Common blind spots on the journey to production vijay raghavan aravamudhan (20)

DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys  How to Build a Successful Microsoft DevOps Including the DataDevOps and Decoys  How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019
 
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
 
DevOps for AI Apps
DevOps for AI AppsDevOps for AI Apps
DevOps for AI Apps
 
DevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWSDevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWS
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native ...
microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native ...microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native ...
microXchg 2019: "Creating an Effective Developer Experience for Cloud-Native ...
 
Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Containerization Strategy
Containerization StrategyContainerization Strategy
Containerization Strategy
 
DevOps e a transformação digital de aplicações
DevOps e a transformação digital de aplicaçõesDevOps e a transformação digital de aplicações
DevOps e a transformação digital de aplicações
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
Md Zahir Uddin
Md Zahir UddinMd Zahir Uddin
Md Zahir Uddin
 
DevOps - Top Trends In 2019
DevOps - Top Trends In 2019DevOps - Top Trends In 2019
DevOps - Top Trends In 2019
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
A guide to modern software development 2018
A guide to modern software development 2018A guide to modern software development 2018
A guide to modern software development 2018
 

Mehr von XP Conference India

Mehr von XP Conference India (17)

Power of Measurement to Attain True Agility Meetu Arora
Power of Measurement to Attain True Agility Meetu Arora Power of Measurement to Attain True Agility Meetu Arora
Power of Measurement to Attain True Agility Meetu Arora
 
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
Refactoring for software design smells  XP Conference 2016  Ganesh Samarthyam...Refactoring for software design smells  XP Conference 2016  Ganesh Samarthyam...
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
 
Agile Testing Cost Reduction using Pairwise Technique
Agile Testing Cost Reduction using Pairwise Technique Agile Testing Cost Reduction using Pairwise Technique
Agile Testing Cost Reduction using Pairwise Technique
 
Building Big Architectures by Ramit Surana
Building Big Architectures by Ramit SuranaBuilding Big Architectures by Ramit Surana
Building Big Architectures by Ramit Surana
 
Journey with XP a case study in embedded domain by Pradeep Kumar NR
Journey with XP a case study in embedded domain  by Pradeep Kumar NRJourney with XP a case study in embedded domain  by Pradeep Kumar NR
Journey with XP a case study in embedded domain by Pradeep Kumar NR
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016
 
Feature Toggle XP Conference 2016 Kalpana Gulati
Feature Toggle  XP Conference 2016 Kalpana GulatiFeature Toggle  XP Conference 2016 Kalpana Gulati
Feature Toggle XP Conference 2016 Kalpana Gulati
 
Componentize! by Lancer Kind XP Conference 2016
Componentize! by Lancer Kind XP Conference 2016Componentize! by Lancer Kind XP Conference 2016
Componentize! by Lancer Kind XP Conference 2016
 
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...
 
S.O.L.I.D xp
S.O.L.I.D xpS.O.L.I.D xp
S.O.L.I.D xp
 
Xp conf-tbd
Xp conf-tbdXp conf-tbd
Xp conf-tbd
 
Developer 2.0
Developer 2.0  Developer 2.0
Developer 2.0
 
Play2 Java
Play2 JavaPlay2 Java
Play2 Java
 
Utility of Test Coverage Metrics in TDD
Utility of Test Coverage Metrics in TDDUtility of Test Coverage Metrics in TDD
Utility of Test Coverage Metrics in TDD
 
Who will test_your_tests_yahya poonawala- priti biyani
Who will test_your_tests_yahya poonawala- priti biyaniWho will test_your_tests_yahya poonawala- priti biyani
Who will test_your_tests_yahya poonawala- priti biyani
 
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform  Suryakiran Kasturi & Akhil KumarAdopting agile in an embedded platform  Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
 
Nightmare to nightly builds Vijay Bandaru
Nightmare to nightly builds   Vijay BandaruNightmare to nightly builds   Vijay Bandaru
Nightmare to nightly builds Vijay Bandaru
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Common blind spots on the journey to production vijay raghavan aravamudhan

  • 1. Common blind spots on the Journey to Production Vijay Raghavan Aravamudhan Code/People Agitator @ ThoughtWorks Technologies (Chennai) Email: vraravam@thoughtworks.com Github: vraravam Twitter: @avijayr1
  • 2. Is it …. CI/CD? Delivery timelines? Quality? Maintainability? Roadmap?
  • 3. Customer / End User Team – both dev team + ops Architecture + Tech Stack Delivery process v2+
  • 4.
  • 5. In the context of: ● A new product? ● For existing users? ● Personalization + Analytics ● A/B Testing [for product ideas]
  • 6.
  • 7. ● Non-clustered architecture ● Multiple responsibilities packaged into one “app” ● Sticky sessions ● Blocking requests even for long-running steps ● Hard-coded IP addresses for endpoint URLs ● Hard-coded “linked server” IP addresses in database (SQL Server)
  • 8.
  • 9. Do you have the right… • Skillsets? • Composition? • Motivation? • Goal?
  • 10. SCM: {VSS, TFS}, {SVN, CVS}, DVCS CI: Jenkins/Hudson, TeamCity, GoCD, CircleCI, TravisCI CD: GoCD Testing: QTP, SpecFlow, Cucumber, Selenium Perf: LoadRunner, SilkTest, Locust.io, Gatling, Apache Bench, Wrk Deployment: Gradle, Maven, Ant, Psake, Rake
  • 11. • Central vs Distributed • Branch per feature • Trunk/Master • Short-lived POC-style branches
  • 12. • Checkout • Clean • Compile • Run unit tests • Run js tests • Code coverage metrics • Run integration tests • Package • Deploy to Functional Test env • Run Functional Tests
  • 13. ● Build time goes up as the codebase grows ● Time for feedback is longer ● More complex CI setup
  • 14. ● Checkout, Clean, Compile, Run unit tests (parallellize), Run js tests, Headless tests, Collect Code coverage metrics, Package ● Deploy to Functional Test env, Run FT o Split randomly or by functional vertical into a build/test grid (ala Selenium Grid)
  • 15. Core product is chugging along Customer1 gets a forked version - 3 month release cycle Customer2 gets another fork - 4/5 month release cycle Each gets the cumulative feature-set only once both a complete
  • 16. Both teams diverge in tools and process Domain knowledge gets siloed Technology-based career growth might become stunted Feature-merge/Integration hell
  • 17.
  • 18. ● Combine both teams at least for design stage so that each understands what other’s client wants o Rotate frequently among teams to cross- pollinate knowledge (tools + techniques) o “Software artisans” ● Use Dependency Injection (based on tech stack) + Feature Toggles ● Feature-branch based development o Use feature branches @ SCM-level for architectural changes while delivering BAU
  • 19. Active development across branches ⇒ More CI pipelines
  • 20. Think beyond “application deployment” Think “environment deployment” or “ecosystem deployment” Use tools like Ansible, Vagrant, Puppet, Chef, Docker*
  • 21. • Db changes should be developed alongside the story • It should also be part of the commits into the SCM • Scripts should always be incremental in nature • As part of the CI build, ensure both roll-forward and roll-back works Use tools like flywaydb, dbDeploy
  • 22. ● Most teams assume that the app-layer will be enough to ensure data integrity ● What happens if the app is replaced by a new app - the db will live on, correct? ● Data validations should also be applied at the db level - for eg foreign keys, unique constraints, non-null checks, case-sensitive checks ● ACID Transactionality should be ensured whether or not an ORM is used
  • 23. • Use tools like active_sanity (rails gem) • Obfuscated database snapshot from production uploaded into non-prod env for testing on weekly basis • [Unfortunately] Yet another checkpoint before pushing to production
  • 24. • App should be clustered, and cluster-aware • Deployments should not have any manual intervention (including DB) • DB changes should be backwards compatible  (n+1)th release can cleanup temporary stuff from nth release • API-changes should be backwards compatible  Dont have a “long tail” of multi-version support
  • 25. ● SOX/PCI Compliance ● Data at rest ● Data in transit ● Threat Vectors ● Attack surface OWASP Guidelines