Spencer Gibb
twitter: @spencerbgibb
http://spencer.gibb.us/preso
email: sgibb@pivotal.io
I like 'cloud native' better than microservice. I think its more descriptive and doesn't have the awkwardness of having 'micro" in the name.
It needs to be super easy to implement and update a service.
DEMO
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.
Coordination of distributed systems
leads to boiler plate patterns
That moment when a F50 CIO calls you for a day long meeting on @cloudfoundry @SpringCloudOSS. Only way to achieve cloud native status
— Andrew Ettinger (@ahe23) July 14, 2015
DEMO
http://techblog.netflix.com/2012/09/eureka.html
DEMO
http://techblog.netflix.com/2013/01/announcing-ribbon-tying-netflix-mid.html
DEMO
DEMO
/metrics
/hystrix.stream
@EnableHystrixDashboard
DEMO
http://techblog.netflix.com/2013/06/announcing-zuul-edge-service-in-cloud.html
DEMO
Spring Cloud Commons | Spring Cloud Netflix |
---|---|
/env (POST) |
/routes (POST) |
/pause (POST) |
/routes (GET) |
/refresh (POST) |
/hystrix.stream/** (GET) |
/restart (POST) |
|
/resume (POST) |
DEMO
/bus/env
and /bus/refresh
actuator endpointsDEMO
http://techblog.netflix.com/2014/11/prana-sidecar-for-your-netflix-paas.html
DEMO
Enable Single Sign On (SSO) with an OAuth2 provider declared in external properties.
@EnableOAuth2Sso
Enable security using OAuth2 access tokens
@EnableOAuth2Resource
DEMO
Milestones:
Previews, experiments or ideas (ie: no guarantees!)
Observable
from Spring MVCpublic static void hello(String... names) {
Observable.from(names).subscribe(s -> {
System.out.println("Hello " + s + "!");
});
}
Sample functions:
[source,http]
----
HTTP/1.1 200 OK
Content-Type: application/hal+json
{
"_links" : {
"users" : {
"href" : "http://localhost:11070/users{?page,size,sort}",
"templated" : true
},
"profile" : {
"href" : "http://localhost:11070/alps"
}
}
}
----
@EnableRedisHttpSession
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)
From: kt4@prism.gatech.EDU (Ken Thompson)
Subject: Re: LINUX is obsolete
Date: 3 Feb 92 23:07:54 GMT
Organization: Georgia Institute of Technology
I would generally agree that microkernels are probably the wave
of the future. However, it is in my opinion easier to implement
a monolithic kernel. It is also easier for it to turn into a
mess in a hurry as it is modified.
Regards, Ken