SlideShare a Scribd company logo
サービスをより にする
というアプローチ
Nov 9, 2019
Kamata Yoshihiko
EC Incubation Dept.
Rakuten, Inc.
3
持ち帰ってもらいたいこと
• アーキテクチャ選定・設計をするための引き出しを増やす。
• “Reactive System”と、”Reactive Programming”の違いを
理解する。
4
Agenda
• “Reactive Programming”ではなく“Reactive System”
です。
• リアクティブ宣言
• “Reactive System”の実装を紹介
• “Reactive System”とは?
• 私たちのサービスを例にして考えてみます。
5
Do you know “Micro-services”?
6
“Micro-services”
Process space
Process boundary
Network boundary
Host or Cluster boundary
7
“Micro-services”のもたらすメリット
• メンテナンス性の向上とテストのしやすさ
• 疎結合
• 互いに独立したデプロイメント
• Businessの責任範囲とのマッピング
• サービスごとに独立した開発単位
8
“Micro-services”によるデメリット
• 複雑なアーキテクチャ
→ キャッチアップ、調査を困難にする。
• ネットワーク遅延との戦い
• パラダイムシフト
→ 通信・デプロイ・管理など考えないといけない項目がMonolithic
なApplicationより多い。
9
Complexity < ???
10
• “Micro-services”は銀の弾丸ではない。単に流行りに乗っ
て、“Micro-services”化すればいいというものではない。
• “Micro-services”に特化したものではないが、システムを
強くするために相性の良いアプローチがある。
11
12
“Reactive 〜”という言葉をどこかで聞いたことがあるかと思います。
例えば、“Reactive programming”だったり、“ReactiveX”、など。
13
10%枠で、調査・ディスカッションを実施
“Reactive Programming”?
“Reactive System”?
当初、この2つを混同することが多く苦労しました。。。
この経験を踏まえて、
違いが分かるようにお話をしたいと思います。
14
まず、“Reactive”な言葉を整理するところから、始めたいと思います。
15
In computing, reactive programming is a declarative programming paradigm concerned with
data streams and the propagation of change. With this paradigm it is possible
to express static (e.g., arrays) or dynamic (e.g., event emitters) data streams with ease,
and also communicate that an inferred dependency within the associated execution
model exists, which facilitates the automatic propagation of the changed data flow.
“Reactive programming”は、Streamデータを対象にしたパラダイムでデータの変化は自動的に
伝搬される。
宣言的な記述になり、静的/動的どちらのデータもStreamとして簡単に扱える。
Reactive programming, https://en.wikipedia.org/wiki/Reactive_programming, 2019.11.9
16
例1
a = b + c;
b = 1, c = 1;
print a;
b = 2;
print a;
17
“Reactive Extensions”は、元々はMicrosoftから”.NET”用にリリースされたもので、その後、
RxJava, RxJS, RxRubyなど各言語に広まっていったもの。
“Reactive Programming”の実装で、”Observer pattern”を取り入れている。
連続したデータやイベントを宣言的に記述することができ、マルチスレッド処理やNon-blocking処
理などが抽象化されている。
大本があって、それがメンテナンスされたものが各言語用にポーティングされているわけではないみ
たいで、ものによってはしばらくメンテナンスされていなかったりするので、利用する際は、メンテ
ナンスされているか確認したほうがよさそう。
例えば、RxJavaは継続的にメンテナンスされているが、RxRubyは2014年12月からCommitがない。
18
ReactiveX intro, http://reactivex.io/intro.html, 2019.11.9
19
ReactiveX intro, http://reactivex.io/intro.html, 2019.11.9
20
“React(.js)”は、Facebookによってリリースされたライブラリで、Single Page Applicationに向いてい
る。
ReactはEventを管理して、結果をVirtual DOMという仕組みを介してDOMに反映させる。
このデータの流れは単一方向に限定される。
似たコンセプトを持つものとしては”Vue.js”や”Angluar.js”が存在。
21
Reactive Streams is an initiative to provide a standard for asynchronous stream processing
with non-blocking back pressure.
This encompasses efforts aimed at runtime environments (JVM and JavaScript) as well as network protocols.
Reactive Streams, http://www.reactive-streams.org/, 2019.11.9
“Reactive Stream”は、”non-blocking back pressure”を伴う非同期ストリームの標準を提供する
もので、実行環境とNetwork protocolを対象とした取り組みを含む。
これは、“Reactive System”を実現する上でも、取り入れることを検討したいものの一つです。
22
ここから本題に入ります。
23
Agenda
• “Reactive Programming”ではなく“Reactive System”
です。
• リアクティブ宣言
• “Reactive System”の実装を紹介
• “Reactive System”とは?
• 私たちのサービスを例にして考えてみます。
24
リアクティブ宣言
リアクティブ宣言, https://www.reactivemanifesto.org/, 2019.11.9
25
リアクティブ宣言には何が書かれてる?
求められているのは、システムアーキテクチャに対する明快なアプローチであると我々は考える。
そして、必要な側面の全ては既に独立に認識されている:
求めるものは、即応性と、耐障害性と、弾力性と、メッセージ駆動とを備えたシステムだ。
我々はこれをリアクティブシステム (Reactive Systems) と呼ぶ。
リアクティブシステムとして構築されたシステムはより柔軟で、疎結合で、スケーラビリティがある。
これによって開発が容易になるだけでなく、変更を受け入れやすくなる。
これらは障害に対してより著しい耐性を持ち、たとえ障害が起きても災害を起こすことなく優雅に対処する。
リアクティブシステムは高い即応性を持ち、ユーザに対して効果的な対話型フィードバックを与える。
リアクティブ宣言, https://www.reactivemanifesto.org/, 2019.11.9
26
もう一度、
リアクティブ宣言, https://www.reactivemanifesto.org/, 2019.11.9
27
Elastic / 弾力性
システムはワークロードが変動しても即応性を保ち続ける。
リアクティブシステムは、入力の提供に割り当てるリソースを増加あるいは
減少させることで入力量の変化に反応する。
これは、システムの中に競合する場所や中心的なボトルネックが存在しないように設計し、
シャーディングしたりレプリケーションしたコンポーネント間に入力を分散させることを意味する。
リアクティブシステムは関連するライブな性能測定を提供することで、
予測的かつリアクティブなスケーリングアルゴリズムをサポートする。
これらは、コモディティなハードウェアとソフトウェアプラットフォーム上で
費用対効果の高い弾力性を実現する。
the Reactive Manifesto, https://www.reactivemanifesto.org/, 2019.11.9
28
Resilient / 耐障害性
システムは障害に直面しても即応性を保ち続ける。
これが当てはまるのは高可用性のミッションクリティカルシステムだけではない
— 耐障害性を持たないシステムは障害が起きると即応性を失う。
耐障害性は、レプリケーション、封じ込め、隔離、そして委譲によって実現される。
障害はそれぞれのコンポーネントに封じ込められ、コンポーネントは互いに隔離されるので、
システムが部分的に故障してもシステム全体を危険に晒すことなしに回復することが保証される。
各々のコンポーネントの回復処理は(外部の)他のコンポーネントに委譲され、
また必要な場合はレプリケーションによって高可用性を保証する。
コンポーネントのクライアントはコンポーネントの障害への対処に苦しめられることがなくなる
the Reactive Manifesto, https://www.reactivemanifesto.org/, 2019.11.9
29
Message Driven
リアクティブシステムは非同期なメッセージパッシングに依ってコンポーネント間の境界を確立する。
これによって、疎結合性、隔離性、位置透過性を保証すると共に、
エラーをメッセージとして委譲する手段を確保する。
明示的なメッセージパッシングは負荷の管理と弾力性を可能とする。
また、システム内にメッセージキューを作成して監視し、
必要ならバックプレッシャーを適用することでフロー制御が可能になる。
通信の手段として位置透過なメッセージングを使うことで、
通信がクラスタを跨ぐ場合も単一のホスト内の場合も、同じ構成とセマンティクスで障害を管理できる。
ノンブロッキング通信により、受信側はアクティブ時のみリソースを消費できるので
システムのオーバヘッドを抑制できる。
the Reactive Manifesto, https://www.reactivemanifesto.org/, 2019.11.9
30
Responsive / 即応性
システムは可能な限りすみやかに応答する。
即応性とは使い勝手と実用性の基盤だが、しかしそれだけではなく、
問題が素早く検出され効果的に対処できることを意味する。
即応性のあるシステムは、迅速で、かつ一貫した応答時間を提供することに主眼を置く。
システムは応答時間に信頼性のある上限を確立し、一貫した品質のサービスを供給する。
この一貫した挙動によってエラー処理が単純化され、
エンドユーザの信頼を醸成し、さらなる相互作用を促す。
the Reactive Manifesto, https://www.reactivemanifesto.org/, 2019.11.9
31
Agenda
• “Reactive Programming”ではなく“Reactive System”
です。
• リアクティブ宣言
• “Reactive System”の実装を紹介
• “Reactive System”とは?
• 私たちのサービスを例にして考えてみます。
32
リアクティブ宣言によって、”Reactive System”の目指す姿は見えて
きた。ただ、ここで述べられているのは概念的な説明のみだ。
実際に、自分たちのシステムに取り入れるにはどうしたらいいのか?
“Reactive System”を実装するものとして有名なものを
確認してみます。
⇨ Netflixの“Hystrix”、“resilience4j”
⇨ Lightbendの“Akka”、“Play”、“Slick”
33
HystrixはNetflixが開発した“耐遅延”、“耐障害”ライブラリで、High Traffic状態にあっても、
即応性を失わないようにする。
これは、一部機能(Micro-services呼び出し、外部APIなど)の障害によりサービスが全断してしまう
ような事態を回避するために機能する。
“Circuit Breaker”によって応答不能を防ぐのと同時に、
監視機能を持ち、Alert機能や、 “Circuit Breaker”の自律的な管理も実現する。
34
Fault Tolerance in a High Volume, Distributed System, https://medium.com/netflix-techblog/fault-
tolerance-in-a-high-volume-distributed-system-91ab4faae74a, 2019.11.9
35
Hystrixの開発は既に終了していて、後継となっているのは“resilience4j”
“resilience4j”はHystrixにInspiredされたとされているが、Java8・関数型プログラミング向けに
設計されている。また、Hystrixに対して、依存関係を減らしており軽量なものになっている。
Reactive Programmingとしては、RxJava2やSpring Reactorを採用している。
実装する機能は、
・Retry, Circuit Breaker, Rate Limiter, Time Limiter, Bulkhead, Cache, Fallback
これらは、クラウド設計パターン(https://docs.microsoft.com/ja-jp/azure/architecture/patterns/)
としても知られる。
新しいものらしく、Exporterも実装されている。
36
Lightbend Reactive Platformは、個別のライブラリではなく、Reactive Systemを実現するための複数
のライブラリからなるカタログというか開発ガイドのようなもの。
Lightbend社のプロダクトだけでなく、Kafka, KubernetesまたはPublic Cloudなども含んでいて、
システムを構成する上で必要なライブラリなどが示されている。
Applicationを実装するためのライブラリとしては、Akka、Play、Slick、Lagomなどが提供される。
Akka、Play、Slickどれも非同期、Non-Blockingな特性を備えている。
アクターモデルのメッセージ駆動型ランタイムライブラリであるAkkaは、弾力性、耐障害性といったリ
アクティブシステムに必要な特性を持ち、Play frameworkでも利用される。
また、Lagomは、Akka、Play frameworkで構築されたMicro service向けのフレームワークで、
疎結合、メッセージング、Circuit Beakerなどをサポートする他、永続化アーキテクチャのデフォルトが
イベントベースになっている特徴がある。
37
どちらも耐障害性を高めるためCircuit Breakerを備え、システムの応答性能を保つための仕組みを持つ。
また、Lightbend Reactive Platformは、イベントベースのデータ管理(イベントソーシング・CQRS)
によって、シングルポイントになりやすいデータベースも登録(更新)と参照に分離することができて、
スケールしやすくしている。 -> akka
例えばCircuit Breakerのように、Kubernetesなどでもカバーできるものもあるが、常に応答可能なシ
ステムを実現するための様々なアイデアがReactive Systemという視点から得られる。
38
サービスメッシュで使われるIstioにもCircuit Breakerの機能がある。
ご存知の通り、Istioをインストールすると、Applicationの通信すべてにEnvoyが介在するよう
になるが、そのEnvoyが実体としてこの機能を受け持つ。
Ref: https://www.envoyproxy.io/docs/envoy/latest/api-v2/clusters/clusters
検知できるトリガーとして、HTTP以外にもTCP、あるいはRedisなんかもNetwork filterとし
て実装されている。この場合、非HTTPのものはHTTPにマップして扱われる。
39
中間まとめ
“Reactive System”
目的
結果
“Micro-services”化させるのが目的ではないし、
“Reactive System”のためのライブラリを実装するのも目的ではない。
“Responsive”な特性を得るため、
“Elastic”、“Resilient”な特性を持たせるために
こうしなければいけない。ということはないし、
例えば、今回のスライドの中で出しているクラウド設計パターンなど
参考になる観点はいくらでも取り入れるべきです。
⇨ 引き出しを増やしましょう。
40
Agenda
• “Reactive Programming”ではなく“Reactive System”
です。
• リアクティブ宣言
• “Reactive System”の実装を紹介
• “Reactive System”とは?
• 私たちのサービスを例にして考えてみます。
41
42
楽天ラッキーくじ(以降、ラッキーくじ)
楽天の“くじ”、知ってますか?
知ってますよね?
43
ラッキーくじ
所謂くじ。
当たり/外れの抽選を行うシンプルなサービスです。
お買いものパンダの演出が大変可愛いやつですね。
ですが、これがなかなか可愛くないアクセスを受けます。
本当にありがとうございます!
44
ラッキーくじ
可愛くないスパイク!
45
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
46
ラッキーくじ
特性
• 複数の開催用途が存在する。
• 同時に複数のくじが開催される。
• SEO的に今のドメインは大事。
• 可能な限り100%の稼働率を求められる。
47
ラッキーくじ
現在の構成
Web
Cache DB
master
Batch
DB
slave
CDN
Admin
Web
Web
Web
Auth
48
ラッキーくじ
Web
Cache DB
master
Batch
DB
slave
CDN
Admin
Web
Web
Web
Auth
外部API呼び出し、まずはここから。
49
ラッキーくじ
Web
Auth
問題点
Down or 不安定になった場合、
その場合は復帰を持つのみ。。。
Kubernetesに乗って、Down時の復旧
は早くなった。
リモートAPIが正常な応答を返せない場合、認証データが取得で
きないが、打てる手がないので、影響件数が取れて、システム
アラートの抑制ができればOK。
応答待ちによって受け口が詰まる事態の回避と、アラートの抑
制を実現するため、“Circuit Breaker”を導入。
回復に対する反応速度は検討が必要になるだろう。。。
Gem? or Envoy?
50
Circuit Breaker 周辺
• Circuit Breaker
• Rate Limit
• Bulkhead
• Retry
• Time Limit
• Cache
• Health Check
 相手側が弱い場合に
 1/Nの障害で全滅しないように
 自動でリトライしてくれると嬉しい
 永遠に待たないために
 結果をキャッシュ
 for Discovery
51
Other Apps : 縮退
Client
API
例えば、ページ表示処理において、PVカウンターみたいな
パーツの取得処理であれば、表示できない影響は軽微。
むしろ、それの影響でページが全く表示できない方がCritical。
この場合の考え方としては、機能縮退として、Circuit Breakerを
使う手も考えられる。
52
Other Apps : 制限
Client
API
API
Cache
Capacityの低いことが分かっているAPIに依存している場合に、
Rate Limitにより、閾値以上のアクセスがある場合はCacheを使う
ようにする。あるいは、Circuit BreakerによりAPIへのアクセスが
遮断された場合、Cacheされた値を利用するように切り替える。
ということも考えられる。
内容は古いかもしれない
53
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
54
ラッキーくじ
Web
MTA
問題点
単純に直接 “sendmail” を叩いてメー
ル送信をしている為、指定されたア
ドレスによってはTimeoutすることが
ある。サービス終了とか。
sendmail Queue
Cacheの考えで、直接MTAとやりとりすること
を避けて、APPはQueueに入れて終わりにする。
これにより、APPはTimeoutする可能性が大幅に
少なくなる。
Queue -> MTAは、別プロセスで対応。
例えば、泥臭くPollingしたり、Serverlessアー
キテクチャが使えるなら、Queuingをトリガー
に、Jobを実行させるとか。
55
当選メール : 代案
Web
DB
master
DB
slave-1
DB
slave-2
DB
slave-N
Cache
当選確認が必要なだけなら、そもそもメールじゃないといけないのか?
当選結果の照会画面で代替可能なら、切り替えてしまう手もあり?
確定データの参照なのでスケールが容易。
出力データの形式によっては、Cacheを併用することも考慮。
Master -> Slaveの伝搬遅延についても検討する。
56
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
57
ラッキーくじ
Web
Cache DB
master
Batch
DB
slave
CDN
Admin
Web
Web
Web
これ、実はテンプレート用のキャッシュです。
58
ラッキーくじ
Web
Admin
Batch
DB
これも改善の結果だが、Hostの再
起動時にCacheも作り直さないと
いけないほど強く依存してしまっ
ている。設計が古い。。。
管理ツールでカスタマイズした内容でテンプ
レートを書き出す。データサイズが大きいのと、
初期画面のアクセスが最も多くなるので各Host
のCacheに配布している。
59
ラッキーくじ
Web
Admin
Batch
DB
HostはVMで短時間で再起動されるが、rebootされ
た状態となるので、Cacheが空になる。再起動だけ
はしてある。。
ここで改善したいのは、
・スケールしやすくしたい。→ Elastic
・性能は落としたくない。
60
ラッキーくじ
Web
Admin
DB
改善したいのは、
・スケールしやすくしたい。→ Elastic
・性能は落としたくない。
単純にスケールのことだけを考えるなら、単純にす
るためにHostローカルのCacheを捨ててしまうのは
どうか?
直接DBを参照させるか、テンプレートを組み立て
て返すAPIを用意する。API
61
ラッキーくじ
Web
Admin
Batch
DB
改善したいのは、
・スケールしやすくしたい。→ Elastic
・性能は落としたくない。
性能面を考えると、Network越しの処理を増やすの
はちょっと気になる。
単純にreboot後にCacheを詰め直すScriptを流すだけ
でもいいし、今風にやるなら、起動の流れの中で
Cacheのセットを行い、そこをReadiness Probeで
チェックしバランサーに入れるように考えたらよさ
そうだ。
62
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
63
ラッキーくじ
Admin
Batch
DB
参加者・当選者の数は、DBが弱かった頃・・・
このシステム、実はけっこう昔から稼働していて、
物理サーバーの時代から活躍しています。
今はボタン一つで、すぐ使えるようになるイメージ
があるかもしれませんが、以前は、サーバー1台を
手に入れるのに1ヶ月のリードタイムが必要になる
こともありました。
性能の高いサーバーは貴重なので、リソースを専有
できず、相乗りになることも。
64
ラッキーくじ
Admin
Batch
DB
参加者・当選者の数は、DBが弱かった頃には、
バッチで集計した結果をFILEに落としておき、そこ
から表示していたが、DBが強くなってからは、前
日分はFILE、当日分は直接DBから集計して表示す
るHybrid式にしていて問題はない。
ここで考えるべきは、インフラの変化に合わせて、
単純な仕組みに見直せるか考えることと、例えば、
要求にリアルタイム性が含まれる場合に、リアルタ
イムという言葉を鵜呑みにしないこと。どれくらい
のタイムラグまでは許容できるか、業務的に何秒、
何分前までのデータがあれば問題ないのかを確認す
るのを忘れないことだ。
リアルタイムに集計結果を表示する。なんていう要
件を作ってしまったら負けだと思う。
65
ラッキーくじ
Admin
Batch
DB
もちろん、参照系の機能なので、普通に水平スケー
ルでもOKだろう。
DB参照で完結できるなら、WEBとDBのペアでス
ケールすればいいし、ちょっと加工しておいたほう
がいいなら冗長構成を取ったCacheに登録してス
ケールすればいい。
Cacheを考える場合は、構成をSimpleにするため、
Batchを外せないかも同時に検討したい。
ただし、Key:Valueのデータではなく時間で変化す
るデータでことに気をつけないといけないが、ここ
では完全に変化するものではなく、累積型なので取
れる手段は多いだろう。
Admin
Admin
DB
DB
DB
Cache
Cache
66
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
67
ラッキーくじ
Admin
DB
賞品には楽天スーパーポイントだったり、クーポン
だったり、ポイントのボーナス(x N)など複数の
タイプが存在するが、ここのオペレーションはレガ
シーなマニュアルオペレーションのままだ。
“Reactive System”の観点では特に変更は不要だが、
改善点として連携の自動化が早急に必要だ!と、急
に風向きが変わる可能性もあり得るので、予め対応
しやすい構成に変えておくのも一つの手だろう。
例えば、当選が確定したところからStreamとして処
理を流しひとまず“賞品”として抽象化しておけば、
その後の対応がしやすくなるだろう。
68
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
• 賞品には複数のタイプが存在する。
• テンプレートはカスタマイズ可能。
• 当選時にはユーザーへ当選メールを送信する。
• 参加者数/当選者数をリアルタイムに把握したい。
69
ラッキーくじ
スペック
• ユーザーは期間内に1回だけ抽選される。
• 設定数以上の当たりを出してはいけない。
• 賞品は複数の等級が設定できる。
ご覧の通り、コアとなる部分です。社内の勉強会などで、システムを捉えるのに、単純
化・抽象化するように話をしていますが、このサービスで言えば、くじを作れて、抽選が
できて、結果の管理ができることが大切だと思っていて、抽選はとても重要な部分です。
それだけに、Responsiveであることは必須になります。
70
ラッキーくじ
話を進める前に、構成を確認します。
• 物理サーバーだった時代には3台構成だったこのサービスも、VMになりXX台構成にスケー
ルされています。リソースも同様に拡張されています。
→ 十分なスケールは既に実施済
• Public Cloudを頼れば簡単な実装も考えられますが、障害時のリカバリーを考えると難しい
部分があるのでオンプレ前提で考えてみます。
→ コミュニケーションの問題、相手は大量の顧客を持っている。
→ Public Cloudを使うのであれば、AZ、マルチクラウドなども検討しますよね。
• 現在はVMだが、Kubernetesへ移すことも可能。
71
ラッキーくじ
現在の作りはモノリス。
“Reactive System”を知るまでは、スケールアップ、スケールアウトが基本で、その考えの中
で、アーキテクチャ選定をして、Application設計をしていた。
だが、“Reactive System”を知ったことで違うアプローチを考えるようになった。
大量のアクセスを捌
くにはどうしたらい
いのか?
何があってもユーザーに
レスポンスを返すにはど
うしたらいいのか?
72
ラッキーくじ
“Responsive”であることを目的とすると、安定してレスポンスを返すには?というのが発想の
起点になる。安定して、というのは、高負荷 / 障害時であっても一定のスピードでレスポンス
を返せることを指します。
このサービスの場合、一番ユーザーのアクセスを受け、システムトラブルの影響を受けやすい
画面を見直す必要があると考えられます。
何があってもユーザーにレ
スポンスを返すにはどうし
たらいいのか?
73
ラッキーくじ
74
ラッキーくじ
対障害性を高めるため、外部リソースを扱う箇所
にCircuit Breakerを導入する。
また、エラー検出時だけでなく、パフォーマンス
低下を検知して、自動的に流入量を変えられるよ
うに、Back pressureに対応した通信モジュールが
利用できるといいが、なければ自律的なRate Limit
を実現できないか検討しておきたい。
また、ビジネスロジックごとに、所要時間が変
わってくるので、適当な単位でMicro service化さ
せておくとリソースが有効活用できそうだ。
75
ラッキーくじ
また、元々大量のアクセスを処理できるようにし
たいという要求もあるので、1個1個の
Applicationのスループットも上げておきたい。
分割することで、ネットワークを跨ぐ機会も増え
ていくので、Non-blocking I/Oなども意識して待ち
時間を減らせるようにしておく。
また、このサービスはRubyなので、GILがかかる
範囲をできるだけ局所化できるようにすることも
検討できるとBetterだろう。
76
ラッキーくじ
特性
• 複数の開催用途が存在する。
• 同時に複数のくじが開催される。
• SEO的に今のドメインは大事。
• 可能な限り100%の稼働率を求められる。
77
ラッキーくじ
現在の仕組みは、Adminでくじのハコを作り、Batch
が準備を行い、Webで抽選・結果データをストア、
Adminからデータ提供。という普通な構成です。
ここまで見てきたように全体的な手直しをするとして、
依然残っている悩みがある。例えば、スーパーセール
のような重要なイベント中にDBへの流入量を下げな
いといけなくなったとして、セール用のくじを守るか、
他を守るか判断は難しい。あらかじめ仕組みを準備し
ていないと対応するのは困難だろう。
そこでリソースを隔離する案を試してみたい。
Admin
Batch
DB
Web
78
ラッキーくじ
Admin
Batch
DB Web
DB Web
L7-LB
Adminでデータとしてのくじを作る
だけではなく、くじ用リソース一式
を確保、アサインして、L7-LBの
ルーティングをアップデートする。
79
ラッキーくじ
Admin
Batch
DB Web
DB Web
L7-LB
この仕組みを導入できると、サービスとしての耐障害性能
は大幅に引き上げられそうだ。追加でアサインするリソー
スはテンポラリーなものとして扱いたいので(※勿論、テ
ンポラリとは言っても単独でインフラとして耐えられるも
のでないとならない。)データについては随時あるいは、
定期的に取り込む仕掛けも考えておく必要があるが、そち
らは業務要件に合わせて考えれば問題ないだろう。
肝になるのは、繰り返しになるが、迅速かつ一貫とした応
答時間、品質を担保するという“Responsive”な性質を取り
入れることだ。
80
まとめ
• “Reactive Programming”と“Reactive System”は違う。
• リアクティブ宣言は何度も繰り返し読むべし。
• “Reactive System”の実装は非同期性が肝。
• “Reactive System”とは?
→ 一貫した応答時間、品質を提供することを目的とした設計ア
プローチです。
81
持ち帰ってもらいたいこと
• アーキテクチャ選定・設計をするための引き出しを増やす。
-> 新しい視点、Labelingが大切です。
• “Reactive System”と、”Reactive Programming”の違いを
理解する。
RP -> Observer patternを実装
RS -> Responsive system
サービスをより“Stable”にする“ReactiveSystem”というアプローチ

More Related Content

Similar to サービスをより“Stable”にする“ReactiveSystem”というアプローチ

OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
Hideaki Tokida
 
SIビジネスのデジタル・トランスフォーメーション
SIビジネスのデジタル・トランスフォーメーションSIビジネスのデジタル・トランスフォーメーション
SIビジネスのデジタル・トランスフォーメーション
Masanori Saito
 
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
Takashi Watanabe
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
Keisuke Nishitani
 
Bringing Continuous Agile to Japan
Bringing Continuous Agile to JapanBringing Continuous Agile to Japan
Bringing Continuous Agile to Japan
Andy Singleton
 
Osdt2015 saito
Osdt2015 saitoOsdt2015 saito
Osdt2015 saito
Hideki Saito
 
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ayumu Aizawa
 
可用性を突き詰めたリアクティブシステム
可用性を突き詰めたリアクティブシステム可用性を突き詰めたリアクティブシステム
可用性を突き詰めたリアクティブシステム
TIS Inc.
 
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Yosuke Arai
 
Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用
マジセミ by (株)オープンソース活用研究所
 
Migrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmMigrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapm
Shotaro Suzuki
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
 
Ws08 02 sun-abe
Ws08 02 sun-abeWs08 02 sun-abe
Ws08 02 sun-abe
Yoshifumi Abe
 
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
Developers Summit
 
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
Developers Summit
 
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
Nobuyuki Tamaoki
 
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
VirtualTech Japan Inc.
 
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
QlikPresalesJapan
 
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Kentaro Ishizuka
 
今更ながらの「マイクロサービス」
今更ながらの「マイクロサービス」今更ながらの「マイクロサービス」
今更ながらの「マイクロサービス」
Hideaki Tokida
 

Similar to サービスをより“Stable”にする“ReactiveSystem”というアプローチ (20)

OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
OpenShift Ansbile 活用法 アプリケーションライフサイクルからみる導入効果
 
SIビジネスのデジタル・トランスフォーメーション
SIビジネスのデジタル・トランスフォーメーションSIビジネスのデジタル・トランスフォーメーション
SIビジネスのデジタル・トランスフォーメーション
 
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
 
Bringing Continuous Agile to Japan
Bringing Continuous Agile to JapanBringing Continuous Agile to Japan
Bringing Continuous Agile to Japan
 
Osdt2015 saito
Osdt2015 saitoOsdt2015 saito
Osdt2015 saito
 
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
 
可用性を突き詰めたリアクティブシステム
可用性を突き詰めたリアクティブシステム可用性を突き詰めたリアクティブシステム
可用性を突き詰めたリアクティブシステム
 
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
 
Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用
 
Migrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmMigrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapm
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
Ws08 02 sun-abe
Ws08 02 sun-abeWs08 02 sun-abe
Ws08 02 sun-abe
 
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
 
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
 
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
 
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
オープンクラウド基盤の価値と導入へ向けた考慮点 〜IaaSからPaaSまで - EMC様セミナー 「あなたのビジネスを高速化!DevOpsとアジャイル開発...
 
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
オンライン技術勉強会 20201215 QSEoWサーバー管理者向けトレーニング_1
 
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...
 
今更ながらの「マイクロサービス」
今更ながらの「マイクロサービス」今更ながらの「マイクロサービス」
今更ながらの「マイクロサービス」
 

More from Rakuten Group, Inc.

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
Rakuten Group, Inc.
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
Rakuten Group, Inc.
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
Rakuten Group, Inc.
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Rakuten Group, Inc.
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
Rakuten Group, Inc.
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
Rakuten Group, Inc.
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
Rakuten Group, Inc.
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
Rakuten Group, Inc.
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
Rakuten Group, Inc.
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
Rakuten Group, Inc.
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
Rakuten Group, Inc.
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
Rakuten Group, Inc.
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
Rakuten Group, Inc.
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
Rakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
Rakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
Rakuten Group, Inc.
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
Rakuten Group, Inc.
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
Rakuten Group, Inc.
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
Rakuten Group, Inc.
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
Rakuten Group, Inc.
 

More from Rakuten Group, Inc. (20)

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 

Recently uploaded (8)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 

サービスをより“Stable”にする“ReactiveSystem”というアプローチ