3.
What are micro-services?
Not monolithic :-)
Smaller units of a larger system
Runs in its own process
Lightweight communication protocols
Single Responsibility Principle
The UNIX way
http://www.slideshare.net/ewolff/micro-services-small-is-
beautiful http://martinfowler.com/articles/microservices.html
http://davidmorgantini.blogspot.com/2013/08/micro-services-what-
are-micro-services.html
http://presos.dsyer.com/decks/cloud-boot-netflix.html
3 of 44 24/09/14 21:52

4.
http://presos.dsyer.com/decks/cloud-boot-netflix.html
Lightweight Services and
REST
There is a strong trend in distributed systems with
lightweight architectures
People have started to call them "microservices"
4 of 44 24/09/14 21:52

5.
Spring Boot
http://presos.dsyer.com/decks/cloud-boot-netflix.html
It needs to be super easy to implement and update a service:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
Hello World!
}
}
and you don't get much more "micro" than that.
5 of 44 24/09/14 21:52

6.
Cloudfoundry
http://presos.dsyer.com/decks/cloud-boot-netflix.html
Deploying services needs to be simple and reproducible
$ cf push app.groovy
and you don't get much more convenient than that.
(Same argument for other PaaS solutions)
6 of 44 24/09/14 21:52

9.
http://presos.dsyer.com/decks/cloud-boot-netflix.html
No Man (Microservice) is
an Island
It's excellent to be able to implement a microservice really
easily (Spring Boot), but building a system that way surfaces
"non-functional" requirements that you otherwise didn't
have.
There are laws of physics that make some problems
unsolvable (consistency, latency), but brittleness and
manageability can be addressed with generic, boiler plate
patterns.
9 of 44 24/09/14 21:52

22.
http://presos.dsyer.com/decks/cloud-boot-netflix.html
Restart Endpoint
POST to /restart closes application context and
refreshes it
Probably more useful in development than production
(leaks?)
Disabled by default
22 of 44 24/09/14 21:52

23.
Encrypted Properties
Authenticated clients have access to unencrypted data.
Only encrypted data is stored in git.
Support for server side or client side decryption
DEMO
http://presos.dsyer.com/decks/cloud-boot-netflix.html
23 of 44 24/09/14 21:52