SlideShare a Scribd company logo
Spring Bootで変わる
Javaアプリ開発!
日本Springユーザ会 勉強会
∼やっぱりSpringを始めよう!
2014/08/13
槙 俊明(@making)
ハッシュタグ
#jsug
自己紹介
• @making
• http://blog.ik.am
• 日本Javaユーザーグループ(JJUG)幹事
• Spring Boot本書いています
http://amzn.to/hajiboo
地味にSpring Boot Contributor
JJUG CCC 2014 Fall
http://www.java-users.jp/?p=1253
2014/11/15(土)
2014/09/30までCall for Paper募集中!
Springネタを是非お待ちしております!
http://www.slideshare.net/makingx/
spring-4spring-boot-spring-jjug-jsug
http://www.slideshare.net/
makingx/grails-30-spring-boot
今日のコンテンツ
1. Spring Boot概要
2. Spring Bootで何が変わる?
• アプリの設定が変わる
• アプリのデプロイも変わる
• システムのアーキテクチャも変わる?
Spring Boot概要
Spring Bootとは?
フレームワークというよりプラットフォーム
現在1.1.5.RELEASE
簡単に言うと、Spring Framework
でアプリケーションを簡単に作る
ための仕組み
Spring Bootを使うことで・・
モダンでいけてるJava
アプリケーションを
簡単に構築できる
Spring Bootの特徴
• あらかじめオススメの組み合わせが決
まる
• 依存ライブラリを同梱するだけで自動
で設定が決まる
• 組み込みサーバーを同梱し、アプリを
即実行可能 アプリケーション自体は
Spring MVCやSpring Batchで書く
Spring BootはDropwizard
にインスパイアされた
Dropwizardに比べてSpring Bootがいいところ
•これまでのSpring Frameworkのノウ
ハウがそのまま活かせる
•Spring Frameworkの開発元が開発し
ている
•チュートリアル・サンプル・ドキュメ
ントが充実している
チュートリアルが豊富
• http://spring.io/guides
70種類以上の簡易チュートリアル
サンプルが豊富
• https://github.com/spring-projects/spring-boot/tree/
master/spring-boot-samples
40種類以上のサンプルプロジェクト
Technology Radar July2014
http://thoughtworks.fileburst.com/assets/technology-radar-july-2014-en.pdf
Spring BootでHello World
Mavenアーキタイプでプロジェ
クト雛形生成
$ mvn -B archetype:generate -DgroupId=com.example
-DartifactId=jsug-helloworld -Dversion=1.0.0-
SNAPSHOT -DarchetypeArtifactId=maven-archetype-
quickstart
Spring Bootに関係のない汎用的な手順
pom.xmlを編集
<parent>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-starter-parent</artifactId>	
<version>1.1.5.RELEASE</version>	
</parent>	
<dependencies>	
<dependency>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-starter-web</artifactId>	
</dependency>	
<dependency>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-starter-test</artifactId>	
<scope>test</scope>	
</dependency>	
</dependencies>	
<build>	
<plugins>	
<plugin>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-maven-plugin</artifactId>	
</plugin>	
</plugins>	
</build>	
<properties>	
<java.version>1.8</java.version>	
</properties>	
 
