Skip to content

20170831_srecon17_1.1

20170831_srecon17_1.1

Deployment in age of MicroServices

0 - Agenda

  1. Type of changes
  2. Why changes
  3. What can go wrong
  4. Best practices
  5. Naming

1 - Type of changes

various kind of changes
* Client
* Server
* Static config
* Dynamic config

And various time to recovery
* Minutes,
* Hours,
* Days,
* …

2 - Why change ?

Reliabilty:

“Safest thing to do is NOT CHANGE ANY THING !

On the contrary:

A boat in an harbor is safe,
But that’s not what boat are built for

-> Not rewarding to not change anything
-> No new feature, no business development
-> No optiomizations
-> No evolutions
....

3 - What can go wrong ?

Lots of business relativ issues:
* Direct revenu loss
* User-confidence loss
* Pay-users complains
* …

4 - Best practices

The optimal rollout is:
* Staged
* Progressive with metrics monitoring
* Revertable
* Transparent (No 1 man knowledge, no truk man, …)
* Automtic
* Well understood by everyone

Detect badness as early as possible:
* High quality tests
* Build often
* A/B Testing
* Automate to reduce human errors
* “Hold back”, make changes funel complete (locked from changes till the end of the release)
* Deploy often
* Make it easy to rollback
* Backward compatibility

5 - Naming

Consistant naming scheme:

Everybody needs to have the same word for the same thing
* Stages
* Actions
* App name

Examples

Server name
binary release
Machines
load-balancing
...