SlideShare une entreprise Scribd logo
1  sur  25
www.codefresh.ioCopyright © 2017 All Rights Reserved
Why you need to stop
using THE staging env
Chloe Condon- Developer Evangelist at Codefresh
About Chloe
‣ Developer, Mentor/Advocate
‣ Developer Evangelist at Codefresh
‣ Blogger of all things container, Docker,
and diversity related
@ChloeCondon @ChloeCondon
Codefresh is a Docker-Native CI/CD platform for Dev
teams. It allows teams to automate the process of
building, testing, and deploying containerized
applications.
ABOUT CODEFRESH
• Common CI/CD implementations
• Challenges
• Containers and their impact on traditional CI/CD
AGENDA
1
2
3
develop/staging
✓unit tests
✓unit tests
✓code review
pull-request
✓unit tests
✓integration test
✓performance test
✓manual testing
✓security testing
✓build & push to registry
✓push to registry
✓deploy to production
master
COMMON CI/CD PROCESS IMPLEMENTATION
COMMON CI/CD PROCESS IMPLEMENTATION
✓ Code Base
✓ Test Results
✓ Proposed Changes in DB
✓ Known Issues
WHAT ARE THE DELIVERABLES?
CHALLENGES
BOTTLENECKS AND FIXED COSTS
NO ROOM FOR FEEDBACK UNTIL IT IS TOO LATE…
CHALLENGES
Friction between different environments
Development!= Staging!= Production*
SUMMARY
Containers
CONTAINER BASED CI
✓ Every step runs
inside a container
IMAGES ARE A MORE
RELIABLE DELIVERABLE
STAGING*
STAGING*
STAGING*
* Staging like environment
STAGING*
STAGING*
STAGING* STAGING*
DESIGNED FOR MICROSERVICE ARCHITECTURES
DESIGNED FOR MICROSERVICE ARCHITECTURES
STAGING*
STAGING*
STAGING*
STAGING*
STAGING*
STAGING* STAGING*
* Staging like environment
DESIGNED FOR MICROSERVICE ARCHITECTURES
STAGING*
STAGING*
STAGING*
STAGING*
STAGING*
STAGING*
STAGING*
* Staging like environment
ccan be tested earlier
ccan be tested earlier
ccan be tested earlier
ccan be tested earlier*
DOCKER NATIVE PIPELINE
DOCKER NATIVE PIPELINE
develop
feature-branch
✓unit tests
✓integration test
✓performance test
✓UX
✓unit tests
✓integration test
✓performance test
✓ui & manual test
✓UX
pull-request
✓unit tests
✓integration test
✓SLA based performance test
✓ui & manual test
master
DOCKER NATIVE PIPELINE
DOCKER NATIVE
✓ Test every build
✓ Unit, Integration, Security, etc
✓ Staging before pull request
24x
FASTER SOFTWARE
DEVELOPMENT
DEMO
Free accounts!
No credit card needed.
QUESTION TIME
https://codefresh.io
@Codefresh
CONTAINERS MADE SIMPLE
Sign up at www.codefresh.io

Contenu connexe

Tendances

Tendances (20)

How to Work Efficiently in a Hybrid Git-Perforce Environment
How to Work Efficiently in a Hybrid Git-Perforce EnvironmentHow to Work Efficiently in a Hybrid Git-Perforce Environment
How to Work Efficiently in a Hybrid Git-Perforce Environment
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Git essentials
Git essentialsGit essentials
Git essentials
 
CI/CD 101
CI/CD 101CI/CD 101
CI/CD 101
 
vodQA Pune (2019) - Jenkins pipeline As code
vodQA Pune (2019) - Jenkins pipeline As codevodQA Pune (2019) - Jenkins pipeline As code
vodQA Pune (2019) - Jenkins pipeline As code
 
Automated Integration Testing in Java using Arquillian
Automated Integration Testing in Java using ArquillianAutomated Integration Testing in Java using Arquillian
Automated Integration Testing in Java using Arquillian
 
Continuous delivery made
Continuous delivery madeContinuous delivery made
Continuous delivery made
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
 
2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art
 
CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!
 
DevOps Transformation in Technical
DevOps Transformation in TechnicalDevOps Transformation in Technical
DevOps Transformation in Technical
 
Devoxx 17 - Real Time Code Coverage
Devoxx 17 - Real Time Code CoverageDevoxx 17 - Real Time Code Coverage
Devoxx 17 - Real Time Code Coverage
 
Continuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzContinuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVz
 
Porque Odeio Branches
Porque Odeio BranchesPorque Odeio Branches
Porque Odeio Branches
 
Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion
 
Continuous integration for App developers
Continuous integration for App developersContinuous integration for App developers
Continuous integration for App developers
 
Pipeline as Code
Pipeline as CodePipeline as Code
Pipeline as Code
 
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - SydneySimplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
 

Similaire à Why You Need to Stop Using "The" Staging Server

Software Factory - Overview
Software Factory - OverviewSoftware Factory - Overview
Software Factory - Overview
slides_teltools
 

Similaire à Why You Need to Stop Using "The" Staging Server (20)

Use Docker to Enhance Your Testing
Use Docker to Enhance Your TestingUse Docker to Enhance Your Testing
Use Docker to Enhance Your Testing
 
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
 
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build TimesUsing Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
 
Devops CI-CD pipeline with Containers
Devops CI-CD pipeline with ContainersDevops CI-CD pipeline with Containers
Devops CI-CD pipeline with Containers
 
Moving faster with CI/CD: Best DevOps practices and lessons learnt
Moving faster with CI/CD: Best DevOps practices and lessons learntMoving faster with CI/CD: Best DevOps practices and lessons learnt
Moving faster with CI/CD: Best DevOps practices and lessons learnt
 
Enterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up BudgetEnterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up Budget
 
BDD & Beyond: The Past, Present, & Future of Test Automation
BDD & Beyond: The Past, Present, & Future of Test AutomationBDD & Beyond: The Past, Present, & Future of Test Automation
BDD & Beyond: The Past, Present, & Future of Test Automation
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
Docker driven development pipeline webinar (1)
Docker driven development pipeline webinar (1)Docker driven development pipeline webinar (1)
Docker driven development pipeline webinar (1)
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProSkip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
 
12 Factor App
12 Factor App12 Factor App
12 Factor App
 
DevOps in an Embedded World
DevOps in an Embedded WorldDevOps in an Embedded World
DevOps in an Embedded World
 
Enterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & ZoweEnterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & Zowe
 
Using Docker EE in a CI/CD Workflow
Using Docker EE in a CI/CD WorkflowUsing Docker EE in a CI/CD Workflow
Using Docker EE in a CI/CD Workflow
 
gopaddle-meetup
gopaddle-meetupgopaddle-meetup
gopaddle-meetup
 
Software Factory - Overview
Software Factory - OverviewSoftware Factory - Overview
Software Factory - Overview
 
How to Add Perfecto to Your CI
How to Add Perfecto to Your CIHow to Add Perfecto to Your CI
How to Add Perfecto to Your CI
 
Impact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team PerformanceImpact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team Performance
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Docker-native Automated Delivery w/ Caylent
Docker-native Automated Delivery w/ CaylentDocker-native Automated Delivery w/ Caylent
Docker-native Automated Delivery w/ Caylent
 

Plus de Outlyer

Plus de Outlyer (20)

Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
Murat Karslioglu, VP Solutions @ OpenEBS - Containerized storage for containe...
 
How & When to Feature Flag
How & When to Feature FlagHow & When to Feature Flag
How & When to Feature Flag
 
How GitHub combined with CI empowers rapid product delivery at Credit Karma
How GitHub combined with CI empowers rapid product delivery at Credit Karma How GitHub combined with CI empowers rapid product delivery at Credit Karma
How GitHub combined with CI empowers rapid product delivery at Credit Karma
 
Packaging Services with Nix
Packaging Services with NixPackaging Services with Nix
Packaging Services with Nix
 
Minimum Viable Docker: our journey towards orchestration
Minimum Viable Docker: our journey towards orchestrationMinimum Viable Docker: our journey towards orchestration
Minimum Viable Docker: our journey towards orchestration
 
Ops is dead. long live ops.
Ops is dead. long live ops.Ops is dead. long live ops.
Ops is dead. long live ops.
 
The service mesh: resilient communication for microservice applications
The service mesh: resilient communication for microservice applicationsThe service mesh: resilient communication for microservice applications
The service mesh: resilient communication for microservice applications
 
Microservices: Why We Did It (and should you?)
Microservices: Why We Did It (and should you?) Microservices: Why We Did It (and should you?)
Microservices: Why We Did It (and should you?)
 
Renan Dias: Using Alexa to deploy applications to Kubernetes
Renan Dias: Using Alexa to deploy applications to KubernetesRenan Dias: Using Alexa to deploy applications to Kubernetes
Renan Dias: Using Alexa to deploy applications to Kubernetes
 
