What a real Startup Deployment Process looks like
"From local code to production"
Tri Tran @ NFQ Asia
May 2018
about me
Tri D. Tran
Senior Technical Architect
tri.tran@nfq.asia
@moprit
NFQ Asia | 8Bit Rockstars
Member of .NFQ Group


I'm happy if you call me 'Mụp'
we WILL discuss about
-
Software deployment process:
A pipeline process
-
Advantages and challenges
-
Tools
- Conclusion & Open Discussion
we WON'T talk about
-
Open-source process
-
Enterprise process
-
DOTA 2, LoL, Counter Strike...
- Drink or party
How did they do in Stone Age?

Source: StoneAgeComics
They did
- SysAdmin will handle manually
- FTP / SFTP / Shell


Source: SysOrb
Source: SysOrb
Pros
- Easy to apply
- Don't require many experience, technology
Cons
- Human mistakes
- Difficult to track the changes
- Risk management

Source: StoneAgeComics
Nowadays

Source: SysOrb
Just Kidding
Continuous
Delivery

What does a Startup need?
- Releasing new features frequently
- Automated testing - Bug zero
- Automated deployment
What is Continuous Delivery?
Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.
https://continuousdelivery.com
The Tools of Continuous Delivery?
- Version Control
- Continuous Integration (CI)
- Automated Deployment
- Logging & Monitoring
The Tools of Continuous Delivery?
-
To keep a record of every version of every feature, add-on or other change to the code base.
-
All tests, scripts, documentation and configuration files
- Subversion, GIT, Mercurial, etc.
Version Control
The Tools of Continuous Delivery?
Continuous integration (CI) is the practice of frequently checking code in with the main code base, triggering automated tests
Continuous Integration
- Checks the version control system for changes to the application
- Builds the application and runs automated tests on each build.
- Provides reports on whether each build passed or failed the tests.
-
Jenkins, Bamboo, CircleCI, Travis, etc.
The Tools of Continuous Delivery?
Automated Deployment
-
Ensure code can be deployed to production at any time, any environment automatically:
-
Development
-
UAT / Testing
-
Staging
-
Production
-
-
AWS CodeDeploy & Pipeline, Ansible, Puppet, etc.
The Tools of Continuous Delivery?
Logging / Monitoring
-
Bug Tracing
-
Collect and analyze data
-
Monitor all devices / services
- Availability, performance monitoring, and/or health status
- Alert / Reporting about what has happened/is happening
- Logstash, Nagios, New Relic, LogEntries, Tideways, etc.
And more...
-
Code Review
-
Testing Environments
-
Git Workflow
-
Test-Driven Design
Continuous Delivery Is …
-
Incremental: You can implement continuous delivery practices just a step at a time and still get great benefits.
-
Automated: By making successful processes repeatable, you can make changes more quickly and safely, with less likelihood of error.
-
Fast: By making frequent releases of smaller changes, you can isolate and fix problems more quickly, or roll back to a previous working state more easily.
-- Martin Fowler
You're Doing Continuous Delivery When ...
-
You can perform push-button deployments of any version of the software to any environment on demand.
-
You're leveraging automation, making frequent releases, testing at every stage of the process, and using a pull-based architecture that permits only successful releases to move to the next stage.
-
You work together as a single team, with everyone — developer, QA engineer and sysadmin — responsible for delivering quality code.
-- Martin Fowler
Thanks

Tri D. Tran
tri.tran@nfq.asia
@moprit
we are HIRING

Source: Kieu Lam @ NFQ Asia
Simply send us an email with your enclosed updated CV to:
career@nfq.asia
Floor 11 Vincom Center
72 Le Thanh Ton, Ben Nghe Ward,
District 1, Ho Chi Minh City
Vietnam
Deployment Process
By Tri Tran
Deployment Process
- 771