Microservices kept simple

Post on 13-Jan-2017

180 views 0 download

transcript

digitalocean.com

Microservices kept simple with

DigitalOceanVitor Pellegrino@pellegrino

Full bleed images

Full bleed images

~ 18 million droplets

digitalocean.com

Droplet

digitalocean.com

Block Storage

digitalocean.com

Networking

http://martinfowler.com/bliki/MicroservicePrerequisites.html

digitalocean.com

Make sure you haveRapid provisioning

Basic monitoring

Rapid application deployment

digitalocean.com

“I’m just starting, why do I need an orchestration/cluster management tool?”

digitalocean.com

Why do I need such a tool?Cattle vs Pets

Easier to provision resources for a given application.

Better utilization of computing resources.

digitalocean.com

"How would I deploy a microservice from scratch in 10 minutes?"

digitalocean.com

Lets explore a few options

dokku

docker-swarm

kubernetes

digitalocean.com

Dokku

digitalocean.com

https://www.digitalocean.com/products/one-click-apps/dokku/

digitalocean.com

digitalocean.com

Dokku

Dokku

digitalocean.com

Good for teams used to herokuOptimised for a single box experiencePre built images on DigitalOceanExtensible using plugins

Dokku

digitalocean.com

Only vertical scaling is possibleYour server may become a single point of

failure

digitalocean.com

digitalocean.com

Docker swarm modeDocker’s built in orchestration for natively managing a cluster of Docker Engines called swarm.

Embedded data storage Built in security out of the boxOrchestration and cluster management By default, also execute work.Typically 3, 5 or 7 in a HA production

cluster

Manager

digitalocean.com

Take work and report status backCan scale to several nodes

Worker nodes

digitalocean.com

digitalocean.com

Security

Docker swarm mode

digitalocean.com

Very simple setupNative built in orchestration Built in security out of the boxNo extra components needed

Docker swarm mode

digitalocean.com

It is not as mature as other toolsDocker only

digitalocean.com

Kubernetes

digitalocean.com

KubernetesKubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.

Kubernetes

digitalocean.com

Strong communitySupports different types of containers.Powerful set of constructsUses etcd to store cluster state, other

components are stateless

digitalocean.com

Installing kubernetes

digitalocean.com

https://github.com/Capgemini/kubeform (terraform + ansible, using CoreOS)

https://github.com/kubernetes-incubator/bootkube (self hosted kubernetes bootstrap)

https://github.com/kelseyhightower/kubernetes-the-hard-way

Kubeadm

digitalocean.com

Automates the installation to a couple of commands.

Rapidly evolving (currently alpha)

Still no High Available setup is supported

Kubeadm

digitalocean.com

Still only a single master is supported

Rapidly evolving (currently alpha)

digitalocean.com

"Great! I have my cluster up and running, now what?”

Centralized logging TelemetryProvisioning automation

Next steps

digitalocean.com

Get the output from any container in a central place

Useful for graphs and learning more about your data

ELK stack

Centralized Logging

digitalocean.com

Know how your cluster (and apps) is behaving in real time.

AlertingUseful for knowing when to add more

nodes to your cluster.Prometheus, Grafana, Collectd, cAdvisor,

Fluentd

Telemetry

digitalocean.com

Automate the steps to get from a droplet to a functioning node on your cluster

Downscaling is important too

Terraform, Ansible, Chef, Puppet

Provisioning automation

digitalocean.com

digitalocean.com

Closing notes

digitalocean.com

Do the simplest thing you can do to get started.

digitalocean.com

All tools have pros and cons, consider the context you are in.

Thank you!

Questions?