Alex Dias: how to build a docker monitoring solution
Alex Dias: how to build a docker monitoring solution Alex Dias: how to build a docker monitoring solution
Alex Dias: how to build a docker monitoring solution
 
How to build a container monitoring solution - David Gildeh, CEO and Co-Found...
How to build a container monitoring solution - David Gildeh, CEO and Co-Found...How to build a container monitoring solution - David Gildeh, CEO and Co-Found...
How to build a container monitoring solution - David Gildeh, CEO and Co-Found...
 
Heresy in the church of - Corey Quinn, Principal at The Quinn Advisory Group
Heresy in the church of - Corey Quinn, Principal at The Quinn Advisory Group Heresy in the church of - Corey Quinn, Principal at The Quinn Advisory Group
Heresy in the church of - Corey Quinn, Principal at The Quinn Advisory Group
 
Anatomy of a real-life incident -Alex Solomon, CTO and Co-Founder of PagerDuty
Anatomy of a real-life incident -Alex Solomon, CTO and Co-Founder of PagerDutyAnatomy of a real-life incident -Alex Solomon, CTO and Co-Founder of PagerDuty
Anatomy of a real-life incident -Alex Solomon, CTO and Co-Founder of PagerDuty
 
A Holistic View of Operational Capabilities—Roy Rapoport, Insight Engineering...
A Holistic View of Operational Capabilities—Roy Rapoport, Insight Engineering...A Holistic View of Operational Capabilities—Roy Rapoport, Insight Engineering...
A Holistic View of Operational Capabilities—Roy Rapoport, Insight Engineering...
 
The Network Knows—Avi Freedman, CEO & Co-Founder of Kentik
The Network Knows—Avi Freedman, CEO & Co-Founder of Kentik The Network Knows—Avi Freedman, CEO & Co-Founder of Kentik
The Network Knows—Avi Freedman, CEO & Co-Founder of Kentik
 
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
Building a production-ready, fully-scalable Docker Swarm using Terraform & Pa...
 
Zero Downtime Postgres Upgrades
Zero Downtime Postgres UpgradesZero Downtime Postgres Upgrades
Zero Downtime Postgres Upgrades
 
DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2
 
DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats
 
DOXLON November 2016 - Data Democratization Using Splunk
DOXLON November 2016 - Data Democratization Using SplunkDOXLON November 2016 - Data Democratization Using Splunk
DOXLON November 2016 - Data Democratization Using Splunk
 

Dernier

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
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
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Dernier (20)

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
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
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
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-...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
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...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

Why You Need to Stop Using "The" Staging Server

