SlideShare une entreprise Scribd logo
1  sur  46
Continuous Deployment at kaChing #leanstartup
“Connect investors with outstandinginvestment managers” Pascal-Louis Perez, kaChing Group Inc.
Pascal-Louis Perez, kaChing Group Inc. Assets Managed by Mutual Funds in the US $11,000,000,000,000
Pivot Our vision of bringing the quality of Ivy League Endowment management to retail is unaltered Powering a marketplace where customers entrust high end managers with their money in separately managed accounts. We are SEC & FINRA regulated. Three years ago, kaChing was a fantasy stock trading app for young adults on facebook. Our strategy was to create an eco system where avid amateurs could rise through the ranks and make it to pro league. Pascal-Louis Perez, kaChing Group Inc.
Constant tension between product and development. Right architecture only in the context of how it is used. Initially, you don’t know for sure how something will be used! We’ve adopted proportional investing Build cheap When you spend X hours of time fixing problems Spend a corresponding X hours improving the feature Pascal-Louis Perez, kaChing Group Inc. Build “Right” Features
Strive for 80% of the value for 20% of the cost Realize that 80% of what you build will go to waste. Validate before investing more time! Pascal-Louis Perez, kaChing Group Inc. 80/20
Errors Are Costly! Continuous Deployment is a mission critical way of running our business which provides tremendous value Errors are costly Brand impact SLA penalties And when you’re regulated, there’s also liabilities Turning the wheels on the software with high confidence provides tremendous business value Pascal-Louis Perez, kaChing Group Inc.
Deploy Fast and Often Pascal-Louis Perez, kaChing Group Inc.
What is Continuous Deployment? Continuous, successful and repeatable methodology to deploying code Automates every steps of taking checked in code and making it run on production servers, used by customers Pascal-Louis Perez, kaChing Group Inc.
e.g. Twenty Deployments a Day Pascal-Louis Perez, kaChing Group Inc.
Release is a Marketing ConcernReducing Code Inventory is Engineering’s Job Pascal-Louis Perez, kaChing Group Inc.
Homage to Gursky: 'Kirksky‘copyright 2010 by Kirk Crippens Supermarket Analogy (Think Safeway) You don’t close the store to fill the shelves! Continuously get fresh merchandise out For product releases, simply close or hide the aisle
Traditional Release Organization Software organized as a tree Trunk is what goes on production, it is The Truth Engineers work on features in branches Features get integrated into trunk Release train on regular cyclic period QA ensures correctness of each train P1 bugs get patched back into the train Flip the switch release Pascal-Louis Perez, kaChing Group Inc.
Timeline Pascal-Louis Perez, kaChing Group Inc. QA Stage Release Fix P1 Bugs Development Cut a Release Integrate Patches 1-4 Weeks
Timeline, Revisited Pascal-Louis Perez, kaChing Group Inc. Deployment Automated QA Stage Fix P1 Bugs Release Development or Testing Cut a Release Integrate Patches Monitoring Experiments 5-10 Minutes
Experiments Split features which are not finished“if press person, show the new home page”if (isInExperiment(NEW_HOME_PAGE)) {	…} else {	…} Pascal-Louis Perez, kaChing Group Inc. (Yes, this is just like A/B Testing)
True Story Investment managers calls, comments about unintuitive trading flow. Improvements are made, and deployed within the next 20 minutes. We call him back “What do you think of the improvement?” Pascal-Louis Perez, kaChing Group Inc.
Benefits of Continuous Deployment It allows quick iterations Obsoletes processes, e.g. “cutting a release” Reduces risk Everyone is aware of production No one throws code over the wall Exposes 24x7 operational requirements Trunk stable Pascal-Louis Perez, kaChing Group Inc.
Continuous Deployment ImmuneSystem Culture ContinuousIntegration Pascal-Louis Perez, kaChing Group Inc. Test DrivenDevelopment
kaChing’s Architecture Service oriented system Vertical sharding Everything uses the same platform kawala Coordination using ZooKeeper Data interchange using JSON and Protobufs Pascal-Louis Perez, kaChing Group Inc.
Typical Stack Clustered services, multiple instances Replicated databases (e.g. MySQL, Redis, …) Caching (e.g. memcached) Denormalized data (e.g. Voldemort) Pascal-Louis Perez, kaChing Group Inc.
Timeline, Revisited Pascal-Louis Perez, kaChing Group Inc. Development Deployment Testing Monitoring
Development Trunk stable Small, frequent commits Unreleased features live behind experiments Forward & Backward compatibility Responsive code review Pair difficult problems Trivial rollbacks
Testing Philosophy Only automated testing matters If it isn’t tested, it isn’t finished or correct Write testable code Embrace abstractions Testing is cross functional, we all own quality
Benefits of TDD It allows quick iterations It empowers engineers to change anything, and as such helps in scaling the team It is more cost effective than debugging It obsoletes the need for functional QA It facilitates continuous refactoring, allowing the code to get better with age It attracts the right kind of engineers Pascal-Louis Perez, kaChing Group Inc.
Types of Testing Unit Testing - does the code work? Integration Testing - does the code work together? Regression Testing - learn from your mistakes Frontend Testing - a whole different ballgame
Defensive Testing Capture invariants in tests Nightmare scenarios A common conversation at lunch: Alice: What would happen if X blew up? Bob: uh... the site would go down. Fix it, test for it
Implementation Frameworks: junit, dbunit CI: Hudson Frontend: Selenium
Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM ZK
Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
Deployment Exponentially increasing group sizes Increased monitoring during deployment Self Test Automated rollbacks
Stability Cluster everything As little global state as possible Maintain global state through ZooKeeper Monitor everything
ZooKeeper Reliable Distributed Synchronization Service Discovery Service Status Coarse locking
Implementation Building: ant Deploying: rpm, yum Monitoring: nagios, jcollectd, RRDtool, jmx Custom automation
Monitoring Philosophy Prefer business metrics Monitor statistical deviations not absolute values Automatically annotate graphs
Monitoring Errors False negatives - errors of omission False positives - errors of implementation
End to End Monitoring Run Selenium on production Accessibility, Speed Ad-hoc Keynote - customized for our flows Must control data creation, analytics impact
#future-developments Pascal-Louis Perez, kaChing Group Inc.
Quarantining Isolate new releases Flexible partitioning of requests Gradually shift load to fresh services Pascal-Louis Perez, kaChing Group Inc.
Describing Infrastructure Many moving parts nagios, collectd, backups, services, databases, … Consistency is key Adding new tools should be easy and thorough Standardize best practices Pascal-Louis Perez, kaChing Group Inc.
TGIF? Pascal-Louis Perez, kaChing Group Inc. We will be hosting a TGIF in August in our office@pascallouis / @kachingeng
References We’re Recruiting jobs@kaching.com kaChing’s blog http://eng.kaching.com kawalahttp://bit.ly/kawala Deployment Infrastructure http://eng.kaching.com/2010/05/deployment-infrastructure-for.html Extreme Testing http://bit.ly/9bOFaA Writing Testable Codehttp://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-decided-to.html The Testability Explorer Bloghttp://misko.hevery.com ZooKeeperhttp://bit.ly/kc-zookeeper Lessons Learned http://startuplessonslearned.com Pascal-Louis Perez, kaChing Group Inc.

