「車輪の再実装」って言葉が好き(実践はできてない)

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ツール類
OpenAPIに関する感想
  • コミュニティと決裂したのはあくまでCodeGenerator関連
    • とはいえ swagger.io と openapis.orgそれぞれに仕様がある理由まで知らない。個人的には注意が必要。
  • VSCodeの拡張だけでもかなり書くのが楽になる
  • 自動テスト系は今後に期待

Kubernetes Operator

ユーザーに代わりステートフルなアプリケーションを自動で管理する Custom Contoroller のこと

らしい。

k8sの機能や仕組み(control loop等)を活用しつつ運用をコード化できる点が、ただのコード化と比べて嬉しい感じ。

つまるところ、ある種のデザインパターンで Operator patternという名前ができている。

運用能力に応じてレベル分けがある

  1. 基本インストール (Basic Install)
  2. 影響が無いアップグレード (Seamless Upgrade)
  3. フルライフサイクル (Full Lifecycle)
  4. 深い洞察 (Deep Insights)
  5. 自動操縦 (Auto Pilot)

Prometheus Operator

Prometheusの運用の実現だけではなく、k8sクラスタ自身のモニタリングの仕組みも持つ。

v1.16以降サポートらしく、今使いたい環境で使えない。悲しい。

感想

自分でOperatorを書くとk8s&対象ソフトウェアに対する造形が深まりそう

OpenTelemetry

  • 今年2021年2月に仕様がv1.0に到達したOpenCensus&OpenTracingの後継
  • Java中心に参照実装も用意
  • 仕様の名前&SDKの名前&関連ツール総称

ymotongpoo.hatenablog.com

future-architect.github.io

トレーシングとメトリクス

OpenTelemetry(OpenCensus)ではトレーシングとメトリクスをサポートしているらしい。

  • トレーシング
  • メトリクス
    • 統計的情報(平均レイテンシ等)
実装
  • Jaeger, Zipkinは実質的に仕様(Open*)の実装っぽいかんじ
  • 収集後の分析基盤==backendとしてのJaeger, Zipkin?
  • OpenTelemetry自体にもクライアント参照実装がある
  • Backend==収集後の分析基盤はOpenTelemetryの範囲外
    • Zipkin, Jaeger,その他クラウドサービス等をBackend実装として使う
    • PrometheusもBackendの1つ
OpenTelemetryに関する感想
  • OpenTelemetryに対応したエージェント、収集分析基盤を個別に用意せず、Jaegerだけ使っても良さそう
  • 機能に不満があったら、Jaegerを共通仕様に沿う設定で使うようにしつつ、一部コンポーネントを置き換えると良さそう