SlideShare una empresa de Scribd logo
1 de 142
Descargar para leer sin conexión
で 最新技術学習の
基礎 を 身につける。
- 最近よく聞くキーワードの解説で 初心者もイチから学べる業界トレンド -
50min
2018/5/17 Java Day Tokyo 2018 セッション資料
SOMPOシステムズ株式会社
@nishino_chekhov
西野大介
所属:SOMPOシステムズ株式会社 *
@nishino_chekhov
* 損保ジャパン日本興亜のシステム会社
スピーカー紹介
(超大規模 Java EE 7 開発案件進行中)
nishinochekhov
直近のイベント登壇
2018/3:IBM Think(米ラスベガス)
2018/4:日本GlassFish ユーザー会
2018/5:Java Day Tokyo ←Now!
2018/6:IBM Think Japan
(6/11:基調講演
6/12:当社事例紹介セッション)
名前など
名前:西野大介
SNS:
INDEX
• Introduction
• 用語解説
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
• 解説を終えて
Introduction
こんな経験はありませんか?
①社内の情報共有ツール(メール、チャット、etc)や、
ニュースサイト、誰かとの会話の中で...
何か新しい技術用語を耳にする。
こんな経験はありませんか?
①社内の情報共有ツール(メール、チャット、etc)や、
ニュースサイト、誰かとの会話の中で...
何か新しい技術用語を耳にする。
マイクロ
サービス?
こんな経験はありませんか?
②どんな技術か、検索してみる。
こんな経験はありませんか?
③解説ページを見つける。
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
③解説ページを見つける。
こんな経験はありませんか?
お、これだ。
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
③解説ページを見つける。
「簡単に説明すると」だって、いいですね。
どれどれ...
こんな経験はありませんか?
お、これだ。
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
④ん?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
④ん?
こんな経験はありませんか?
RESTful
Web API?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
④ん?
こんな経験はありませんか?
RESTful
Web API?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
疎結合?
④ん?
こんな経験はありませんか?
RESTful
Web API?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
モノリ
シック?
疎結合?
④ん?
むずかしい用語がたくさん出てきた。
(簡単な説明じゃなかったのか...)
こんな経験はありませんか?
RESTful
Web API?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
モノリ
シック?
疎結合?
④ん?
むずかしい用語がたくさん出てきた。
(簡単な説明じゃなかったのか...)
とりあえず先に進んでみよう。
こんな経験はありませんか?
RESTful
Web API?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
モノリ
シック?
疎結合?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
ビジネスプロセス
コレオグラフィ?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
ビジネスプロセス
コレオグラフィ?
ビジネスプロセス
オーケストレーシ
ョン?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
ビジネスプロセス
コレオグラフィ?
ビジネスプロセス
オーケストレーシ
ョン?
ITガバナンス?
⑤あれ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
ビジネスプロセス
コレオグラフィ?
ビジネスプロセス
オーケストレーシ
ョン?
ITガバナンス?
EA?
エンタープライズ
アーキテクチャ?
こんな経験はありませんか?
※上記は実際に"マイクロサービス"を検索し1件目に出てきたサイトです
引用元:https://knowledge.sakura.ad.jp/3377/
SOA?
サービス指向
アーキテクチャ? サイロ化?
Web
サービス?
SOAP?
WSDL?
ESB?
エンタープライズ
サービスバス?
ビジネスプロセス
コレオグラフィ?
ビジネスプロセス
オーケストレーシ
ョン?
ITガバナンス?
EA?
エンタープライズ
アーキテクチャ?
⑤あれ?
・・・・・・。
⑥閉じる。
今回はこの問題を解決します。
どうやって解決するのか?
◆手段
調べる際の「軸となる用語」を、
一通り、一気に学ぶ。
<ポイント①>
いわゆる基礎を学ぶのではなく、
「パラシュート勉強法」を用いて
「軸となる用語」を学ぶ
<ポイント②>
「軸となる用語」は、
Java One 2017の「Java Keynote」
及び「Java Community Keynote」に
出てきたワードから選定する
解決方法
どうやって解決するのか?
◆手段
調べる際の「軸となる用語」を、
一通り、一気に学ぶ。
<ポイント①>
いわゆる基礎を学ぶのではなく、
「パラシュート勉強法」を用いて
「軸となる用語」を学ぶ
<ポイント②>
「軸となる用語」は、
Java One 2017の「Java Keynote」
及び「Java Community Keynote」に
出てきたワードから選定する
解決方法
重要な軸となる用語を
知っておくと…
⇒知らない用語が出てきたとき、
重要でないものは無視しても
理解ができる。
⇒知らない用語がでてきても、
軸の用語と比較することで
大体のイメージがわき、
迷子にならない。溺れない。
どうやって解決するのか?
◆手段
調べる際の「軸となる用語」を、
一通り、一気に学ぶ。
<ポイント①>
いわゆる基礎を学ぶのではなく、
「パラシュート勉強法」を用いて
「軸となる用語」を学ぶ
<ポイント②>
「軸となる用語」は、
Java One 2017の「Java Keynote」
及び「Java Community Keynote」に
出てきたワードから選定する
解決方法
直接重要な用語を学び(パラシ
ュートでターゲットに降り立つ
ように)、次にその周辺を学ぶ
ことで理解を広げる勉強法。
※出典:『「超」勉強法』野口 悠紀雄
基礎から階段で学ぼうとすると、
使わない知識も多いし、退屈。
現在流行しているワード(バズ
ワード)なら、興味もわくし、
把握すれば今すぐ役立つ。
どうやって解決するのか?
◆手段
調べる際の「軸となる用語」を、
一通り、一気に学ぶ。
<ポイント①>
いわゆる基礎を学ぶのではなく、
「パラシュート勉強法」を用いて
「軸となる用語」を学ぶ
<ポイント②>
「軸となる用語」は、
Java One 2017の「Java Keynote」
及び「Java Community Keynote」に
出てきたワードから選定する
解決方法
Java OneはJavaの世界最大の
カンファレンス。
そのKeynoteで取り上げられて
いる=最もHotなワード。
これこそ、我々が今
パラシュートで降下する
ターゲットとして、最も効果的。
と、いうことで、選定されたのは
以下のバズワードたちです。
と、いうことで、選定されたのは
以下のバズワードたちです。
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
REST
JSON
API
モジュール化Java 9
EE4J
Eclipse財団
JCP
Jakarta EE
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
と、いうことで、選定されたのは
以下のバズワードたちです。
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
これ全部、わかるようになります。
REST
JSON
API
モジュール化Java 9
EE4J
Eclipse財団
JCP
Jakarta EE
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
このセッションのあと、
皆さんは、以下のようなセリフが
言えるようになっているでしょう。
このセッションのあと、
皆さんは、以下のようなセリフが
言えるようになっているでしょう。
Q:
「マイクロサービスって知ってますか?どんな技術なんですか?」
このセッションのあと、
皆さんは、以下のようなセリフが
言えるようになっているでしょう。
Q:
「マイクロサービスって知ってますか?どんな技術なんですか?」
A:
「マイクロサービス?ああ、あれね。“モノリシック”な“アーキテクチャ”に比
べると、各機能が“REST”の“API”で繋がり“JSON”でやりとりする“疎結合”に
なっていて、“リーンスタートアップ”に適しているよね。“Java 9”でついに
“モジュール化”に対応するJavaだけど、その拡張機能であるJava EEが“EE4J”
によって “Eclipse財団”に移管されて “Jakarta EE”となった経緯からみても、
マイクロサービスに対する業界の注目度はすごいんだよ。Amazonの“AWS”の
ような“クラウド”サービスにも相性がいいし、“仮想コンテナ”ツールである
“Docker”やその管理ツール“Kubernetes”との親和性も高いから、“スケーリ
ング”が容易なのもいいよね。そして“Git/GitHub”、“Jenkins”、“Slack”とい
った最新ツールの活用による“継続的インテグレーション”、“継続的デリバリ”
などの“DevOps開発手法”が取り入れやすくなる利点がある。つまり“コンウ
ェイの法則”に従えば、“アジャイル”に向いていると言えるね」
では、これから開始しますが、
その前に一点だけ...
丁寧に解説していきますが、
このセッションは知らない用語を
知っていく過程の連続です。
ご注意
所要時間は残りの45分。
ご注意
所要時間は残りの45分。
まさに空からの急降下、
超高速の知的体験です。
気を抜くとついていけなく
なるかもしれません。
ご注意
ですが、
個人でひとつひとつ調べるより、
はるかに効率的で、
理解もしやすいということは
お約束できます。
ご注意
では、深呼吸をして
気持ちをととのえてください。
では、深呼吸をして
気持ちをととのえてください。
・・・。
では、深呼吸をして
気持ちをととのえてください。
・・・。
・・・。
準備できましたか?
さあ、知的領域の空に
ダイブしましょう!
さあ、知的領域の空に
ダイブしましょう!
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
マイクロサービスとは
REST
JSON
API
モジュール化Java 9
EE4J
Eclipse財団
JCP
Jakarta EE
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
これまでのアプリは、大きなプログラムがあり、
各機能も、ロジックも、データも
全てがくっついた状態でした。
この構造は、一枚岩のようにバラせないことから
「モノリシック(一枚岩)」と言われます。
※各機能が密接にくっついていることから、
この状態を「密結合」と形容します。
マイクロサービスとは
①前提:モノリシックとは
https://martinfowler.com/articles/microservices/images/sketch.png
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
従来型のモノリシックなアプリケーションは、
以下のような課題を抱えていました。
×軽微な修正で、全体の現行保証テストが必須
⇒テスト工数の肥大化
×境目の定義がなく、機能間のつながりが複雑に
⇒開発難易度の上昇
×流用できない。いちからつくりなおし
⇒開発工数の肥大化(コピペは混沌への扉)
×上記事項の結果、リリースまでに時間がかかる
⇒ビジネス速度の低下
マイクロサービスとは
②モノリシックの課題
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
そこで出てきたのがマイクロサービスという
アーキテクチャ(システムの構造)です。
大きな一枚岩ひとつのアプリではなく、
小さなサービス(機能)を複数組み合わせることで
ひとつのサービス(アプリ)を提供する考え方です。
※各機能が疎な状態(疎遠、疎か)になっているので
この状態を「疎結合」と形容します。
マイクロサービスとは
③マイクロサービスの登場
https://martinfowler.com/articles/microservices/images/sketch.png
※具体的構造は次項。
ここではイメージを
ざっくりつかんで
ください。
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
マイクロサービスを適用して開発すると、
モノリシックなアプリが抱える問題を解決できます。
◎修正は他のサービスに影響しない
⇒テスト工数の減少
◎機能間の境目がはっきりしており、つながり方が明確
⇒修正難易度の低下(担当範囲が減るという意味で)
◎既存サービスを部品として新アプリに適用できる
⇒開発工数の減少
◎上記事項の結果、リリースまでが速くなる
⇒ビジネス速度の向上
マイクロサービスとは
④マイクロサービスが解決する課題
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
IT業界の中心である米のビジネスは仮説ありき。
まず仮説を立て、試作品を作り、結果を検証し、
それを基にまた仮説を立て...というサイクルを回す
「リーンスタートアップ」と呼ばれるビジネス手法に、
マイクロサービスが適しています。
※リーン=無駄がない、スタートアップ=起業
を組み合わせた造語
マイクロサービスとは
⑤マイクロサービス 流行の背景
仮説
試作検証
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
いいことばかりではない点に要注意
×たくさんのサービスを通信でつなぐので、
大抵の場合パフォーマンスは下がる
×いちからシステム構築や移行する際の適用は、
一般にモノリシックより難易度が上がる
×基本は非同期通信のため、トランザクション保証が
難しい。決済など信頼性が必要なサービスでは
適用の難易度が高い(デメリットが目立つ)
×やりすぎると「インテグレーション・
スパゲティ」に陥る(全体構造が見えなくなる)
★そもそも、ビジネスが複雑な場合は、
マイクロサービスにしても単純になりようがない。
まずビジネスそのものやデータ構造を単純化すべき
マイクロサービスとは
⑥マイクロサービスに関する注意
▼マイクロサービスとは
①前提:モノリシックとは
②モノリシックの課題
③マイクロサービスの登場
④解決する課題
⑤流行の背景
⑥注意
⑦まとめ
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
◆従来型のアーキテクチャ(システムの構造)を
モノリシックと呼ぶ。
大きいひとかたまりでアプリを作る密結合な手法
◆最近流行ってるのはマイクロサービス。
小さい部品を集め一個のアプリを作る疎結合な手法
◆マイクロサービスはモノリシックに比べて、
テスト軽い、開発速い、コスト安い、など
メリットがたくさんある。
◆また、リーンスタートアップ(仮説検証)に
適しており、企業の適用事例がたくさんある
◆でもいいことだけではない。
性能課題、トランザクション保証できない、
インテグ・スパゲティ(全体が見えない)など。
マイクロサービスは、銀の弾丸にはなりませんが、
うまく使えると多大なメリットをもたらします。
マイクロサービスとは
⑦マイクロサービスとは、まとめ
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
マイクロサービスの構造
REST
JSON
API
モジュール化Java 9
EE4J
Eclipse財団
JCP
Jakarta EE
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
2つのアーキテクチャを図で比較すると以下の通り。
マイクロサービスの構造
①構造イメージ
画面
ビジネス
ロジック
DB
データ
アクセス
DB FILEDB
画面 画面
サービス サービス サービス
サービス サービス サービス
モノリシック マイクロサービス
ひとかたまり 複数のサービスが構成
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
サービスは独立しているので、言語選択は自由。
他社が提供しているサービスでもOK。
データ保存技術も自由。
※NoSQLとはビッグデータに適した次代の
データベース(詳細は本題からそれるので省略)
マイクロサービスの構造
②各サービスは何で作ってもOK
RDB FILENoSQL
Java C# JavaScript
C++ PHP COBOL
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
ポイントは、データが分かれているということ。
それにより、各サービスの独立性が保たれます。
マイクロサービスの構造
③ポイントはデータを分けること
ひとつのデータに対して
アクセスするサービスはひとつ
DB FILEDB
サービス サービス サービス
サービス サービス サービス
DB
サービス サービス
NG例
ひとつのデータに
複数サービスの接続は×
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
データが分かれているので、
各サービス間は値を投げ合うことでつながります。
各サービス間は、RESTと呼ばれるAPIで
つなげます。
マイクロサービスの構造
④サービス間のつなぎ方
この実線の部分はREST
DB FILEDB
サービス サービス サービス
サービス サービス サービス
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
APIとはApplication Programming Interfaceの略。
アプリとアプリのインターフェースのことです。
そもそもインターフェースとは?
何かと何かをつなげる方式のこと。
マイクロサービスの構造
⑤APIとは
アプリ アプリ
TV Blu-rayHDMI
iPhone 電源USB
REST
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
RESTとは、具体的な通信プロトコル(通信のルール)
などではなく、「それを使うと結構都合がいいよ」
という考え方レベルの、通信における指針です。
いくつか目安となる基準(制約)を満たしていると
RESTと呼ぶもの(RESTfulである)とされますが、
厳密なルールや定義などではなく指針なので、
結構あいまいなものです。
★本来的にはRoy Fielding氏の提唱した原則を
指しますが、そこにとらわれると
実態から遠ざかるため省略
★最近のバズワードは大体定義があいまい
または当初の定義から変化している
マイクロサービスの構造
⑥RESTとは
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
抽象的な本来の提言内容はともかく
世の中でRESTと呼ばれる通信を行っている機能は、
実態としては大体以下のような定義になっています。
・HTTP通信を使用し、CRUD(*1)の際に
その標準メソッドを活用する
(POST,GET,PUT,DELETE)
・リソースの名前(接続先)は
URL(*2)で定義される
・ステートレス(アプリケーションが今
どんな状態かを持たない)である
マイクロサービスの構造
⑦実態としてのRESTの定義
*2:厳密にはURIと言いますが、ほぼURLと同じなのでここでその話は割愛
*1:Create,Read,Update,Deleteの頭文字。
データを作る、読み込む、更新する、削除するといったデータ操作の総称
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
例えば日記という情報を管理するには、
以下のようなURLが考えられるでしょう。
http://〇〇〇.jp/diary/2018/04/01
このURLに対して、HTTPメソッドでアクセス。
・日記を作成する場合はPOSTでアクセス
(これにより、このURLが作られます)
・日記を取得する場合はGETでアクセス
・日記を削除する場合はDELETEでアクセス
※わかりにくかったら、とりあえず各サービスは
URLでつながっているんだな、とイメージしましょう
(そしてつなぎ方に何かルールがあるらしい、
くらいでまずはOK)
マイクロサービスの構造
⑧要するにどういうのがREST?
アクセス サービス
〇〇〇
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
◎基本的なHTTPを使って通信するので、
多くのプログラム言語やアプリケーションで
簡単に扱える。
◎HTTPの標準機能で簡単にCRUDを表現できる。
◎URLがわかればその情報にアクセスできる
◎インターフェースとして構造がシンプルであり、
システム内部の変化に強い
(内部が変わってもURLは変わりにくい)
マイクロサービスの構造
⑨RESTのメリット
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
RESTで受け渡しするデータ形式は、
「JSON」と呼ばれる形式が
デファクトスタンダード(事実上の標準)です。
マイクロサービスの構造
⑩データ受け渡しの形式
この実線の部分は、JSON形式で
データを受け渡ししている
DB FILEDB
サービス サービス サービス
サービス サービス サービス
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
JSONとは、「JavaScript Object Notation」の略。
XMLやCSVなどと同じように、
テキストデータの記述形式を指します。
以下のようなメリットがあります。
◎XMLと同じように項目と値が対になっているので、
項目の変更に強い
◎XMLと違って項目名の持ち方が冗長でないので、
データ量が軽い
◎その名の通りJavaScriptでのデータ記述法を
基にしているので、Webで扱いやすい
(JavaScriptで簡単に取り込める)
マイクロサービスの構造
⑪JSONとは
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
XMLとJSONで同じデータを表記した場合
以下のようなイメージとなります。
マイクロサービスの構造
⑫JSONサンプル
<契約者情報>
<契約者>
<氏名>損保太郎</氏名>
<電話番号>090-0000-0000</電話番号>
</契約者>
<契約者>
<氏名>損保二郎</氏名>
<電話番号>090-1111-1111</電話番号>
</契約者>
<契約者>
<氏名>損保花子</氏名>
<電話番号>090-2222-2222</電話番号>
</契約者>
</契約者情報>
[
{
"氏名" : "損保太郎",
"電話番号" : "090-0000-0000"
},
{
"氏名" : "損保二郎",
"電話番号" : "090-1111-1111"
},
{
"氏名" : "損保花子",
"電話番号" : "090-2222-2222"
}
]
113文字 65文字
XML JSON
▽マイクロサービスとは
▼マイクロサービスの構造
①構造イメージ
②各サービスは
何で作ってもOK
③ポイントは
データを分けること
④サービス間のつなぎ方
⑤APIとは
⑥RESTとは
⑦実態としてのRESTの定義
⑧要するに
どういうのがREST?
⑨RESTのメリット
⑩データ受け渡しの形式
⑪JSONとは
⑫JSONサンプル
⑬構造まとめ
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
◆個々のサービスは自由な開発言語、データ管理で
構成することができる
◆データを独立させることで機能の独立性を保つ
◆サービス間はRESTという指針をもとにした
API(接続方式)である、URLでつながっている
◆RESTだと多くのシステムで扱いやすく、
シンプルでわかりやすい
◆RESTで受け渡すデータはJSON形式のテキストデータ
◆JSONは軽く、項目追加の影響も最小限にでき、
JavaScriptでそのまま読めるので便利
マイクロサービスの構造
⑬構造まとめ
DB FILEDB
サービス サービス サービス
サービス サービス サービス
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
マイクロサービスに適した技術
#1:アプリケーション領域
モジュール化Java 9
EE4J
Eclipse財団
JCPREST
JSON
API
Jakarta EE
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わること
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
マイクロサービスは、アプリケーションによっては
数百という数のサービスで構成されます。
ちりも積もれば、ということで、
各サービスのプログラム自体のデータ容量は
小さい方が望ましいです。
マイクロサービスに適した技術#1:アプリ領域
①小さい方がいい
数が多いので、
ひとつひとつの
サイズは、
少しでも
小さい方がいい
サービス群
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
Javaで書いたアプリを動かすために必要な
Javaの標準プログラム(JRE)。
バージョン8までのJavaは、その標準プログラムの
一部だけを使っているアプリであったとしても、
標準プログラムの全てを本番環境に
配置しなければなりませんでした。
Java 9からは根本的に構造を変え、
「モジュール化」に対応しています。
★現在の最新バージョンはJava 10ですが、
この大きな変化が起こった9に着目して解説
マイクロサービスに適した技術#1:アプリ領域
②Java 9から変わったこと
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
必要なモジュールだけ配置できるようになるため、
不要なものはあげなくてすむようになります。
そうすると、標準プログラムの容量が軽くなります。
また、不要な標準プログラムの機能を持たなくて
済むようになるので、不要部分のバグやUPDATEに
影響を受けなくなります。
※さらに、Java 9では、標準プログラムだけではなく
自分たちの作ったアプリも
同様にモジュール化できます。
それによってアプリ自体も同じメリットが享受でき、
システム全体が最適化できます。
マイクロサービスに適した技術#1:アプリ領域
③モジュール化とは
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
このモジュール化対応は「Project Jigsaw」と
いう名称で呼ばれていました。
まさにジグソーパズルを組み合わせるように、
必要なライブラリだけを本番環境に
配置することができるようになるということです。
マイクロサービスに適した技術#1:アプリ領域
④Project Jigsaw
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
公開側、利用側、それぞれの
アプリケーションのルートディレクトリに
「module-info.java」という定義用ファイルを
配置します。
以下の例の通りにすると、sampleserviceが公開され、
sampleclientはそれを利用することができます。
マイクロサービスに適した技術#1:アプリ領域
⑤モジュール化の実装方法
module sampleservice {
exports com.example.hello;
}
module-info.java(公開側)
module sampleclient {
requires sampleservice;
}
module-info.java(利用側)
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
ここから、Javaにおけるマイクロサービス対応の
道のりの話を少しします。
当初、Javaにおけるマイクロサービス対応について
Oracle社は熱心ではありませんでした。
その姿勢は、Java関係者のうちの
マイクロサービスを推進したがっているメンバーと、
ギャップのあるものでした。
マイクロサービスに適した技術#1:アプリ領域
⑥Javaの話:マイクロサービス対応への道のり
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
Javaの仕様の策定は
「JCP」という独立した団体が決めています。
しかし、実質的にはOracleのエキスパートが
JCPの大半のプロジェクトで
リーダーを務めていました。
加えて、Javaの基準を満たすことを評価する
テストキット(TCK)もOracle社の資産であるため、
ある意味、Oracle社の許可を得なければ
Javaの基準を満たしたアプリケーションサーバを
名乗れないという状況でした。
マイクロサービスに適した技術#1:アプリ領域
⑦Javaの話:Javaに対するOracle社の存在
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
そのようにJavaの実質権利者であるにも関わらず、
マイクロサービス対応に乗り気ではなく、
加えて、Javaの開発もやや活発ではない状況が
見られていました。
そこで多くの技術者がJavaの現状を心配し、
各方面で懸念を表明し始めます。
その結果、Oracle社がJavaの権利を
Eclipse財団(Eclipse Foundation)に移管する
というプロジェクト「EE4J」が立ち上がりました。
(マイクロサービスが いかに大きな存在か!)
※このあたりの経緯を詳しく知りたい方は
以下のJavaOne 2017レポートを参照ください
(7スライド目、10スライド目)
https://www.slideshare.net/DaisukeNishino1/oow2017-and-javaone2017-report-daisuke-nishinosompo-systems
マイクロサービスに適した技術#1:アプリ領域
⑧Javaの話:EE4J
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
GlassFishというアプリケーションサーバや
TCKが今回Oracle社からリライセンスされます。
またIBMのJava VMやアプリサーバの中核部分も
それぞれ「Open J9」「Open Liberty」として寄贈。
加えて、Java SE(標準機能)とJava EE(拡張機能)
のうち、後者が Jakarta EE と名前を変え、
Eclipse財団にて仕様策定されることとなります。
その他にも「MicroProfile」や「MVC1.0」など、
多くのJavaに関するプロダクトやプロジェクトが、
Eclipseに集約しています(このあたり詳細省略)。
マイクロサービスに適した技術#1:アプリ領域
⑨Javaの話:Eclipse財団が持っているもの
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
コミュニティの関係性がフラットになり、
仕様策定などに関する意見交換が活発化しています。
さらに、テストキットによるライセンス許諾などの
流れも適切になります。
それらの結果、Javaの進化が迅速化すると
見られています。
全体として、技術者やJavaコミュニティは
今回の意思決定を大歓迎していると
言ってよいでしょう。
マイクロサービスに適した技術#1:アプリ領域
⑩Javaの話:Eclipseに移管して何が変わるのか
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
注意しておくべきことは、
Eclipse Foundationに移管されたのは
Java EE(Jakarta EE)のみであるということ。
Java SEは引き続きJCPにて仕様策定されます。
つまり、今後のJavaは
Oracle主導のJava SEと、
コミュニティ主導のJakarta EEとが
力を合わせて発展させていくものとなるでしょう。
マイクロサービスに適した技術#1:アプリ領域
⑪Javaの話:Java SEとの関係性
▽マイクロサービスとは
▽マイクロサービスの構造
▼適した技術#1:アプリ
①小さい方がいい
②Java 9から変わったこと
③モジュール化とは
④Project Jigsaw
⑤モジュール化の実装方法
⑥Javaの話:
マイクロサービス対応
までの道のり
⑦Javaの話:Javaに対する
Oracle社の存在
⑧Javaの話:EE4J
⑨Javaの話:Eclipse財団が
持っているもの
⑩Javaの話:Eclipseに
移管して何が変わるのか
⑪Javaの話:Java SE との
関係性
⑫アプリ領域編、まとめ
▽適した技術#2:インフラ
▽適した技術#3:開発手法
▽解説を終えて
◆プログラムサイズも小さい方がいい
◆Java 9からモジュール化に対応するので
サイズが小さく、必要なものだけ使用でき、
マイクロサービスに適した技術となる
◆Javaは実質Oracle社が多くの権利を保有していた
◆そのOracle社がマイクロサービス対応に
熱心でないことが、Java界隈で話題となった
◆その結果、「EE4J」というプロジェクトにて
Javaの権利がEclipse財団に移管されることとなった
◆他にもJavaに関する多くのフィーチャーが
Eclipse財団に集結。EEの仕様策定も
JCPから移管されることに
◆Eclipse財団になることで、ベンダー各社の立場が
並列化する。何より、進化の速度が速くなる
◆今後はJava SEとJakarta EEとのコミュニティが
協力し合いながら、Javaを進化させていく
マイクロサービスに適した技術#1:アプリ領域
⑫適した技術 アプリ領域編、まとめ
マイクロ
サービス
モノリシック
密結合
疎結合
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
アーキテクチャ
リーンスタートアップ
マイクロサービスに適した技術
#2:インフラ領域
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
REST
JSON
API
モジュール化Java 9
EE4J
Eclipse財団
JCP
Jakarta EE
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
システムは、ソフトウェアとハードウェアに
分けられます。
ここまでは主にソフトの話を中心としていましたが
この章ではハードの話をします。
従来型手法では、ハードウェアを
自社で購入し、自社に配置し、
運用することが必要でした。
この管理の仕方を、「オンプレミス(オンプレ)」
と呼びます。
マイクロサービスに適した技術#2:インフラ領域
①前提:オンプレミスとは
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
「クラウド」とは、オンプレと違い
自社でハードウェアを所有しない方法です。
ハードウェアは、ネットワークの先で
各クラウドサービス提供事業者
(クラウドベンダー)が管理します。
クラウド利用者は、そのハードウェアに
自社のソフトウェアを配置し、サービス利用料を
支払うことで間借りして使います。
マイクロサービスに適した技術#2:インフラ領域
②クラウドとは
https://www.gmocloud.com/suggest/onpremise_cloud/img/img_top.png
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
◎ハードウェアを所有しないので
初期投資が安い。機器も古くならない。
◎OSへのセキュリティパッチ適用などは
クラウドベンダーが実施するため、
下手に自前で管理するよりセキュアな環境
◎スケーリング(*1)が簡単に行える。
例えば繁忙期がある利用者などは、
そのためのサーバ増設などが不要で安価。
*1:クラウド上で処理するサーバの数を増減させたり、
高性能サーバに入れ替えたりすることで
その時の負荷の度合いに適した状態にすること
マイクロサービスに適した技術#2:インフラ領域
③クラウドのメリット
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
×セキュアとはいっても、データやアプリという
資産をクラウドベンダーに預けるので
その管理はベンダーの良心に任せることになる
(どう管理しているかはわからない)
×データを常にネットワーク上にさらすので、
物理的には危険性が増大するといえる
×安いと言っても時間単位のレンタル課金なので
使い方によっては割高。
ハードウェアを買って適切に運用できるなら
その方が安いケースは多い
×アクセスポイントが近場にないと遅い
(特に日本は優遇されていないことが多い)
マイクロサービスに適した技術#2:インフラ領域
④クラウドのデメリット
トップはAmazon(AWS)。それをMicrosoft(Azure)、
IBM(Bluemix)、Google(Google Cloud)の3社が
追従中。その他に10社程度存在します。
10社の中で特に注目なのは
Alibaba(Alibaba Cloud)とOracle(Oracle Cloud)。
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
マイクロサービスに適した技術#2:インフラ領域
⑤参考:クラウドベンダーのシェア
https://www.srgresearch.com/articles/leading-cloud-providers-continue-run-away-market
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
クラウドは基本的にひとつのハードウェアを
複数の契約者が共有するので、
仮想化技術が必須となってきます。
従来は、VMWareなどの
仮想マシンが主流でした。
例えば、Windowsの上でMac OSを動かせるような
アプリは見たことありますか?
あのイメージです。
マイクロサービスに適した技術#2:インフラ領域
⑥クラウドに適した技術:仮想化
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
現在は、OSごと仮想化するのではなく、
「コンテナ」と呼ばれる独自の枠組みでくくり、
その枠組みを仮想化する技術が流行してきています。
マイクロサービスに適した技術#2:インフラ領域
⑦仮想化技術のひとつ:コンテナ
http://cn.teldevice.co.jp/files/kcf/image/column/compass/20160202/docker01.jpg
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
仮想コンテナツールのデファクトスタンダードは
「Docker」です。利用するメリットは以下の通り。
◎OSごと仮想化する方式に比べ、軽い。
容量がコンパクトになり、処理負荷も減少する
◎可搬性が高い。ファイルをそのまま持ち運ぶ感覚で
別の環境に持ち運べ、他者への提供も容易。
OSごと仮想化すると、そのスナップショットに
OS情報も入るので、別環境や他者提供が難しい。
◎WordPress、MySQL、MongoDB、Node.jsなど
様々なシステムにあわせた設定ファイルが
公式に登録済で、利用者は自分でOSやミドルウェア、
アプリをインストールせずすぐに利用できる
マイクロサービスに適した技術#2:インフラ領域
⑧仮想コンテナツール:Docker
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
複数の処理を同時にさばく場合など、複数の環境で
同じコンテナを並列稼働させたい場合があります。
しかし、Docker単体では、このコンテナを
どの環境に配置するのが最適か、探す作業は
やってくれません。
また、アクセスがあるとき急に増減した際に
自動でスケーリングするという機能もありません。
つまり、Docker単体では
コンテナのメリット「配置が容易」という特性や
クラウドのメリット「スケーリングが容易」という
特性を活かしきれない、という課題がありました。
マイクロサービスに適した技術#2:インフラ領域
⑨Dockerだけでは足りないこと
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
そういったDockerの足りないところを満たすのが
「Kubernetes」というコンテナ管理ツールです。
Kubernetesを使うことにより、
複数台のマシンから構成される実行環境を
一台のマシンのように扱うことができます。
どのマシンに対し
どのように配置するかは
Kubernetes側で
対応してくれます。
アクセス集中時などの
スケーリングも自動。
マイクロサービスに適した技術#2:インフラ領域
⑩コンテナ管理ツール:Kubernetes
https://deis.com/images/blog-images/kubernetes-overview-1-0.png
※正式な読み方がなく人によって
まちまちなのですが、
おおよそ「クーバネティス」と
読まれるようです
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
同等のツールは他にもあるものの、他より多機能で、
最も人気があり、加えてDockerCon EU 2017では
Dockerに統合するとの発表もあったことから、
Kubernetesがデファクトスタンダードになると
みられています。
Docker&Kubernetesに関する話はここまで。
マイクロサービスに適した技術#2:インフラ領域
⑪参考:コンテナ管理ツールのデファクトスタンダード
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▼適した技術#2:インフラ
①前提:オンプレミスとは
②クラウドとは
③クラウドのメリット
④クラウドのデメリット
⑤クラウドベンダーのシェア
⑥仮想化
⑦コンテナ
⑧Docker
⑨Dockerに足りないこと
⑩Kubernetes
⑪デファクトスタンダード
⑫インフラ領域編、まとめ
▽適した技術#3:開発手法
▽解説を終えて
◆ハードを購入して管理するオンプレミスに対し、
クラウドならハードの管理は不要に。
使い方によっては安く、スケーリングも容易
◆ただし、ベンダー管理に依存するため、
セキュリティや可用性などは良くも悪くも
ベンダー任せ。また適切な規模を自分で管理するなら
オンプレの方が安いケースも多い
◆クラウドの活用には仮想化技術が事実上必須であり、
OSより上の部分だけ仮想化するコンテナ技術が人気
◆製品名で言うとDockerと、その機能を最大化する
Kubernetesの組み合わせがほぼデファクト
マイクロサービスに適した技術#2:インフラ領域
⑫適した技術 インフラ領域編、まとめ
マイクロ
サービス
モノリシック
密結合
モジュール化Java 9
EE4J
Eclipse財団
疎結合
アーキテクチャ
JCP
REST
JSON
リーンスタートアップ
マイクロサービスに適した技術
#3:開発手法
アジャイル
コンウェイの法則
DevOps
Jenkins
Git/Github
Slack
CI/継続的
インテグレーション
CD/継続的
デリバリ
クラウド
AWS
Docker
Kubernetes
オンプレミス
コンテナ 仮想化
Azure
Bluemix
Google Cloud
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
メルヴィン・コンウェイという
コンピュータ科学者が提唱した法則があります。
「システムを設計する組織は、その組織構造を
そっくりまねた構造の設計を生み出してしまう」
言い換えると、
「組織の構造がシステムの構造と同じになる」ということ。
つまり、マイクロサービスを適用したシステムを作るには、
マイクロサービスと類似した組織構造が必要となる、
という考え方です。
マイクロサービスに適した技術#3:開発手法
①前提:コンウェイの法則
https://ja.wikipedia.org/wiki/メルヴィン・コンウェイ
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
マイクロサービスの特徴に、
以下の2点があることは既に学びました。
- サービスのサイズが小さい
- 個々のサービスが独立している
コンウェイの法則に従うと、
組織も以下の2点の特徴を持つ必要があります。
- 組織のサイズが小さい
- 個々の組織が独立している
この特徴を持つ開発手法が「アジャイル」です。
マイクロサービスに適した技術#3:開発手法
②マイクロサービス開発に求められる組織の特徴
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
アジャイルとは「俊敏」という意味で、
「小さなチームが短い開発期間での開発を繰り返す」
という開発手法です。
伝統的なウォーターフォールと比較して
以下のような特徴があります。
マイクロサービスに適した技術#3:開発手法
③アジャイルの特徴
http://www.nec-solutioninnovators.co.jp/column/01_agile.html
・全計画後に実行
・工程ごとに進み
前に戻らない
・全てそろって
からリリース
・機能単位で計画
・数週間で
全工程を実施
・1機能ごとに
リリース
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
◎使いたいものから短期間で使用・確認できる
◎フィードバックが速く、要件漏れや
ミスを早めに発見し改善できる
◎開発途中で変わった世間の変化や顧客要望に
柔軟に対応できる
マイクロサービスに適した技術#3:開発手法
④アジャイルのメリット
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
アジャイルは個々の組織が独立しているため、
通常の開発のような縦割り組織ではなく、
ひとつの組織に関係者が揃う必要があります。
その実現のために、アジャイルと併用されるのが
「DevOps」とよばれる開発手法です。
マイクロサービスに適した技術#3:開発手法
⑤アジャイル実施に不可欠なもの
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
例によって厳密な定義はないのですが、
基本概念は、
「開発担当(Development)と
運用担当(Operations)が協働する」
ということです。
※一般にOpsにはインフラ担当の意味も含みます。
Dev + Ops = DevOps
マイクロサービスに適した技術#3:開発手法
⑥DevOps開発手法
https://ja.wikipedia.org/wiki/DevOps
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
Devは改修や機能追加を担当するので、
言わば、価値を生み出す代償として
「システムを不安定にする」立場でした。
対するOpsの命題は「システムを安定稼働させる」
ことなので、つまりやりたいことが真逆。
しかもDevのバグで本番障害が出たら
Opsも緊急対応に加わる必要があったり...
ということでDevとOpsに溝が出来がちでした。
しかし、「価値のあるシステムを稼働させる」
という目標は共通のはずです。
そのためには、お互いの業務を最適化し、
仲良くすべきである、という指針がDevOpsです。
マイクロサービスに適した技術#3:開発手法
⑦DevOps出現の背景と、その意図すること
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
DevOpsには解釈がいろいろとあるのですが、
概ね「ツール面」と「組織文化面」の2カテゴリに
分かれ、以下のようなお題目が提示されます。
ツール面
(1)バージョン管理と共有
(2)ビルド・テスト・デプロイの自動化
(3)インフラ構築の自動化
(4)モニタリングとその結果の共有
組織文化面
DevとOpsがお互いを「尊重し、信頼し、
失敗を責めず、非難しない」
という精神論についての内容。
(当資料上こちらの面に関する詳細は割愛)
マイクロサービスに適した技術#3:開発手法
⑧DevOpsの実践方法
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
ツール面に関し、よく使われる実際のツールは
それぞれ以下の通り(代表的なものに絞っています)。
ツール面
(1)バージョン管理と共有
⇒Git
(2)ビルド・テスト・デプロイの自動化
⇒Jenkins
(3)インフラ構築の自動化
⇒Docker
(4)モニタリングとその結果の共有
⇒Slack
それぞれ説明していきます。
マイクロサービスに適した技術#3:開発手法
⑨実際に使われるツール
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
プログラム開発にはバージョン管理が不可欠です。
バージョン管理とは、プログラムを修正するたびに
過去のファイルを履歴として保存し、
それぞれにバージョンをつけておくこと。
このバージョン管理を行うことにより、
「欠陥発生時にいつそれが混入したか」を確認したり、
「過去の正常バージョンに戻したり」といったことが
容易になります。
マイクロサービスに適した技術#3:開発手法
⑩ツール面(1)バージョン管理:その意味
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
バージョン管理ツールは2種類あります。
集中型:履歴情報をサーバに一元管理する。
(SVNなど)
分散型:履歴情報を全員のPC内で重複管理する。
(Gitなど)
マイクロサービスに適した技術#3:開発手法
⑩ツール面(1)バージョン管理:集中型・分散型
https://www.slideshare.net/justinyoo/git-from-svn
集中型 分散型
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
なお、Web系界隈では分散型であるGitの方が
圧倒的に人気です。
ツールとして使い勝手がよいとか、
集中型と違い、ネットワーク接続しなくとも
コミットできるなど、その理由はいくつかあります。
しかし、最大の理由は
「GitHub」というソース共有管理サービスがあり、
そこに自分のソースをあげたり、
世界中の誰かが作ったソースをもらったりできること。
そういった多くのフリーライブラリを活用することで
高度な機能実現や開発工数削減につなげられます。
マイクロサービスに適した技術#3:開発手法
⑩ツール面(1)バージョン管理:Gitの人気
https://www.slideshare.net/justinyoo/git-from-svn
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
ビルド:テキストで書いたプログラムを
コンピュータが実行できる形式に変換する
テスト:プログラムに欠陥がないか
実行してみて確認すること
デプロイ:プログラムをコンピュータが実行できる場所
(テスト環境や本番環境)に配置すること
※過去の開発では、どれも担当者が
手動で行っていました。
ビルド...Eclipseのボタンでビルドしたり
テスト...JUnitなどのPTツールを自分で実行したり
デプロイ...ライブラリ管理者が作業として、
テスト環境や本番環境に配置したり
マイクロサービスに適した技術#3:開発手法
⑪ツール面(2)ビルド・テスト・デプロイの自動化
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
考え方としては、ビルド及びテストまでを
自動化する方法と、それに加えてデプロイも
自動で行う方法の2種類があります。
まず、ビルド及びテストを自動化すると
以下のようなメリットがあります。
◎成果物をコミットすると同時にビルドやテストを
行うので、欠陥混入にすぐ気付ける
◎細かくビルド、テストが実行されるので、
どの部分に欠陥混入したかがわかりやすい
◎ローカル環境に依存した問題を検知しやすい
(自分の環境では動いたのに...の即検知)
さらにデプロイまで自動化するメリットは以下。
◎デプロイすることで、より豊富なテストが実行できる。
(UIテスト、結合テスト、ユーザーテスト等)
◎コミットから本番リリースまでがすばやくできるので
リーンスタートアップ(仮説検証)の速度が上がる
マイクロサービスに適した技術#3:開発手法
⑪ツール面(2) 自動化のメリット
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
これらの自動化ツールとして
最も有名なのが「Jenkins」です。
GitHubとの連携も標準で用意されており、
ソースのコミットを自動で検知し、
ビルド、テスト、デプロイを自動で実行します。
実行結果ログの開発者への送信もしてくれます。
※Jenkinsそのものはビルドなどを行うツールではなく、
正確にはそれらのツールの実行を采配するものです。
ここでは細かいビルドツールなどの説明は省略します。
マイクロサービスに適した技術#3:開発手法
⑪ツール面(2) Jenkins
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
※Dockerは#2で説明済のため詳細を割愛します
マイクロサービスに適した技術#3:開発手法
⑫ツール面(3)インフラ構築の自動化:Docker
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
Jenkinsで実行した結果は、メール等でも
受領できますが、流行っているのは、
Slackというチャットツールへの通知です。
Slackは以下のようなことができます。
◎人とのコミュニケーション
◎他サービスによるコミュニケーション
⇒TwitterのタイムラインをSlackで見るなど
◎(Botによる)開発ツールとのコミュニケーション
⇒コマンドを打つことで、コミット指示するなど
つまり、コミュニケーションの一元化に適しているため
ビルドやテスト結果もSlackに流すことで扱いが楽に。
マイクロサービスに適した技術#3:開発手法
⑬ツール面(4)モニタリングとその結果の共有
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
ここまでに説明したDevOps開発手法のツール面で
説明した4つのファクターは、DevOpsから切り出し
「継続的インテグレーション(CI)」、
「継続的デリバリ(CD)」などと呼ばれ、
昨今の大規模開発に欠かせないものとなっています。
マイクロサービスに適した技術#3:開発手法
⑭継続的インテグレーション、継続的デリバリ(CI/CD)
https://blog.gds-gov.tech/that-ci-cd-thing-principles-implementation-tools-aa8e77f9a350
※CI/CDを紹介するサイトより抜粋
▽マイクロサービスとは
▽マイクロサービスの構造
▽適した技術#1:アプリ
▽適した技術#2:インフラ
▼適した技術#3:開発手法
①前提:コンウェイの法則
②求められる組織の特徴
③アジャイルの特徴
④アジャイルのメリット
⑤アジャイルに不可欠なもの
⑥DevOps開発手法
⑦DevOps出現の背景と意図
⑧DepOpsの実践方法
⑨実際に使われるツール
⑩ツール面(1)
バージョン管理、その意味
集中型・分散型
Gitの人気
⑪ツール面(2)
ビルド・テスト・デプロイ自動化
自動化のメリット
Jenkins
⑫ツール面(3)
インフラ構築の自動化
⑬ツール面(4)モニタリング
⑭CI/CD
⑮参考:CIとCDの違い
⑯CI/CD実行イメージ゙
⑰開発手法編、まとめ
▽解説を終えて
マイクロサービスに適した技術#3:開発手法
⑮参考:CIとCDの違い
なお、これらはとてもよく見る用語ですが、
どちらが何を指すか混乱しがちなので、
ここにまとめておきます。
CI:
プログラムをバージョン管理ツールにコミットした際
自動で「ビルド」と「テスト」を実行する
CD:
プログラムをバージョン管理ツールにコミットした際
自動で「ビルド」と「テスト」と「デプロイ」を実行する
つまり、CIの発展型がCDと押さえましょう。
※上記の通り、厳密にはソースコードの管理や結果の送信、
環境構築の自動化などの概念はCI/CDに含まれません。
しかし、CI/CDを実践する上でこれらの概念も当然必要となるため、
今回の説明上は含むものとして扱いました。
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)

