kakakakakku blog

Weekly Tech Blog: Keep on Learning!

マイクロサービスの学習に使えるサンプルアプリケーション「Sock Shop」

個人学習用にマイクロサービスを体験できるサンプルアプリケーションを探していたら,Weaveworks から公開されている「Sock Shop」を発見した.「Sock Shop」は名前の通り「靴下 EC サイト」「ユーザー登録/商品閲覧/カート/ウィッシュリスト/購入(ダミー)」など,EC サイトに必要な機能が一通り実装されている.ドキュメントに以下の記載があり,マイクロサービスを体験したり,デモに使ったり,トレーニングに使ったりする用途に適している.良さそう!

Sock Shop can be used to illustrate microservices architectures, demonstrate platforms at talks and meetups, or as a training and education tool.

microservices-demo.github.io

Sock Shop を動かす

「Sock Shop」は Docker / Kubernetes / Amazon ECS など,多くのプラットフォームをサポートしている.今回はお手軽に試すため,Docker Desktop for Mac と Docker Compose を使って動かす.ドキュメントにある Quick Start も Docker Compose を使う手順になっている.以下のように GitHub リポジトリを clone し,Docker Compose を起動すると,「計15種類」のコンテナが起動する.

$ git clone https://github.com/microservices-demo/microservices-demo
$ cd microservices-demo
$ docker-compose -f deploy/docker-compose/docker-compose.yml up -d
(中略)
Creating docker-compose_rabbitmq_1     ... done
Creating docker-compose_user_1         ... done
Creating docker-compose_user-db_1      ... done
Creating docker-compose_front-end_1    ... done
Creating docker-compose_carts-db_1     ... done
Creating docker-compose_orders_1       ... done
Creating docker-compose_orders-db_1    ... done
Creating docker-compose_edge-router_1  ... done
Creating docker-compose_user-sim_1     ... done
Creating docker-compose_carts_1        ... done
Creating docker-compose_payment_1      ... done
Creating docker-compose_catalogue_1    ... done
Creating docker-compose_catalogue-db_1 ... done
Creating docker-compose_queue-master_1 ... done
Creating docker-compose_shipping_1     ... done

起動後に http://localhost に接続すると,すぐに「Sock Shop」にアクセスできる.

f:id:kakku22:20190426142844p:plain

靴下を検索することもできる.

f:id:kakku22:20190426142914p:plain

カート機能も充実している.

f:id:kakku22:20190426143044p:plain

マイクロサービス紹介

「計15種類」のコンテナで使われている技術をザッと整理すると以下のようになる.マイクロサービスごとに言語とデータストアが異なり,まさにマイクロサービスの思想でもある「ポリグロット (Polyglot)」な構成になっている.Go API の実装を読んでいると「OpenTracing」を使っていたり,負荷テストに「Locust」を使っていたり,コンテナごとに詳しく調べていく楽しさもある.また Go API の Dockerfile を確認したところ「multi-stage builds 機能」も使っていて,学べる点も多くある.コンテナ同士の関係はdocker-compose.yml に書いてある.

github.com

API 紹介

API ごとに Swagger ドキュメントがあり,簡単に API 仕様を確認できる.試しに「カタログ API」を実行すると以下のようになる.

$ curl -s http://localhost/catalogue/d3588630-ad8e-49df-bbd7-3167f7efb246 | jq .
{
  "id": "d3588630-ad8e-49df-bbd7-3167f7efb246",
  "name": "YouTube.sock",
  "description": "We were not paid to sell this sock. It's just a bit geeky.",
  "imageUrl": [
    "/catalogue/images/youtube_1.jpeg",
    "/catalogue/images/youtube_2.jpeg"
  ],
  "price": 10.99,
  "count": 801,
  "tag": [
    "geek",
    "formal"
  ]
}

まとめ

  • マイクロサービスを体験できるサンプルアプリケーションとして「Sock Shop」を発見した
  • EC サイトに必要な機能が一通り実装されている
  • 引き続きマイクロサービスの実装を読み解きながら「Sock Shop」の詳細を追っていく