SlideShare a Scribd company logo
1 of 44
Download to read offline
Applied Lean Startup Ideas:,[object Object],Continuous Deployment at kaChing,[object Object],&,[object Object],#leanstartup,[object Object]
Twenty Deployments a Day Keeps the Nasty Bugs Away,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
“Connect investors with outstandinginvestment managers”,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Release is a Marketing ConcernReducing Code Inventory is what Engineering Focuses On,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Lean Startup at kaChing,[object Object],“Human institution designed to create something new under conditions of extreme uncertainty” – Eric Ries,[object Object],Methodical approach to eliminating waste,[object Object],No Quality Assurance engineers, no Operations team,[object Object],Empower everybody to drive their own projects,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
What is Continuous Deployment?,[object Object],Continuous, successful and repeatable methodology to deploying code,[object Object],Automates every steps of taking checked in code and making it run on production servers, in front of customers,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
True Story,[object Object],Investment managers calls, comments about unintuitive trading flow.,[object Object],Improvements are made, and deployed within the next 20 minutes.,[object Object],We call him back “What do you think of the improvement?”,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Benefits of Continuous Deployment,[object Object],It allows quick iterations,[object Object],Obsoletes processes, e.g. “cutting a release”,[object Object],Reduces risk,[object Object],Everyone is aware of production,[object Object],No one throws code over the wall,[object Object],Exposes 24x7 operational requirements,[object Object],Trunk stable,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
ContinuousDeployment,[object Object],Immune System,[object Object],Making Continuous Deployment a Reality,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],Culture,[object Object],Test Driven Development,[object Object]
#architecture,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Our architecture,[object Object],Service oriented system,[object Object],Vertical sharding,[object Object],Everything uses the same platform kawala,[object Object],Coordination using ZooKeeper,[object Object],Data interchange using JSON and Protobufs,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Typical Stack,[object Object],Clustered services, multiple instances,[object Object],Replicated databases (e.g. MySQL or NoSQL),[object Object],Caching (e.g. memcached),[object Object],Denormalized data (e.g. Voldemort),[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
kawala,[object Object],Command pattern. A command is a query,[object Object],Dynamic Inversion of Control,[object Object],Queries produce a value,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Sample Query,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],class GetUser(Id<User> userId) {    @Inject UserRepository repository;    public User process() {,[object Object],       return repository.load(userId);    }},[object Object]
What We do with Queries,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],Persist Queries,[object Object],RPC,[object Object],Command Line Tools,[object Object],Serve BLOBS,[object Object],CPS,[object Object],Render Pages,[object Object],Push into MQ,[object Object]
Lifecycle,[object Object],1. Commit,[object Object],2. Testing,[object Object],3. Deployment,[object Object],4. Production Validation,[object Object],5. Lifetime Monitoring,[object Object]
Development,[object Object],Trunk stable,[object Object],Small, frequent commits,[object Object],Unreleased features live behind experiments,[object Object],Forward & Backward compatibility,[object Object],Responsive code review,[object Object],Pair difficult problems,[object Object],Trivial rollbacks,[object Object]
#testing,[object Object]
Testing Philosophy,[object Object],Only automated testing matters,[object Object],If it isn’t tested, it isn’t finished or correct,[object Object],Write testable code,[object Object],Embrace abstractions,[object Object],Testing is cross functional, we all own quality,[object Object]
Benefits of TDD,[object Object],It allows quick iterations,[object Object],It empowers engineers to change anything, and as such helps in scaling the team,[object Object],It is more cost effective than debugging,[object Object],It obsoletes the need for functional QA,[object Object],It facilitates continuous refactoring, allowing the code to get better with age,[object Object],It attracts the right kind of engineers,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Types of Testing,[object Object],Unit Testing - does the code work?,[object Object],Integration Testing - does the code work together?,[object Object],Regression Testing - learn from your mistakes,[object Object],Frontend Testing - a whole different ballgame,[object Object]
Defensive Testing,[object Object],Nightmare scenarios,[object Object],A common conversation at lunch:,[object Object],Alice: What would happen if X blew up?,[object Object],Bob: uh... the site would go down.,[object Object],Fix it, test for it,[object Object]
Implementation,[object Object],Frameworks: junit, dbunit,[object Object],CI: Hudson,[object Object],Frontend: Selenium,[object Object]
Production,[object Object],Process, Infrastructure, Deployment, Monitoring,[object Object]
Process,[object Object],Everyone: writes code and tests, releases to production, adds monitoring,[object Object],Specialists help out when needed,[object Object],New hires push code the first day,[object Object],Problems, issues, errors, bugs, oversights...,[object Object]
Stability,[object Object],Cluster everything,[object Object],As little global state as possible,[object Object],Maintain global state through ZooKeeper,[object Object],Monitor everything,[object Object]
ZooKeeper,[object Object],Reliable Distributed Synchronization,[object Object],For:,[object Object],Service Discovery,[object Object],Service Status,[object Object],Coarse locking,[object Object]
Life of a Deployment,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],DM,[object Object],PM,[object Object],PM,[object Object],PM,[object Object],ZK,[object Object]
Life of a Deployment,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],DM,[object Object],PM,[object Object],PM,[object Object],PM,[object Object],ZK,[object Object]
Life of a Deployment,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],DM,[object Object],PM,[object Object],PM,[object Object],ZK,[object Object]
Life of a Deployment,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],DM,[object Object],PM,[object Object],PM,[object Object],PM,[object Object],ZK,[object Object]
Life of a Deployment,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object],DM,[object Object],PM,[object Object],PM,[object Object],PM,[object Object],ZK,[object Object]
Deployment,[object Object],Exponentially increasing group sizes,[object Object],Increased monitoring during deployment,[object Object],Self Test,[object Object],Automated rollbacks,[object Object]
Implementation,[object Object],Building: ant,[object Object],Deploying: rpm, yum,[object Object],Monitoring: nagios, jcollectd, RRDtool, jmx,[object Object],Custom automation,[object Object]
Applied Lean Startup Ideas: Continuous Deployment at kaChing
#monitoring,[object Object]
Monitoring Philosophy,[object Object],Prefer business metrics,[object Object],Monitor statistical deviations not absolute values,[object Object],Automatically annotate graphs,[object Object]
Monitoring Errors,[object Object],False negatives - errors of omission,[object Object],False positives - errors of implementation,[object Object]
End to End Monitoring,[object Object],Run Selenium on production,[object Object],Accessibility, Speed,[object Object],Ad-hoc Keynote - customized for our flows,[object Object],Must control data creation, analytics impact,[object Object]
#future-developments,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Quarantining,[object Object],Isolate new releases,[object Object],Flexible partitioning of requests,[object Object],Gradually shift load to fresh services,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
Describing Infrastructure,[object Object],Many moving parts,[object Object],nagios, collectd, backups, services, databases, …,[object Object],Consistency is key,[object Object],Adding new tools should be easy and thorough,[object Object],Standardize best practices,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
What we Covered Today,[object Object],Lean Startup and Continuous Deployment,[object Object],Anatomy of a Release,[object Object],Commit, Testing, Deployment, Monitoring,[object Object],Future Developments,[object Object],Quarantining, DSL for Infrastructure,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]
References,[object Object],We’re Recruiting jobs@kaching.com,[object Object],kaChing’s blog http://eng.kaching.com,[object Object],kawalahttp://bit.ly/kawala,[object Object],Deployment Infrastructure http://eng.kaching.com/2010/05/deployment-infrastructure-for.html,[object Object],Extreme Testing http://bit.ly/9bOFaA,[object Object],Writing Testable Codehttp://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-decided-to.html,[object Object],ZooKeeperhttp://bit.ly/kc-zookeeper,[object Object],Eric Rieshttp://startuplessonslearned.com,[object Object],Pascal-Louis Perez, kaChing Group Inc.,[object Object]