この設定を追加
するだけ
インポート後
いろいろな依存関係が追加され
ている
package com.example;	
!
import org.springframework.boot.SpringApplication;	
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;	
import org.springframework.web.bind.annotation.RequestMapping;	
import org.springframework.web.bind.annotation.RestController;	
!
@RestController	
@EnableAutoConfiguration	
public class App {	
!
@RequestMapping("/")	
String home() {	
return "Hello World!";	
}	
!
public static void main(String[] args) {	
SpringApplication.run(App.class, args);	
}	
}
魔法のアノテーション
mainメソッドでアプリ実行
まずは実行
• 実行方法は2通り
または
$ mvn spring-boot:run
$ gradle bootRun Gradleの場合
ログ
組込Tomcatが起動した
http://localhost:8080 にアクセス
実行可能jarを作成
$ mvn package
jarを実行
$ java -jar target/jggug-helloworld-1.0.0-
SNAPSHOT.jar
プロパティを変更して実行
$ java -jar target/jggug-helloworld-1.0.0-
SNAPSHOT.jar --server.port=8888
--(プロパティ名)=(プロパティ値)
予め用意されている沢山のプロ
パティを変更可能
• http://docs.spring.io/spring-boot/docs/
1.1.4.RELEASE/reference/html/common-application-
properties.html
一度作ったjarはそのまま本番環境で使用可能。
配布も可能。
Spring Bootで何が変わる?
Spring Bootで何が変わる?
• アプリの設定が変わる
• アプリのデプロイが変わる
Spring Bootで何が変わる?
• アプリの設定が変わる
• アプリのデプロイが変わる
ほとんど設定不要!
Spring Bootで何が変わる?
• アプリの設定が変わる
• アプリのデプロイが変わる
ほとんど設定不要!
jarを実行するだけ!
アプリの設定が変わる
AutoConfigure
• 自動でいい感じの設定が行われる仕組み
• @EnableAutoConfigurationで自動設
定が有効化
• ポイントは@Conditionalアノテーション
AutoConfigureの説明の前に
ベースとなるJavaConfigの説明
package com.example;	
!
import org.springframework.context.annotation.Bean;	
import org.springframework.context.annotation.Configuration;	
!
@Configuration	
public class AppConfig {	
!
@Bean	
SomeBean someBean() {	
returen new SomeBean();	
}	
}
JavaConfigの記法 com.example.AppConfig
JavaConfig宣言
Bean定義宣言
@Conditional
package com.example;	
!
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass;	
import org.springframework.context.annotation.Bean;	
import org.springframework.context.annotation.Configuration;	
!
@Configuration	
@ConditionalOnClass({SomeBean.class})	
public class AppConfig {	
!
@Bean	
SomeBean someBean() {	
returen new SomeBean();	
}	
}
クラスパス上にSomeBeanが存在
した場合にこのBean定義が有効
SomeBeanを含むライブラリ(jar)
を追加するだけで有効になる!
Autoconfigureを支える
@Conditional
@ConditionalOnBean
指定したクラスの
有効
@ConditionalOnClass 指定したクラスがクラスパス上にあれば有効
@ConditionalOnMissing
Bean
指定したクラスの
ば有効
@ConditionalOnMissing
Class
指定したクラスがクラスパス上にあれば有効
@ConditionalOnPropert
y
指定したプロパティが指定した値であれば有効
@ConditionalOnExpress
ion
指定した
等。
org.springframework.boot.autoconfigure.condition	
以下を参照
初めからサポートされている
Autoconfigure
初めからサポートされている
Autoconfigure
•Spring AMQP(RabitMQ)
•Spring Batch
•Spring Data
•Spring HATEOAS
•Spring Integration
•Spring Mobile
•Spring Security
•Spring Social
•Tomcat
•Jetty
•ThymeLeaf
•JPA
•JMS
•WebSocket
•Solr
•ElasticSearch
•MongoDB
•Redis
•Liquibase
•Flyway
など
Starter
• 使いたい機能のAutoConfigureを有効にするための、
依存関係を定義したMavenプロジェクト(pom)
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-starters
30種類以上のstarterプロ
ジェクト
!
<dependency>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-starter-data-jpa</artifactId>	
</dependency>	
spring-boot-starter-data-
jpaを追加するだけ。
[例] Spring Data JPAを使いたい
必要な依存関係が追加される
👉 AutoConfigureの中をのぞこう
@Configuration	
@ConditionalOnBean(DataSource.class)	
@ConditionalOnClass(JpaRepository.class)	
@ConditionalOnMissingBean(RepositoryFactoryBeanSupport.class)	
@ConditionalOnExpression("${spring.data.jpa.repositories.enabled:true}")	
@Import(JpaRepositoriesAutoConfigureRegistrar.class)	
@AutoConfigureAfter(HibernateJpaAutoConfiguration.class)	
public class JpaRepositoriesAutoConfiguration {	
	 @Configuration	
	 @EnableSpringDataWebSupport	
	 @ConditionalOnWebApplication	
	 @ConditionalOnMissingBean(PageableHandlerMethodArgumentResolver.class)	
	 protected static class JpaWebConfiguration {	
	 }	
}
DataSourceが出来ていて
JpaRepositoryクラスが存在
各種条件が ったら有効
別の定義をimport
@EnableConfigurationProperties(JpaProperties.class)	
@Import(DataSourceInitializedPublisher.Registrar.class)	
public abstract class JpaBaseConfiguration implements BeanFactoryAware {	
!
	 // ...	
	 @Bean	
	 @ConditionalOnMissingBean	
	 public EntityManagerFactoryBuilder entityManagerFactoryBuilder(	
	 	 	 JpaVendorAdapter jpaVendorAdapter) {	
	 	 EntityManagerFactoryBuilder builder = new EntityManagerFactoryBuilder(	
	 	 	 	 jpaVendorAdapter, this.jpaProperties, this.persistenceUnitManager);	
	 	 builder.setCallback(getVendorCallback());	
	 	 return builder;	
	 }	
	 @Bean	
	 @Primary	
	 @ConditionalOnMissingBean	
	 public LocalContainerEntityManagerFactoryBean entityManagerFactory(	
	 	 	 EntityManagerFactoryBuilder factory) {	
	 	 return factory.dataSource(this.dataSource).packages(getPackagesToScan())	
	 	 	 	 .properties(getVendorProperties()).build();	
	 }	
}
HibernateJpaAutoConfiguration	
の親クラス
EntityManagerFactory	
の生成
@Configuration	
@ConditionalOnWebApplication	
@ConditionalOnMissingBean({ OpenEntityManagerInViewInterceptor.class,	
	 	 OpenEntityManagerInViewFilter.class })	