Más contenido relacionado

La actualidad más candente

進撃の受託開発
進撃の受託開発進撃の受託開発
進撃の受託開発Koichi ITO
 
Spring 12年の歴史
Spring 12年の歴史Spring 12年の歴史
Spring 12年の歴史movmov
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)Masahiro Nishimi
 
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集Koichi ITO
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポート
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポートJJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポート
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポートDaisuke Nishino
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoftAgile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoftHiroshi Ohnuki
 
INSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONSINSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONSKoichi ITO
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
Changing Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile DevelopmentChanging Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile DevelopmentTaiji Tsuchiya
 
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみたHiroshi Ohnuki
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意Teruo Adachi
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来Masayuki Ueda
 
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門ryoheiseki1
 
Red Hat の日本でできるグローバルな働き方
Red Hat の日本でできるグローバルな働き方Red Hat の日本でできるグローバルな働き方
Red Hat の日本でできるグローバルな働き方Tadayoshi Sato
 
[Jjug]java small object programming
[Jjug]java small object programming[Jjug]java small object programming
[Jjug]java small object programmingYuichi Hasegawa
 
Netadashi Meetup #3 20170614
Netadashi Meetup #3 20170614Netadashi Meetup #3 20170614
Netadashi Meetup #3 20170614Shigeki Morizane
 
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかYahoo!デベロッパーネットワーク
 

