マイクロサービスのローカル実行

マイクロサービスアーキテクチャが登場する前は、開発チームはアプリケーション全体を一つの大きなソフトウェアとして構築、デプロイ、実行していました。モジュールの小さな変更を単体テストだけでなくテストするには、開発者はアプリケーション全体をビルドする必要がありました。そのため、ビルドには非常に時間がかかりました。ビルド後、開発者はアプリケーションのバージョンをテストサーバーにデプロイしました。開発者は、リモートマシンまたはローカルコンピュータでサーバーを実行していました。後者の場合、開発者はローカルコンピュータにかなり複雑な環境をインストールして運用する必要がありました。

マイクロサービスアーキテクチャの時代では、開発者は小さなソフトウェアサービスを作成、ビルド、テスト、実行します。ビルドは高速です。Node.jsのような最新のフレームワークを使用すると、単一のサービスをテストするために複雑なサーバー環境をインストールして運用する必要はありません。サービスは通常のプロセスとして実行されるためです。単にテストするためだけにサービスを環境にデプロイする必要がないため、サービスをビルドしてすぐにローカルコンピュータで実行できます。

このモジュールでは、ローカルマシンで単一のサービスを開発する際に含まれるさまざまな側面について説明します。ただし、コードを記述する必要はありません。代わりに、既存のサービスである`ratings`をビルド、実行、テストします。

`ratings`サービスはNode.jsで記述された小さなウェブアプリで、単独で実行できます。他のウェブアプリと同様の動作を行います。

  • パラメータとして受け取るポートをリッスンします。
  • `/ratings/{productID}`パスで`HTTP GET`リクエストを待ち受け、クライアントが`productID`に指定した値に一致する製品の評価を返します。
  • `/ratings/{productID}`パスで`HTTP POST`リクエストを待ち受け、`productID`に指定した値に一致する製品の評価を更新します。

アプリのコードをダウンロードし、依存関係をインストールして、ローカルで実行する手順に従ってください。

  1. 別のディレクトリにサービスのコードパッケージファイルをダウンロードしてください。

    $ 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
    
  2. サービスのコードをざっと読んで、以下の要素に注意してください。

    • ウェブサーバーの機能
      • ポートへのリスニング
      • リクエストとレスポンスの処理
    • HTTP関連の側面
      • ヘッダー
      • パス
      • ステータスコード
  3. 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
    
  4. パラメータとして9080を渡してサービスを実行します。アプリケーションはポート9080でリスニングを開始します。

    $ npm start 9080
    > @ start /tmp/ratings
    > node ratings.js "9080"
    Server listening on: http://0.0.0.0:9080
    
  1. ブラウザでhttps://:9080/ratings/7を開くか、別のターミナルウィンドウからcurlコマンドを使用してratingsにアクセスしてください。

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
    
  2. curlコマンドのPOSTメソッドを使用して、製品の評価を1に設定します。

    $ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}'
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
    
  3. 更新された評価を確認してください。

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
    
  4. サービスを実行しているターミナルでCtrl-Cを使用して停止します。

おめでとうございます!これで、ローカルコンピュータでサービスをビルド、テスト、実行できるようになりました!

次はサービスをコンテナにパッケージ化する準備ができました。

この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!