SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Japan Java User Group 
アーキテクチャトレンド 
鈴木雄介 
日本Javaユーザーグループ 
グロースエクスパートナーズ株式会社 
JavaOne報告会 
#JJUG#j1jp
Japan Java User Group 
はじめに 
•JavaOneで感じたアーキテクチャのトレンドを 紹介 
–Javaに閉じる話ではありません 
•バズワード多めでお送りします 
–バスワードはトレンドを表現するキーワード 
–「だいたい」で使います 
•具体的な実装系の話は出てきません 
1
Japan Java User Group 
世の中の流れ 
•IoT(Internet of Things) 
–あらゆるモノがインターネットに接続し、あらゆる コトがインターネットを通じて発生する 
–デバイスの多様化と大量化 
»PC、タブレット、スマホ、ウェラブル 
»Kiosk、自動車、家電、テレビ 
»タグ、カード、センサー 
–経験の一体化 
»多様な入り口から同じデータにアクセスする 
»流通で言うとオムニチャネル 
2
Japan Java User Group 
サービスへ 
•アプリケーション開発からサービス運営へ 
–アプリケーション開発 
»仕様(静的)を定義する 
»開発者が作るもの 
»基本的には閉じた世界 
–サービス運営 
»利用(動的)からフィードバックを受ける 
»様々な人が関わりながら動かすもの 
»外的要因に大きく影響を受ける 
3
Japan Java User Group 
サービスへ 
•サービス運営のためのプロセス 
4 
企画 
開発 
運用 
Agile 
DevOps 
Lean 
Measure 
Lean 
Build 
tools & culture 
Individuals and interactions 
Working software 
Customer collaboration 
Responding to change
Japan Java User Group 
サービスへ 
•サービス運営のためのレイヤー 
5 
Networking 
Virtualization 
Storage 
Servers 
OS 
Middleware 
Code 
Configuration 
Runtime 
Data 
SaaS 
PaaS 
IaaS 
ロードバランサー 
ストレージアーカイブ 
CDN 
データ転送 
RDB・NoSQL 
データウェアハウス 
メモリキャッシュ 
データストリーム 
分散処理 
オーケストレーション 
サーチ 
ストリーミング 
メール配信 
メッセージキュー 
プッシュ通知 
ワークフロー 
課金 
メディア変換 
コンテナ 
デプロイ 
ユーザー活動分析 
モニタリング 
認証認可
Japan Java User Group 
アーキテクチャ 
•MicroservicesArchitecture 
–考え方 
»固有のドメインに固有のサービスがある 
▸サービスの境界はビジネスに従う 
▸データもドメインの内側にいれる 
»サービス同士はAPIとメッセージを介して連携する 
–SOAとの違い 
»SOA:モノリシックなアプリケーションをサービス化する 
▸トップダウンな設計 
»MSA:サービスを小さなサービスによって構成する 
▸ボトムアップな設計 
6
Japan Java User Group 
アーキテクチャ 
•Microservicesの9つの特徴 
–Componentization via Services/サービスによるコンポーネ ント化 
–Organized around Business Capabilities/ビジネスケイパビ リティに基づく組織化 
–Products not Projects/プロジェクトではなくプロダクト) 
–Smart endpoints and dumb pipes/スマートなエンドポイ ントと単純なパイプ処理 
–Decentralized Governance/分散ガバナンス 
–Decentralized Data Management/分散データマネジメント 
–Infrastructure Automation/インフラの自動化 
–Design for failure/フェイルを前提とした設計 
–Evolutionary Design/進化的な設計 
7 
Microservices 
http://martinfowler.com/articles/microservices.html
Japan Java User Group 
アーキテクチャ 
•Reactive 
–日本語でいうと「反応的な」 
–特徴は、 
»Event-driven/イベント駆動 
»Scalable/容易な拡張 
»Resilient/障害耐性が高い 
»Responsive/応答性が高い 
–技術的には、 
»非同期、ノンブロッキングなメッセージング 
»パターン:フェイル対応、疎結合化 
8 
The Reactive Manifesto 日本語訳 
http://kimitok.hateblo.jp/entry/2014/01/20/220438
Japan Java User Group 
アーキテクチャ 
•JavaOneの講演で紹介された製品 
–OSGi 
»Microservicesかというと微妙だけどモジュールは大事 
–Play+Akka 
»既存のEJBの手前にReactiveなレイヤーを作って性能改善し た話が面白かった 
–Spring Boot・Dropwizard 
»EoDだけではない監視や障害対応機能 
–RabbitMQ 
»メッセージといえば 
–Closureは、これから 
9
Japan Java User Group 
アーキテクチャ 
•JavaOneで話されていた設計 
–DDD(Domain Driven Design)を出す人が大半 
»Bounded Context/境界づけられたコンテキスト 
–変化の境界を見つけることが大事 
»変化の外的要因と内的要因 
»変化の質と量のギャップ 
»それぞれのドメインに最適な手法を用いる 
–とはいえ、手探りでっていう印象 
»カオスの淵 
10
Japan Java User Group 
アーキテクチャ 
•基本的な構成 
–Silver Bulletではない 
11 
HTML5(ClientMVC) 
API(Reactive/EDA) 
MessageQueue 
BusinessLogic(Domain) 
Database 
WebSocket/HTTP2.0 
AMQP 
AMQP 
JDBC
Japan Java User Group 
Docker 
•Docker 
–コンテナ型仮想化を基盤としたアプリケーションの 構成管理(と、考えた方がすっきりします) 
»OS~アプリケーションまでの構成情報のまとめてレポジト リに登録し、配布できるようになっている 
Networking 
Virtualization 
Storage 
Servers 
OS 
Middleware 
Code 
Configuration 
Runtime 
Data 
ここをまとめて 構成管理してる 
https://www.docker.com/
Japan Java User Group 
Docker 
•Dockerの仕組み1/2 
13 
http://www.slideshare.net/dotCloud/intro-docker-october-2013
Japan Java User Group 
Docker 
•Dockerの仕組み2/2 
14 
http://www.slideshare.net/dotCloud/intro-docker-october-2013
Japan Java User Group 
NoSQL 
•NoSQL 
–CAP定理 
»ノード間のデータ複製において、一貫性(Consistency)と 可用性(Availability)と分断耐性(Partition-tolerance)の3 つ全てを保証することはできない 
–とはいえ、ACIDは重要です 
»原子性(Atomicity)、一貫性(Consistency)、独立性( Isolation)、永続性(Durability) 
–この分野は正解がないので、個別のプロダクトの特 徴を見極めることが大事 
»JavaOneではMongoDBが多かったかな? 
15
Japan Java User Group 
なぜJavaなのか 
•Javaがオープンだから 
–成熟したJavaVMをプラットフォームとして、企業が 求める「安定性」と「挑戦」が両立している 
–両輪がフィードバックするのが理想的 
16 
JavaVM 
Standard 
Java 
Open 
Java 
安定しており、後方 互換性もある 
変化はゆっくり 
JavaME/SE/EE 
常に試行錯誤し、新し いことをやる 
安定しない 
コミュニティドリブン
Japan Java User Group 
サマリ 
•エンタープライズも楽しくなって参りました 
–大量なだけではなく、多様になっている点に注意 
–常に変化する全体にどうアプローチするか 
–ドメインに最適な手法を選択する 
•バズワードに注意 
–製品を安易にくくらない 
–どれもGoldenHammerではない 
»手段から始めない 
17