La actualidad más candente (20)

進撃の受託開発
進撃の受託開発進撃の受託開発
進撃の受託開発
 
Spring 12年の歴史
Spring 12年の歴史Spring 12年の歴史
Spring 12年の歴史
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポート
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポートJJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポート
JJUG vs JSUG - 2大Javaコミュニティ 開催カンファレンスレポート
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoftAgile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoft
 
INSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONSINSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONS
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
Changing Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile DevelopmentChanging Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile Development
 
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来
 
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門
20201107 jjug ccc Spring Boot ユーザーのための Quarkus 入門
 
Red Hat の日本でできるグローバルな働き方
Red Hat の日本でできるグローバルな働き方Red Hat の日本でできるグローバルな働き方
Red Hat の日本でできるグローバルな働き方
 
[Jjug]java small object programming
[Jjug]java small object programming[Jjug]java small object programming
[Jjug]java small object programming
 
#ibis2017 Description: IBIS2017の企画セッションでの発表資料
#ibis2017 Description: IBIS2017の企画セッションでの発表資料#ibis2017 Description: IBIS2017の企画セッションでの発表資料
#ibis2017 Description: IBIS2017の企画セッションでの発表資料
 
Netadashi Meetup #3 20170614
Netadashi Meetup #3 20170614Netadashi Meetup #3 20170614
Netadashi Meetup #3 20170614
 
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
 

