マイクロサービスのローカル実行
マイクロサービスアーキテクチャが登場する前は、開発チームはアプリケーション全体を一つの大きなソフトウェアとして構築、デプロイ、実行していました。モジュールの小さな変更を単体テストだけでなくテストするには、開発者はアプリケーション全体をビルドする必要がありました。そのため、ビルドには非常に時間がかかりました。ビルド後、開発者はアプリケーションのバージョンをテストサーバーにデプロイしました。開発者は、リモートマシンまたはローカルコンピュータでサーバーを実行していました。後者の場合、開発者はローカルコンピュータにかなり複雑な環境をインストールして運用する必要がありました。
マイクロサービスアーキテクチャの時代では、開発者は小さなソフトウェアサービスを作成、ビルド、テスト、実行します。ビルドは高速です。Node.jsのような最新のフレームワークを使用すると、単一のサービスをテストするために複雑なサーバー環境をインストールして運用する必要はありません。サービスは通常のプロセスとして実行されるためです。単にテストするためだけにサービスを環境にデプロイする必要がないため、サービスをビルドしてすぐにローカルコンピュータで実行できます。
このモジュールでは、ローカルマシンで単一のサービスを開発する際に含まれるさまざまな側面について説明します。ただし、コードを記述する必要はありません。代わりに、既存のサービスである`ratings`をビルド、実行、テストします。
`ratings`サービスはNode.jsで記述された小さなウェブアプリで、単独で実行できます。他のウェブアプリと同様の動作を行います。
- パラメータとして受け取るポートをリッスンします。
- `/ratings/{productID}`パスで`HTTP GET`リクエストを待ち受け、クライアントが`productID`に指定した値に一致する製品の評価を返します。
- `/ratings/{productID}`パスで`HTTP POST`リクエストを待ち受け、`productID`に指定した値に一致する製品の評価を更新します。
アプリのコードをダウンロードし、依存関係をインストールして、ローカルで実行する手順に従ってください。
別のディレクトリにサービスのコードとパッケージファイルをダウンロードしてください。
$ mkdir ratings $ cd ratings $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/ratings.js -o ratings.js $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/package.json -o package.json
サービスのコードをざっと読んで、以下の要素に注意してください。
- ウェブサーバーの機能
- ポートへのリスニング
- リクエストとレスポンスの処理
- HTTP関連の側面
- ヘッダー
- パス
- ステータスコード
- ウェブサーバーの機能
Node.jsアプリケーションはJavaScriptで記述されているため、明示的なコンパイルステップはありません。代わりに、Just-in-Timeコンパイルを使用します。Node.jsアプリケーションをビルドするには、依存関係をインストールする必要があります。サービスコードとパッケージファイルを保存したのと同じフォルダに、
ratings
サービスの依存関係をインストールしてください。$ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN ratings No description npm WARN ratings No repository field. npm WARN ratings No license field. added 24 packages in 2.094s
パラメータとして
9080
を渡してサービスを実行します。アプリケーションはポート9080でリスニングを開始します。$ npm start 9080 > @ start /tmp/ratings > node ratings.js "9080" Server listening on: http://0.0.0.0:9080
ブラウザでhttps://:9080/ratings/7を開くか、別のターミナルウィンドウから
curl
コマンドを使用してratings
にアクセスしてください。$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
curl
コマンドのPOST
メソッドを使用して、製品の評価を1
に設定します。$ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}' {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
更新された評価を確認してください。
$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
サービスを実行しているターミナルで
Ctrl-C
を使用して停止します。
おめでとうございます!これで、ローカルコンピュータでサービスをビルド、テスト、実行できるようになりました!
次はサービスをコンテナにパッケージ化する準備ができました。