SlideShare une entreprise Scribd logo
1  sur  47
© 2015 VMware Inc. All rights reserved.
Continuous Deployment into the
Unknown with Artifactory, Bintray, Docker
and Mesos
Gilad Garon
Kiril Nesenko
Agenda
• What is the Common SaaS Platform (CSP)
• CI/CD processes for CSP
• Upgrading CSP
• Xenon - Distributed Control Plane (If we have the time)
2
Who are we ?
3
Kiril Nesenko
DevOps Lead
knesenko@vmware.com
Gilad Garon
Architect
ggaron@vmware.com , Twitter @giladgaron
VMware’s SaaS Transition
• VMware is developing many SaaS offerings
• Many services have the same common requirements (Billing, Identity, etc.)
• Like other good engineers, we like to reuse code wherever possible
• VMware’s Common SaaS Platform (CSP) is platform that internal SaaS
offerings are using to leverage existing internal components
4
Designing a SaaS platform
Design Principles
5
Cloud Agnostic
Highly Available
Scalable
Great Public APIs
Modular
In Practice
Infrastructure needs to support containers
Dynamic, Stateful and Distributed cluster
Tunable consistency helps to achieve availability & scalability
No internal APIs
Capabilities as libraries, Coupling is done with APIs
Ease of operability /
development
Single JAR, limited classpath dependencies set
Deployment Architecture. yep that’s it.
6
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Some Cloud Provider Inc.
Infrastructure and Patch Life
Cycle
CI/CD Overview
8
Customer 1 Customer N
Customer 2
automation R&D production
promotion
deploy&test
staging
CSP Mesos Infrastructure
9
CI/CD Tools
• Artifacts: Artifactory, Bintray
• CI: Jenkins
• Source Control: git
• Code review: gerrit
• Slaves: dockers
• Infrastructure: mesos, dockers
• Code Analysis: Sonar
• Build: gradle, Makefiles
• Languages: Java, JS, Python, Go
• Communication: Slack
10
CI Infrastructure
• ~300 jenkins jobs
• 20 git repositories
• On the fly jenkins slaves
• Jenkins and Slack integration
• Mesos cluster (Marathon,
marathon-lb, mesos-dns, Calico,
chronos)
11
Jenkins Jobs Management
Jenkins Job Builder
13
Jenkins job builder to the rescue!
Jenkins Job Builder
• Developed by OpenStack folks
• Configuration as code (yaml format)
• Easy to review changes
• Configuration de-duplication
• Include shell/groovy/python… scripts
• Test before deploying
• Easier to organize (per directory, per file)
• Serves as backup (easy to replicate to another jenkins)
14
15
16
Templates
• For nearly identical jobs better to
use templates
17
Templates
18
Jobs Update
19
20
Jenkins Jobs Types
• Gating – listens for patch-set-created events
• Build – for building purposes (gradle, docker etc)
• Listeners – listens for change-merged events on gerrit (orchestrators for the
pipelines)
21
Gating Jobs
• For each patch we run a gating job
• Each git project has its own gating job
• Build + test + post results to gerrit
22
Gating Jobs
23
Developer sends a patch Run build and tests(gating)
Post results to gerritMerge ?
Start build pipeline(listener)
Gerrit
• web-based code review tool built on top of the git
24
Jenkins Failure
25
Sonar Failure
26
Gerrit Failure
Gerrit hooks
• Executed on the server side
• Execute per event type
• Various checks: commit message style, trailing white
spaces, etc.
• Integrations with external systems: bugzilla, jira, etc.
27
CONFIDENTIAL 28
Dynamic Pipelines
Listener Jobs
• Executed on patch-merged event
• Orchestrating the build and delivery pipeline dynamically
• Orchestration done via the BuildFlow plugin (groovy)
• All listeners run the same code base
• On failure, user is notified on slack channel
30
31
32
Dynamic Flows
CONFIDENTIAL 32
Listener - 1
Listener - 2
Listener - n
war
Jar
doc
docker
Test2
Mesos
2
cont Mesos
1
Listeners Build Deploy
…
Test
Test1
RPublish
Upload
LPublish
Bintray
Repo
Parallel Deployments
33
Automation R&D Staging Production
34
35
CONFIDENTIAL 36
Upgrading a Stateful platform
Goals:
• Minimal service interruptions
• Support schema changes
Challenges:
• Symmetrical cluster: Can’t refactor / add API paths
• State & Business Logic in the same tier: can’t separate schema upgrade from
BL changes
37
Upgrading a Stateful platform
Design:
• Work in cycles, get meaningful metrics per cycle
• Each cycle migrates and transforms state
• Use a Threshold to determine progress and cutoff point
• Smartly queue external traffic
• Reroute traffic to new cluster
38
39
Node
Node
Node
Node
Node
Node
Blue NodeGroup
Green NodeGroup
{
“documents”:”15M”
,
{
“documents”:”15M”
,
{
“documents”:”6M”,
“duration”:”5S”
}
{
“documents”:”6M”,
“duration”:”5S”
}
{
“documents”:”90K”
,
{
“documents”:”90K”
,
External
Clients
{
“documents”:”10K”
,
Xenon – Distributed Control Plane
• A design pattern and runtime for scalable orchestration and management logic
• A runtime powering tiny REST services
• IO Pipeline integrates key building blocks within each service operation
• Production ready code with continuous integration tests, design documents
40
https://github.com/vmware/xenon
The Popular Way
Stand up N nodes for each of:
• Orchestration code & container (Spring Boot)
• Your HA persistency layer (Cassandra, Mongo)
• Your translation layer (ORM)
• Your arbitration/leader election (ZK, etcd, consul)
• Your UI server (node.js, tomcat, apache)
• Your cache layer (Redis, memcached)
• Your message bus, event broker
The Xenon Way
Stand up N nodes running Xenon services:
• Orchestration as stateless or stateful REST endpoints
• Persist, replicate state independently
• Manage concurrency with a single JVM and one thread per core across ALL
services
• Provide per operation owner selection (leader)
• Pub / Sub
• Stats
• UI
• Tracing
Links
• Jenkins Jobs Builder - http://docs.openstack.org/infra/jenkins-job-builder
• Xenon - https://github.com/vmware/xenon
43
Thank you!
44
Q&A
Decentralized Model
• Scalable to lots of nodes
– SWIM node discovery and maintenance
– Replication with Eventual OR Strong Consistency (choose!)
• Every node in a node group has the same core services
– Operational simplicity
Indexing/Queries
• Multi version, fully indexed, replicated document store
– Lucene!
• Query services with rich document query support modeled as tasks
– Real time or historical
• Collections are just queries
Programming Model
• Isolated, asynchronous components listening on URIs
• Each service instance represents a “living” document
– All side effects happen through REST actions on document
– Replication, consensus, notifications all leveraging symmetric model
• Stateless handlers are offered latest state and request body
• Developer declares requirements through Service options
– Replication with Strong (Eager) or Eventual consistency
– Scale out (Owner selection)
– Instrumentation
– Persistence (with deep indexing)
– And more …

Contenu connexe

Tendances

CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupRudy De Busscher
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013aspyker
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipelineMichel Schildmeijer
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaRudy De Busscher
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
DockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTRDockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTRDocker, Inc.
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golangGianfranco Reppucci
 
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas HoppeOSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas HoppeNETWAYS
 
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticAutomation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticHidora
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydrationMichel Schildmeijer
 
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...All Things Open
 
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...DynamicInfraDays
 
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...Lucas Jellema
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-finalMichel Schildmeijer
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Docker, Inc.
 
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Amrita Prasad
 
Swarm Update
Swarm UpdateSwarm Update
Swarm UpdatePerforce
 
A Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterA Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterJimmy Lu
 

Tendances (20)

CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
DockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTRDockerCon SF 2015: DHE/DTR
DockerCon SF 2015: DHE/DTR
 
A microservice architecture based on golang
A microservice architecture based on golangA microservice architecture based on golang
A microservice architecture based on golang
 
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas HoppeOSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas Hoppe
 
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticAutomation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...Introduction to GitHub Actions - How to easily automate and integrate with Gi...
Introduction to GitHub Actions - How to easily automate and integrate with Gi...
 
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...
 
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-final
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
 
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
 
Swarm Update
Swarm UpdateSwarm Update
Swarm Update
 
A Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterA Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes Cluster
 

Similaire à Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and Mesos

DevOps Unleashed: Strategies that Speed Deployments
DevOps Unleashed: Strategies that Speed DeploymentsDevOps Unleashed: Strategies that Speed Deployments
DevOps Unleashed: Strategies that Speed DeploymentsForgeRock
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkinsecubemarketing
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...DevOps4Networks
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewboxLino Telera
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...NETWAYS
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterpriseBert Poller
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...NETWAYS
 
Continuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeContinuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeHARMAN Services
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your wayJohannes Brännström
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Markus Eisele
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5mbaric
 

Similaire à Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and Mesos (20)

DevOps Unleashed: Strategies that Speed Deployments
DevOps Unleashed: Strategies that Speed DeploymentsDevOps Unleashed: Strategies that Speed Deployments
DevOps Unleashed: Strategies that Speed Deployments
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkins
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
321 codeincontainer brewbox
321 codeincontainer brewbox321 codeincontainer brewbox
321 codeincontainer brewbox
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
 
Cmake kitware
Cmake kitwareCmake kitware
Cmake kitware
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
 
Continuous Integration - Mobile Practice
Continuous Integration - Mobile PracticeContinuous Integration - Mobile Practice
Continuous Integration - Mobile Practice
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 

Dernier

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
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
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
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.
 
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
 
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
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
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
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 

Dernier (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
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
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
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 ...
 
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
 
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
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
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
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and Mesos

  • 1. © 2015 VMware Inc. All rights reserved. Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and Mesos Gilad Garon Kiril Nesenko
  • 2. Agenda • What is the Common SaaS Platform (CSP) • CI/CD processes for CSP • Upgrading CSP • Xenon - Distributed Control Plane (If we have the time) 2
  • 3. Who are we ? 3 Kiril Nesenko DevOps Lead knesenko@vmware.com Gilad Garon Architect ggaron@vmware.com , Twitter @giladgaron
  • 4. VMware’s SaaS Transition • VMware is developing many SaaS offerings • Many services have the same common requirements (Billing, Identity, etc.) • Like other good engineers, we like to reuse code wherever possible • VMware’s Common SaaS Platform (CSP) is platform that internal SaaS offerings are using to leverage existing internal components 4
  • 5. Designing a SaaS platform Design Principles 5 Cloud Agnostic Highly Available Scalable Great Public APIs Modular In Practice Infrastructure needs to support containers Dynamic, Stateful and Distributed cluster Tunable consistency helps to achieve availability & scalability No internal APIs Capabilities as libraries, Coupling is done with APIs Ease of operability / development Single JAR, limited classpath dependencies set
  • 6. Deployment Architecture. yep that’s it. 6 Xenon Host Jar Container Xenon Host Jar Container Xenon Host Jar Container Xenon Host Jar Container Some Cloud Provider Inc.
  • 8. CI/CD Overview 8 Customer 1 Customer N Customer 2 automation R&D production promotion deploy&test staging
  • 10. CI/CD Tools • Artifacts: Artifactory, Bintray • CI: Jenkins • Source Control: git • Code review: gerrit • Slaves: dockers • Infrastructure: mesos, dockers • Code Analysis: Sonar • Build: gradle, Makefiles • Languages: Java, JS, Python, Go • Communication: Slack 10
  • 11. CI Infrastructure • ~300 jenkins jobs • 20 git repositories • On the fly jenkins slaves • Jenkins and Slack integration • Mesos cluster (Marathon, marathon-lb, mesos-dns, Calico, chronos) 11
  • 13. Jenkins Job Builder 13 Jenkins job builder to the rescue!
  • 14. Jenkins Job Builder • Developed by OpenStack folks • Configuration as code (yaml format) • Easy to review changes • Configuration de-duplication • Include shell/groovy/python… scripts • Test before deploying • Easier to organize (per directory, per file) • Serves as backup (easy to replicate to another jenkins) 14
  • 15. 15
  • 16. 16
  • 17. Templates • For nearly identical jobs better to use templates 17
  • 20. 20
  • 21. Jenkins Jobs Types • Gating – listens for patch-set-created events • Build – for building purposes (gradle, docker etc) • Listeners – listens for change-merged events on gerrit (orchestrators for the pipelines) 21
  • 22. Gating Jobs • For each patch we run a gating job • Each git project has its own gating job • Build + test + post results to gerrit 22
  • 23. Gating Jobs 23 Developer sends a patch Run build and tests(gating) Post results to gerritMerge ? Start build pipeline(listener)
  • 24. Gerrit • web-based code review tool built on top of the git 24
  • 27. Gerrit Failure Gerrit hooks • Executed on the server side • Execute per event type • Various checks: commit message style, trailing white spaces, etc. • Integrations with external systems: bugzilla, jira, etc. 27
  • 30. Listener Jobs • Executed on patch-merged event • Orchestrating the build and delivery pipeline dynamically • Orchestration done via the BuildFlow plugin (groovy) • All listeners run the same code base • On failure, user is notified on slack channel 30
  • 31. 31
  • 32. 32 Dynamic Flows CONFIDENTIAL 32 Listener - 1 Listener - 2 Listener - n war Jar doc docker Test2 Mesos 2 cont Mesos 1 Listeners Build Deploy … Test Test1 RPublish Upload LPublish Bintray Repo
  • 34. 34
  • 35. 35
  • 37. Upgrading a Stateful platform Goals: • Minimal service interruptions • Support schema changes Challenges: • Symmetrical cluster: Can’t refactor / add API paths • State & Business Logic in the same tier: can’t separate schema upgrade from BL changes 37
  • 38. Upgrading a Stateful platform Design: • Work in cycles, get meaningful metrics per cycle • Each cycle migrates and transforms state • Use a Threshold to determine progress and cutoff point • Smartly queue external traffic • Reroute traffic to new cluster 38
  • 40. Xenon – Distributed Control Plane • A design pattern and runtime for scalable orchestration and management logic • A runtime powering tiny REST services • IO Pipeline integrates key building blocks within each service operation • Production ready code with continuous integration tests, design documents 40 https://github.com/vmware/xenon
  • 41. The Popular Way Stand up N nodes for each of: • Orchestration code & container (Spring Boot) • Your HA persistency layer (Cassandra, Mongo) • Your translation layer (ORM) • Your arbitration/leader election (ZK, etcd, consul) • Your UI server (node.js, tomcat, apache) • Your cache layer (Redis, memcached) • Your message bus, event broker
  • 42. The Xenon Way Stand up N nodes running Xenon services: • Orchestration as stateless or stateful REST endpoints • Persist, replicate state independently • Manage concurrency with a single JVM and one thread per core across ALL services • Provide per operation owner selection (leader) • Pub / Sub • Stats • UI • Tracing
  • 43. Links • Jenkins Jobs Builder - http://docs.openstack.org/infra/jenkins-job-builder • Xenon - https://github.com/vmware/xenon 43
  • 45. Decentralized Model • Scalable to lots of nodes – SWIM node discovery and maintenance – Replication with Eventual OR Strong Consistency (choose!) • Every node in a node group has the same core services – Operational simplicity
  • 46. Indexing/Queries • Multi version, fully indexed, replicated document store – Lucene! • Query services with rich document query support modeled as tasks – Real time or historical • Collections are just queries
  • 47. Programming Model • Isolated, asynchronous components listening on URIs • Each service instance represents a “living” document – All side effects happen through REST actions on document – Replication, consensus, notifications all leveraging symmetric model • Stateless handlers are offered latest state and request body • Developer declares requirements through Service options – Replication with Strong (Eager) or Eventual consistency – Scale out (Owner selection) – Instrumentation – Persistence (with deep indexing) – And more …

Notes de l'éditeur

  1. Hi, My name is Gilad and along here with is Kiril and we are a part of Vmware’s CPSBU or Cloud provider software business unit which a fancy way of saying the we build software for cloud providers.
  2. Vmware is transitioning from a product based company to a services based company. More and more teams are developing services, and need to interact with internal backoffice system such as identity and billing. As development moved forward, we’ve noticed two things: No one like to write integrations with billing or identity  developers prefer to write services! Not integrations Every service implements its integrations in its own way, and if different services wants to share this integration, most of the time it’s too domain specific Like all good engineers we want to share code and not waste time on reinventing the wheel. So, our main goal with CSP is to create a platform that will enable acceleration of internal services development and standardize the way a service interacts with the various intergations
  3. How do you design such a platform? When designing CSP we’ve decided on a set of design principles: 1. Run on any infrastructure 2. High availability – self explanatory 3. Scalable – support N nodes 4. Public APIs dogfooding – we believe that a good API experience is only achievable when you consume your own APIs 5. Modular – add capabilities to the platform easily and be able to not use certain capabilities 6. Ease of operability / development – try to limit the tech zoo, and be able to run the platform with a single “click” How does it looks in practice? Our lowest common denominator is container support. If a provider can support containers, we can run on it. Our platform is distributed and Stateful. we use tunable consistency in which most of our data is eventually consistent In order to be scalable, we use gossip or to me more precise, SWIM protocol to be highly available No internal APIs, if you don’t have them, you need to consume the public ones Our capabilities or modules are just jars in the class path. Coupling between modules is done at the public API level Our executable is a JAR, not a web / application server which is easy on development and operations. We limited our tech zoo to technologies that are aligned with our design principles. Most of these principles are provided by Vmware’s own Xenon framework, a distributed control plane. More on xenon in a few seconds. When we sticked to our guns with the design princples (and it wasn’t easy) we had a big win:
  4. When deployed in production, CSP looks like this. (also in Dev) the number of nodes can scale. A lot. How did we achieve this? Vmware’s xenon framework
  5. So how do we upgrade our customer envs? Upgrading services to a new version is not a new concept, All of us are familiar with the popular strategies Rolling upgrade inside an existing cluster Blue/Green Even hybrid solutions exists We had two main goals when designing the upgrade mechanism, other than the oblivious one of actually upgrading the code base: We must support schema transformation (renaming of fields) since adding or subtracting fields is free in Xenon. The other goal is that the customer should not feel service interruptions CSP has some challenges that needed to be addressed when we designed our upgrade mechanism: CSP is stateful and the state and the business logic reside together in the same tier. This causes a challenge when considering a rolling upgrade. You can’t seprate the schema changes and the business logic changes since they both reside in the same jar. And you you can’t modify API paths and or logic since our cluster is symmetrical. So what did we do?
  6. Since rolling upgrades are not easily achievable for now, we went with a green / blue strategy. Our goal here is to migrate most of the data while the platform is live. Once the migration is almost done, we queue the incoming traffic, copy the remaining data, and then reroute the traffic to the new cluster. In order to achieve that, we run in cycles. When a cycle is finished, we examine its telemetry and pass it to a threshold mechanism. The threshold’s mechanism purpose it to determine whether it is safe to queue the external traffic and migrate the remaining data. If the last cycle took too long, we start a new cycle picking up from where the last cycle finished in terms of state. (the platform is still live so data is modified in runtime and we need to address these changes) So, we migrate, check and repeat until we’ve crossed a certain threshold. Once the threshold is crossed we queue the traffic, perform a final Cycle and reroute the traffic. Let’s see an example.
  7. What is Xenon? Xenon is a framework for writing small REST-based services. (Some people call them microservices.) The runtime is implemented in Java and acts as the host for the lightweight, asynchronous services. The programming model is language agnostic (does not rely on Java specific constructs) so implementations in other languages are encouraged. The services can run on a set of distributed nodes. Xenon provides replication, synchronization, ordering, and consistency for the state of the services. Because of the distributed nature of Xenon, the services scale well and highly available. Xenon is a "batteries included" framework. Unlike some frameworks that provides just consistent data replication or just a microservice framework, Xenon provides both. Xenon services have REST-based APIs and are backed by a consistent, replicated document store.
  8. When you build a modern service today you’ll probably need the following checklist: Orchestration code and container – you’ll probably go with Spring Boot HA Distributed DB – Cassandra / Mongo And an ORM layer to go with it A way to keep your cluster in sync – Zookeeper / ETCD UI serving – Node.js / Apache You’ll want to go Stateful at one point for performance / throughput issues – Redis And some message bus / pipeline – Kafka? In my opinion, this checklist looks good . All of the techs listed here work. Industry standard. But, you have to admit, it is a bit complex to manage and deploy. You have to deploy and bootstrap in a certain order, wait for things to get settled in…. You get it. But, there’s another way:
  9. Each Xenon runtime provides the following abilities: An Orchestration and a restful layer Persistency and replication layer Total asyc processing with a single thread per core Tunable consistency per service with leader election Publish / Subscribe mechansims And UI sevices, telemetry data, tracing and more….