Dapr Advent Calendar 1日目 - Dapr CLIのインストール
こんにちは、Dapr Advent Calendar を作りました @cero_t です。このエントリーは Dapr Advent Calendar の1日目です。
Dapr Advent Calendarはじめました
Dapr (https://dapr.io/) とは、Microsoftが中心になって開発しているOSSの分散アプリケーションランタイム、Distributed Application Runtimeの略でDaprです。
様々なクラウドサービスやミドルウェアを良い感じに透過的に扱うことのできるプロダクトで、なかなか筋が良いのですが、何に使えるかよく分からないというか、そもそもどういうものか分かりづらい、発音の仕方すら分からないということもあって注目度はあまり高くなく、日本語の情報も多くありません。
ただ、このDaprはちょうど僕の感じていた課題を解決してくれそうなプロダクトだったので、わりと調べたり触ったりしていて、最近は仕事でも使い始めたところです。そんな時にちょうどAdvent Calendarの季節になりましたので、一人Advent Calendarになることを覚悟の上でカレンダーを立ててみました。
それでは12月25日まで、お付き合いいただければ、いや、きちんと25日まで継続できることを祈ってくだされば、ありがたいです!
あ、ちなみにDaprの発音ですが、英語読みすれば「だぱー」が近いと思いますが、このスペルだと日本語では「だっぱー」になるのが自然です。topを「とぷ」ではなく「とっぷ」と発音するのと同じです。とは言え英語の日本語読みなんてどうでも良いことですので、好きなように発音してもらえば良いと思います。
はじめに
このAdvent Calendarで僕が書くエントリーは、大きく分けて次の三部で構成する予定です。
- 基本編 - 各機能を使ってみる
- 分散環境編 - k8s上で各機能を使ってみる
- 実践編 - 実際に仕事で使ってみた感想や知見をまとめる
基本的な使い方くらい知ってらぁ! という方は12月の半ばあたりから読み始めてもらえれば良いかなと思います。
また、僕が書く記事は「macOS + Java + Spring Boot + Dapr」という構成を前提とします。DaprはOSや言語を問わず使えるサービスですので、他のOSや言語、フレームワークで読み替えてもらえれば良いと思います。
Daprの特徴
「それではDaprの使い方を見ていきましょう」
、、、と書き始めても誰もこの先を読み進めないと思うので、Daprの特徴とメリットを先に簡単に書いておきますね。長々と書いても仕方ないので、ここでは簡単に済ませます。
- サイドカーサービスとして動作する
- 様々なビルディングブロックを提供する
- データストアや、pubsub(エンキュー、デキュー)、分散トレーシングなどの機能を提供する
- サービスディスカバリーやルーティングに相当する機能も提供する
- 様々なクラウドサービスやミドルウェアを抽象化したAPIを提供する
- ローカル環境でもk8s上でも運用できる
- キューからデキューして行う非同期メッセージング処理を、通常のWeb APIとして実装できる
- アプリケーション開発者はあくまでも「Web API」の開発にのみ注力できる
- 開発時にキューを立てなくても良い
私見なので少し偏りがある気はしますが、総じて、開発と運用の境界にあるような部分を切り離すことで開発をシンプルにできるようになる、というところにメリットを感じています。
Dapr CLIのインストール
それではDaprの使い方を見ていきましょう。
Daprの利用にはDapr CLIが不可欠です。アプリケーションを起動する際にDaprをサイドカーとして起動したり、Dapr経由でアプリケーションを呼び出したり、起動中のアプリケーションの一覧を見たりするために利用します。
Daprを利用するためにはDockerが必要なため、まずはDockerをインストールしておきましょう
https://docs.docker.com/get-docker/
Dockerをインストールしたら、次はDapr CLIのインストールです。インストール方法はOSごとに異なるため、詳しくはドキュメントを参照してください。
https://docs.dapr.io/getting-started/install-dapr-cli/
たとえば、macOSでは次のコマンドでインストールできます。
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
Dapr CLIを触ってみる
Dapr CLIのコマンドを簡単に触ってみましょう。まずはバージョンの確認です。
dapr --version
出力結果はこうなります。
CLI version: 1.4.0 Runtime version: n/a
まだ環境の初期化が済んでいないため、Runtime versionはn/aとなっています。
Daprを動作させるため、初期化を行いましょう。
dapr init
このコマンドで、ローカル環境に設定ファイルなどが作成され、またDaprの動作に必要なDockerコンテナが作成されます。
初期化が完了したら、もう一度バージョンを確認しましょう。
dapr --version
先ほどと出力結果が変わっているはずです。
CLI version: 1.4.0 Runtime version: 1.5.0
また、Dockerのコンテナ一覧も確認してみましょう。
docker ps
dapr_placement、dapr_zipkin、dapr_redisの3つのコンテナが起動しているはずです。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7dc118a4bbc daprio/dapr:1.5.0 "./placement" About a minute ago Up About a minute 0.0.0.0:50005->50005/tcp dapr_placement 46555ffc1d22 openzipkin/zipkin "start-zipkin" About a minute ago Up About a minute (healthy) 9410/tcp, 0.0.0.0:9411->9411/tcp dapr_zipkin c55c6700a22c redis "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:6379->6379/tcp dapr_redis
この辺りの使い方は、後のエントリーでおいおい説明していきます。
最後にdapr関連のファイルができていることも確認しましょう。
ls ~/.dapr
設定ファイルや実行ファイルがいくつか追加されています。
bin components config.yaml
ちなみにアンインストールしたい場合には、dapr unistall
コマンドを利用します。
dapr uninstall --all
--all
オプションを指定しなければ、~/.dapr
フォルダや、zipkinとredisのDockerイメージも残ってしまいますが、--all
をつけることですべて削除されます。
まとめ
今回はここまでです。今回の内容を簡単に振り返りましょう。
- Daprはサイドカーサービスとして動作し、様々なクラウドサービスやミドルウェアを共通のAPIで利用できるようになります
- DaprとアプリケーションはHTTP/gRPCで通信するため、開発者は好きな言語やフレームワークを利用してアプリケーション開発ができます
- まずはDockerとDapr CLIをインストールしましょう
まだCLIをインストールしただけの小さな一歩ですが、ここから続くAdvent Calendarを読むために欠かせない作業です。
それでは、これからも引き続きDapr Advent Calendarをよろしくお願いします。継続することを祈っていてください!!(!?)