More Related Content

More from 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
 
Iterate Like a Whirling Dervish
Iterate Like a Whirling DervishIterate Like a Whirling Dervish
Iterate Like a Whirling DervishPascal-Louis Perez
 
Xignite's Dedicate kaChing Api
Xignite's Dedicate kaChing ApiXignite's Dedicate kaChing Api
Xignite's Dedicate kaChing ApiPascal-Louis Perez
 
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
 

More from Pascal-Louis Perez (15)

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
 
Iterate Like a Whirling Dervish
Iterate Like a Whirling DervishIterate Like a Whirling Dervish
Iterate Like a Whirling Dervish
 
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
 
Add (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your JavaAdd (Syntactic) Sugar To Your Java
Add (Syntactic) Sugar To Your Java
 
kaChing's API garage event
kaChing's API garage eventkaChing's API garage event
kaChing's API garage event
 

Recently uploaded

UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 

Recently uploaded (20)

UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 

Applied Lean Startup Ideas: Continuous Deployment at kaChing

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.

Editor's Notes

  1. Thanks to SDForum, thanks to LinkedIn for hostingToday, talk about applied lean startup and specifically about continuous deployment at kaChingDavid and I are presenting the efforts of a whole team.Tweet, share, shout, ask questionsBefore we start, let me ask you a few questions:How long from writing code to having it in production?How much time do spend on “releasing” every month?How long does deprecated code stay around?How often do you refactor code?New hire code to production?How long from product request to code in production, in front of alpha/beta testers?
  2. Let me give a some context about what kaChing is.Our goal is to connect investors with outstanding investment managers.Schwab created Schawb One Source which is THE marketplace for mutual funds.We want to create the equivalent for individually managed accounts, essentially bringing wealth management to retail.On kaChing, transparency is the norm. You can know everything about the investment manager you are entrusting. His portfolio holdings, his past transaction history, his rational, philosophy. And we use all this data to objectively vet managers.In 6 months, we’ve attracted $11M and are growing very fast.We’re an SEC regulated company, en route to being FINRA regulated as a broker/dealer.
  3. QA and operations engineer are typically less compensated than software engineers or architects. How can we be saving by having more expensive people do the work?Also explain what our view on QA is: two functions. Check the spec was translated to a working product correctly; Check that the product works. The first part is inherently human, the latter must be automated to eliminate waste.
  4. CD’s benefits are twofold: business/lean startup and technology related.Continuous deployment is essential to driving engineering culture and enabling quick iteration cycles.Many processes which are typically seen in engineering organizing, cutting a release weekly for instance, are not needed anymore. Reduces a lot of waste, that is work not directly helping with the learning experience of creating something newWe are a financial company. We deal with people’s money. Not being able to communicate with our prime broker is a no no. Work in small batches, reduce the possibility of integration problems, and rollback as well as narrow down quickly if they ever occur.From a technology stand point, engineers are acutely aware of how things run. You are on the hook for bad code, no throwing over the wall to QA organization.Everybody needs to know about how a 24x7 site is ran.Trunk stable, we’ll talk about that in a minute
  5. This is a very high level survey, the goal is to convey the necessary things to understand how our system works in the context of CD not how kaChing is built.JSON and Protobufs
  6. -Scale the team: add features without adding engineers to support and maintain these features. This requires “production tests” a.k.a. monitoring.-Debugging: debugging live servers in a production environment!-At kaChing, we’ve never spent $1 on QA-Not all engineers are excited by a test-driven environment. Some are happy with “tests” taking “only” 5 hours to run.