Contenu connexe

Tendances

LasCon 2014 DevOoops
LasCon 2014 DevOoops LasCon 2014 DevOoops
LasCon 2014 DevOoops Chris Gates
 
Velocity 2016 - Operational Excellence with Hystrix
Velocity 2016 - Operational Excellence with HystrixVelocity 2016 - Operational Excellence with Hystrix
Velocity 2016 - Operational Excellence with HystrixBilly Yuen
 
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...CODE BLUE
 
Need to-know patterns building microservices - java one
Need to-know patterns building microservices - java oneNeed to-know patterns building microservices - java one
Need to-know patterns building microservices - java oneVincent Kok
 
Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Vincent Kok
 
When Developers Operate and Operators Develop
When Developers Operate and Operators DevelopWhen Developers Operate and Operators Develop
When Developers Operate and Operators DevelopAdrian Cockcroft
 
Monktoberfest Fast Delivery
Monktoberfest Fast DeliveryMonktoberfest Fast Delivery
Monktoberfest Fast DeliveryAdrian Cockcroft
 
Microservices 5 things i wish i'd known code motion
Microservices 5 things i wish i'd known   code motionMicroservices 5 things i wish i'd known   code motion
Microservices 5 things i wish i'd known code motionVincent Kok
 
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012Matt Tesauro
 
