SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Implement  Service  Broker  
with  Spring  Boot
Toshiaki  Maki  (@making)
Sr.  Solutions  Architect  @Pivotal
2016-‐‑‒06-‐‑‒01  Cloud  Foundry  Tokyo  Meetup #2
Who  am  I  ?
•Toshiaki  Maki  (@making)
•https://blog.ik.am
•Sr.  Solutions  Architect
•Spring  Framework  enthusiast
Spring
Framework
徹底⼊入⾨門
(Coming  
Soon?)
パーフェクト
Java  EE
(Coming  
Soon?)
Today's  Topic
•Service  Broker  Overview
•Spring  Boot  Overview
•Implement  Service  Broker
with  Spring  Boot
Service  Broker  Overview
Services  in  Cloud  Foundry
Application
Service  Broker
Service  Instance
User  Provided  Service
Managed  Services
MySQL
Redis
RabbitMQ ex.)  Oracle  DB
create-‐‑‒user-‐‑‒provided-‐‑‒servicecreate-‐‑‒service
bind-‐‑‒service
marketplace
Services  in  Cloud  Foundry
Application
Service  Broker
Service  Instance
User  Provided  Service
Managed  Services
MySQL
Redis
RabbitMQ ex.)  Oracle  DB
create-‐‑‒user-‐‑‒provided-‐‑‒servicecreate-‐‑‒service
bind-‐‑‒service
marketplace
👇
7  APIs  in  Service  Broker
• GET  /v2/catalog
• PUT  /v2/service_̲instances/:instance_̲id
• PATCH  /v2/service_̲instances/:instance_̲id
• DELETE  /v2/service_̲instances/:instance_̲id
• PUT  /v2/service_̲instances/:instance_̲id/service_̲bindings/:binding_̲id
• DELETE  /v2/service_̲instances/:instance_̲id/service_̲bindings/:binding_̲id
• GET  /v2/service_̲instances/:instance_̲id/last_̲operation
API  Overview (create  service)
Cloud  Controller
Service
cf create-service PUT
/v2/service_̲instances/:instance_̲id
Service  Broker
cf delete-service DELETE
/v2/service_̲instances/:instance_̲id
API  Overview  (bind  service)
Cloud  Controller
Service
cf bind-service PUT
/v2/service_̲instances/:instance_̲id
/service_̲bindings/:binding_̲id
Service  Broker
cf unbind-service
DELETE
/v2/service_̲instances/:instance_̲id
/service_̲bindings/:binding_̲id
Spring  Boot  Overview
Spring  Boot
• Super  Easy  Framework  in  Java
start.spring.io
start.spring.io
start.spring.io
👈
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringBootApplication.run(
DemoApplication.class, args);
}
@GetMapping("/")
String hello() {
return "Hello World";
}
}
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringBootApplication.run(
DemoApplication.class, args);
}
@GetMapping("/")
String hello() {
return "Hello World";
}
}
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringBootApplication.run(
DemoApplication.class, args);
}
@GetMapping("/")
String hello() {
return "Hello World!";
}
}
Implement  Service  Broker
with  Spring  Boot
API  Overview
Cloud  Controller
Service
cf create-service PUT
/v2/service_̲instances/:instance_̲id
Service  Broker
cf delete-service DELETE
/v2/service_̲instances/:instance_̲id
Implement  APIs
@SpringBootApplication @RestController
public class FakeServiceBroker {
// ...
@GetMapping("/v2/catalog")
CatalogResponse showCatalog() {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}")
CreateResponse createServiceInstance(
@PathVariable String instanceId,
@RequestBody CreateRequest req) {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}")
BindResponse createServiceBinding(
@PathVariable String instanceId ,
@PathVariable String bindingId ,
@RequestBody BindRequest req) {/*...*/}
// ...
}
@SpringBootApplication @RestController
public class FakeServiceBroker {
// ...
@GetMapping("/v2/catalog")
CatalogResponse showCatalog() {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}")
CreateResponse createServiceInstance(
@PathVariable String instanceId,
@RequestBody CreateRequest req) {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}")
BindResponse createServiceBinding(
@PathVariable String instanceId ,
@PathVariable String bindingId ,
@RequestBody BindRequest req) {/*...*/}
// ...
}
A lot  of
parameters
Need  to  handle  
Exceptions  ...
@SpringBootApplication @RestController
public class FakeServiceBroker {
// ...
@GetMapping("/v2/catalog")
Map<String, Object> showCatalog() {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}")
Map<String, Object> createServiceInstance(
@PathVariable String instanceId,
@RequestBody Map<String, Object> req) {/*...*/}
@PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}")
Map<String, Object> createServiceBinding(
@PathVariable String instanceId ,
@PathVariable String bindingId ,
@RequestBody Map<String, Object> req) {/*...*/}
// ...
}
There  is  
a convenient  way
😎
Spring  Cloud  CloudFoundry Service  Broker
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-
service-broker</artifactId>
<version>1.0.0.RC3</version>
</dependency>
https://github.com/spring-­‐cloud/spring-­‐cloud-­‐cloudfoundry-­‐service-­‐broker
Service  Broker  API  Version: 2.8 (cf-‐‑‒release  v226+)
ServiceInstance
Controller
ServiceInstance
Service
@PutMapping
createServiceInstance
createServiceInstance
ServiceInstance
Controller
ServiceInstance
Service
@PutMapping
createServiceInstance
createServiceInstance
Provided You  implement
@Component
public class FakeServiceInstanceService
implements ServiceInstanceService {
public CreateServiceInstanceResponse createServiceInstance(
CreateServiceInstanceRequest req) {
String serviceInstanceId = req.getServiceInstanceId();
// ...
return new CreateServiceInstanceResponse();
}
public GetLastServiceOperationResponse getLastOperation(
GetLastServiceOperationRequest req) {/* ... */}
public DeleteServiceInstanceResponse deleteServiceInstance(
DeleteServiceInstanceRequest req) {/* ... */}
public UpdateServiceInstanceResponse updateServiceInstance(
UpdateServiceInstanceRequest req) {/* ... */}}
@Component
public class FakeServiceInstanceService
implements ServiceInstanceService {
public CreateServiceInstanceResponse createServiceInstance(
CreateServiceInstanceRequest req) {
String serviceInstanceId = req.getServiceInstanceId();
// ...
return new CreateServiceInstanceResponse();
}
public GetLastServiceOperationResponse getLastOperation(
GetLastServiceOperationRequest req) {/* ... */}
public DeleteServiceInstanceResponse deleteServiceInstance(
DeleteServiceInstanceRequest req) {/* ... */}
public UpdateServiceInstanceResponse updateServiceInstance(
UpdateServiceInstanceRequest req) {/* ... */}}
Corresponds  to
PUT  /v2/service_̲instances/:instance_̲id
@Component
public class FakeServiceInstanceBindingService
implements ServiceInstanceBindingService {
public CreateServiceInstanceBindingResponse createServiceInstanceBinding(
CreateServiceInstanceBindingRequest req) {
String serviceInstanceId = req.getServiceInstanceId();
String bindingId = req.getBindingId();
// ...
Map<String, Object> credentials = new HashMap<String, Object>() {{
put("url", "...");
put("username", "...");
put("password", "...");
}};
return new CreateServiceInstanceAppBindingResponse()
.withCredentials(credentials);
}
public void deleteServiceInstanceBinding(
DeleteServiceInstanceBindingRequest req) {
// ...
}
}
@Component
public class FakeServiceInstanceBindingService
implements ServiceInstanceBindingService {
public CreateServiceInstanceBindingResponse createServiceInstanceBinding(
CreateServiceInstanceBindingRequest req) {
String serviceInstanceId = req.getServiceInstanceId();
String bindingId = req.getBindingId();
// ...
Map<String, Object> credentials = new HashMap<String, Object>() {{
put("url", "...");
put("username", "...");
put("password", "...");
}};
return new CreateServiceInstanceAppBindingResponse()
.withCredentials(credentials);
}
public void deleteServiceInstanceBinding(
DeleteServiceInstanceBindingRequest req) {
// ...
}
}
Corresponds  to
PUT  /v2/service_̲instances/:instance_̲id
/service_̲bindings/:binding_̲id
@SpringBootApplication
public class FakeServiceBroker {
public static void main(String[] args) {
SpringBootApplication.run(
FakeServiceBroker.class, args);
}
@Bean
Catalog catalog() {
return new Catalog(singletonList(
new ServiceDefinition(
"fake-broker",
"p-fake",
"A fake service broker", ...)));
}
}
@SpringBootApplication
public class FakeServiceBroker {
public static void main(String[] args) {
SpringBootApplication.run(
FakeServiceBroker.class, args);
}
@Bean
Catalog catalog() {
return new Catalog(singletonList(
new ServiceDefinition(
"fake-broker",
"p-fake",
"A fake service broker", ...)));
}
}
Corresponds  to  GET  /v2/catalog
Authentication  Configuration
security.user.name=fake
security.user.password=fake
application.properties
https://github.com/making/fake-‐‑‒service-‐‑‒broker
Pivotal  Cloud  Foundry  for  Local  Development
https://docs.pivotal.io/pcf-‐‑‒dev/
Deploy  Service  Broker
to  Cloud  Foundry
$ ./mvnw clean package
$ cf push fake -p target/fake-1.0.0-SNAPSHOT.jar
$ curl http://fake.local.pcfdev.io/v2/catalog
Enable  Service  Broker
$ cf create-service-broker p-fake fake fake ÂĽ
http://fake.local.pcfdev.io
$ cf enable-service-access p-fake
Service  Name Username Password
Enable  Service  Broker
$ cf create-service-broker p-fake fake fake ÂĽ
http://fake.cfapp.io
Enable  Service  Broker
$ cf create-service-broker p-fake fake fake ÂĽ
http://fake.cfapp.io
Server error, status code: 403, error code:
10003, message: You are not authorized to
perform the requested action
😫
$ cf create-service-broker p-fake fake fake ÂĽ
http://fake.cfapps.io ÂĽ
--space-scoped
Enable  Service  Broker
(Space  Scoped)
CF  CLI  6.16.0+
p-fake free A fake service broker
🙌
Create  &  Bind  Service
$ cf create-service p-fake free fake
$ cf bind-service demo fake
References
• https://github.com/spring-‐‑‒cloud/spring-‐‑‒cloud-‐‑‒cloudfoundry-‐‑‒service-‐‑‒broker
• https://github.com/spring-‐‑‒cloud-‐‑‒samples/cloudfoundry-‐‑‒service-‐‑‒broker
• https://github.com/making/fake-‐‑‒service-‐‑‒broker
• https://github.com/making/caffeine-‐‑‒broker
• https://github.com/pivotal-‐‑‒cf/brokerapi (similar  project  in  Golang)
Announce
http://pivotal-‐‑‒japan.connpass.com
Pivotal  Japan  Technical  Meetup
2016/06/29(Wed)  18:30-‐‑‒

