$30 off During Our Annual Pro Sale. View Details »

Rust & AWS X-Ray による分散トレーシングの実現

Kazumasa Yamamoto
October 11, 2023
1.3k

Rust & AWS X-Ray による分散トレーシングの実現

Kazumasa Yamamoto

October 11, 2023
Tweet

Transcript

  1. ユニークビジョン株式会社
    山本 一将
    Rust、何もわからない... #10
    Rust & AWS X-Ray による
    分散トレーシングの実現

    View Slide

  2. 2
    2023/10/11 Rust、何もわからない... #10
    自己紹介
    kyamamoto9120
    山本 一将
    ユニークビジョン株式会社 エンジニア
    業務でRust書きつつ、チームの生産性を向上させる改善をします
    実績:2015年 世界コンピュータ将棋選手権 9位
    趣味:スポーツ観戦、将棋、キャンプ、リアル脱出ゲーム

    View Slide

  3. 3
    2023/10/11 Rust、何もわからない... #10
    Rust、チュートリアルにしたがって
    APIを作るだけなら結構簡単!

    View Slide

  4. 4
    2023/10/11 Rust、何もわからない... #10
    チュートリアルレベルから
    運用に耐える品質に持ち上げるのは
    大変

    View Slide

  5. 5
    2023/10/11 Rust、何もわからない... #10
    今日は、情報が少ないと感じる
    「オブザーバビリティ」
    チュートリアル

    View Slide

  6. 6
    2023/10/11 Rust、何もわからない... #10
    システム構成
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  7. 7
    2023/10/11 Rust、何もわからない... #10
    資料作成時の環境
    インストール方法
    • Rust : https://www.rust-lang.org/tools/install
    • Docker : https://docs.docker.com/engine/install
    • AWS Copilot : https://aws.github.io/copilot-cli/ja/docs/getting-started/install/
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  8. 8
    2023/10/11 Rust、何もわからない... #10
    プロジェクトの作成
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  9. 9
    2023/10/11 Rust、何もわからない... #10
    API サーバーの作成
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  10. 10
    2023/10/11 Rust、何もわからない... #10
    Dockerfile の作成
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  11. 11
    2023/10/11 Rust、何もわからない... #10
    AWS へデプロイ
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  12. 12
    2023/10/11 Rust、何もわからない... #10
    OpenTelemetry に必要なクレートを追加
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ
    tracing 最強!

    View Slide

  13. 13
    2023/10/11 Rust、何もわからない... #10
    tracing の設定を行う関数を実装
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ
    AWS X-Ray は
    ID が特殊

    View Slide

  14. 14
    2023/10/11 Rust、何もわからない... #10
    初期化処理とミドルウェアの追加
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ
    追加するのは2行

    View Slide

  15. 15
    2023/10/11 Rust、何もわからない... #10
    AWS Distro for OpenTelemetry を追加
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ
    この2行を足すと
    ADOT が
    サイドカーで
    動く!

    View Slide

  16. 16
    2023/10/11 Rust、何もわからない... #10
    デプロイして動作確認
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ

    View Slide

  17. 17
    2023/10/11 Rust、何もわからない... #10
    クリーンアップ
    ➢ 導入
    ➢ 成果物の構成
    ➢ 環境構築
    ➢ ベースとなる API の作成
    ➢ プロジェクトの作成
    ➢ API サーバーの作成
    ➢ Dockerfile の作成
    ➢ AWS へのデプロイ
    ➢ 分散トレーシングの実現
    ➢ 必要なクレートの追加
    ➢ tracing の設定
    ➢ main.rs の修正
    ➢ manifest.yaml の修正
    ➢ デプロイと動作確認
    ➢ クリーンアップ
    消し忘れると
    お金かかるよ!

    View Slide

  18. 18
    2023/10/11 Rust、何もわからない... #10
    宣伝

    View Slide

  19. 19
    2023/10/11 Rust、何もわからない... #10
    Rust.Tokyo 2023

    View Slide

  20. 20
    2023/10/11 Rust、何もわからない... #10
    Vue Fes Japan 2023

    View Slide

  21. 21
    2023/10/11 Rust、何もわからない... #10
    採用情報
    エンジニア募集中!
    Rust 書けるかも

    View Slide

  22. 22
    2023/10/11 Rust、何もわからない... #10
    ありがとうございました
    皆さんとお話したい 採用してます Xのフォローお願いします
    • 今日の発表について
    • ユニークビジョン
    • Rustについて
    • コードレビューの工夫
    • 開発リーダーのお悩み
    • 東京ヤクルトスワローズ
    etc…

    View Slide