The Rugged Way in the Cloud--Building Reliability and Security into Software
The Rugged Way in the Cloud--Building Reliability and Security into SoftwareThe Rugged Way in the Cloud--Building Reliability and Security into Software
The Rugged Way in the Cloud--Building Reliability and Security into SoftwareJames Wickett
 

Tendances (11)

LasCon 2014 DevOoops
LasCon 2014 DevOoops LasCon 2014 DevOoops
LasCon 2014 DevOoops
 
Velocity 2016 - Operational Excellence with Hystrix
Velocity 2016 - Operational Excellence with HystrixVelocity 2016 - Operational Excellence with Hystrix
Velocity 2016 - Operational Excellence with Hystrix
 
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
[CB16] About the cyber grand challenge: the world’s first all-machine hacking...
 
Need to-know patterns building microservices - java one
Need to-know patterns building microservices - java oneNeed to-know patterns building microservices - java one
Need to-know patterns building microservices - java one
 
Natively clouded Journey
Natively clouded JourneyNatively clouded Journey
Natively clouded Journey
 
Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017Microservices 5 Things I Wish I'd Known - JFall 2017
Microservices 5 Things I Wish I'd Known - JFall 2017
 
When Developers Operate and Operators Develop
When Developers Operate and Operators DevelopWhen Developers Operate and Operators Develop
When Developers Operate and Operators Develop
 
Monktoberfest Fast Delivery
Monktoberfest Fast DeliveryMonktoberfest Fast Delivery
Monktoberfest Fast Delivery
 
Microservices 5 things i wish i'd known code motion
Microservices 5 things i wish i'd known   code motionMicroservices 5 things i wish i'd known   code motion
Microservices 5 things i wish i'd known code motion
 
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012
DevOps, CI, APIs, Oh My! - Texas Linux Fest 2012
 
The Rugged Way in the Cloud--Building Reliability and Security into Software
The Rugged Way in the Cloud--Building Reliability and Security into SoftwareThe Rugged Way in the Cloud--Building Reliability and Security into Software
The Rugged Way in the Cloud--Building Reliability and Security into Software
 

Similaire à Iterate Like a Whirling Dervish

