Skip to content

Latest commit

 

History

History
127 lines (89 loc) · 4.27 KB

chapter2.md

File metadata and controls

127 lines (89 loc) · 4.27 KB

Chapter 2 Application

ハンズオンで使用するデモアプリについて説明します。

Simple CICD Landscape!

本アプリは Cloud Native Landscape の中から、CICDに関するプロジェクトの一覧を表示します。

app

アプリ仕様

  • CNCF Relation によるプロジェクトの分類
  • クリックでプロジェクトの GitHub(ない場合はホームページ)へ移動
  • GitHub のスター数をAPI経由で取得して表示
    • 起動中はメモリ上にキャッシュされる
  • Description が設定されている場合はマウスオーバーで表示切り替え

構成

  • シングルバイナリでWebページとAPIサーバをホスト
  • Go言語で開発
    • WebAssembly
    • APIサーバ実装 + テストコード
apps
├── common
│   ├── go.mod      # Local Package用
│   └── project.go
├── go.mod
├── go.sum
├── server
│   ├── landscape.go
│   ├── landscape_test.go # テストコード
│   └── server.go
├── wasm
│   └── main.go
└── web
    └── static
        ├── images
        ├── index.html
        ├── main.wasm  # ビルド済みWASMバイナリ
        ├── style.css
        └── wasm_exec.js

WASM について

Webページの作成には WASM (WebAssembly) を使用しています。
WASM は JavaScript のようにブラウザで実行でき、JavaScript と協調して動作します。 JavaScript で記述する部分をGo言語で置き換えた、と思ってもらえれば大丈夫です。

Go言語での WASM のビルドは次のように行います。
今回はビルド済みの WASMバイナリを用意していますので、WASM に関してハンズオンで意識する必要はありません。

cd ./cicd-handson-2021-code/apps
# WASMバイナリのビルド(不要)
GOOS=js GOARCH=wasm go build -o web/static/main.wasm ./wasm

WASMバイナリをビルドした場合は、自身の環境のGoバージョンに合わせた wasm_exec.js に差し替える必要があります。

cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" web/static/

参考:

webassembly.org
WebAssembly の概要 | MDN - Mozilla
Web Assembly + Go

テスト・動作確認

テストの実行とアプリケーションの起動のコマンドは下記のとおりです。 現時点では、テストの実行結果は失敗となります。

# apps ディレクトリに移動
cd ./cicd-handson-2021-code/apps

# テスト実行
go test ./server

# サーバ起動
go run ./server

サーバを起動後、次のいずれかの方法で動作確認を行ってください。

コマンドラインで確認

ヘルスチェック用のエンドポイントにアクセスし、レスポンスを確認します。

curl http://127.0.0.1:9090/health

# json 形式のレスポンス
{
  "status": "Healthy"
}

Webブラウザで確認

ブラウザで http://127.0.0.1:9090 にアクセスし、Webページが表示されることを確認します。

ヘルスチェック用のエンドポイント (http://127.0.0.1:9090/health)、API 用のエンドポイント (http://127.0.0.1:9090/landscape) にもアクセス可能です。

アプリケーションの停止

動作確認後、「go run ./server」で起動したアプリケーションは「Ctrl + C」で停止しておいてください。

※ 注意点

GitHub スター数の取得に利用している GitHub API には 60回/h の利用制限があり、これを超えるとスター数を取得できなくなります。
そのためアプリの再起動を数回行うとスター数が表示されなくなりますが、アプリの動作自体に影響はありません。

なお、ヘルスチェック用エンドポイントにのみアクセスする場合は GitHub API は利用しません。


Chapter 3 Docker/Kubernetes fundamentals