Notes de l'éditeur

  1. My name is Chloe and I’m a developer evangelist at Codefresh. Today I’ll be talking about the somewhat controversial topic of “Why You Need to Stop Using the staging server”. I know this is a bold statement, but I really mean it! The intention of what I want to show you in this talk is to give you a new perception of how to view the staging environment. For quite some time, we’ve been implementing CI/CD using a staging server, and the staging server has served as a very meaningful part of our pipelines. But what I’d like to show you today is that given today’s latest technologies, we can actually rethink our pipeline and we can rethink the way we implement continuous integration and continuous delivery. And, in fact, make it much faster and streamlined.
  2. Before we dive in, a little about me: my name is Chloe, I live in the Bay Area and help organize the Containers 101 group on meetup. I’m a developer as well as an advocate and mentor for women in tech. I’m the developer evangelist at Codefresh, and I’m a blogger of all things container, Docker, and diversity related.
  3. So, a little bit about Codefresh. We are a Docker-native CI/CD. We’re a platform that automates the process of building, testing, and deploying containers. It’s built with Docker users in mind, since we’ve seen the way containers have disrupted the way we build and deploy applications.
  4. Codefresh is free to use Repos Builds users
  5. Here’s a mini-agenda for what I’ll be talking about today. First, we’ll be talking about Common CI/CD implementations, the challenges we run into with those common implementations, and finally we’ll chat about containers and their impact on traditional CI/CD.
  6. How many of you have seen git flow before- or know git flow? Great, so I don’t need to go into too much detail here. The main thing that I want to highlight in these slides is that many of you have probably implemented CI slightly different, so I won’t have a conversation preaching what this “should” look like. But I want to show this main model of a git flow. A real quick rundown of gitflow: we have the branch master (what we have in production), we have the staging/develop branch (which is what we have in staging), and whenever a developer gets a task assigned to him he’s branching out of the develop branch, he’s working on a feature branch, and at some point in time he’ll make a pull request, his pull request (if approved) will be merged back into staging, which eventually will be merged back into master/production. Now, if we look at the set of activities at each point of time when we’re writing our codes and working on the feature branch, it’s likely that we also (if we’re covering our bases) we’re writing unit tests. As good practice, we write our unit tests, see our unit test has passed, that we have good coverage. So, eventually, when we make a pull request, we see that the code and code changes have been covered, but we also have the peer review of testing/reviewing our code. The point being that when it hits staging (in the traditional way of continuos integration), it’s hitting a much broader set of tests. That’s where we start running not only unit tests, but integration tests, UI tests, using selenium, performance tests, and in some cases some manual tests to our code.
  7. Now if we look at this on a slightly different timeline. You’ll see we’re working on our feature branch and making a pull request, but at staging… that’s where most of the heavy lifting tests are actually taking place. And on this timeline, you’ll also see on the bottom part, that is the most costly for us to go and fix these issues. So, if we find some issues while we’re working on our feature branch, it’s much easier to incorporate these changes, to make the fixes. The later we find the issues, the more expensive and costly it is.
  8. Another aspect of the traditional way we develop and implement with continuous integration is the “hand shake” that we have between development and deployment. A typical handshake will be a label/stamp in the code base, the test report/test results, sometimes some proposed changes in the DB, and a list of the known issues (communicating this as part of the release notes).
  9. So, what are the challenges? We’ve touched on a few, but I’ll review a couple we see.
  10. Firstly, we’re all familiar with someone broke staging. Usually it holds us all back until it can be fixed. This is frustrating to the whole team, but even more so to the developers who made that change and broke the staging environment for everyone else. That’s likely to happen when we implement a process in which our code changes are being tested for UI and integration at the staging environment for the first time.
  11. In this case, as a developer, the first time people are seeing my feature (up against the main branch) is at staging. This scenario is incredibly frustrating since if I’m given any feedback, I’m unable to implement that feedback since the typical attitude is “well, let’s deploy it now and fix it later”. And I don’t know when those changes will be added/ if I’ll have to re-prioritize them. I’d much rather be able to implement that feedback now vs. later.
  12. And last but not least, are the frictions we have (which is a great segway to containers), there are always frictions that we find between development environments, to staging environments, to production environments- and issues usually stem from these differences and not the code base itself. That’s where we have some flows in the process that are very time consuming to find why these issues are happening. And eventually we find out that these issues aren’t about the code, but about some environmental variables that we have on each environment.
  13. So, to summarize, before I talk a little more about containers, the main issue here is that code changes and pull requests are being tested much more extensively (for the first time) in staging, and not earlier in the life cycle. Secondly, there is no room for feedback in most cases. When product owners and customers communicate, there’s a common joke of “what the customer had in mind” and what the developer did, and how the sales person described it. But, if the first time everyone can see the feature is in staging: that’s always too late. The typical response is “it’s already in staging, let’s push what we have”. The next iteration (which, you never know when that will be) that’s where we’ll make that correction/fix. And finally, there’s the friction between the environments.
  14. So, here’s the fun part. How many of you are already working with containers/docker? How many in production? Containers, as I mentioned earlier, have fundamentally changed a lot of the things we can do as developers. It has reshaped the way that we build software, it makes the operation part much easier for us, and it helps us rethink the way we did things before. I’ll start with the very basic impact of containers on CI/CD and our pipelines, and then I’ll get a little more complex. The very first and basic thing is that we can run every step of our CI inside a container. And, as you know, as we work with containers, each time we run a new container it’s a new fresh instance of that image. So, we are almost completely eliminating the chances of new builds being impacted by leftovers of previous builds. So, you’re isolating the builds, and giving a fresh container each time we re-run the build and compile the code.
  15. The second aspect, is that the unit itself (that we move from one stage to the other) that we hand off to operations or deploy into production is a much more reliable and self-contained unit. So, when we know our Docker image has passed our unit tests/integration tests/UI tests/security tests/so on, the likelyhood of that Docker image to all of a sudden work completely different in production or staging is much less frequent than the chances of just moving our code from one stage to another. And that’s why Docker images are a much more complete way to describe our application and describe our code. It’s not only our code, but everything else we need to run it.
  16. So, zooming out a bit from the Docker image itself: one of the strong drivers of images and containers is the adoption of microservices. Containers have been built from day one to support microservices. It has all the ways we can define the linkages between them, whether we’re using Docker compose, or Kubernetes, Mesos, etc.. All of these have slightly ways of defining how the application is working. But, in fact, containers allows us to define an application much easier with more than one container or microservice, which ultimately allows us to clone our staging environment much more easily. So, we can create a staging-like environment much more simply.
  17. Now, the reason I’m saying “staging-like environment” and not staging environment, is because we still have a rule that our staging environment as identical as possible to what we have in production. And that’s because there are certain things we still want to use the staging environment for. For example, let’s say I’m running a retail website and I want to make sure on Black Friday I can support 100 thousand concurrent users. So I’m going to build a staging server that is as scalable as our production environment, and I can test that on our staging environment. But for many other testing types (UI tests, integration, etc), we don’t necessarily need the scalability of what we have in production. We just need to have all of the pieces of the application, so we can work and test our features. So microservices allow us to clone much earlier in the lifecycle (with a staging-like environment).
  18. And with that staging-like environment, reiterating what I mentioned before all those frustrations about not being able to implement the feedback I’m given- if I’m able to implement that feedback much earlier, I can actually implement it then. So, that way, when it goes to staging, my feature works how I intended it to. There’s nothing holding me back from implementing them. By having this earlier in the process, I can share that environment with customers, product owners, and other stake holders, and I can also start running a much broader set of tests.
  19. So, you may be asking, “we can’t really have an environment exactly like the staging environment, how I can test performance much earlier?”. The typical way we do this (and do this with our customers at Codefresh), is that you’ll test for the SLA that you have for your application in your staging environment, since that’s an environment that is as identical to what you have in production and allows you to test your SLA. But you can also run your tests much earlier in the life cycle on a less scalable environment, and this will allow you to track the trends. So, if you test your performance earlier and you see over time that performance is slowing down and not going up, that can be a way to trigger a reason to go back and revisit what you did (and tackle it much earlier in the life cycle).
  20. If we go back and look at our staging environment and we see the sets of tests we did for the first time in staging, we see that all of these can be shifted to the left. There is no reason for us to stick to the way we’ve implemented CI and have the staging environment be the first time we’re testing our code for these things. The more we shift these to the left, the faster we identify these issues, the less bottlenecks we have in production, the more streamlined our pipeline is, and the faster we can push our code changes to production.
  21. Last but not least, when we look at our Docker image here, it’s a great revised way of looking at what our deliverables are. We’re handing off a Docker image that is much more self-contained. If an issue is found in a Docker image (vs. a branch), if I re-run the same image with all the other microservices it’s much easier to reproduce it and tackle it.
  22. This is the same gitflow from before. We have the feature branch, master and staging. But if we’re working on the feature branch there is nothing that’s holding us from provisioning a node and then do that in an automated fashion with Docker Compose up (or other great open source projects out there). If you’re unfamiliar with Docker compose, it’s one way of zooming out from a single microservice and lets you define more than one microservice and volumes and networks between them. It’s an abstract way of defining an application and allows you to get instances of your application earlier and on demand. Docker compose and Docker Swarm are great ways to scale your application. Kubernetes is also a great way to run containers and to have different ways of describing your application. A lot of these technologies allow you to describe your application is running, and much earlier in the lifecycle a running environment of my feature branch with everything else around it. I can send a link to my team, I can get feedback and I can incorporate it much earlier. And we can do that in an automatic way! So not only can a developer spin it up and share it with a team, we can embed it into our continuous integration script, and spin up an environment, run our integration tests, or unit tests (with other services), then shut down the environment. So we can parallelize integration tests, unit tests with other services, etc. We’ll still have our last check at staging, but the likelihood of finding issues is much much smaller since we’ve done all these checks before. So next, since I mentioned some Docker container technologies and orchestrations. You can go and implement it all yourself (maybe some of you have, or are currently working on it). This can be implemented using these technologies. You’ll need the scripts to provision the nodes of the Docker Daemon, or clusters on Kubernetes and monitor them. But I’m going to show you that when you build a product how this can be implemented. You can think of it as as a layer on top of this, and show you how we can set up a pipeline, run the steps in the pipeline and from the steps in that pipeline, spin-up the app, run the unit test, and shut it down. This will give us the ability to simultaneously run complex tests and run them on every build, and not just as part of the staging environment.
  23. Increase fonts
  24. Clear desktop, quit slack, prep slides. Time? demo?