🤖
【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