3. Microservices are an approach to developing a
single application as a suite of small,
connected, services (Martin Fowler)
Microservices are loosely coupled service
orientated architecture with bounded contexts
(Adrian Cockcroft)
Microservices are small automonous services
that work well together (Sam Newman)
4. Break big application down into many small services
http://martinfowler.com/microservices/
5. @crichardson
Intimidates developers
@cr
Lo t s o f co o r d i n at i o n a n d
co m m u n i cat i o n r equ i r ed
Obstacle to scaling
development
I want
to update the UI
But
the backend is not working
yet!
@crichardson
Requires long-term commitment
to a technology stack
@
Overloads your IDE and
container
Sl o ws d o w n d ev el o pm en t
6. Componentization via Services
Organized around Business Capabilities
Products not Projects
Smart endpoints and dumb pipes
Decentralized Governance
Decentralized Data Management
Infrastructure Automation
Design for failure
Evolutionary Design
http://martinfowler.com/microservices/
7. Use different stacks for different services
Replace or refactor individual services easily
Less coordination required when deploying
deploy more often
less risk
more agility and speed
Promotes many small teams instead of one
big army
Enables effective ownership of services
12. “Automates the deployment of any
application as a lightweight, portable,
self-sufficient container
that will run virtually anywhere”
13. Faster delivery of your applications
Deploying and scaling more easily
Achieving higher density and running more workloads
Portable deployment across machines
Versioning
Component reuse
Shared libraries
24. Describe a stack of containers in a simple
YAML file
Start the stack with a single command
Compose connects containers together
with links
Also provides simple scaling and log
aggregation
25.
26.
27.
28.
29.
30. Master
Minion
pod pod
labels labels
kubelet cAdvisor proxy
API Server
Minion
pod pod
labels labels
kubelet cAdvisor proxy
scheduler
replication
controller
kubectl
distributed
storage
http://microservices.io/patterns/microservices.html
Polyglot Persistence
One of the core concepts of this example project is how polyglot persistence can be approached in practice. Microservices in the project use their own database while integrating with the data from other services through REST or a message bus
Build: package your application in a containerShip: move that container from a machine to another
Run: execute that container (i.e. your application)
Any application: anything that runs on Linux
Anywhere: local VM, cloud instance, bare metal..
Docker: the open source container virtualization platform.
Docker Hub: our Software-as-a-Service platform for sharing and managing Docker containers.
Dockerfiles document how to construct the container and what to execute when it is running.
It allows you to define your multi-container application with all of its dependencies in a single file, then spin your application up in a single command
Docker Swarm is native clustering for Docker. It turns a pool of Docker hosts into a single, virtual host.
Has support for etcd, consul, and zookeeper host discovery systems.