diff --git a/www/htdocs/index.html b/www/htdocs/index.html index 6a7cf8c5..f53bf9e2 100644 --- a/www/htdocs/index.html +++ b/www/htdocs/index.html @@ -4476,19 +4476,115 @@ Check that the container is up and running. --- +class: title + # Conclusions -- Bad news: we still have work to do to deploy our apps +--- - - it's not all unicorns, ponies, and rainbows +## Swarm cluster deployment - - *no, Docker will not make your job obsolete* +- We saw how to use Machine with the `generic` driver to turn + any set of machines into a Swarm cluster -- Good news: a lot of hard things are becoming easier +- This can trivially be adapted to provision cloud instances + on the fly (using "normal" drivers of Docker Machine) - - building, packaging, distributing apps +- For auto-scaling, you can use e.g.: - - running distributed systems on clusters + - private admin-only network + + - no TLS + + - static discovery on a /24 to /20 network (depending on your needs) + +--- + +## Key/value store + +- We saw an easy deployment method for Consul + +- This is good for 3 to 9 nodes + +- Remember: raft write performance *degrades* as you add nodes! + +- For bigger clusters: + + - have e.g. 5 "static" server nodes + + - put them in round robin DNS record set (or behind an ELB) + + - run a normal agent on the other nodes + +--- + +## App deployment + +- We saw how to transform a Compose file into a series of build artefacts + + - using S3 or another object store is trivial + +- We saw how to programmatically add load balancing, logging + +- This can be improved further by using variable interpolation for the image tags + +- Rolling deploys are relatively straightforward, but: + + - I recommend to aim directly for blue/green (or canary) deploy + + - In the production stack, abstract stateful services with ambassadors + +--- + +## Operations + +- We saw how to setup an ELK stack and send logs to it in a record time + + *Important: this doesn't mean that operating ELK suddenly became an easy thing!* + +- We saw how to translate a few basic tasks to containerized environments + + (Backups, network traffic analysis) + +- Debugging is surprisingly similar to what it used to be: + + - remember that containerized processes are normal processes running on the host + + - `docker exec` is your friend + + - also: `docker run --net host --pid host -v /:/hostfs alpine chroot /hostfs` + +--- + +## Things we haven't covered + +- Per-container system metrics (look at cAdvisor, Snap, Prometheus...) + +- Application metrics (continue to use whatever you were using before) + +- Supervision (whatever you were using before still works exactly the same way) + +- Tracking access to credentials and sensitive information (see Vault, Keywhiz...) + +- ... + +--- + +## Resilience + +- We saw how to store important data (crendentials) in Consul + +- We saw how to achieve H/A for Swarm itself + +- Rescheduling policies give us basic H/A for containers + +- This will be improved in future releases + +- Docker in general, and Swarm in particular, move *fast* + +- Current high availability features are not Chaos-Monkey proof (yet) + +- We (well, the Swarm team) is working to change that --- @@ -4512,16 +4608,6 @@ Check that the container is up and running. --- -## High availability - -- Docker in general, and Swarm in particular, move *fast* - -- Current high availability features are not Chaos-Monkey proof (yet) - -- We (well, the Swarm team) is working to change that - ---- - ## Overall complexity - The scripts used here are pretty simple (each is less than 100 LOCs)