🤖

【DevOps実践】RustでAPIサーバーを構築してみた①: 全体紹介編

に公開

なんかかっこよさそうなタイトルにしてみました。
自分も最近クラウドネイティブ技術やDevOpsについて勉強し始めた身なので、メモ代わりに投稿してます。
お手柔らかにお願いします。
*間違ってる部分は遠慮なく突っ込んでください。

目標

  • 開発メンバーのデプロイ作業にかかるToilを減らす
  • アプリケーションの更新を安全かつ最速でエンドユーザーにお届けする

目標達成のためにやるべきこと

  • CI/CDの導入(今回はCI/CDというより、CDより)
  • クラウドの構築(今回はGCPで構築する)

目標達成のためのワークフロー

  • アプリケーションの機能追加・修正が完了
  • コードレビュー完了後、mainブランチにマージ
  • GithubActionsが作動する
  • 自動デプロイする

ざっくりやる事

  • アプリケーションの開発(Rust)
  • デプロイの自動化を行う(GithubActions)
  • インフラを構築(再現性・安定性を保つために、今回はterraformを使用する)
    • SA(サービスアカウント)
    • IAM(SAに付与する権限)
    • VPC(仮想ネットワーク空間)
    • VPC Connector(VPC内にあるリソースにアクセスするためのブリッジ)
    • Memotystore for Redis(インメモリーデータベース)
    • CloudSQL(リレーショナルデータベース、PostgreSQL)
    • CloudStorage(ストレージ)
    • ArtifactRegistry(DockerImage保管庫)
    • CloudRun(サーバーレスのコンテナ実行環境)

CI/CDがよくわからない方向けにちょっと説明

CIとは?

CI(Continuous Integrationの略称): 継続的インテグレーション
ソースコードの変更を検知からテストまでの工程を自動化し、既存のシステムへ継続的統合するパイプラインだそう。

CDとは?

CD(Continuous Deploymentの略称): 継続的デプロイ
CIのテストを通過したソースコードを、テスト環境や本番環境へリリースする部分の自動化だそう。

導入メリット

  • 開発が楽になる
  • 煩雑なデプロイ手順をどこかに書いて保存したり、覚えたりしなくていい

Terraformがよくわからない方向けにちょっと説明

Terraform: クラウド構築を自動化・コード化するためのオープンソースツール
クラウドの構築をコードで管理し、コマンド一つで、誰でも同じクラウド環境を構築できる
再現性・安定性のある構築ができる

最後に

アプリケーションの構築は今回RustのActix-webで行います。
Rustじゃなきゃダメとかは一切なのでご安心ください。
クラウドで構築する予定のCloudSQL,Redis,VPCなどは、今回のアプリケーションで使用するため、入れてます。
最小構成としては、ArtifactRegistry+CloudRunでデプロイ可能です。
何回かに分けて記事投稿していくので、またURLを下に載せます。

次回

【DevOps実践】RustでAPIサーバーを構築してみた②: Docker構築編
【DevOps実践】RustでAPIサーバーを構築してみた③: クラウド構築編
【DevOps実践】RustでAPIサーバーを構築してみた④: CICD編

Discussion