Continuous delivery
How do we do 65+ production
deployments per day and what is the
impact on Engineering culture?
Tomáš Řehoř・Engineering manager & Site Lead
Whoami?
And where is my confidence experience coming from?
The school of McDonald’s and life
McDonald’s (1998)
My first full-time job
Globe Internet (2001)
The real start of IT career
Skype (2007)
The big world starts here
Microsoft (2011)
First bad then good news
Toptal (2017)
The glory of remote work
Košík.cz (2017)
SAP 101
(2018)
What is Pipedrive?
Some things you should know to understand the
context
Pipedrive
Pipedrive is a SaaS Sales CRM and we help
salespeople focus on actions that close deals
What is ?
We have + 85,000 customers and our typical
customers are SMBs
Our Customers
We are located in 7 offices in 5 countries,
and we have more than 500 employees,
none of them have the role of Tester.
About us
Node.js
Tech stack run-down
Most of our micro-services code
React.js
Most of our front-end code
PHP
Legacy remains of a monolith beast
we cannot get rid of completely
Infrastructure tools run-down
Github
All code goes here. 715
repos.
Jenkins
Automator of deploys
Codeship
Code analytics and tests
Docker
Containers, containers
everywhere
Rakett
Internal tool. Orchestrator of
deployments
Openstack
Our cloud platform
Deployment
regions
3
Microservices
450+
Supported
languages
6
Pipedrive’s Infrastructure Numbers
Deployments
2000
Test Success
Rate
X
Deployment
average time
20.36 m
Pipedrive’s deployments last month
Continuous delivery
What is it and why is it important?
Release
Deploy Test
Develop
Build
Continuous delivery
Research / Coding new features
Testing
Monitoring
Bug fixing
Removing technical debt
Deployment
40
H
O
U
R
S
A developer’s week
POSITIVEBUSINESSVALUE
NOADDED
VALUE
Maximize
Minimize
Research / Coding new features
Testing
Monitoring
Bug fixing
Removing technical debt
Deployment
320
H
O
U
R
S
A team’s week (8 people)
Code reviews
Merging
POSITIVEBUSINESSVALUE
NOADDED
VALUE
Everything
multiplied by
8
Agile team ceremonies
Maximize
Minimize
Maximize work on new features by
reducing time on no value activities.
Key elements to continuous delivery
It cannot work without them
Version control over your code1
Automated tests2
Automated monitoring5
Automated deployment to all environments4
Automated builds3
Minimal requirements for continuous delivery
10-15minutes
Scalable architecture6
Enables
Architecture enabling fast deploys
Continuous delivery step-by-step
Features of code versioning tool
Standardized flow
Agree as a team/company on one approach
and follow it
Pull requests
Do code reviews early and configure your
gates automatically
Inline CI feedback
See the status of all configured checks inside
your CVT
One-click deployment
Ability deploy to testbox or production with
one click
Inline CD feedback
See all the information about ongoing
deployment from your CVT
Auto-cleanup
Set up your CVT to automatically delete
deployed branches
Unified process - Simplified Git flow
Continuous and fast feedback
Trigger CD from pull request
Inline CD feedback
Integration with Slack
For when things go wrong
Rakett - deployment pipeline overview
Single deployment deep dive
Rakett - list of deployments
Continuous deployment → Continuous delivery
Not-so-continuous delivery fuckups
And similar fairytales
Continuous delivery fuckups
No code versioning, nothing
A lot of production bugs, no code reviews →
random code quality
Too many flaky tests
When 80% becomes the new 100%
Waaay too many flaky tests
When running a full test suite takes 36 hours
on a latest quad core MBP
Root access to production env
Tick-tock, tick-tock, tick-tock ...
When there’s still a QE role
… and tests become a pile of unmaintainable
spaghetti code
Add your own ...
… we want to hear it
Thank you.
@viliceq
Tomáš Řehoř · Engineering Manager, Prague Site Lead
Any questions? Email me at tomas.rehor@pipedrive.com
@viliceq
https://www.linkedin.com/in/rehor/

Continuous delivery in Pipedrive