@ConditionalOnExpression("${spring.jpa.openInView:${spring.jpa.open_in_view:true}}")	
protected static class JpaWebConfiguration extends WebMvcConfigurerAdapter {	
	 // ...	
!
	 @Bean	
	 public OpenEntityManagerInViewInterceptor openEntityManagerInViewInterceptor() {	
	 	 return new OpenEntityManagerInViewInterceptor();	
	 }	
}	
Open Session In Viewパターン
がデフォルトで適用されている
= Springのオススメパターン?
@EnableAutoConfiguration
package com.example;	
!
import org.springframework.boot.SpringApplication;	
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;	
import org.springframework.context.annotation.ComponentScan;	
!
@EnableAutoConfiguration	
@ComponentScan	
public class App {	
!
public static void main(String[] args) {	
SpringApplication.run(App.class, args);	
}	
}
エントリポイントに
@EnableAutoConfigurationをつけると
自動設定が有効になる
@Service	
@Transactional	
public class BookmarkService {	
@Autowired	
BookmarkRepository bookmarkRepository;	
!
public List<Bookmark> findAll() {	
return bookmarkRepository.findAll(new Sort(Sort.Direction.ASC, "id"));	
}	
!
public Bookmark save(Bookmark bookmark) {	
return bookmarkRepository.save(bookmark);	
}	
!
public void delete(Long id) {	
bookmarkRepository.delete(id);	
}	
}
public interface BookmarkRepository
extends JpaRepository<Bookmark, Long>
{	
!
}
特別な設定なしでSpring Data JPAが使える。特別な設定なしでSpring Data JPAが使える。
ハンズオンで作ったアプリ
設定なしでREST API
を作れる!
AutoConfigureは黒魔術ではない
org.springframework.boot.autoconfigure	
パッケージのソースを読めば、
何が設定されるか分かる。
通常はマニュアル読めばよい。
使いたい機能が合った場合(いままで)
1.必要なライブラリ群の依存関係(通常複数)を追加
2.ライブラリを使うために必要な設定を追加
3.アプリケーションからライブラリを使用する
使いたい機能が合った場合(いままで)
1.必要なライブラリ群の依存関係(通常複数)を追加
2.ライブラリを使うために必要な設定を追加
3.アプリケーションからライブラリを使用する
autoconfigureで不要
starterだけでOK
ここに注力できる
使いたい機能が合った場合(これから)
1.必要なライブラリのstarterを追加
2.ライブラリを使うために必要な設定を追加
3.アプリケーションからライブラリを使用する
例1: 「Spring Social Twitter」を
使ってつぶやく
HelloWorldアプリから10数行だけ
コードを足して、OAuth認可後、
Twitterへツイートできるようにする。
!
<dependency>	
<groupId>org.springframework.boot</groupId>	
<artifactId>spring-boot-starter-social-twitter</artifactId>	
</dependency>	
HelloWorldアプリから10数行だけコー
ドを足して、OAuth認可後、Twitterへ
ツイートできるようにする。
例1: 「Spring Social Twitter」を
使ってつぶやく
starterを追加
@RestController	
@EnableAutoConfiguration	
public class App {	
@Autowired	
ConnectionRepository connectionReposiory;	
@Autowired	
Twitter twitter;	
!
@RequestMapping("/")	
String home(@RequestParam("tweet") String tweet) {	
if (connectionRepository.findPrimaryConnection(Twitter.class) == null) {	
return "<a href='/connect/twitter'>Please connect</a>";	
}	
twitter.timelineOperations().updateStatus(tweet);	
return tweet + " is tweeted!";	
}	
!
public static void main(String[] args) {	
SpringApplication.run(App.class, args);	
}	
}
App.java編集
アプリケーション登録
https://dev.twitter.com/
APIキーの設定
spring.social.twitter:	
app-id: 3b6ZO4iF4AG08P62OVFWlVxEP	
app-secret: 2IdbPGbLjwsCw6prcPNumrQlV07uMKi4hseQoShaeJl51xEEkA	
spring.social.auto-connection-views: true
コネクション用の画面を自動生成
application.yml
Appを実行
ツイート
例2: DBマイグレーションライブラリ
「FlyWay」を使ってみる
<dependency>	
	 <groupId>org.springframework.boot</groupId>	
	 <artifactId>spring-boot-starter-data-jpa</artifactId>	
