Weekly Log 7 -- 雑録(OpenAPI, K8s Operator, OpenTelemetry) --
今週のトピックはこの辺り。
- OpenAPI
- Kubernetes Operator
- Prometheus Operator
- OpenTelemetry
週を追う毎に、記事とも呼べないような雑な記録になってしまっている...
Open API, Swagger
REST APIの仕様記述&周辺ツール
この辺りの情報を参照
future-architect.github.io zenn.dev Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
OpenAPIのコード生成について
- SwaggerはOpenAPIの実装の一つ
- 多分 Swagger←→OpenAPIはDocker←→Containerの関係に近そう
- Swagger (Swagger Codegen)はSmartBear社が主導
- コミュニティとSmartBear社の確執→分裂
- Swagger CodegenのforkとしてOpenAPI Generatorの誕生
OpenAPIの仕様について
- OpenAPI Initiativeが策定
- OpenAPI Generator開発コミュニティとは別
- 何故か swagger.io と openapis.orgそれぞれに仕様がある
OpenAPIツール類
- Stoplight Studio: GUIエディタ
- Prism: モックサーバ
- Dred: 検証ツール
- ReDoc: ドキュメント生成
- Swagger Viewer(VSCodeプラグイン): リアルタイムビュワー
- openapi-lint(VSCodeプラグイン): リンター
- OpenAPI(Swagger) Editor(VSCodeプラグイン): サマリー表示
- OpenApi Snippets(VSCodeプラグイン): スニペット
OpenAPIに関する感想
- コミュニティと決裂したのはあくまでCodeGenerator関連
- とはいえ swagger.io と openapis.orgそれぞれに仕様がある理由まで知らない。個人的には注意が必要。
- VSCodeの拡張だけでもかなり書くのが楽になる
- 自動テスト系は今後に期待
Kubernetes Operator
ユーザーに代わりステートフルなアプリケーションを自動で管理する Custom Contoroller のこと
らしい。
k8sの機能や仕組み(control loop等)を活用しつつ運用をコード化できる点が、ただのコード化と比べて嬉しい感じ。
つまるところ、ある種のデザインパターンで Operator patternという名前ができている。
運用能力に応じてレベル分けがある
- 基本インストール (Basic Install)
- 影響が無いアップグレード (Seamless Upgrade)
- フルライフサイクル (Full Lifecycle)
- 深い洞察 (Deep Insights)
- 自動操縦 (Auto Pilot)
Prometheus Operator
Prometheusの運用の実現だけではなく、k8sクラスタ自身のモニタリングの仕組みも持つ。
v1.16以降サポートらしく、今使いたい環境で使えない。悲しい。
感想
自分でOperatorを書くとk8s&対象ソフトウェアに対する造形が深まりそう
OpenTelemetry
トレーシングとメトリクス
OpenTelemetry(OpenCensus)ではトレーシングとメトリクスをサポートしているらしい。
- トレーシング
- 各呼び出しのスタックトレース的
- メトリクス
- 統計的情報(平均レイテンシ等)
実装
- Jaeger, Zipkinは実質的に仕様(Open*)の実装っぽいかんじ
- 収集後の分析基盤==backendとしてのJaeger, Zipkin?
- OpenTelemetry自体にもクライアント参照実装がある
- Java中心
- Backend==収集後の分析基盤はOpenTelemetryの範囲外
- Zipkin, Jaeger,その他クラウドサービス等をBackend実装として使う
- PrometheusもBackendの1つ
OpenTelemetryに関する感想
- OpenTelemetryに対応したエージェント、収集分析基盤を個別に用意せず、Jaegerだけ使っても良さそう
- 機能に不満があったら、Jaegerを共通仕様に沿う設定で使うようにしつつ、一部コンポーネントを置き換えると良さそう