Contenu connexe

En vedette

HeapStatsの出展と発表を通して見えた JavaOne2014
HeapStatsの出展と発表を通して見えた JavaOne2014HeapStatsの出展と発表を通して見えた JavaOne2014
HeapStatsの出展と発表を通して見えた JavaOne2014Shinji Takao
 
JavaOne2014参加報告LT
JavaOne2014参加報告LTJavaOne2014参加報告LT
JavaOne2014参加報告LT諭 岡野
 
JJUG 2014 meetup - devoxx4kids 20141018
JJUG 2014 meetup  - devoxx4kids 20141018JJUG 2014 meetup  - devoxx4kids 20141018
JJUG 2014 meetup - devoxx4kids 20141018Huy Nguyen
 
OpenCVを使ったiQONの画像処理の全容
OpenCVを使ったiQONの画像処理の全容OpenCVを使ったiQONの画像処理の全容
OpenCVを使ったiQONの画像処理の全容Kazuki Matsumoto
 
ニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービスニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービスmosa siru
 
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦 おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦 CO-Sol for Community
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devKazuhiro Sera
 
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポートHiroyuki Ito
 
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にマイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にYusuke Suzuki
 
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側Takehiro Shiozaki
 
女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -Shoko Tanaka
 

En vedette (12)

HeapStatsの出展と発表を通して見えた JavaOne2014
HeapStatsの出展と発表を通して見えた JavaOne2014HeapStatsの出展と発表を通して見えた JavaOne2014
HeapStatsの出展と発表を通して見えた JavaOne2014
 