</dependency>	
<dependency>	
	 <groupId>org.hsqldb</groupId>	
	 <artifactId>hsqldb</artifactId>	
	 <scope>runtime</scope>	
</dependency>	
<dependency>	
	 <groupId>org.flywaydb</groupId>	
	 <artifactId>flyway-core</artifactId>	
</dependency>
ライブラリを追加するだけで
AutoConfigureが有効に
あとは所定の位置にSQLを書くだけ
spring.jpa.hibernate.ddl-auto: validate
CREATE TABLE PERSON (	
	 id BIGINT GENERATED BY DEFAULT AS IDENTITY,	
	 first_name varchar(255) not null,	
	 last_name varchar(255) not null	
);	
!
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
現在適用されているSQLの
バージョンを確認して、必要
なSQLを自動で実行
DDLの実行はFlywayに任せ
るために、JPAの機能を抑制
Spring Bootの対象は
Webアプリだけではない
• バッチ処理
• システム連携
• Hadoop YARN
説明量が増えすぎたので
今日はカット😢
アプリのデプロイが変わる
これまでのデプロイ(開発)
1.コードを書く/修正する
2.(アプリケーションをビルドする) <= IDEが
自動で行う
3.IDEのプラグインでAPサーバーを起動する
4.IDEのプラグインでAPサーバー上でアプリ
ケーションを実行する
これまでのデプロイ(本番)
1.コードを書く/修正する
2.Ant/Maven/Gradleなどでアプリケーショ
ンをビルドしてwarを作成する
3.APサーバーを起動する
4.APサーバーにwarをデプロイする(warを所
定の場所に配置する)
Spring Bootのデプロイ(開発)
1.コードを書く/修正する
2.(アプリケーションをビルド
する) <= IDEが自動で行う
3.mainメソッド実行する
Spring Bootのデプロイ(本番)
1.コードを書く/修正する
2.Maven/Grandleでビルドして