Add (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your JavaAdd (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your JavaPascal-Louis Perez
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionjglobal
 
Building and running cloud native cassandra
Building and running cloud native cassandraBuilding and running cloud native cassandra
Building and running cloud native cassandraVinay Kumar Chella
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAmazon Web Services
 
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...Amazon Web Services
 
DevOps Tooling - Pop-up Loft TLV 2017
DevOps Tooling - Pop-up Loft TLV 2017DevOps Tooling - Pop-up Loft TLV 2017
DevOps Tooling - Pop-up Loft TLV 2017Amazon Web Services
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsCloudBees
 
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and KubernetesShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and KubernetesMihai Criveti
 
SUPER-scaling E-Commerce with Magento
SUPER-scaling E-Commerce with MagentoSUPER-scaling E-Commerce with Magento
SUPER-scaling E-Commerce with MagentoAOE
 
Docker up & running
Docker   up & runningDocker   up & running
Docker up & runningLe Thi
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례uEngine Solutions
 
Continues Deployment - Tech Talk week
Continues Deployment - Tech Talk weekContinues Deployment - Tech Talk week
Continues Deployment - Tech Talk weekrantav
 
Openstack Summit Container Day Keynote
Openstack Summit Container Day KeynoteOpenstack Summit Container Day Keynote
Openstack Summit Container Day KeynoteBoyd Hemphill
 
DevOps, CLI, APIs, Oh My! Security Gone Agile
DevOps, CLI, APIs, Oh My!  Security Gone AgileDevOps, CLI, APIs, Oh My!  Security Gone Agile
DevOps, CLI, APIs, Oh My! Security Gone AgileMatt Tesauro
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Cωνσtantίnoς Giannoulis
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationEric Ries
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationTimothy Fitz
 
Paasta: Application Delivery at Yelp
Paasta: Application Delivery at YelpPaasta: Application Delivery at Yelp
Paasta: Application Delivery at YelpC4Media
 

Similaire à Iterate Like a Whirling Dervish (20)

Add (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your JavaAdd (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your Java
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in production
 
What DevOps Isn't
What DevOps Isn'tWhat DevOps Isn't
What DevOps Isn't
 
Building and running cloud native cassandra
Building and running cloud native cassandraBuilding and running cloud native cassandra
Building and running cloud native cassandra
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...
Incorporating the AWS Well-Architected Framework into Your Architecture (ARC2...
 
DevOps Tooling - Pop-up Loft TLV 2017
DevOps Tooling - Pop-up Loft TLV 2017DevOps Tooling - Pop-up Loft TLV 2017
DevOps Tooling - Pop-up Loft TLV 2017
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and KubernetesShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
 
SUPER-scaling E-Commerce with Magento
SUPER-scaling E-Commerce with MagentoSUPER-scaling E-Commerce with Magento
SUPER-scaling E-Commerce with Magento
 
Docker up & running
Docker   up & runningDocker   up & running
Docker up & running
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례
 
Continues Deployment - Tech Talk week
Continues Deployment - Tech Talk weekContinues Deployment - Tech Talk week
Continues Deployment - Tech Talk week
 
Openstack Summit Container Day Keynote
Openstack Summit Container Day KeynoteOpenstack Summit Container Day Keynote
Openstack Summit Container Day Keynote
 
DevOps, CLI, APIs, Oh My! Security Gone Agile
DevOps, CLI, APIs, Oh My!  Security Gone AgileDevOps, CLI, APIs, Oh My!  Security Gone Agile
DevOps, CLI, APIs, Oh My! Security Gone Agile
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in Production
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Paasta: Application Delivery at Yelp
Paasta: Application Delivery at YelpPaasta: Application Delivery at Yelp
Paasta: Application Delivery at Yelp
 

Plus de Pascal-Louis Perez

Products’ Love Story with Biz
Products’ Love Story with BizProducts’ Love Story with Biz
Products’ Love Story with BizPascal-Louis Perez
 
How to Send a Receipt, Topics in Concurrency and Distributed Systems
How to Send a Receipt, Topics in Concurrency and Distributed SystemsHow to Send a Receipt, Topics in Concurrency and Distributed Systems
How to Send a Receipt, Topics in Concurrency and Distributed SystemsPascal-Louis Perez
 
Developing an Immune System — The Hard and Soft Skills required to avoid Outages
Developing an Immune System — The Hard and Soft Skills required to avoid OutagesDeveloping an Immune System — The Hard and Soft Skills required to avoid Outages
Developing an Immune System — The Hard and Soft Skills required to avoid OutagesPascal-Louis Perez
 
SLL Conf - Continuous Deployment
SLL Conf - Continuous DeploymentSLL Conf - Continuous Deployment
SLL Conf - Continuous DeploymentPascal-Louis Perez
 
Alchemist Startup Primer - Lean Development Practices
Alchemist Startup Primer - Lean Development PracticesAlchemist Startup Primer - Lean Development Practices
Alchemist Startup Primer - Lean Development PracticesPascal-Louis Perez
 
Applying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedApplying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedPascal-Louis Perez
 
Xignite's Dedicate kaChing Api
Xignite's Dedicate kaChing ApiXignite's Dedicate kaChing Api
Xignite's Dedicate kaChing ApiPascal-Louis Perez
 

Plus de Pascal-Louis Perez (13)

Fuchsia RFCs
Fuchsia RFCsFuchsia RFCs
Fuchsia RFCs
 
Products’ Love Story with Biz
Products’ Love Story with BizProducts’ Love Story with Biz
Products’ Love Story with Biz
 
How to Send a Receipt, Topics in Concurrency and Distributed Systems
How to Send a Receipt, Topics in Concurrency and Distributed SystemsHow to Send a Receipt, Topics in Concurrency and Distributed Systems
How to Send a Receipt, Topics in Concurrency and Distributed Systems
 
Corporate Finance Primer
Corporate Finance PrimerCorporate Finance Primer
Corporate Finance Primer
 
Developing an Immune System — The Hard and Soft Skills required to avoid Outages
Developing an Immune System — The Hard and Soft Skills required to avoid OutagesDeveloping an Immune System — The Hard and Soft Skills required to avoid Outages
Developing an Immune System — The Hard and Soft Skills required to avoid Outages
 
SLL Conf - Continuous Deployment
SLL Conf - Continuous DeploymentSLL Conf - Continuous Deployment
SLL Conf - Continuous Deployment
 
Alchemist Startup Primer - Lean Development Practices
Alchemist Startup Primer - Lean Development PracticesAlchemist Startup Primer - Lean Development Practices
Alchemist Startup Primer - Lean Development Practices
 
Database compatibility
Database compatibilityDatabase compatibility
Database compatibility
 
Applying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing SpeedApplying Compiler Techniques to Iterate At Blazing Speed
Applying Compiler Techniques to Iterate At Blazing Speed
 
Extreme Testing at kaChing
Extreme Testing at kaChingExtreme Testing at kaChing
Extreme Testing at kaChing
 
Type Checking JavaScript
Type Checking JavaScriptType Checking JavaScript
Type Checking JavaScript
 
Xignite's Dedicate kaChing Api
Xignite's Dedicate kaChing ApiXignite's Dedicate kaChing Api
Xignite's Dedicate kaChing Api
 
kaChing's API garage event
kaChing's API garage eventkaChing's API garage event
kaChing's API garage event
 

Dernier

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 

Dernier (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 

Iterate Like a Whirling Dervish

  • 1. Continuous Deployment at kaChing #leanstartup
  • 2. “Connect investors with outstandinginvestment managers” Pascal-Louis Perez, kaChing Group Inc.
  • 3. Pascal-Louis Perez, kaChing Group Inc. Assets Managed by Mutual Funds in the US $11,000,000,000,000
  • 4. Pivot Our vision of bringing the quality of Ivy League Endowment management to retail is unaltered Powering a marketplace where customers entrust high end managers with their money in separately managed accounts. We are SEC & FINRA regulated. Three years ago, kaChing was a fantasy stock trading app for young adults on facebook. Our strategy was to create an eco system where avid amateurs could rise through the ranks and make it to pro league. Pascal-Louis Perez, kaChing Group Inc.
  • 5. Constant tension between product and development. Right architecture only in the context of how it is used. Initially, you don’t know for sure how something will be used! We’ve adopted proportional investing Build cheap When you spend X hours of time fixing problems Spend a corresponding X hours improving the feature Pascal-Louis Perez, kaChing Group Inc. Build “Right” Features
  • 6. Strive for 80% of the value for 20% of the cost Realize that 80% of what you build will go to waste. Validate before investing more time! Pascal-Louis Perez, kaChing Group Inc. 80/20
  • 7. Errors Are Costly! Continuous Deployment is a mission critical way of running our business which provides tremendous value Errors are costly Brand impact SLA penalties And when you’re regulated, there’s also liabilities Turning the wheels on the software with high confidence provides tremendous business value Pascal-Louis Perez, kaChing Group Inc.
  • 8. Deploy Fast and Often Pascal-Louis Perez, kaChing Group Inc.
  • 9. What is Continuous Deployment? Continuous, successful and repeatable methodology to deploying code Automates every steps of taking checked in code and making it run on production servers, used by customers Pascal-Louis Perez, kaChing Group Inc.
  • 10. e.g. Twenty Deployments a Day Pascal-Louis Perez, kaChing Group Inc.
  • 11. Release is a Marketing ConcernReducing Code Inventory is Engineering’s Job Pascal-Louis Perez, kaChing Group Inc.
  • 12. Homage to Gursky: 'Kirksky‘copyright 2010 by Kirk Crippens Supermarket Analogy (Think Safeway) You don’t close the store to fill the shelves! Continuously get fresh merchandise out For product releases, simply close or hide the aisle
  • 13. Traditional Release Organization Software organized as a tree Trunk is what goes on production, it is The Truth Engineers work on features in branches Features get integrated into trunk Release train on regular cyclic period QA ensures correctness of each train P1 bugs get patched back into the train Flip the switch release Pascal-Louis Perez, kaChing Group Inc.
  • 14. Timeline Pascal-Louis Perez, kaChing Group Inc. QA Stage Release Fix P1 Bugs Development Cut a Release Integrate Patches 1-4 Weeks
  • 15. Timeline, Revisited Pascal-Louis Perez, kaChing Group Inc. Deployment Automated QA Stage Fix P1 Bugs Release Development or Testing Cut a Release Integrate Patches Monitoring Experiments 5-10 Minutes
  • 16. Experiments Split features which are not finished“if press person, show the new home page”if (isInExperiment(NEW_HOME_PAGE)) { …} else { …} Pascal-Louis Perez, kaChing Group Inc. (Yes, this is just like A/B Testing)
  • 17. True Story Investment managers calls, comments about unintuitive trading flow. Improvements are made, and deployed within the next 20 minutes. We call him back “What do you think of the improvement?” Pascal-Louis Perez, kaChing Group Inc.
  • 18. Benefits of Continuous Deployment It allows quick iterations Obsoletes processes, e.g. “cutting a release” Reduces risk Everyone is aware of production No one throws code over the wall Exposes 24x7 operational requirements Trunk stable Pascal-Louis Perez, kaChing Group Inc.
  • 19. Continuous Deployment ImmuneSystem Culture ContinuousIntegration Pascal-Louis Perez, kaChing Group Inc. Test DrivenDevelopment
  • 20. kaChing’s Architecture Service oriented system Vertical sharding Everything uses the same platform kawala Coordination using ZooKeeper Data interchange using JSON and Protobufs Pascal-Louis Perez, kaChing Group Inc.
  • 21. Typical Stack Clustered services, multiple instances Replicated databases (e.g. MySQL, Redis, …) Caching (e.g. memcached) Denormalized data (e.g. Voldemort) Pascal-Louis Perez, kaChing Group Inc.
  • 22. Timeline, Revisited Pascal-Louis Perez, kaChing Group Inc. Development Deployment Testing Monitoring
  • 23. Development Trunk stable Small, frequent commits Unreleased features live behind experiments Forward & Backward compatibility Responsive code review Pair difficult problems Trivial rollbacks
  • 24. Testing Philosophy Only automated testing matters If it isn’t tested, it isn’t finished or correct Write testable code Embrace abstractions Testing is cross functional, we all own quality
  • 25. Benefits of TDD It allows quick iterations It empowers engineers to change anything, and as such helps in scaling the team It is more cost effective than debugging It obsoletes the need for functional QA It facilitates continuous refactoring, allowing the code to get better with age It attracts the right kind of engineers Pascal-Louis Perez, kaChing Group Inc.
  • 26. Types of Testing Unit Testing - does the code work? Integration Testing - does the code work together? Regression Testing - learn from your mistakes Frontend Testing - a whole different ballgame
  • 27. Defensive Testing Capture invariants in tests Nightmare scenarios A common conversation at lunch: Alice: What would happen if X blew up? Bob: uh... the site would go down. Fix it, test for it
  • 28. Implementation Frameworks: junit, dbunit CI: Hudson Frontend: Selenium
  • 29. Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
  • 30. Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
  • 31. Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM ZK
  • 32. Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
  • 33. Life of a Deployment Pascal-Louis Perez, kaChing Group Inc. DM PM PM PM ZK
  • 34. Deployment Exponentially increasing group sizes Increased monitoring during deployment Self Test Automated rollbacks
  • 35. Stability Cluster everything As little global state as possible Maintain global state through ZooKeeper Monitor everything
  • 36. ZooKeeper Reliable Distributed Synchronization Service Discovery Service Status Coarse locking
  • 37. Implementation Building: ant Deploying: rpm, yum Monitoring: nagios, jcollectd, RRDtool, jmx Custom automation
  • 38.
  • 39. Monitoring Philosophy Prefer business metrics Monitor statistical deviations not absolute values Automatically annotate graphs
  • 40. Monitoring Errors False negatives - errors of omission False positives - errors of implementation
  • 41. End to End Monitoring Run Selenium on production Accessibility, Speed Ad-hoc Keynote - customized for our flows Must control data creation, analytics impact
  • 43. Quarantining Isolate new releases Flexible partitioning of requests Gradually shift load to fresh services Pascal-Louis Perez, kaChing Group Inc.
  • 44. Describing Infrastructure Many moving parts nagios, collectd, backups, services, databases, … Consistency is key Adding new tools should be easy and thorough Standardize best practices Pascal-Louis Perez, kaChing Group Inc.
  • 45. TGIF? Pascal-Louis Perez, kaChing Group Inc. We will be hosting a TGIF in August in our office@pascallouis / @kachingeng
  • 46. References We’re Recruiting jobs@kaching.com kaChing’s blog http://eng.kaching.com kawalahttp://bit.ly/kawala Deployment Infrastructure http://eng.kaching.com/2010/05/deployment-infrastructure-for.html Extreme Testing http://bit.ly/9bOFaA Writing Testable Codehttp://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-decided-to.html The Testability Explorer Bloghttp://misko.hevery.com ZooKeeperhttp://bit.ly/kc-zookeeper Lessons Learned http://startuplessonslearned.com Pascal-Louis Perez, kaChing Group Inc.