Weitere ähnliche Inhalte

Was ist angesagt?

Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoToshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsugToshiaki Maki
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Matt Raible
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSArun Gupta
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011Shreedhar Ganapathy
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019Matt Raible
 
Os Johnson
Os JohnsonOs Johnson
Os Johnsonoscon2007
 
Android MvRx Framework 介紹
Android MvRx Framework 介紹Android MvRx Framework 介紹
Android MvRx Framework 介紹Kros Huang
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Micronaut Launchpad
Micronaut LaunchpadMicronaut Launchpad
Micronaut LaunchpadZachary Klein
 
Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017VMware Tanzu Korea
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Matt Raible
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIToshiaki Maki
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseMatt Raible
 
If Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocsIf Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocsVMware Tanzu
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Matt Raible
 
Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your GraphVMware Tanzu
 
Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureZachary Klein
 

Was ist angesagt? (20)

Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
 
Os Johnson
Os JohnsonOs Johnson
Os Johnson
 
Android MvRx Framework 介紹
Android MvRx Framework 介紹Android MvRx Framework 介紹
Android MvRx Framework 介紹
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Micronaut Launchpad
Micronaut LaunchpadMicronaut Launchpad
Micronaut Launchpad
 
Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017Spring5 New Features - Nov, 2017
Spring5 New Features - Nov, 2017
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
If Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocsIf Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocs
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your Graph
 
Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro Future
 