実行可能jarを作成する
3.jarを所定のフォルダにcpする
4.jarを実行する
Spring Bootの基本パターン
実行可能jarを作って実行。
プロパティは外から変える。
一度作ったjarはどこでも使えてポータブル!
アプリケーションの更新
新しいjarをcpするだけ。
JenkinsやGitbucketと同じ!
起動スクリプト(RedHat系)
# 途中略	
case "$1" in	
start)	
	 echo -n "Starting MyApp "	
	 nohup java $JVM_OPTS -jar $MYAPP_HOME/myapp.jar $PARAMS >> $LOG_FILE 2>&1 &	
	 pid=$!	
	 echo $pid > "$MYAPP_PID_FILE"	
	 success	
	 echo	
	 ;;	
stop)	
	 echo -n "Shutting down MyApp "	
	 killproc myapp	
	 RETVAL=$?	
	 echo	
	 ;;	
*)	
	 echo "Usage: $0 {start|stop}"	
	 exit 1	
	 ;;	
esac
/etc/init.d/myapp start
/etc/init.d/myapp stop
ポータビリティはPaaSフレンドリ
Spring Bootで作ったWebアプリはHeroku
やCloud Foundryへ簡単にデプロイできる
Immutable/Disposable Infrastructure
と相性が良い。Dockerとか。
Herokuにデプロイ
web: java $JAVA_OPTS -jar target/*.jar --server.port=$PORT
プロジェクト直下のProcfileに以下を記述
$ heroku create	
$ git push heroku master	
でHerokuへデプロイ!
Herokuとローカルで
DBを動的に切り替えたい場合
@Bean(destroyMethod = "close")	
DataSource dataSource() throws URISyntaxException {	
String url, username, password;	
String databaseUrl = System.getenv("DATABASE_URL");	
if (databaseUrl != null) {	
URI dbUri = new URI(databaseUrl);	
url = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath() + ":" +
dbUri.getPort() + dbUri.getPath();	
username = dbUri.getUserInfo().split(":")[0];	
password = dbUri.getUserInfo().split(":")[1];	
} else {	
url = this.properties.getUrl();	
username = this.properties.getUsername();	
password = this.properties.getPassword();	
}	
DataSourceBuilder factory = DataSourceBuilder	
.create(this.properties.getClassLoader())	
.url(url)	
.username(username)	
.password(password);	
return factory.build();	
}
Herokuでは環境変数
DATABASE_URLにDB情報
が含まれる
Herokuの場合
ローカルの場合
Spring Cloudというサブプロジェク
トを使うとこのへんを吸収できる
Herokuとローカルで
DBを動的に切り替えたい場合
spring:	
profle:	
active: dev	
jpa.hibernate.ddl-auto: update	
---	
spring:	
profiles: dev	
datasource:	
driverClassName: org.h2.Driver	
url: jdbc:h2:file:/tmp/bookmark	
username: sa	
password:	
jpa.database: H2	
---	
spring:	
profiles: heroku	
datasource:	
driverClassName: org.postgresql.Driver	
jpa.database: POSTGRESQL
Profile毎にYAMLで設定可能
デフォルトでdevを指定
Herokuの場合
PostgreSQLを使用する
ローカル(dev)の場合
H2データベースを使用する
application.yml
profile毎のファイルを
作成することも可能
実行時にProfile指定
web: java $JAVA_OPTS -jar target/*.jar —server.port=$PORT
--spring.profiles.active=heroku
Procfileに--spring.profiles.active	
でherokuプロファイルを指定
ちなみにこれはBoot以前からある機能。
YAMLもSpring4.1から本体に取り込まれる。
Heroku Button
Github上のアプリを「ボタンぽち」で
Herokuにデプロイできる仕組み
[![Deploy](https://www.herokucdn.com/deploy/
button.png)](https://heroku.com/deploy)
README.mdにボタンのリンクを貼るだけ
Spring Bootなら簡単
Procfileと
app.jsonを用意
{	
"name": "Bookmark Application",	
"description": “Handson Application"	
}
app.json
http://bit.ly/jsug-heroku
Spring Bootなら簡単
Procfileと
app.jsonを用意
{	
"name": "Bookmark Application",	
"description": “Handson Application"	
}
app.json
ぽち
http://bit.ly/jsug-heroku
Spring Bootで変わる Javaアプリ開発! #jsug
ブランチを自動で判断
ぽち
ブランチを自動で判断
Spring Bootで変わる Javaアプリ開発! #jsug
2~3分
2~3分
アプリの配布も変わる?
Spring Bootでアプリを作成して、
Githubで管理し、
Heroku Buttonを配置
アプリの配布も変わる?
Spring Bootでアプリを作成して、
Githubで管理し、
Heroku Buttonを配置
アプリを即座にDeploy & Tryできる!
(PaaS上の)アプリの状態を知りたい
<dependency>	
	 <groupId>org.springframework.boot</groupId>	
	 <artifactId>spring-boot-starter-actuator</artifactId>	
</dependency>
Spring Boot Actuator
(PaaS上の)アプリの状態を知りたい
<dependency>	
	 <groupId>org.springframework.boot</groupId>	
	 <artifactId>spring-boot-starter-actuator</artifactId>	
</dependency>
Spring Boot Actuator
依存関係を追加するだけで、アプリの情
報やメトリクスを取得するためのエンド
ポイントが公開される
JSONで取得できる情報
http://docs.spring.io/spring-boot/docs/1.1.5.RELEASE/reference/html/production-ready-endpoints.html
等
パス 取得内容
/metrics
アクセスカウンタやレスポンスタイム、
JVM
/health 各種データソースのヘルスチェック
/dump スレッドダンプ
/configprops プロパティ
/env 環境変数
Actuator用のAutoconfigure対応
サードパーティ
• CRaSH (SSHサポート)
• Jolokia (JMXをJSONで出力)
• CodaHale Metrics (さらなるメトリクス)
システムアーキテクチャも
変わる?
伝統的なアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
モノリシックアーキテクチャ
伝統的なアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
モノリシックアーキテクチャ
システムが大きくなると、全体
を把握するのが大変で、保守が
難しい。
伝統的なアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
モノリシックアーキテクチャ
システムが大きくなると、全体
を把握するのが大変で、保守が
難しい。
技術の変更は難しい(リスキー
d)
伝統的なアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
モノリシックアーキテクチャ
システムが大きくなると、全体
を把握するのが大変で、保守が
難しい。
技術の変更は難しい(リスキー
d)
技術的に発展的成長が難しい
アーキテクチャ
マイクロサービスアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
Single Responsibility Principle (SRP)
に基づき名詞や動詞単位でサービスを分割
マイクロサービスアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
Single Responsibility Principle (SRP)
に基づき名詞や動詞単位でサービスを分割
HTTPやAMQPで通信
マイクロサービスアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
Single Responsibility Principle (SRP)
に基づき名詞や動詞単位でサービスを分割
HTTPやAMQPで通信
Amazon
Netfilx
eBay
などが採用
マイクロサービスアーキテクチャ
http://www.infoq.com/articles/microservices-intro より図を拝借
Single Responsibility Principle (SRP)
に基づき名詞や動詞単位でサービスを分割
HTTPやAMQPで通信
これまで説明
してきた
Spring Bootの
機能が効く!
Amazon
Netfilx
eBay
などが採用
マイクロサービスアーキテクチャの
メリット・デメリット
メリット デメリット
自担当のサービスのコードを
理解しやすい
システム全体を見なくなる
新しい技術を採用しやすい・
失敗してもやり直しやすい
分散システムの整合をとる
のが難しい
サービス単位でスケールできる
サービス間の通信オーバー
ヘッドがある
1
ーク等
他サービスの障害をふまえ
た設計が必要
IDE
マイクロサービスアーキテクチャの
メリット・デメリット
メリット デメリット
自担当のサービスのコードを
理解しやすい
システム全体を見なくなる
新しい技術を採用しやすい・
失敗してもやり直しやすい
分散システムの整合をとる
のが難しい
サービス単位でスケールできる
サービス間の通信オーバー
ヘッドがある
1
ーク等
他サービスの障害をふまえ
た設計が必要
IDE 銀の弾丸ではない
続きはWebで
http://www.infoq.com/minibooks/emag-microservices
まとめ
アプリの設定が変わる
• Autoconfigureで自動設定
• Starterで依存関係解決
アプリのデプロイが変わる
• 実行可能jar + 外部プロパティ
• Herokuボタン
システムアーキテクチャも変わる?
• モノリシックアーキテクチャ
• マイクロサービスアーキテクチャ
まとめ
アプリの設定が変わる
• Autoconfigureで自動設定
• Starterで依存関係解決
アプリのデプロイが変わる
• 実行可能jar + 外部プロパティ
• Herokuボタン
システムアーキテクチャも変わる?
• モノリシックアーキテクチャ
• マイクロサービスアーキテクチャ
_人人人人人人人人人人人人人人_	
 
> SIerの皆様は使えないかも <	
 
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
最後に
これからのレガシーJavaアプリ
•JSP
•web.xml
•src/main/webapp
使ったら負け!
移行の際の注意
• Bean定義ファイルの内容を”
そのまま移植”してはいけない
• JSP、warなど踏襲してはいけ
ない
Grails3のベースにもなる
http://www.slideshare.net/danveloper/future-of-grails
Scala、Kotlinでも普通に使えます
https://github.com/making/jggug-workshop-
springboot/tree/bookmark-scala
https://github.com/making/spring-boot-
demo-jvm-languages
色々なJVM言語でHello World
ハンズオンアプリのScala版
まずはハンズオンから
Webブラウザ
curl
Tomcat
Spring Boot
Spring Framework
SpringSecurity
ThymeLeaf
SpringMVC
Jackson
SpringDataJPA
Hibernate
H2
Database画面のあるアプリ
REST API
http://www.slideshare.net/
makingx/grails-30-spring-boot
ご清聴有り難うございました
Spring Boot本出版されたら買ってください!

More Related Content

What's hot (20)

詳説WebAssembly
詳説WebAssembly詳説WebAssembly
詳説WebAssembly
祐司 伊藤
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
kwatch
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
What's new in Spring Batch 5
What's new in Spring Batch 5What's new in Spring Batch 5
What's new in Spring Batch 5
ikeyat
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
kimulla
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
XSS再入門
XSS再入門XSS再入門
XSS再入門
Hiroshi Tokumaru
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのかreact-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
kwatch
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
What's new in Spring Batch 5
What's new in Spring Batch 5What's new in Spring Batch 5
What's new in Spring Batch 5
ikeyat
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
kimulla
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのかreact-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
 

Viewers also liked (6)

Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
Alex Movila
 
Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!
🎤 Hanno Embregts 🎸
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
Alex Movila
 
Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!
🎤 Hanno Embregts 🎸
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Ad

Similar to Spring Bootで変わる Javaアプリ開発! #jsug (20)

どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
 
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_bootGrails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
 
Spring native について
Spring native についてSpring native について
Spring native について
Takamasa Mitsuji
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
 
JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会
Alisa Sasaki
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
daisuke-a-matsui
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
ksimoji
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
 
ルーター自前実装の話
ルーター自前実装の話ルーター自前実装の話
ルーター自前実装の話
Kazushi Kawamura
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
 
Javaと小道具
Javaと小道具Javaと小道具
Javaと小道具
Sho Ito
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
 
React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞ
Mitsuru Ogawa
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
 
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
jvmlang.daitokai 1.0.0 MinCamlJを作ってみたjvmlang.daitokai 1.0.0 MinCamlJを作ってみた
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
Kazuyoshi Kamitsukasa
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 
REST with Spring Boot #jqfk
REST with Spring Boot #jqfkREST with Spring Boot #jqfk
REST with Spring Boot #jqfk
Toshiaki Maki
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
 
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_bootGrails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
 
Spring native について
Spring native についてSpring native について
Spring native について
Takamasa Mitsuji
 
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbcSpring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
 
JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会
Alisa Sasaki
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
daisuke-a-matsui
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
ksimoji
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
 
ルーター自前実装の話
ルーター自前実装の話ルーター自前実装の話
ルーター自前実装の話
Kazushi Kawamura
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
 
Javaと小道具
Javaと小道具Javaと小道具
Javaと小道具
Sho Ito
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
Takahisa Wada
 
React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞ
Mitsuru Ogawa
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
 
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
jvmlang.daitokai 1.0.0 MinCamlJを作ってみたjvmlang.daitokai 1.0.0 MinCamlJを作ってみた
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
Kazuyoshi Kamitsukasa
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
 
Ad

More from Toshiaki Maki (20)

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
Toshiaki 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 #s1t
Toshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki 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_a1
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
 
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
Toshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
Toshiaki 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_a1
Toshiaki 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_tokyo
Toshiaki Maki
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
Toshiaki Maki
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
Toshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
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
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Toshiaki Maki
 
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
Toshiaki Maki
 
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
Toshiaki 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
 
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
Toshiaki Maki
 
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
Toshiaki 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 #s1t
Toshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki 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_a1
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
 
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
Toshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
Toshiaki 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_a1
Toshiaki 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_tokyo
Toshiaki Maki
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
Toshiaki Maki
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
Toshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
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
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Toshiaki Maki
 
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
Toshiaki Maki
 
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
Toshiaki 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
 
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
Toshiaki Maki
 

Recently uploaded (6)

AIVIDEO MAG JUNE2025 FIRST TEST---------
AIVIDEO MAG JUNE2025 FIRST TEST---------AIVIDEO MAG JUNE2025 FIRST TEST---------
AIVIDEO MAG JUNE2025 FIRST TEST---------
1pcity Studios, Inc
 
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
Matsushita Laboratory
 
Azure OpenAI と LangChain4j を使用した LLM Java エンタープライズ・アプリケーションの 構築方法の紹介
Azure OpenAI と LangChain4j を使用したLLM Java エンタープライズ・アプリケーションの構築方法の紹介Azure OpenAI と LangChain4j を使用したLLM Java エンタープライズ・アプリケーションの構築方法の紹介
Azure OpenAI と LangChain4j を使用した LLM Java エンタープライズ・アプリケーションの 構築方法の紹介
Yoshio Terada
 
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころPR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
maeri111b
 
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
Masaki Yamakawa
 
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
kiyokawa0702yuuma
 
AIVIDEO MAG JUNE2025 FIRST TEST---------
AIVIDEO MAG JUNE2025 FIRST TEST---------AIVIDEO MAG JUNE2025 FIRST TEST---------
AIVIDEO MAG JUNE2025 FIRST TEST---------
1pcity Studios, Inc
 
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
SayakaHayashi_既存データセットの活用事例に基づく新規データセットの活用方法推薦に関する検討_deim2025
Matsushita Laboratory
 
Azure OpenAI と LangChain4j を使用した LLM Java エンタープライズ・アプリケーションの 構築方法の紹介
Azure OpenAI と LangChain4j を使用したLLM Java エンタープライズ・アプリケーションの構築方法の紹介Azure OpenAI と LangChain4j を使用したLLM Java エンタープライズ・アプリケーションの構築方法の紹介
Azure OpenAI と LangChain4j を使用した LLM Java エンタープライズ・アプリケーションの 構築方法の紹介
Yoshio Terada
 
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころPR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
PR業務に 地味に効く! AI活用実践集 ――毎日使ってわかった20の使いどころ
maeri111b
 
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
20250611_話題のDevin、エンプラ開発で〇人分の仕事はできるのか !?
Masaki Yamakawa
 
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
イミュータブルデータモデルの導入実験と結果(JJUG CCC 2025 Spring)
kiyokawa0702yuuma
 

Spring Bootで変わる Javaアプリ開発! #jsug