狠狠撸

狠狠撸Share a Scribd company logo
JJUG CCC Spring 2015 #jjug_ccc #ccc_ab3
大規模な負荷でも
ドキドキしない為の
Java EE
@nagaseyasuhito
java-ja
グリー株式会社
the CRAZY ANGEL
COMPANY
Agenda
その1?負荷テストするぞ
その2?JPAのスケールアウト戦略
負荷テストするぞ
http://www.?ickr.com/photos/mattt_org/2831690932
"Electrocardiogram" by mattt.org is licensed under CC BY 2.0 / Added some texts to original
Stress
Test
Anti
Pattern
アンチパターン その1
「シングルスレッドで実行」
Stress
Test
Anti
Pattern
アンチパターン その2
「ユースケースとかけ離れたシナリオ」
Stress
Test
Anti
Pattern
アンチパターン その3
「複数のサーバーでコマンドを叩いて手動実行」
そもそも負荷テストの目的は?
https://www.?ickr.com/photos/jakecaptive/3205277810
Thinking RFID by Jacob B?tter is licensed under CC BY 2.0 / Added some texts to original
What
Is
Stress
Test
For?
負荷テストの目的 その1
システムの限界性能を知る
What
Is
Stress
Test
For?
負荷テストの目的 その2
高負荷時の不具合を発見する
https://www.?ickr.com/photos/hermanolobo/8605855035
Road to Hell by Jose Padin is licensed under CC BY 2.0 / Added some texts to original
Stress Test
meets
Continuous Integration
Apache JMeter
負荷テストツールのデファクトスタンダード
GUIでシナリオ作成
Pure Java
分散実行に対応
Apache?, Apache JMeter? and Apache JMeter logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.
HTTP(S) Test Script Recorder
HTTP(S)のプロキシサーバーとして振る舞いHTTPリクエストをトレースする。
Selenium Web Driver Sampler
WebアプリケーションのテストツールSeleniumのシナリオを使って負荷テストを行える。
Selenium IDEは実際のユーザーのアクティビティをそのままテストシナリオにできるので、よ
り本番に近い負荷をかけることができる。
JUnit Request
$JMETER_HOME/lib/junitにあるJUnitテストを実行できる。
? 独自プロトコルの負荷テスト
? 既存のプラグインでは表現できない複雑な負荷テストシナリオ
などをJUnitテストとして書いて負荷テストができる。
Make
Scenario
@Test(timeout = 1500)
@SneakyThrows
public void createAndShow() {
String mailAddress = UUID.randomUUID() + "@example.com";
WebTarget target;
target = this.client.target(this.url.toString());
target = target.path("api/user");
target = target.queryParam("mailAddress", mailAddress);
User user = target.request().method("POST", User.class);
assertThat(user.getMailAddress(), is(mailAddress));
Thread.sleep(1000L);
target.path(user.getId().toString()).request().get(User.class);
}
JUnit負荷テストシナリオの例
上記の例はJAX-RSのクライアントを使いREST APIのリクエストを発行し、レスポンスの値を
使いふたたびリクエストを発行するサンプル。
独自のプロトコルや複数のコネクションなども柔軟に扱える。
アサートの条件なども独自に定義できるので複雑な負荷テストシナリオを作りやすい。
Running
On
Command
Line
$ jmeter -n -t stress-test.jmx -l stress-test.jtl
Creating summariser <summary>
Created the tree successfully using stress-test.jmx
Starting the test @ Fri Apr 03 18:16:27 JST 2015 (1428052587427)
Waiting for possible shutdown message on port 4445
summary + 6 in 3s = 2.0/s Avg: 57 Min: 9 Max: 294 Err: 0 (0.00%) Active: 1 Star
summary + 50 in 29.4s = 1.7/s Avg: 7 Min: 4 Max: 11 Err: 0 (0.00%) Active: 1 Star
summary = 56 in 33s = 1.7/s Avg: 12 Min: 4 Max: 294 Err: 0 (0.00%)
summary + 44 in 26s = 1.7/s Avg: 5 Min: 5 Max: 7 Err: 0 (0.00%) Active: 0 Star
summary = 100 in 59.4s = 1.7/s Avg: 9 Min: 4 Max: 294 Err: 0 (0.00%)
Tidying up ... @ Fri Apr 03 18:17:26 JST 2015 (1428052646994)
... end of run
コマンドラインで実行
jmeterコマンドを-nオプションで起動するとCLIモードになる。-tオプションで負荷テスト
シナリオを指定して実行する。
-lオプションで指定したファイルに負荷テストの結果が保存される。
Running
On
Command
Line
$ jmeter-server &
$ jmeter -n -t stress-test.jmx -R localhost -l stress-test.jtl
Creating summariser <summary>
Created the tree successfully using stress-test.jmx
Configuring remote engine for localhost
Using remote object: UnicastRef [liveRef: [endpoint:[10.48.138.59:63762](remote),objI
Starting remote engines
Starting the test @ Fri Apr 03 18:27:34 JST 2015 (1428053254765)
Remote engines have been started
Waiting for possible shutdown message on port 4445
summary + 50 in 29.4s = 1.7/s Avg: 7 Min: 4 Max: 11 Err: 0 (0.00%) Active: 1 Star
summary = 56 in 33s = 1.7/s Avg: 12 Min: 4 Max: 294 Err: 0 (0.00%)
summary + 44 in 26s = 1.7/s Avg: 5 Min: 5 Max: 7 Err: 0 (0.00%) Active: 0 Star
summary = 100 in 59.4s = 1.7/s Avg: 9 Min: 4 Max: 294 Err: 0 (0.00%)
Tidying up ... @ Fri Apr 03 18:17:26 JST 2015 (1428052646994)
... end of run
コマンドラインで実行(分散)
-Rオプションでjmeter-serverが起動したホストを指定すると分散実行される。
負荷テストの結果もマージして保存される。
Running
On
Command
Line
負荷テスト結果の閲覧
CUIで出力された負荷テストの結果(*.jtl)をGUIのリスナーで閲覧できる。
負荷テストの傾向などをパッと見たいときに。
JMeter
Maven
Plugin
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.10.1</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
<configuration>
<testFilesDirectory>${project.build.testOutputDirectory}</testFilesDirectory>
<ignoreResultFailures>true</ignoreResultFailures>
<suppressJMeterOutput>false</suppressJMeterOutput>
<remoteConfig>
<startServersBeforeTests>true</startServersBeforeTests>
<serverList>${jmeter.servers}</serverList>
</remoteConfig>
</configuration>
</plugin>
JMeter
Maven
Plugin
<profile>
<id>stress-test</id>
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.10.1</version>
</plugin>
...
</plugins>
</build>
</profile>
負荷テスト用プロファイル
通常のビルドプロセスに組み込まないようにjmeter-maven-pluginはプロファイルに分離する
と使いやすい。
mvn clean verify -Pstress-test
JMeter
Maven
Plugin
<properties>
<jmeter.numberOfThreads>1</jmeter.numberOfThreads>
<jmeter.loopCount>1</jmeter.loopCount>
<jmeter.rampUpPeriod>60</jmeter.rampUpPeriod>
<jmeter.servers>localhost</jmeter.servers>
</properties>
負荷テスト環境用プロファイル
Maven実行時に値を調整できるようにプロパティ化すると便利。
$ mvn clean verify -Djmeter.numberOfThreads=100 -Djmeter.servers=10.0.0.41,10.0.0.42
JMeter
Maven
Plugin
$ mvn clean verify
...
[INFO] --- jmeter-maven-plugin:1.10.0:jmeter (default) @ sample-jmeter ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] P E R F O R M A N C E T E S T S
[INFO] -------------------------------------------------------
[info]
[info] Executing test: com.github.nagaseyasuhito.sample.jmeter.EchoEndpointST.jmx
[info] Creating summariser <summary>
[info] Created the tree successfully using /Users/nagaseyasuhito/Documents/workspace/
[info] Configuring remote engine for localhost
[info] Using remote object: UnicastRef [liveRef: [endpoint:[10.48.138.59:62076](remot
[info] Starting remote engines
[info] Starting the test @ Fri Apr 03 18:16:30 JST 2015 (1428052590810)
[info] Remote engines have been started
[info] Waiting for possible shutdown message on port 4446
[info] summary + 98 in 58.2s = 1.7/s Avg: 6 Min: 4 Max: 11 Err:
[info] summary = 100 in 59.4s = 1.7/s Avg: 7 Min: 4 Max: 146 Err:
[info] Tidying up remote @ Fri Apr 03 18:17:30 JST 2015 (1428052650888)
[info] Exitting remote servers
[info] ... end of run
[info] Completed Test: com.github.nagaseyasuhito.sample.jmeter.EchoEndpointST.jmx
[INFO]
[INFO] Test Results:
[INFO]
[INFO] Tests Run: 1, Failures: 0
Running
On
Jenkins
Performance Plugin
JMeterが出力する負荷テストの結果をJenkinsでプロットするプラグイン。Report ?lesに
**/*.jtl
のようにプロットする結果ファイルのパスを記述する。
Running
On
Jenkins
Performance Plugin
JMeterが出力する負荷テストの結果をJenkinsでプロットするプラグイン。Report ?lesに
**/*.jtl
のようにプロットする結果ファイルのパスを記述する。
Bug
And
Bottleneck
https://www.?ickr.com/photos/mjhagen/2973212926
Scream by Mingo Hagen is licensed under CC BY 2.0 / Added some texts to original
他ユーザーのレスポンスが返ってくる
レスポンスが返ってこない
リソースは余っているのにレスポンスが遅い
リクエストが遅い
レスポンスが遅い
https://www.?ickr.com/photos/dailym/6790546237
bottleneck by ferrie=di?erentieel & J?ran Maaswinkel DailyM.net is licensed under CC BY 2.0 / Added some texts to original
ボトルネックを探すぞ
Ganglia
Resource Monitoring
ボトルネックやスケールアウトの計画を立てるためにリソースのモニタリングは重要。
ロードアベレージ?CPU?メモリ?ディスクアクセス?スワップ?ネットワーク転送量?コネ
クション数?GC頻度?ヒープ使用率?スレッド数など気になるところは可視化しておく。
Zabbix、Munin、MRTG、Sensuなど。下記はGangliaの例。
Ganglia
jmxsh plugin
JXMの情報をGangliaで取得するためのプラグイン。下記のオプションを有効にする。
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8887
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Ganglia
jmxsh plugin
プラグインの設定ファイルに値を取得するホストの情報と、プロットする値を設定する。
metricの値の末尾に##diffを追加すると差分、##deltaを追加すると増分をプロットする。
Total Thread Countなどの積算値は増分をプロットすると見やすい。
modules {
module {
name = 'jmxsh'
language = 'python'
param host { value = 'localhost' }
param port { value = '8887' }
param name { value = 'jvm' }
param metric_group { value = 'jvm' }
param heap { value = 'java.lang:type=Memory HeapMemoryUsage' }
param total_started_thread_count {
value = 'java.lang:type=Threading TotalStartedThreadCount' }
}
}
collection_group {
collect_every = 15
time_threshold = 45
metric { name = 'jmx_jvm_heap' }
metric { name = ‘total_started_thread_count##delta’ }
}
Flight
Recorder
Mission Control
Flight Recorderで取得したJVMの統計情報を可視化するツール。
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
というオプションを付けてアプリケーションサーバーを起動し、jcmdコマンドで統計情報を取
得する。
# プロファイル開始
jcmd [プロセスID] JFR.start
# データのダンプ
jcmd [プロセスID] JFR.dump filename="[出力ファイル名]" recording=[レコードID]
https://www.?ickr.com/photos/chidorian/106706292
Shogi by Ishikawa Ken is licensed under CC BY 2.0 / Added some texts to original
JPAの
スケールアウト
戦略
READが
頭打ち
https://www.?ickr.com/photos/mjhagen/2973212926
Scream by Mingo Hagen is licensed under CC BY 2.0 / Added some texts to original
Master
Slave
Replication
Master-Slave Replication
更新系クエリ(INSERT / UPDATE / DELETE)はマスターへ発行し、検索系クエリ(SELECT)
はスレーブに発行することで負荷を分散させる。
スレーブは負荷に応じて複数台用意できる。
ReplicationINSERT
UPDATE
DELETE
Master Database Slave DatabaseApplication
SELECT
MySQL
Replication
Driver
MySQL ReplicationDriver
com.mysql.jdbc.ReplicationDriverというJDBCドライバを使う。
jdbc:mysql:replication://master,slave1,slave2…/database
java.sql.Connection#setReadOnly(true)した場合はスレーブのホストに発行される。
JPAの場合はentityManagerのunwrapメソッドでjava.sql.Connectionを取得する。
// for EclipseLink
entityManager.unwrap(Connection.class).setReadOnly(true);
// for Hibernate
entityManager.unwrap(SessionImplementor.class).connection().setReadOnly(true);
User user = entityManager.find(User.class, 1L);
WRITEも
頭打ち
https://www.?ickr.com/photos/mjhagen/2973212926
Scream by Mingo Hagen is licensed under CC BY 2.0 / Added some texts to original
Partitioning
Partitioning
一定のルールに従ってクエリを発行するデータベースを分ける。IDの剰余などをキーにして振
り分けるのが一般的。
ジョインやソートができないのでアプリケーションの設計にも影響あり。
Master Database
Application
Master Database
ID:1,3,5,7...
ID:2,4,6,8...
EclipseLink
Partitioning
EclipseLink Partitioning
EclipseLinkにはパーティショニング(シャーディング)の機能があり、複数のデータベースにク
エリを振り分けられる。
@HashPartitioningの他に@ValuePartitioningや@RangePartitioningなど用途によって複数
のパーティショニング戦略が用意されている。
@Entity
@HashPartitioning(
name = "hashPartitioningById",
partitionColumn = @Column(name = "id"),
connectionPools = { "pool0", "pool1" },
unionUnpartitionableQueries = true)
@Partitioned("hashPartitioningById")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Integer id;
@Column(nullable = false, unique = true)
private String mailAddress;
}
EclipseLink
Partitioning
EclipseLink Partitioning
EclipseLinkにはパーティショニング(シャーディング)の機能があり、複数のデータベースにク
エリを振り分けられる。
HibernateはHibernate Shardsというサブプロジェクトがあるが最近はメンテナンスが止
まっている。
<persistence-unit name="freesia" transaction-type="JTA">
<jta-data-source>jdbc/freesia</jta-data-source>
<properties>
<property name="eclipselink.connection-pool.pool0.jtaDataSource"
value="jdbc/freesia0" />
<property name="eclipselink.connection-pool.pool1.jtaDataSource"
value="jdbc/freesia1" />
</properties>
</persistence-unit>
EclipseLink
Partitioning
EclipseLink Partitioning
where句にpartitioningColumnで指定したカラムがある場合。
FROM User u WHERE u.id = 1
Master Database
Application
Master Database
partitioningColumnをキーにして特
定のデータベースにクエリを発行する。
ID:1,3,5,7...
ID:2,4,6,8...
EclipseLink
Partitioning
EclipseLink Partitioning
where句にpartitioningColumnで指定したカラムがない場合。
FROM User u WHERE u.name = 'nagaseyasuhito'
Master Database
Application
Master Database
ID:1,3,5,7...
ID:2,4,6,8...
どのデータベースに対してもクエリが発
行されない。
EclipseLink
Partitioning
EclipseLink Partitioning
unionUnpartitionableQueriesにtrueを設定し、where句にpartitioningColumnで
指定したカラムがない場合。
FROM User u WHERE u.name = 'nagaseyasuhito'
Master Database
Application
Master Database
ID:1,3,5,7...
ID:2,4,6,8...
すべてのデータベースにクエリが発行さ
れ結果は結合される。
Master
Slave
Replication
Partitioning
Master-Slave Replication & Partitioning
もちろんこれらの合わせ技も可能。
Master Database
Application
Master Database
Replication
Slave Database
Replication
Slave Database
ID:1,3,5,7...
ID:2,4,6,8...
Conclusion
https://www.?ickr.com/photos/ensh/3440275790
Heart of Light by Emmanuel Huybrechts is licensed under CC BY 2.0 / Added some texts to original
Conclusion
負荷テストの目的は
? システムの限界性能を知る
? 高負荷時の不具合を発見する
JPAのスケールアウト戦略は
? マスター/スレーブのレプリケーション
? パーティショニング
https://www.?ickr.com/photos/ensh/3440275790
Heart of Light by Emmanuel Huybrechts is licensed under CC BY 2.0 / Added some texts to original
Ad

Recommended

JMeter によるパフォーマンステスト指南
JMeter によるパフォーマンステスト指南
じゅん なかざ
?
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
なべ
?
闯别苍办颈苍蝉と箩惭别迟别谤で负荷テストの自动化
闯别苍办颈苍蝉と箩惭别迟别谤で负荷テストの自动化
Satoshi Akama
?
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
Yuta Kawadai
?
闯补惫补厂肠谤颈辫迟で奥别产顿谤颈惫别谤のテストコードを书きましょ
闯补惫补厂肠谤颈辫迟で奥别产顿谤颈惫别谤のテストコードを书きましょ
Kohki Nakashima
?
负荷対策しておもったことまとめ词闯惭别迟别谤で厂辞肠办别迟.滨翱もいけるでよ词
负荷対策しておもったことまとめ词闯惭别迟别谤で厂辞肠办别迟.滨翱もいけるでよ词
johgus johgus
?
Jmeter20120421
Jmeter20120421
hatakyo
?
础飞蝉で実现する蝉别濒别苍颈耻尘テスト高速术
础飞蝉で実现する蝉别濒别苍颈耻尘テスト高速术
finoue
?
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
?
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
Yoshitaka Kawashima
?
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
Yoshitaka Kawashima
?
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
?
CLRH_120414_WFTDD
CLRH_120414_WFTDD
Tomoyuki Obi
?
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
?
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
?
惭补惫别苍へのはじめの一歩
惭补惫别苍へのはじめの一歩
祐理 大野
?
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
?
Introduction to Spock
Introduction to Spock
Takahiro Sugiura
?
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
闯补惫补女子部
?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
JustSystems Corporation
?
テストゼロからイチに进むための戦略と戦术
テストゼロからイチに进むための戦略と戦术
Y Watanabe
?
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
?
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
?
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
?
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
?
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
Yasumasa Suenaga
?
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
Tsuyoshi Miyake
?
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
Yoshitaka Kawashima
?

More Related Content

What's hot (20)

Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
?
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
Yoshitaka Kawashima
?
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
Yoshitaka Kawashima
?
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
?
CLRH_120414_WFTDD
CLRH_120414_WFTDD
Tomoyuki Obi
?
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
?
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
?
惭补惫别苍へのはじめの一歩
惭补惫别苍へのはじめの一歩
祐理 大野
?
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
?
Introduction to Spock
Introduction to Spock
Takahiro Sugiura
?
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
闯补惫补女子部
?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
JustSystems Corporation
?
テストゼロからイチに进むための戦略と戦术
テストゼロからイチに进むための戦略と戦术
Y Watanabe
?
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
?
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
?
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
?
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
?
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
Yasumasa Suenaga
?
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
?
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
Yoshitaka Kawashima
?
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
Yoshitaka Kawashima
?
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
?
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
?
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
?
惭补惫别苍へのはじめの一歩
惭补惫别苍へのはじめの一歩
祐理 大野
?
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
?
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
闯补惫补女子部
?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
JustSystems Corporation
?
テストゼロからイチに进むための戦略と戦术
テストゼロからイチに进むための戦略と戦术
Y Watanabe
?
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
?
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
?
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Selenium 触ってみよう
Selenium 触ってみよう
Oda Shinsuke
?
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
Yasumasa Suenaga
?

Viewers also liked (20)

クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
Tsuyoshi Miyake
?
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
Yoshitaka Kawashima
?
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
?
闯补惫补开発の强力な相棒として今すく?使える骋谤辞辞惫测
闯补惫补开発の强力な相棒として今すく?使える骋谤辞辞惫测
Yasuharu Nakano
?
おっぴろげJavaEE DevOps
おっぴろげJavaEE DevOps
Taiichilow Nagase
?
ジャバのはなし、闯础痴础のはなし、闯补惫补のはなし
ジャバのはなし、闯础痴础のはなし、闯补惫补のはなし
YujiSoftware
?
サービスを成长させる為の开発について
サービスを成长させる為の开発について
tatsuya mazaki
?
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
?
贬补诲辞辞辫の绍介
贬补诲辞辞辫の绍介
bigt23
?
闯补惫补辞苍别报告会
闯补惫补辞苍别报告会
Munenori Hirakawa
?
いままで使ってきた携帯电话
いままで使ってきた携帯电话
Ippei Ogiwara
?
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
Nobutaka Takushima
?
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
?
2014.11.12 ibm bluemix pdf
2014.11.12 ibm bluemix pdf
Yuichiro Maki
?
颁辞肠辞蝉2诲-虫の深层?颁辞肠辞蝉2诲-虫组み込みによるピュア础苍诲谤辞颈诲/颈翱厂アプリの外科手术的统合
颁辞肠辞蝉2诲-虫の深层?颁辞肠辞蝉2诲-虫组み込みによるピュア础苍诲谤辞颈诲/颈翱厂アプリの外科手术的统合
Ryuichi Kubuki
?
【登坛资料】人类総インターネット时代に20代を无駄にしないために
【登坛资料】人类総インターネット时代に20代を无駄にしないために
Junichi Akagawa
?
Cross2013_DeNA
Cross2013_DeNA
Takeshi Kaise
?
闯补惫补でマサカリ投げてみた
闯补惫补でマサカリ投げてみた
YujiSoftware
?
Plannahフ?ロシ?ェクトの開発環境とdeploy gateの紹介
Plannahフ?ロシ?ェクトの開発環境とdeploy gateの紹介
Kenji Kinukawa
?
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
Tsuyoshi Miyake
?
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
闯辞产厂迟谤别补尘别谤ではじめる闯补惫补叠补迟肠丑のクラウド分散実行
Yoshitaka Kawashima
?
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
?
闯补惫补开発の强力な相棒として今すく?使える骋谤辞辞惫测
闯补惫补开発の强力な相棒として今すく?使える骋谤辞辞惫测
Yasuharu Nakano
?
ジャバのはなし、闯础痴础のはなし、闯补惫补のはなし
ジャバのはなし、闯础痴础のはなし、闯补惫补のはなし
YujiSoftware
?
サービスを成长させる為の开発について
サービスを成长させる為の开発について
tatsuya mazaki
?
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
?
贬补诲辞辞辫の绍介
贬补诲辞辞辫の绍介
bigt23
?
いままで使ってきた携帯电话
いままで使ってきた携帯电话
Ippei Ogiwara
?
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
Nobutaka Takushima
?
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
?
2014.11.12 ibm bluemix pdf
2014.11.12 ibm bluemix pdf
Yuichiro Maki
?
颁辞肠辞蝉2诲-虫の深层?颁辞肠辞蝉2诲-虫组み込みによるピュア础苍诲谤辞颈诲/颈翱厂アプリの外科手术的统合
颁辞肠辞蝉2诲-虫の深层?颁辞肠辞蝉2诲-虫组み込みによるピュア础苍诲谤辞颈诲/颈翱厂アプリの外科手术的统合
Ryuichi Kubuki
?
【登坛资料】人类総インターネット时代に20代を无駄にしないために
【登坛资料】人类総インターネット时代に20代を无駄にしないために
Junichi Akagawa
?
闯补惫补でマサカリ投げてみた
闯补惫补でマサカリ投げてみた
YujiSoftware
?
Plannahフ?ロシ?ェクトの開発環境とdeploy gateの紹介
Plannahフ?ロシ?ェクトの開発環境とdeploy gateの紹介
Kenji Kinukawa
?
Ad

Similar to 大規模な負荷て?もト?キト?キしない為のJava EE (20)

あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
?
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
?
関西笔丑辫勉强会の濒颈尘别の话
関西笔丑辫勉强会の濒颈尘别の话
Hisateru Tanaka
?
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
?
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
?
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
?
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
?
Apache Torqueについて
Apache Torqueについて
tako pons
?
Maven2 プラグイン入門
Maven2 プラグイン入門
guestd4898b
?
各言語の k-means 比較
各言語の k-means 比較
y-uti
?
アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
Spock's world
Spock's world
Takuma Watabiki
?
闯顿碍ツール使ってますか
闯顿碍ツール使ってますか
Chihiro Ito
?
诲补迟别迟颈尘别.诲补迟别迟颈尘别.苍辞飞()をモックしたい.辫诲蹿
诲补迟别迟颈尘别.诲补迟别迟颈尘别.苍辞飞()をモックしたい.辫诲蹿
YutaNemoto1
?
OpenStack on OpenStack with CI
OpenStack on OpenStack with CI
kanabuchi
?
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
?
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?
Task Spooler を試した
Task Spooler を試した
y-uti
?
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
?
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
?
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
?
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
?
関西笔丑辫勉强会の濒颈尘别の话
関西笔丑辫勉强会の濒颈尘别の话
Hisateru Tanaka
?
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
?
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
?
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
?
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
?
Apache Torqueについて
Apache Torqueについて
tako pons
?
Maven2 プラグイン入門
Maven2 プラグイン入門
guestd4898b
?
各言語の k-means 比較
各言語の k-means 比較
y-uti
?
アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
闯顿碍ツール使ってますか
闯顿碍ツール使ってますか
Chihiro Ito
?
诲补迟别迟颈尘别.诲补迟别迟颈尘别.苍辞飞()をモックしたい.辫诲蹿
诲补迟别迟颈尘别.诲补迟别迟颈尘别.苍辞飞()をモックしたい.辫诲蹿
YutaNemoto1
?
OpenStack on OpenStack with CI
OpenStack on OpenStack with CI
kanabuchi
?
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
?
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?
Task Spooler を試した
Task Spooler を試した
y-uti
?
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
?
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
?
Ad

Recently uploaded (7)

PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
やってみた!OpenAI Function Calling 入門 .
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
やってみた!OpenAI Function Calling 入門 .
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
?

大規模な負荷て?もト?キト?キしない為のJava EE