Micro - Golang learning step 10-3
- 公開日
- カテゴリ:ToolForMicroservices
- タグ:Golang,roadmap.sh,学習メモ

roadmap.sh > Go > Tool for Microservices > Micro の学習を進めていきます。
※ 学習メモとしての記録ですが、後にこのセクションを学ぶ道しるべとなるよう、ですます調で記載しています。
contents
- 開発環境
- 参考 URL
- Micro
- Micro のインストール
- micro サーバーの起動と認証
- サービスの作成
- Protocol Buffers のコンパイル
- サービスの起動
- 動作確認
- micro コマンド
開発環境
- チップ: Apple M2 Pro
- OS: macOS Sonoma
- go version: go1.23.2 darwin/arm64
参考 URL
Micro
Microは、Go言語でマイクロサービスを開発・管理するためのプラットフォームです。サービスディスカバリや通信プロトコルの管理など、マイクロサービス開発に必要な基本機能を提供し、開発者が複雑な分散システムを簡潔に扱えるよう支援します。
Micro のインストール
Micro は Go のパッケージとして提供されています。以下のコマンドでインストールします。
go install github.com/micro/micro/v5/cmd/micro@master
インストール後、micro コマンドが使用可能になります。バージョンを確認して、正しくインストールされたことを確認してください。
micro --version
micro サーバーの起動と認証
micro サーバーを起動します。
micro server
起動したら、別の画面から以下コマンドを実行し、環境設定を local に切り替えます。
micro env set local
なお、環境設定は以下コマンドで確認可能です。
micro env
また、micro サーバーには auth サービスが稼働しており、サーバーのステータスを確認したり、エンドポイントにリクエストするために予め認証しておく必要があります。
micro login
で認証を実施します。
micro login
Enter username: admin
Enter password: micro
ここまでで micro サーバーの初期設定は完了です。
サービスの作成
Microには、新しいサービスの雛形を作成するためのコマンドが用意されています。以下のコマンドで、helloworldという名前のサービスを作成します。
micro new helloworld
このコマンドにより、以下のようなディレクトリ構成が生成されます。
helloworld/
├── main.go
├── handler
│ └── helloworld.go
├── proto
│ └── helloworld.proto
├── dep-install.mk
├── Makefile
├── README.md
├── .gitignore
└── go.mod
Protocol Buffers のコンパイル
サービス間通信にはgRPCを使用します。そのため、Protocol Buffers(.protoファイル)から Go のコードを生成する必要があります。以下のコマンドで、必要なツールをインストールします。
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install github.com/micro/micro/v2/cmd/protoc-gen-micro@latest
次に、Makefile を使用してプロトコルバッファをコンパイルします。
cd helloworld
make init
make proto
go mod tidy
go mod vendor
サービスの起動
以下のコマンドでサービスを起動します
micro run .
micro status
でサービスの状態を確認できます
micro status
NAME VERSION SOURCE STATUS BUILD UPDATED METADATA
helloworld latest /path/to/projectroot/helloworld running n/a 36m29s ago owner=admin, group=micro
動作確認
micro
コマンドでサービスにリクエストを送信します。
リクエスト:
micro call helloworld Helloworld.Call '{"name": "taro"}'
# または
micro helloworld call --name=taro
レスポンス:
{
"msg": "Hello taro"
}
curl コマンドからでもリクエストを送信できます。
リクエスト:
curl "http://localhost:8080/helloworld/Call?name=taro"
レスポンス:
{
"msg": "Hello taro"
}
micro コマンド
NAME:
micro - API first development platform
USAGE:
micro [global options] command [command options]
VERSION:
latest
COMMANDS:
auth Manage authentication, accounts and rules
call Call a service e.g micro call greeter Say.Hello '{"name": "John"}'
config Manage configuration values
env Get/set micro cli environment
gen Generate a micro related dependencies e.g protobuf
get Get resources from micro
init Generate a profile for micro plugins
kill Kill a service: micro kill [source]
login Interactive login flow.
logout Logout.
logs Get logs for a service e.g. micro logs helloworld
new Create a service template
run Run a service: micro run [source]
server Run the micro server
service
services List services in the registry
shutdown Shutdown a micro server
status Get the status of services
store Commands for accessing the store
stream Create a service stream e.g. micro stream foo Bar.Baz '{"key": "value"}'
update Update a service: micro update [source]
user Print the current logged in user
web Run the micro web UI
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
-c value Set the config file: Defaults to ~/.micro/config.json [$MICRO_CONFIG_FILE]
--env value, -e value Set the environment to operate in [$MICRO_ENV]
--namespace value Namespace the service is operating in (default: "micro") [$MICRO_NAMESPACE]
--client_id value Account ID used for client authentication [$MICRO_CLIENT_ID]
--client_secret value Account secret used for client authentication [$MICRO_CLIENT_SECRET]
--public_key value Public key for JWT auth (base64 encoded PEM) [$MICRO_PUBLIC_KEY]
--private_key value Private key for JWT auth (base64 encoded PEM) [$MICRO_PRIVATE_KEY]
--name value Set the service name [$MICRO_SERVICE_NAME]
--profile value Set the micro server profile: e.g. local or kubernetes [$MICRO_SERVICE_PROFILE]
--network value Service network address [$MICRO_SERVICE_NETWORK]
--help, -h show help
--version, -v print the version
まとめ
公式リファレンスがドメイン切れで参照できないため詳細が追えないためここまでとする。
[Next] Step 10-4: go-zero
[Prev] Step 10-2: Rpcx