Andere mochten auch

Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Toshiaki Maki
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_kToshiaki Maki
 
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoTeam Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoToshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugToshiaki Maki
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techToshiaki Maki
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...Toshiaki Maki
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup DemoToshiaki Maki
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaToshiaki Maki
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSHToshiaki Maki
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoToshiaki Maki
 
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugFrom Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugToshiaki Maki
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGToshiaki Maki
 
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Toshiaki Maki
 
Cloud Foundry | How it works
Cloud Foundry | How it worksCloud Foundry | How it works
Cloud Foundry | How it worksKazuto Kusama
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugToshiaki Maki
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Yuichi Hasegawa
 
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Toshiaki Maki
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overviewcornelia davis
 
Cloud Native PaaS Advantage
Cloud Native PaaS Advantage Cloud Native PaaS Advantage
Cloud Native PaaS Advantage WSO2
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFrameworkToshiaki Maki
 

Andere mochten auch (20)

Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
 
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
 
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyoTeam Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyo
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup Demo
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷Java
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSH
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
 
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjugFrom Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjug
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
 
Cloud Foundry | How it works
Cloud Foundry | How it worksCloud Foundry | How it works
Cloud Foundry | How it works
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
 
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
 
Cloud Native PaaS Advantage
Cloud Native PaaS Advantage Cloud Native PaaS Advantage
Cloud Native PaaS Advantage
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
 