JavaOne2014参加報告LT
JavaOne2014参加報告LTJavaOne2014参加報告LT
JavaOne2014参加報告LT
 
JJUG 2014 meetup - devoxx4kids 20141018
JJUG 2014 meetup  - devoxx4kids 20141018JJUG 2014 meetup  - devoxx4kids 20141018
JJUG 2014 meetup - devoxx4kids 20141018
 
OpenCVを使ったiQONの画像処理の全容
OpenCVを使ったiQONの画像処理の全容OpenCVを使ったiQONの画像処理の全容
OpenCVを使ったiQONの画像処理の全容
 
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
 
ニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービスニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービス
 
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦 おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
 
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート
世界最大級のアジャイルカンファレンス報告:Agile2016参加レポート
 
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景にマイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
マイクロサービスアーキテクチャ - アーキテクチャ設計の歴史を背景に
 
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
 
女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -
 

Plus de Yusuke Suzuki

アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチYusuke Suzuki
 
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023Yusuke Suzuki
 
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022Yusuke Suzuki
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Yusuke Suzuki
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020Yusuke Suzuki
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかYusuke Suzuki
 
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏Yusuke Suzuki
 
エンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからエンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからYusuke Suzuki
 
アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18Yusuke Suzuki
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018Yusuke Suzuki
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPYusuke Suzuki
 
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーエンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーYusuke Suzuki
 
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会Yusuke Suzuki
 
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかJavaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかYusuke Suzuki
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Yusuke Suzuki
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはYusuke Suzuki
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座Yusuke Suzuki
 
ITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてYusuke Suzuki
 
エナジャイル設立によせて
エナジャイル設立によせてエナジャイル設立によせて
エナジャイル設立によせてYusuke Suzuki
 

Plus de Yusuke Suzuki (20)

アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
 
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
 
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
 
エンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからエンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれから
 
アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
 
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーエンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
 
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
 
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかJavaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのか
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とは
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
 
ITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについて
 
エナジャイル設立によせて
エナジャイル設立によせてエナジャイル設立によせて
エナジャイル設立によせて
 

