2022年2月のJJUGナイトセミナーは「Dapr特集」です。
2本のセッションの構成です。
CloudNativeな時代に求められるWebサービス基盤モデルの再考 – Daprについての考察と実装 –
CloudNativeな技術と共に歩んできた中で見えてきた、CloudNativeな技術を背景に持つ分散アプリケーションランタイムであるDaprがどういったもので何ができるかを解説するのを通してCloudNativeの必要性や立ち位置について発表していきます。
nwiizo (@nwiizo)株式会社スリーシェイク
https://jjug.doorkeeper.jp/events/133438
セッション資料
簡単な要約
「Daprとは何か?」「そもそもDaprが必要となったCloud Nativeの経緯」を抽象化した話で大変分かりやすく説明していただけました。
- 【Infrastructure As Document時代】ドキュメントを元に運用担当者がインフラ環境を構築する時代があった。ドキュメントが秘伝のタレになりがち。
- 【Infrastructure As Code時代】インフラをコードで書くことで構築できるようになった、になった。でも更新をしようとすると、手作業が発生したり、コードが腐敗化もしていってしまう。
- 【Immutable Infrastructure時代】「一度構築したら変更しない環境」が勝利だと。常にクリーンインストールする考え。
- 【コンテナへの道】話は変わって、アプリケーションの話。アプリケーションに必要なものだけすべて詰めたコンテナというものが誕生
- 運用が、開発環境や本番環境でも統一的に扱って運用できる。
- アプリケーションファーストとなって、必要なインフラリソースは必要な時に要求する。
- 【Cloud Nativeとは?】クラウドというダイ ナミックな環境を使って、スケーラブルなアプリケーション構築・実行できるようになることです。変化に強い疎結合なシステムを実現できます。
- 疎結合なシステムとは、一つのサービスが死んでも一部のサービスは動き、サービス別に独立したスケーリングが可能、小さなサービスを作ることができたりします。
- 【Kubernates】疎結合なシステムの実現で、Immutable Infrastructureで、宣言的にあるべき姿のインフラを定義でき、コンテナが壊れたら再構築する自己修復機能がある。
- 【ストラテジー層との進化と拡大】サービス層/ストラテジー層/オーケストレーション層/CRI/インフラストラクチャ層、において近年ストラテジー層が最も変化が多く起こった。IstioやKnativeといったアプリが誕生している。
- 【Dapr(やっと)】ストラテジー層において、サイドカーというデザインパターンによりサービス間の呼び出し等を担う、分散アプリケーションのためのフレームワークです。Distributed Application Runtimeの略。
- 【Daprのビルディングブロック】Daprには現在下記の8つのビルディングブロックというアーキテクチャの種類がある。
- サービス間呼び出し
- 状態管理
- パブリッシュ&サブスクライブ
- バインダー
- アクター
- 可観測性
- シークレット管理
- 構成設定
Daprを実案件で使ってみた感じ
ちょっと面白そう・便利そうだけど、導入事 例がまだまだ少ないDaprですが、覚悟を決めて実案件で使ってみました。導入に至った経緯や、実際に開発する際に工夫したこと、良かったこと、逆に期待通りではなかったことなどをお伝えします。
https://jjug.doorkeeper.jp/events/133438
谷本 心 (@cero_t)
簡単な要約
宿泊業のバックエンドシステムを構築した際にDaprを使った時の経験のシェア。
使ったプロダクト:Amazon EKS、RabbitMQ、PostgrSQL、Spring Boot
利用したDaprの機能:Service invocation、Publish & Subscribe
- 良かったこと
- 開発者がインフラのことを気にせずに開発可能
- テストしやすい。キューを使った機能を簡単にテストできた
- フレームワークやライブラリのバージョンをそれぞれバージョンアップ可能
- 思い通りじゃなかったこと
- 運用のために、k8sかConsulが必要(ローカルでも動くが本番運用ではこの2択)
- Daprを使うアプリケーション群のクローズドネットワークのような形になる
- DaprのOAuth2対応機能が思ったものでなかった。結論OpenID Connectを使うべきだった
- 所感
- 総じて期待通りに動いている
- アプリケーションとインフラの分離は思った以上
- ただ、既存のアプリケーションを移行するものではないと思った
- 永続化層への接続機能もあるが、機能が不十分で使っていない
- サイドカーという概念は有用
- 初めてDIコンテナを使った感覚に近 い
- 総じて期待通りに動いている