Ähnlich wie Implement Service Broker with Spring Boot #cf_tokyo

Advanced #2 networking
Advanced #2   networkingAdvanced #2   networking
Advanced #2 networkingVitali Pekelis
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJoshua Long
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casellentuck
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSam Brannen
 
softshake 2014 - Java EE
softshake 2014 - Java EEsoftshake 2014 - Java EE
softshake 2014 - Java EEAlexis Hassler
 
Cloud native programming model comparison
Cloud native programming model comparisonCloud native programming model comparison
Cloud native programming model comparisonEmily Jiang
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020Matt Raible
 
May 2010 - RestEasy
May 2010 - RestEasyMay 2010 - RestEasy
May 2010 - RestEasyJBug Italy
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-AssuredMichel Schudel
 
My way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionMy way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionChristian Panadero
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
My way to clean android (EN) - Android day salamanca edition
My way to clean android (EN) - Android day salamanca editionMy way to clean android (EN) - Android day salamanca edition
My way to clean android (EN) - Android day salamanca editionChristian Panadero
 
L2 Web App Development Guest Lecture At University of Surrey 20/11/09
L2 Web App Development Guest Lecture At University of Surrey 20/11/09L2 Web App Development Guest Lecture At University of Surrey 20/11/09
L2 Web App Development Guest Lecture At University of Surrey 20/11/09Daniel Bryant
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Codemotion appengine
Codemotion appengineCodemotion appengine
Codemotion appengineIgnacio Coloma
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejugrobbiev
 

Ähnlich wie Implement Service Broker with Spring Boot #cf_tokyo (20)

Advanced #2 networking
Advanced #2   networkingAdvanced #2   networking
Advanced #2 networking
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
 
Arquitecturas de microservicios - Medianet Software
Arquitecturas de microservicios   -  Medianet SoftwareArquitecturas de microservicios   -  Medianet Software
Arquitecturas de microservicios - Medianet Software
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-cas
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
RESTEasy
RESTEasyRESTEasy
RESTEasy
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
softshake 2014 - Java EE
softshake 2014 - Java EEsoftshake 2014 - Java EE
softshake 2014 - Java EE
 
