SlideShare a Scribd company logo
1 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
クラウド時代のSpring Framework
Tsuyoshi Miyake, Pivotal Software, Inc.
@tsuyokb
2 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
アジェンダ
§ Spring Framework 振り返り
§ Spring 2015
§ Cloud Foundry
• 歴史
• Java/Spring との関連
§ Spring Cloud
• 概要
• 各種サブプロジェクトの詳細
3 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Framework 振り返り
4 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
“Don't call us, we'll call you
- Hollywood principle
5 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Framework とは、その昔何だったか?
§ Expert One-on-One J2EE Development without EJB – Chapter 7
“Introducing the Spring Framework” より
• Bean factory
• Application Context
• AOP framework
• Auto-proxing
• Transaction management
• DAO abstraction
• JDBC support
• Integration with O/R mapping tools
• Web MVC framework
• Remoting Support
6 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring 2015
7 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform
8 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cloud Foundry とは?
9 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring と Cloud Foundry のちょっとした歴史
“Cloud Foundry will be the natural
cloud deployment choice for Spring
developers.
Launching Cloud Foundry, The Industry’s First Open PaaS
Rod Johnson, Spring Engineering Blog, Apr 12 2011
10 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring/Java 開発者にとっての Cloud Foundry の 3 つの意味
As App Devs As Dev Ops CF Core
• UAA/Login Server
with Spring Security
• Java Buildpack
• Service Broker with
Spring Boot/MVC
• Spring + Grails native
support
• Gradle, Maven plugin
• Eclipse CF plugin
• Spring Cloud
(Today’s Topic)
11 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud
12 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud とは?
§ 分散環境で Cloud Native なアプリケーションを作成するためのフレームワーク
• SpringOne 2GX 2014 で発表
§ 元々は PaaS 上で利用できるサービスをアプリから使いやすくするためのもの
• 現在は Spring Cloud Connectors と呼ばれるもの
§ Spring Data 同様、複数プロジェクトを束ねるアンブレラ・プロジェクト
• Spring Cloud Config
• Spring Cloud Bus
• Spring Cloud Netflix
• Spring Cloud Connectors
13 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Config (1/2)
§ 設定(Profile, Property)を外出しにして REST 経由でアクセスするしくみ
§ Config Server が設定を提供、Config Client が設定を利用
§ バックエンドは Git のレポジトリ(デフォルト)、バージョン管理ができる
Config ServerGit レポジトリ
アプリ A (Config Client)
1. Push Config 2. Source Config
param: xxx
アプリ B (Config Client) アプリ C (Config Client)
param: xxx param: xxx param: xxx
3. Pull Config
14 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Config (2/2)
§ /{application}/{profile}[/{label}] => /foo/dev で foo-dev.properties にアクセス
§ @EnableConfigServer アノテーションで便利に ConfigServer になる
§ 暗号化のビルトイン・サポート
@Configuration
@EnableAutoConfiguration
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
15 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Bus
§ 分散環境のノード間を Lightweight な Message Broker で結ぶ仕組み
§ 現在は AMQP のみのサポート
Config ServerGit レポジトリ
アプリ A (Config Client)
1. Update Config 2. Source Config
param: yyy
アプリ B (Config Client) アプリ C (Config Client)
param: yyy param: yyy param: yyy
4b. Pull Update
3. Post /bus/refresh
Config Bus
4a. メッセージ送信 5a. メッセージ受信
5b. Pull Update
16 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Netflix
§ Netflix OSS を Spring Boot と組み合わせて便利(Annotation)に使う仕組み
• https://github.com/Netflix/
• http://netflix.github.io/
§ Service Discovery (Eureka)
§ Client Side Load Balancing (Ribbon)
§ Circuit Breaker (Hystrix)
§ Intelligent Routing (Zuul)
17 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Service Discovery (Eureka)
§ いわゆる Service Locator パターン
§ 自動で負荷分散 (round-robin)
§ @EnableDiscoveryClient で DiscoveryClient が Inject される
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
@Autowired
DiscoveryClient discoveryClient;
public void consume() {
InstanceInfo instance =
discoveryClient.getNextServerFromEureka("hostname”, false);
}
}
Service
Registry
Producer
1. Register
Consumer
2. Discover
3. Connect
18 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Side Load Balancing (Ribbon)
§ 複数の負荷分散ルールに対応(round-robin、平均レスポンス時間、ランダム)
§ 単体で Fault tolerance 機能(サーバーリストを保持)
§ DiscoveryClient の代わりに LoadBalancerClient が Inject される
§ またはより便利に Ribbon-enabled な RestTemplate も Inject 可能
@Autowired
LoadBalancerClient lbClient;
public void consume() {
ServiceInstance instance = lbClient.choose("hostname”);
}
@Autowired
RestTemplate restTemplate;
public void consume() {
ProducerResponse response = restTemplate.getForObject(”http://producer”, ..);
}
19 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Circuit Breaker (Hystrix) (1/2)
§ “Release It!” Circuit breakers パターン
@EnableCircuitBreaker
public class Application {
@HystrixCommand(fallback = "doFallback")
public void doSomething() {}
public void doFallback() {}
}
Closed
call falis
(count failure)
call succeeds
(reset count)
Open
failure > threshold
(trip breaker)
timeout
(attempt reset)
Half-Open
call fails
(trip breaker)call succeeds
(reset)
20 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Circuit Breaker (Hystrix) (2/2)
21 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Connectors
§ クラウド内のアプリケーション環境、およびサービスの抽象化
§ 多様なクラウドへの対応
• Cloud Foundry
• Heroku
• Local
§ 拡張性
• 新クラウド環境への対応
• 新サービスへの対応
• 新フレームワークへの対応
22 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
“Spring Cloud Connectors
= DI Container for Cloud OS
- 詠み人知らず
23 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring が昔、目指したもの
Application
Application Information
(Context)
Service
Service
Service
24 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring が今、目指しているもの
Application
Application Information
(Context)
Service
Service
Service
25 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cloud Foundry: アプリケーションのデプロイ
① アプリケーショ
ンとメタデータ
の push
push app
Router
② サービスの作成とバインド
③ アプリケーションのステージング
④ アプリケーションのデプロイ
⑤ アプリケーションのヘルスチェック
Pivotal	CF	
Elastic	Runtime
Blobstore DB
Cloud
Controller
Service Broker
Node(s)
DEA
DEA
DEA
DEA
+ app MD
+ =
Service
credentials
26 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cloud Foundry: サービスの作成とバインド
Router
Cloud	Foundry
Runtime	(ERS)
DB
Service
credentials
reserve resourcescreate service (HTTP) create service (HTTP)
bind service (HTTP)bind service (HTTP)
obtain connection
data
CLI Cloud
Controller
Service
Broker
Data
Service
27 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Service Scan (@ServiceScan)
§ Java Config (@Configuration) と併用
§ アプリケーションにバインドされたサービスをスキャン
§ 各サービスについて Bean を作成
§ (Option) クラウド環境でのみ有効にするためには @Profile(“cloud”) を追加
@Configuration
@ServiceScan
// @Profile("cloud”)
public class CloudConfig {
}
28 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Service Scan (@ServiceScan) カスタマイズ
§ パターン 1 : 同一タイプのサービス (e.g. DataSource) が 2 つ以上ある
§ パターン 2 : 各サービスの細かな設定が必要
§ パターン 3 : 独自サービスが必要
@Configuration
public class CloudConfig extends AbstractCloudConfig {
@Bean
public DataSource mysqlDataSource() {
return connectionFactory().dataSource("mysql-service");
}
@Bean
public DataSource postgresDataSource() {
PoolConfig poolConfig = new PoolConfig(20, 200);
ConnectionConfig connectionConfig = new
ConnectionConfig("characterEncoding=UTF-8");
DataSourceConfig serviceConfig = new DataSourceConfig(poolConfig,
connectionConfig);
return connectionFactory().dataSource("postgres-service”, serviceConfig);
}
}
29 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
新しいクラウド環境への拡張 (Cloud Platform) (1/2)
§ CloudConnector interface を実装
• isInMatchingCloud(): 意図した Cloud 環境かどうかを判定
• getApplicationInstanceInfo(): アプリケーションの情報(ID, ホスト名など)を返す
• getServiceInfos(): アプリケーションが利用可能なサービスの接続情報を返す
§ Cloud Platform の登録
• META-INF/services/org.springframework.cloud.CloudConnector に実装クラス
• java.util.ServiceLoader により load() される
public interface CloudConnector {
boolean isInMatchingCloud();
ApplicationInstanceInfo getApplicationInstanceInfo();
List<ServiceInfo> getServiceInfos();
}
30 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
新しいクラウド環境への拡張 (Cloud Platform) (2/2)
§ CloudFoundry での実装例 (CloudFoundryConnector)
public class CloudFoundryConnector extends
AbstractCloudConnector<Map<String,Object>> {
public boolean isInMatchingCloud() {
return environment.getEnvValue("VCAP_APPLICATION") != null;
}
public ApplicationInstanceInfo getApplicationInstanceInfo() {
Map<String, Object> rawApplicationInstanceInfo =
objectMapper.readValue(
environment.getEnvValue("VCAP_APPLICATION"), Map.class);
}
protected List<Map<String,Object>> getServicesData() {
String servicesString = environment.getEnvValue("VCAP_SERVICES");
}
}
31 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Learn More. Stay Connected.
§ Spring Cloud Project: http://projects.spring.io/spring-cloud/
§ Spring Cloud Source: https://github.com/spring-cloud
§ Spring Cloud Sample: https://github.com/spring-cloud-samples
§ Netflix OSS: http://netflix.github.io/
§ Spring Cloud Connectors Blogs
• https://spring.io/blog/2014/06/03/introducing-spring-cloud
• https://spring.io/blog/2014/07/29/using-spring-cloud-programmatically
• https://spring.io/blog/2014/08/05/extending-spring-cloud

More Related Content

What's hot

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
Toshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki 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 #JavaDayTokyo
Toshiaki Maki
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
Toshiaki Maki
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
Toshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
Toshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Toshiaki Maki
 
Serverless Spring 오충현
Serverless Spring 오충현Serverless Spring 오충현
Serverless Spring 오충현
VMware Tanzu Korea
 
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
Toshiaki Maki
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
Matt Stine
 
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
Toshiaki Maki
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Matt Raible
 
Cloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven MicroservicesCloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
 
Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your Graph
VMware Tanzu
 
2017年のLINEのマイクロサービスを支えるSpring
2017年のLINEのマイクロサービスを支えるSpring2017年のLINEのマイクロサービスを支えるSpring
2017年のLINEのマイクロサービスを支えるSpring
LINE Corporation
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
Matt Stine
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
David Delabassee
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and Micronaut
Zachary Klein
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring Developers
Gunnar Hillert
 

What's hot (20)

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
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
 
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
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
Serverless Spring 오충현
Serverless Spring 오충현Serverless Spring 오충현
Serverless Spring 오충현
 
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
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
 
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
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
 
Cloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven MicroservicesCloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven Microservices
 
Spring Up Your Graph
Spring Up Your GraphSpring Up Your Graph
Spring Up Your Graph
 
2017年のLINEのマイクロサービスを支えるSpring
2017年のLINEのマイクロサービスを支えるSpring2017年のLINEのマイクロサービスを支えるSpring
2017年のLINEのマイクロサービスを支えるSpring
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and Micronaut
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring Developers
 

Viewers also liked

MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
Masahiro Tomita
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Boot
なべ
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a NutshellTsuyoshi Miyake
 
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera Japan
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Japan
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a Nutshell
Tsuyoshi Miyake
 
Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017
Cloudera Japan
 
#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計
Cloudera Japan
 
Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016
Cloudera Japan
 
Hue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejpHue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejp
Cloudera Japan
 
先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方
Cloudera Japan
 
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Cloudera Japan
 
How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017
Cloudera Japan
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Cloudera Japan
 
Apache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechApache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentech
Cloudera Japan
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
Cloudera Japan
 

Viewers also liked (16)

MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
 
はじめてのSpring Boot
はじめてのSpring BootはじめてのSpring Boot
はじめてのSpring Boot
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a Nutshell
 
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
Cloudera + MicrosoftでHadoopするのがイイらしい。 #CWT2016
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a Nutshell
 
Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017Cloudera in the Cloud #CWT2017
Cloudera in the Cloud #CWT2017
 
#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計
 
Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016Cloud Native Hadoop #cwt2016
Cloud Native Hadoop #cwt2016
 
Hue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejpHue 4.0 / Hue Meetup Tokyo #huejp
Hue 4.0 / Hue Meetup Tokyo #huejp
 
先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方先行事例から学ぶ IoT / ビッグデータの始め方
先行事例から学ぶ IoT / ビッグデータの始め方
 
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
Clouderaが提供するエンタープライズ向け運用、データ管理ツールの使い方 #CW2017
 
How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017How to go into production your machine learning models? #CWT2017
How to go into production your machine learning models? #CWT2017
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
 
Apache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechApache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentech
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
 

Similar to クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)

12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
Spring Integration Done Bootifully
Spring Integration Done BootifullySpring Integration Done Bootifully
Spring Integration Done Bootifully
Glenn Renfro
 
Spring Cloud on Kubernetes
Spring Cloud on KubernetesSpring Cloud on Kubernetes
Spring Cloud on Kubernetes
VMware Tanzu
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott Andrews
VMware Tanzu
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud Cache
VMware Tanzu
 
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and ConcourseSDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
VMware Tanzu
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
VMware Tanzu
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
Chris Sterling
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
Joe Stein
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
VMware Tanzu
 
Quickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud ServicesQuickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud Services
VMware Tanzu
 
Heavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large FoundationsHeavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large Foundations
VMware Tanzu
 
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
OpenStack Korea Community
 
Simplifying Apache Geode with Spring Data
Simplifying Apache Geode with Spring DataSimplifying Apache Geode with Spring Data
Simplifying Apache Geode with Spring Data
VMware Tanzu
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
VMware Tanzu
 
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-InSteeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
VMware Tanzu
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with Istio
VMware Tanzu
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
S1P: Spring Cloud on PKS
S1P: Spring Cloud on PKSS1P: Spring Cloud on PKS
S1P: Spring Cloud on PKS
Mauricio (Salaboy) Salatino
 
P to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to ContainersP to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to Containers
VMware Tanzu
 

Similar to クラウド時代の Spring Framework (aka Spring Framework in Cloud Era) (20)

12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
 
Spring Integration Done Bootifully
Spring Integration Done BootifullySpring Integration Done Bootifully
Spring Integration Done Bootifully
 
Spring Cloud on Kubernetes
Spring Cloud on KubernetesSpring Cloud on Kubernetes
Spring Cloud on Kubernetes
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott Andrews
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud Cache
 
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and ConcourseSDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
 
Quickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud ServicesQuickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud Services
 
Heavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large FoundationsHeavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large Foundations
 
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
 
Simplifying Apache Geode with Spring Data
Simplifying Apache Geode with Spring DataSimplifying Apache Geode with Spring Data
Simplifying Apache Geode with Spring Data
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
 
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-InSteeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
Steeltoe: Develop .NET Microservices Without Cloud Platform Lock-In
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with Istio
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
S1P: Spring Cloud on PKS
S1P: Spring Cloud on PKSS1P: Spring Cloud on PKS
S1P: Spring Cloud on PKS
 
P to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to ContainersP to V to C: The Value of Bringing “Everything” to Containers
P to V to C: The Value of Bringing “Everything” to Containers
 

More from Tsuyoshi Miyake

猿でもわかる DevOps
猿でもわかる DevOps猿でもわかる DevOps
猿でもわかる DevOps
Tsuyoshi Miyake
 
はじめての JFrog Platform V2
はじめての JFrog Platform V2はじめての JFrog Platform V2
はじめての JFrog Platform V2
Tsuyoshi Miyake
 
はじめての JFrog Distribution
はじめての JFrog Distributionはじめての JFrog Distribution
はじめての JFrog Distribution
Tsuyoshi Miyake
 
はじめての JFrog Pipelines
はじめての JFrog Pipelinesはじめての JFrog Pipelines
はじめての JFrog Pipelines
Tsuyoshi Miyake
 
はじめての JFrog Xray
はじめての JFrog Xrayはじめての JFrog Xray
はじめての JFrog Xray
Tsuyoshi Miyake
 
はじめての JFrog Artifactory
はじめての JFrog Artifactoryはじめての JFrog Artifactory
はじめての JFrog Artifactory
Tsuyoshi Miyake
 
はじめての JFrog Platform
はじめての JFrog Platformはじめての JFrog Platform
はじめての JFrog Platform
Tsuyoshi Miyake
 
猿でもわかる Helm
猿でもわかる Helm猿でもわかる Helm
猿でもわかる Helm
Tsuyoshi Miyake
 
Artifact Driven CI/CD
Artifact Driven CI/CDArtifact Driven CI/CD
Artifact Driven CI/CD
Tsuyoshi Miyake
 
猿でもわかるサーバーレス
猿でもわかるサーバーレス猿でもわかるサーバーレス
猿でもわかるサーバーレス
Tsuyoshi Miyake
 
Java 開発者のための次世代 DevOps: BinOps
Java 開発者のための次世代 DevOps: BinOpsJava 開発者のための次世代 DevOps: BinOps
Java 開発者のための次世代 DevOps: BinOps
Tsuyoshi Miyake
 
カエルと実践するコンテナ
カエルと実践するコンテナカエルと実践するコンテナ
カエルと実践するコンテナ
Tsuyoshi Miyake
 
猿でもわかるコンテナ・オーケストレーション
猿でもわかるコンテナ・オーケストレーション猿でもわかるコンテナ・オーケストレーション
猿でもわかるコンテナ・オーケストレーション
Tsuyoshi Miyake
 
猿でもわかるコンテナ
猿でもわかるコンテナ猿でもわかるコンテナ
猿でもわかるコンテナ
Tsuyoshi Miyake
 
カエルと実践する CI/CD CD 編
カエルと実践する CI/CD CD 編カエルと実践する CI/CD CD 編
カエルと実践する CI/CD CD 編
Tsuyoshi Miyake
 
カエルと実践する CI/CD CI 編
カエルと実践する CI/CD CI 編カエルと実践する CI/CD CI 編
カエルと実践する CI/CD CI 編
Tsuyoshi Miyake
 
猿でもわかる CI/CD
猿でもわかる CI/CD猿でもわかる CI/CD
猿でもわかる CI/CD
Tsuyoshi Miyake
 
カエルと実践するバイナリ・リポジトリマネージャー
カエルと実践するバイナリ・リポジトリマネージャーカエルと実践するバイナリ・リポジトリマネージャー
カエルと実践するバイナリ・リポジトリマネージャー
Tsuyoshi Miyake
 
猿でもわかるバイナリ・リポジトリマネージャー
猿でもわかるバイナリ・リポジトリマネージャー猿でもわかるバイナリ・リポジトリマネージャー
猿でもわかるバイナリ・リポジトリマネージャー
Tsuyoshi Miyake
 

More from Tsuyoshi Miyake (19)

猿でもわかる DevOps
猿でもわかる DevOps猿でもわかる DevOps
猿でもわかる DevOps
 
はじめての JFrog Platform V2
はじめての JFrog Platform V2はじめての JFrog Platform V2
はじめての JFrog Platform V2
 
はじめての JFrog Distribution
はじめての JFrog Distributionはじめての JFrog Distribution
はじめての JFrog Distribution
 
はじめての JFrog Pipelines
はじめての JFrog Pipelinesはじめての JFrog Pipelines
はじめての JFrog Pipelines
 
はじめての JFrog Xray
はじめての JFrog Xrayはじめての JFrog Xray
はじめての JFrog Xray
 
はじめての JFrog Artifactory
はじめての JFrog Artifactoryはじめての JFrog Artifactory
はじめての JFrog Artifactory
 
はじめての JFrog Platform
はじめての JFrog Platformはじめての JFrog Platform
はじめての JFrog Platform
 
猿でもわかる Helm
猿でもわかる Helm猿でもわかる Helm
猿でもわかる Helm
 
Artifact Driven CI/CD
Artifact Driven CI/CDArtifact Driven CI/CD
Artifact Driven CI/CD
 
猿でもわかるサーバーレス
猿でもわかるサーバーレス猿でもわかるサーバーレス
猿でもわかるサーバーレス
 
Java 開発者のための次世代 DevOps: BinOps
Java 開発者のための次世代 DevOps: BinOpsJava 開発者のための次世代 DevOps: BinOps
Java 開発者のための次世代 DevOps: BinOps
 
カエルと実践するコンテナ
カエルと実践するコンテナカエルと実践するコンテナ
カエルと実践するコンテナ
 
猿でもわかるコンテナ・オーケストレーション
猿でもわかるコンテナ・オーケストレーション猿でもわかるコンテナ・オーケストレーション
猿でもわかるコンテナ・オーケストレーション
 
猿でもわかるコンテナ
猿でもわかるコンテナ猿でもわかるコンテナ
猿でもわかるコンテナ
 
カエルと実践する CI/CD CD 編
カエルと実践する CI/CD CD 編カエルと実践する CI/CD CD 編
カエルと実践する CI/CD CD 編
 
カエルと実践する CI/CD CI 編
カエルと実践する CI/CD CI 編カエルと実践する CI/CD CI 編
カエルと実践する CI/CD CI 編
 
猿でもわかる CI/CD
猿でもわかる CI/CD猿でもわかる CI/CD
猿でもわかる CI/CD
 
カエルと実践するバイナリ・リポジトリマネージャー
カエルと実践するバイナリ・リポジトリマネージャーカエルと実践するバイナリ・リポジトリマネージャー
カエルと実践するバイナリ・リポジトリマネージャー
 
猿でもわかるバイナリ・リポジトリマネージャー
猿でもわかるバイナリ・リポジトリマネージャー猿でもわかるバイナリ・リポジトリマネージャー
猿でもわかるバイナリ・リポジトリマネージャー
 

Recently uploaded

Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 

Recently uploaded (20)

Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 

クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)

  • 1. 1 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ クラウド時代のSpring Framework Tsuyoshi Miyake, Pivotal Software, Inc. @tsuyokb
  • 2. 2 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ アジェンダ § Spring Framework 振り返り § Spring 2015 § Cloud Foundry • 歴史 • Java/Spring との関連 § Spring Cloud • 概要 • 各種サブプロジェクトの詳細
  • 3. 3 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Framework 振り返り
  • 4. 4 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ “Don't call us, we'll call you - Hollywood principle
  • 5. 5 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Framework とは、その昔何だったか? § Expert One-on-One J2EE Development without EJB – Chapter 7 “Introducing the Spring Framework” より • Bean factory • Application Context • AOP framework • Auto-proxing • Transaction management • DAO abstraction • JDBC support • Integration with O/R mapping tools • Web MVC framework • Remoting Support
  • 6. 6 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring 2015
  • 7. 7 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring IO Platform
  • 8. 8 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cloud Foundry とは?
  • 9. 9 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring と Cloud Foundry のちょっとした歴史 “Cloud Foundry will be the natural cloud deployment choice for Spring developers. Launching Cloud Foundry, The Industry’s First Open PaaS Rod Johnson, Spring Engineering Blog, Apr 12 2011
  • 10. 10 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring/Java 開発者にとっての Cloud Foundry の 3 つの意味 As App Devs As Dev Ops CF Core • UAA/Login Server with Spring Security • Java Buildpack • Service Broker with Spring Boot/MVC • Spring + Grails native support • Gradle, Maven plugin • Eclipse CF plugin • Spring Cloud (Today’s Topic)
  • 11. 11 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud
  • 12. 12 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud とは? § 分散環境で Cloud Native なアプリケーションを作成するためのフレームワーク • SpringOne 2GX 2014 で発表 § 元々は PaaS 上で利用できるサービスをアプリから使いやすくするためのもの • 現在は Spring Cloud Connectors と呼ばれるもの § Spring Data 同様、複数プロジェクトを束ねるアンブレラ・プロジェクト • Spring Cloud Config • Spring Cloud Bus • Spring Cloud Netflix • Spring Cloud Connectors
  • 13. 13 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Config (1/2) § 設定(Profile, Property)を外出しにして REST 経由でアクセスするしくみ § Config Server が設定を提供、Config Client が設定を利用 § バックエンドは Git のレポジトリ(デフォルト)、バージョン管理ができる Config ServerGit レポジトリ アプリ A (Config Client) 1. Push Config 2. Source Config param: xxx アプリ B (Config Client) アプリ C (Config Client) param: xxx param: xxx param: xxx 3. Pull Config
  • 14. 14 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Config (2/2) § /{application}/{profile}[/{label}] => /foo/dev で foo-dev.properties にアクセス § @EnableConfigServer アノテーションで便利に ConfigServer になる § 暗号化のビルトイン・サポート @Configuration @EnableAutoConfiguration @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
  • 15. 15 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Bus § 分散環境のノード間を Lightweight な Message Broker で結ぶ仕組み § 現在は AMQP のみのサポート Config ServerGit レポジトリ アプリ A (Config Client) 1. Update Config 2. Source Config param: yyy アプリ B (Config Client) アプリ C (Config Client) param: yyy param: yyy param: yyy 4b. Pull Update 3. Post /bus/refresh Config Bus 4a. メッセージ送信 5a. メッセージ受信 5b. Pull Update
  • 16. 16 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Netflix § Netflix OSS を Spring Boot と組み合わせて便利(Annotation)に使う仕組み • https://github.com/Netflix/ • http://netflix.github.io/ § Service Discovery (Eureka) § Client Side Load Balancing (Ribbon) § Circuit Breaker (Hystrix) § Intelligent Routing (Zuul)
  • 17. 17 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Service Discovery (Eureka) § いわゆる Service Locator パターン § 自動で負荷分散 (round-robin) § @EnableDiscoveryClient で DiscoveryClient が Inject される @SpringBootApplication @EnableDiscoveryClient public class Application { @Autowired DiscoveryClient discoveryClient; public void consume() { InstanceInfo instance = discoveryClient.getNextServerFromEureka("hostname”, false); } } Service Registry Producer 1. Register Consumer 2. Discover 3. Connect
  • 18. 18 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Side Load Balancing (Ribbon) § 複数の負荷分散ルールに対応(round-robin、平均レスポンス時間、ランダム) § 単体で Fault tolerance 機能(サーバーリストを保持) § DiscoveryClient の代わりに LoadBalancerClient が Inject される § またはより便利に Ribbon-enabled な RestTemplate も Inject 可能 @Autowired LoadBalancerClient lbClient; public void consume() { ServiceInstance instance = lbClient.choose("hostname”); } @Autowired RestTemplate restTemplate; public void consume() { ProducerResponse response = restTemplate.getForObject(”http://producer”, ..); }
  • 19. 19 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Circuit Breaker (Hystrix) (1/2) § “Release It!” Circuit breakers パターン @EnableCircuitBreaker public class Application { @HystrixCommand(fallback = "doFallback") public void doSomething() {} public void doFallback() {} } Closed call falis (count failure) call succeeds (reset count) Open failure > threshold (trip breaker) timeout (attempt reset) Half-Open call fails (trip breaker)call succeeds (reset)
  • 20. 20 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Circuit Breaker (Hystrix) (2/2)
  • 21. 21 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Connectors § クラウド内のアプリケーション環境、およびサービスの抽象化 § 多様なクラウドへの対応 • Cloud Foundry • Heroku • Local § 拡張性 • 新クラウド環境への対応 • 新サービスへの対応 • 新フレームワークへの対応
  • 22. 22 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ “Spring Cloud Connectors = DI Container for Cloud OS - 詠み人知らず
  • 23. 23 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring が昔、目指したもの Application Application Information (Context) Service Service Service
  • 24. 24 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring が今、目指しているもの Application Application Information (Context) Service Service Service
  • 25. 25 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cloud Foundry: アプリケーションのデプロイ ① アプリケーショ ンとメタデータ の push push app Router ② サービスの作成とバインド ③ アプリケーションのステージング ④ アプリケーションのデプロイ ⑤ アプリケーションのヘルスチェック Pivotal CF Elastic Runtime Blobstore DB Cloud Controller Service Broker Node(s) DEA DEA DEA DEA + app MD + = Service credentials
  • 26. 26 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cloud Foundry: サービスの作成とバインド Router Cloud Foundry Runtime (ERS) DB Service credentials reserve resourcescreate service (HTTP) create service (HTTP) bind service (HTTP)bind service (HTTP) obtain connection data CLI Cloud Controller Service Broker Data Service
  • 27. 27 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Service Scan (@ServiceScan) § Java Config (@Configuration) と併用 § アプリケーションにバインドされたサービスをスキャン § 各サービスについて Bean を作成 § (Option) クラウド環境でのみ有効にするためには @Profile(“cloud”) を追加 @Configuration @ServiceScan // @Profile("cloud”) public class CloudConfig { }
  • 28. 28 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Service Scan (@ServiceScan) カスタマイズ § パターン 1 : 同一タイプのサービス (e.g. DataSource) が 2 つ以上ある § パターン 2 : 各サービスの細かな設定が必要 § パターン 3 : 独自サービスが必要 @Configuration public class CloudConfig extends AbstractCloudConfig { @Bean public DataSource mysqlDataSource() { return connectionFactory().dataSource("mysql-service"); } @Bean public DataSource postgresDataSource() { PoolConfig poolConfig = new PoolConfig(20, 200); ConnectionConfig connectionConfig = new ConnectionConfig("characterEncoding=UTF-8"); DataSourceConfig serviceConfig = new DataSourceConfig(poolConfig, connectionConfig); return connectionFactory().dataSource("postgres-service”, serviceConfig); } }
  • 29. 29 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 新しいクラウド環境への拡張 (Cloud Platform) (1/2) § CloudConnector interface を実装 • isInMatchingCloud(): 意図した Cloud 環境かどうかを判定 • getApplicationInstanceInfo(): アプリケーションの情報(ID, ホスト名など)を返す • getServiceInfos(): アプリケーションが利用可能なサービスの接続情報を返す § Cloud Platform の登録 • META-INF/services/org.springframework.cloud.CloudConnector に実装クラス • java.util.ServiceLoader により load() される public interface CloudConnector { boolean isInMatchingCloud(); ApplicationInstanceInfo getApplicationInstanceInfo(); List<ServiceInfo> getServiceInfos(); }
  • 30. 30 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 新しいクラウド環境への拡張 (Cloud Platform) (2/2) § CloudFoundry での実装例 (CloudFoundryConnector) public class CloudFoundryConnector extends AbstractCloudConnector<Map<String,Object>> { public boolean isInMatchingCloud() { return environment.getEnvValue("VCAP_APPLICATION") != null; } public ApplicationInstanceInfo getApplicationInstanceInfo() { Map<String, Object> rawApplicationInstanceInfo = objectMapper.readValue( environment.getEnvValue("VCAP_APPLICATION"), Map.class); } protected List<Map<String,Object>> getServicesData() { String servicesString = environment.getEnvValue("VCAP_SERVICES"); } }
  • 31. 31 Unless otherwise indicated, these slides are © 2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Learn More. Stay Connected. § Spring Cloud Project: http://projects.spring.io/spring-cloud/ § Spring Cloud Source: https://github.com/spring-cloud § Spring Cloud Sample: https://github.com/spring-cloud-samples § Netflix OSS: http://netflix.github.io/ § Spring Cloud Connectors Blogs • https://spring.io/blog/2014/06/03/introducing-spring-cloud • https://spring.io/blog/2014/07/29/using-spring-cloud-programmatically • https://spring.io/blog/2014/08/05/extending-spring-cloud