JavaOne報告会2014アーキテクチャトレンド

  • 1. Japan Java User Group アーキテクチャトレンド 鈴木雄介 日本Javaユーザーグループ グロースエクスパートナーズ株式会社 JavaOne報告会 #JJUG#j1jp
  • 2. Japan Java User Group はじめに •JavaOneで感じたアーキテクチャのトレンドを 紹介 –Javaに閉じる話ではありません •バズワード多めでお送りします –バスワードはトレンドを表現するキーワード –「だいたい」で使います •具体的な実装系の話は出てきません 1
  • 3. Japan Java User Group 世の中の流れ •IoT(Internet of Things) –あらゆるモノがインターネットに接続し、あらゆる コトがインターネットを通じて発生する –デバイスの多様化と大量化 »PC、タブレット、スマホ、ウェラブル »Kiosk、自動車、家電、テレビ »タグ、カード、センサー –経験の一体化 »多様な入り口から同じデータにアクセスする »流通で言うとオムニチャネル 2
  • 4. Japan Java User Group サービスへ •アプリケーション開発からサービス運営へ –アプリケーション開発 »仕様(静的)を定義する »開発者が作るもの »基本的には閉じた世界 –サービス運営 »利用(動的)からフィードバックを受ける »様々な人が関わりながら動かすもの »外的要因に大きく影響を受ける 3
  • 5. Japan Java User Group サービスへ •サービス運営のためのプロセス 4 企画 開発 運用 Agile DevOps Lean Measure Lean Build tools & culture Individuals and interactions Working software Customer collaboration Responding to change
  • 6. Japan Java User Group サービスへ •サービス運営のためのレイヤー 5 Networking Virtualization Storage Servers OS Middleware Code Configuration Runtime Data SaaS PaaS IaaS ロードバランサー ストレージアーカイブ CDN データ転送 RDB・NoSQL データウェアハウス メモリキャッシュ データストリーム 分散処理 オーケストレーション サーチ ストリーミング メール配信 メッセージキュー プッシュ通知 ワークフロー 課金 メディア変換 コンテナ デプロイ ユーザー活動分析 モニタリング 認証認可
  • 7. Japan Java User Group アーキテクチャ •MicroservicesArchitecture –考え方 »固有のドメインに固有のサービスがある ▸サービスの境界はビジネスに従う ▸データもドメインの内側にいれる »サービス同士はAPIとメッセージを介して連携する –SOAとの違い »SOA:モノリシックなアプリケーションをサービス化する ▸トップダウンな設計 »MSA:サービスを小さなサービスによって構成する ▸ボトムアップな設計 6
  • 8. Japan Java User Group アーキテクチャ •Microservicesの9つの特徴 –Componentization via Services/サービスによるコンポーネ ント化 –Organized around Business Capabilities/ビジネスケイパビ リティに基づく組織化 –Products not Projects/プロジェクトではなくプロダクト) –Smart endpoints and dumb pipes/スマートなエンドポイ ントと単純なパイプ処理 –Decentralized Governance/分散ガバナンス –Decentralized Data Management/分散データマネジメント –Infrastructure Automation/インフラの自動化 –Design for failure/フェイルを前提とした設計 –Evolutionary Design/進化的な設計 7 Microservices http://martinfowler.com/articles/microservices.html
  • 9. Japan Java User Group アーキテクチャ •Reactive –日本語でいうと「反応的な」 –特徴は、 »Event-driven/イベント駆動 »Scalable/容易な拡張 »Resilient/障害耐性が高い »Responsive/応答性が高い –技術的には、 »非同期、ノンブロッキングなメッセージング »パターン:フェイル対応、疎結合化 8 The Reactive Manifesto 日本語訳 http://kimitok.hateblo.jp/entry/2014/01/20/220438
  • 10. Japan Java User Group アーキテクチャ •JavaOneの講演で紹介された製品 –OSGi »Microservicesかというと微妙だけどモジュールは大事 –Play+Akka »既存のEJBの手前にReactiveなレイヤーを作って性能改善し た話が面白かった –Spring Boot・Dropwizard »EoDだけではない監視や障害対応機能 –RabbitMQ »メッセージといえば –Closureは、これから 9
  • 11. Japan Java User Group アーキテクチャ •JavaOneで話されていた設計 –DDD(Domain Driven Design)を出す人が大半 »Bounded Context/境界づけられたコンテキスト –変化の境界を見つけることが大事 »変化の外的要因と内的要因 »変化の質と量のギャップ »それぞれのドメインに最適な手法を用いる –とはいえ、手探りでっていう印象 »カオスの淵 10
  • 12. Japan Java User Group アーキテクチャ •基本的な構成 –Silver Bulletではない 11 HTML5(ClientMVC) API(Reactive/EDA) MessageQueue BusinessLogic(Domain) Database WebSocket/HTTP2.0 AMQP AMQP JDBC
  • 13. Japan Java User Group Docker •Docker –コンテナ型仮想化を基盤としたアプリケーションの 構成管理(と、考えた方がすっきりします) »OS~アプリケーションまでの構成情報のまとめてレポジト リに登録し、配布できるようになっている Networking Virtualization Storage Servers OS Middleware Code Configuration Runtime Data ここをまとめて 構成管理してる https://www.docker.com/
  • 14. Japan Java User Group Docker •Dockerの仕組み1/2 13 http://www.slideshare.net/dotCloud/intro-docker-october-2013
  • 15. Japan Java User Group Docker •Dockerの仕組み2/2 14 http://www.slideshare.net/dotCloud/intro-docker-october-2013
  • 16. Japan Java User Group NoSQL •NoSQL –CAP定理 »ノード間のデータ複製において、一貫性(Consistency)と 可用性(Availability)と分断耐性(Partition-tolerance)の3 つ全てを保証することはできない –とはいえ、ACIDは重要です »原子性(Atomicity)、一貫性(Consistency)、独立性( Isolation)、永続性(Durability) –この分野は正解がないので、個別のプロダクトの特 徴を見極めることが大事 »JavaOneではMongoDBが多かったかな? 15
  • 17. Japan Java User Group なぜJavaなのか •Javaがオープンだから –成熟したJavaVMをプラットフォームとして、企業が 求める「安定性」と「挑戦」が両立している –両輪がフィードバックするのが理想的 16 JavaVM Standard Java Open Java 安定しており、後方 互換性もある 変化はゆっくり JavaME/SE/EE 常に試行錯誤し、新し いことをやる 安定しない コミュニティドリブン
  • 18. Japan Java User Group サマリ •エンタープライズも楽しくなって参りました –大量なだけではなく、多様になっている点に注意 –常に変化する全体にどうアプローチするか –ドメインに最適な手法を選択する •バズワードに注意 –製品を安易にくくらない –どれもGoldenHammerではない »手段から始めない 17