Similar a [Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)

ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめTetsutaro Watanabe
 
Elasticsearchを使ったTwitter監視アプリ
Elasticsearchを使ったTwitter監視アプリElasticsearchを使ったTwitter監視アプリ
Elasticsearchを使ったTwitter監視アプリYuichiArisaka
 
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際Tetsutaro Watanabe
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)rip jyr
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
Raspberrypitraining20171027
Raspberrypitraining20171027Raspberrypitraining20171027
Raspberrypitraining20171027Kiyoshi Ogawa
 
[社内セッション]DevOps時代の僕の生き方、働き方
[社内セッション]DevOps時代の僕の生き方、働き方[社内セッション]DevOps時代の僕の生き方、働き方
[社内セッション]DevOps時代の僕の生き方、働き方Shigeki Morizane
 
Q a9 for ics(lotus) developers
Q a9 for ics(lotus) developersQ a9 for ics(lotus) developers
Q a9 for ics(lotus) developers賢次 海老原
 
人工知能ハンズオン
人工知能ハンズオン人工知能ハンズオン
人工知能ハンズオンyaju88
 
第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407知礼 八子
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?Masakazu Muraoka
 
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で 企業のノーツアプリはこう生まれ変わる
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で企業のノーツアプリはこう生まれ変わるXpagesからさらにその先へ、最新Dominoアプリケーション開発で企業のノーツアプリはこう生まれ変わる
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で 企業のノーツアプリはこう生まれ変わるKazunori Tatsuki
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)uchan_nos
 