Cloud native programming model comparison
Cloud native programming model comparisonCloud native programming model comparison
Cloud native programming model comparison
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
 
May 2010 - RestEasy
May 2010 - RestEasyMay 2010 - RestEasy
May 2010 - RestEasy
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-Assured
 
My way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionMy way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca edition
 
Spring boot
Spring boot Spring boot
Spring boot
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
My way to clean android (EN) - Android day salamanca edition
My way to clean android (EN) - Android day salamanca editionMy way to clean android (EN) - Android day salamanca edition
My way to clean android (EN) - Android day salamanca edition
 
L2 Web App Development Guest Lecture At University of Surrey 20/11/09
L2 Web App Development Guest Lecture At University of Surrey 20/11/09L2 Web App Development Guest Lecture At University of Surrey 20/11/09
L2 Web App Development Guest Lecture At University of Surrey 20/11/09
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Codemotion appengine
Codemotion appengineCodemotion appengine
Codemotion appengine
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
 

Mehr von Toshiaki Maki

Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoToshiaki Maki
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tToshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Toshiaki Maki
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpToshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoToshiaki Maki
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jpToshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07Toshiaki Maki
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
 

Mehr von Toshiaki Maki (11)

Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
 

KĂźrzlich hochgeladen

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vĂĄzquez
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

KĂźrzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Implement Service Broker with Spring Boot #cf_tokyo

  • 1. Implement  Service  Broker   with  Spring  Boot Toshiaki  Maki  (@making) Sr.  Solutions  Architect  @Pivotal 2016-‐‑‒06-‐‑‒01  Cloud  Foundry  Tokyo  Meetup #2
  • 2. Who  am  I  ? •Toshiaki  Maki  (@making) •https://blog.ik.am •Sr.  Solutions  Architect •Spring  Framework  enthusiast Spring Framework 徹底⼊入⾨門 (Coming   Soon?) パーフェクト Java  EE (Coming   Soon?)
  • 3. Today's  Topic •Service  Broker  Overview •Spring  Boot  Overview •Implement  Service  Broker with  Spring  Boot
  • 5. Services  in  Cloud  Foundry Application Service  Broker Service  Instance User  Provided  Service Managed  Services MySQL Redis RabbitMQ ex.)  Oracle  DB create-‐‑‒user-‐‑‒provided-‐‑‒servicecreate-‐‑‒service bind-‐‑‒service marketplace
  • 6. Services  in  Cloud  Foundry Application Service  Broker Service  Instance User  Provided  Service Managed  Services MySQL Redis RabbitMQ ex.)  Oracle  DB create-‐‑‒user-‐‑‒provided-‐‑‒servicecreate-‐‑‒service bind-‐‑‒service marketplace 👇
  • 7. 7  APIs  in  Service  Broker • GET  /v2/catalog • PUT  /v2/service_̲instances/:instance_̲id • PATCH  /v2/service_̲instances/:instance_̲id • DELETE  /v2/service_̲instances/:instance_̲id • PUT  /v2/service_̲instances/:instance_̲id/service_̲bindings/:binding_̲id • DELETE  /v2/service_̲instances/:instance_̲id/service_̲bindings/:binding_̲id • GET  /v2/service_̲instances/:instance_̲id/last_̲operation
  • 8. API  Overview (create  service) Cloud  Controller Service cf create-service PUT /v2/service_̲instances/:instance_̲id Service  Broker cf delete-service DELETE /v2/service_̲instances/:instance_̲id
  • 9. API  Overview  (bind  service) Cloud  Controller Service cf bind-service PUT /v2/service_̲instances/:instance_̲id /service_̲bindings/:binding_̲id Service  Broker cf unbind-service DELETE /v2/service_̲instances/:instance_̲id /service_̲bindings/:binding_̲id
  • 11. Spring  Boot • Super  Easy  Framework  in  Java
  • 15.
  • 16.
  • 17. @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringBootApplication.run( DemoApplication.class, args); } @GetMapping("/") String hello() { return "Hello World"; } }
  • 18. @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringBootApplication.run( DemoApplication.class, args); } @GetMapping("/") String hello() { return "Hello World"; } }
  • 19. @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringBootApplication.run( DemoApplication.class, args); } @GetMapping("/") String hello() { return "Hello World!"; } }
  • 21. API  Overview Cloud  Controller Service cf create-service PUT /v2/service_̲instances/:instance_̲id Service  Broker cf delete-service DELETE /v2/service_̲instances/:instance_̲id Implement  APIs
  • 22. @SpringBootApplication @RestController public class FakeServiceBroker { // ... @GetMapping("/v2/catalog") CatalogResponse showCatalog() {/*...*/} @PutMapping("/v2/service_instances/{instanceId}") CreateResponse createServiceInstance( @PathVariable String instanceId, @RequestBody CreateRequest req) {/*...*/} @PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}") BindResponse createServiceBinding( @PathVariable String instanceId , @PathVariable String bindingId , @RequestBody BindRequest req) {/*...*/} // ... }
  • 23. @SpringBootApplication @RestController public class FakeServiceBroker { // ... @GetMapping("/v2/catalog") CatalogResponse showCatalog() {/*...*/} @PutMapping("/v2/service_instances/{instanceId}") CreateResponse createServiceInstance( @PathVariable String instanceId, @RequestBody CreateRequest req) {/*...*/} @PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}") BindResponse createServiceBinding( @PathVariable String instanceId , @PathVariable String bindingId , @RequestBody BindRequest req) {/*...*/} // ... } A lot  of parameters Need  to  handle   Exceptions  ...
  • 24. @SpringBootApplication @RestController public class FakeServiceBroker { // ... @GetMapping("/v2/catalog") Map<String, Object> showCatalog() {/*...*/} @PutMapping("/v2/service_instances/{instanceId}") Map<String, Object> createServiceInstance( @PathVariable String instanceId, @RequestBody Map<String, Object> req) {/*...*/} @PutMapping("/v2/service_instances/{instanceId}/service_bindings/{bindingId}") Map<String, Object> createServiceBinding( @PathVariable String instanceId , @PathVariable String bindingId , @RequestBody Map<String, Object> req) {/*...*/} // ... } There  is   a convenient  way 😎
  • 25. Spring  Cloud  CloudFoundry Service  Broker <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-cloudfoundry- service-broker</artifactId> <version>1.0.0.RC3</version> </dependency> https://github.com/spring-­‐cloud/spring-­‐cloud-­‐cloudfoundry-­‐service-­‐broker Service  Broker  API  Version: 2.8 (cf-‐‑‒release  v226+)
  • 28. @Component public class FakeServiceInstanceService implements ServiceInstanceService { public CreateServiceInstanceResponse createServiceInstance( CreateServiceInstanceRequest req) { String serviceInstanceId = req.getServiceInstanceId(); // ... return new CreateServiceInstanceResponse(); } public GetLastServiceOperationResponse getLastOperation( GetLastServiceOperationRequest req) {/* ... */} public DeleteServiceInstanceResponse deleteServiceInstance( DeleteServiceInstanceRequest req) {/* ... */} public UpdateServiceInstanceResponse updateServiceInstance( UpdateServiceInstanceRequest req) {/* ... */}}
  • 29. @Component public class FakeServiceInstanceService implements ServiceInstanceService { public CreateServiceInstanceResponse createServiceInstance( CreateServiceInstanceRequest req) { String serviceInstanceId = req.getServiceInstanceId(); // ... return new CreateServiceInstanceResponse(); } public GetLastServiceOperationResponse getLastOperation( GetLastServiceOperationRequest req) {/* ... */} public DeleteServiceInstanceResponse deleteServiceInstance( DeleteServiceInstanceRequest req) {/* ... */} public UpdateServiceInstanceResponse updateServiceInstance( UpdateServiceInstanceRequest req) {/* ... */}} Corresponds  to PUT  /v2/service_̲instances/:instance_̲id
  • 30. @Component public class FakeServiceInstanceBindingService implements ServiceInstanceBindingService { public CreateServiceInstanceBindingResponse createServiceInstanceBinding( CreateServiceInstanceBindingRequest req) { String serviceInstanceId = req.getServiceInstanceId(); String bindingId = req.getBindingId(); // ... Map<String, Object> credentials = new HashMap<String, Object>() {{ put("url", "..."); put("username", "..."); put("password", "..."); }}; return new CreateServiceInstanceAppBindingResponse() .withCredentials(credentials); } public void deleteServiceInstanceBinding( DeleteServiceInstanceBindingRequest req) { // ... } }
  • 31. @Component public class FakeServiceInstanceBindingService implements ServiceInstanceBindingService { public CreateServiceInstanceBindingResponse createServiceInstanceBinding( CreateServiceInstanceBindingRequest req) { String serviceInstanceId = req.getServiceInstanceId(); String bindingId = req.getBindingId(); // ... Map<String, Object> credentials = new HashMap<String, Object>() {{ put("url", "..."); put("username", "..."); put("password", "..."); }}; return new CreateServiceInstanceAppBindingResponse() .withCredentials(credentials); } public void deleteServiceInstanceBinding( DeleteServiceInstanceBindingRequest req) { // ... } } Corresponds  to PUT  /v2/service_̲instances/:instance_̲id /service_̲bindings/:binding_̲id
  • 32. @SpringBootApplication public class FakeServiceBroker { public static void main(String[] args) { SpringBootApplication.run( FakeServiceBroker.class, args); } @Bean Catalog catalog() { return new Catalog(singletonList( new ServiceDefinition( "fake-broker", "p-fake", "A fake service broker", ...))); } }
  • 33. @SpringBootApplication public class FakeServiceBroker { public static void main(String[] args) { SpringBootApplication.run( FakeServiceBroker.class, args); } @Bean Catalog catalog() { return new Catalog(singletonList( new ServiceDefinition( "fake-broker", "p-fake", "A fake service broker", ...))); } } Corresponds  to  GET  /v2/catalog
  • 36. Pivotal  Cloud  Foundry  for  Local  Development https://docs.pivotal.io/pcf-‐‑‒dev/
  • 37. Deploy  Service  Broker to  Cloud  Foundry $ ./mvnw clean package $ cf push fake -p target/fake-1.0.0-SNAPSHOT.jar $ curl http://fake.local.pcfdev.io/v2/catalog
  • 38. Enable  Service  Broker $ cf create-service-broker p-fake fake fake ÂĽ http://fake.local.pcfdev.io $ cf enable-service-access p-fake Service  Name Username Password
  • 39.
  • 40. Enable  Service  Broker $ cf create-service-broker p-fake fake fake ÂĽ http://fake.cfapp.io
  • 41. Enable  Service  Broker $ cf create-service-broker p-fake fake fake ÂĽ http://fake.cfapp.io Server error, status code: 403, error code: 10003, message: You are not authorized to perform the requested action 😫
  • 42. $ cf create-service-broker p-fake fake fake ÂĽ http://fake.cfapps.io ÂĽ --space-scoped Enable  Service  Broker (Space  Scoped) CF  CLI  6.16.0+
  • 43. p-fake free A fake service broker 🙌
  • 44. Create  &  Bind  Service $ cf create-service p-fake free fake $ cf bind-service demo fake
  • 45.
  • 46.
  • 47. References • https://github.com/spring-‐‑‒cloud/spring-‐‑‒cloud-‐‑‒cloudfoundry-‐‑‒service-‐‑‒broker • https://github.com/spring-‐‑‒cloud-‐‑‒samples/cloudfoundry-‐‑‒service-‐‑‒broker • https://github.com/making/fake-‐‑‒service-‐‑‒broker • https://github.com/making/caffeine-‐‑‒broker • https://github.com/pivotal-‐‑‒cf/brokerapi (similar  project  in  Golang)