html5j最新情報
html5j最新情報html5j最新情報
html5j最新情報Saki Homma
 
エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習Preferred Networks
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所Kotaro Ogino
 
20151118パートナーソリューションセミナー2015プレゼンテーション public
20151118パートナーソリューションセミナー2015プレゼンテーション   public20151118パートナーソリューションセミナー2015プレゼンテーション   public
20151118パートナーソリューションセミナー2015プレゼンテーション publicKazunori Tatsuki
 
Jakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activitiesJakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activitiesRakuten Group, Inc.
 
IoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementIoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementKiyoshi Ogawa
 

Similar a [Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino) (20)

ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
 
Elasticsearchを使ったTwitter監視アプリ
Elasticsearchを使ったTwitter監視アプリElasticsearchを使ったTwitter監視アプリ
Elasticsearchを使ったTwitter監視アプリ
 
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
Raspberrypitraining20171027
Raspberrypitraining20171027Raspberrypitraining20171027
Raspberrypitraining20171027
 
[社内セッション]DevOps時代の僕の生き方、働き方
[社内セッション]DevOps時代の僕の生き方、働き方[社内セッション]DevOps時代の僕の生き方、働き方
[社内セッション]DevOps時代の僕の生き方、働き方
 
Q a9 for ics(lotus) developers
Q a9 for ics(lotus) developersQ a9 for ics(lotus) developers
Q a9 for ics(lotus) developers
 
人工知能ハンズオン
人工知能ハンズオン人工知能ハンズオン
人工知能ハンズオン
 
第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
 
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で 企業のノーツアプリはこう生まれ変わる
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で企業のノーツアプリはこう生まれ変わるXpagesからさらにその先へ、最新Dominoアプリケーション開発で企業のノーツアプリはこう生まれ変わる
Xpagesからさらにその先へ、最新Dominoアプリケーション開発で 企業のノーツアプリはこう生まれ変わる
 
Espruinoの紹介
Espruinoの紹介Espruinoの紹介
Espruinoの紹介
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 
html5j最新情報
html5j最新情報html5j最新情報
html5j最新情報
 
エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
 
20151118パートナーソリューションセミナー2015プレゼンテーション public
20151118パートナーソリューションセミナー2015プレゼンテーション   public20151118パートナーソリューションセミナー2015プレゼンテーション   public
20151118パートナーソリューションセミナー2015プレゼンテーション public
 
Jakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activitiesJakarta EE + MicroProfile, and our activities
Jakarta EE + MicroProfile, and our activities
 
IoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementIoT Cyber Security Counter Measurement
IoT Cyber Security Counter Measurement
 

Último

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (8)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)