[レポート] DevOpsプラクティスをAuth0 Int環境に適応する方法 #Auth0JP #Auth0Day
DevOpsプラクティスをAuth0 Int環境に適応する方法
2019年11月19日(火)にNagatacho GRiDでAuth0社の自社イベント「Auth0 Day 2019」が開催されました。
本記事は、セッション「DevOpsプラクティスをAuth0 Int環境に適応する方法」をレポートします。
スピーカー
- 山口央 [Auth0株式会社 Solutions Engineer]
セッション概要
あらゆるモノがソフトウェアで定義される昨今、 迅速・安全かつ自動的なソフトウェアのリリースは全てのお客様に必要です。 ソフトウェア開発者は、新しい機能をいち早く市場に投入したい要望を 持っているにもかかわらず、自動的なソフトウェアのリリースの最低条件である"as Code"化を全てのスタックで実現することは困難で、 CI/CDツールで管理できない一部のスタックは 人手でリリースされているのが実情です。 本セッションでは、DevOpsプラクティスをID管理スタックに適応して 完全な自動化と継続的なソフトウェアリリースを実現する方法を デモを交えてご紹介します。
レポート
アジェンダ
- DevOpsとCI/CDツール
- Auth0のアプローチ
- DevOpsをAuth0環境に適応する方法
- デモ
CI/CDの必要性
- ソフトウェア開発のプロジェクトで、CI/CDがない場合はどうなる?
- リリースサイクルの高速化
- 低速なリリースサイクルとノンコア工数の増大
- 一般的なCI/CDフロー
- バージョン管理
- ビルド
- テスト
- デプロイ
- 人手で管理する場合、コストがかかる
- CI/CDが適用されている場合
- リリースサイクルの高速化
- 安全なテスト環境の構築
- ノンコア工数の削減(コアに集中できる)
- バージョン管理
- あらゆるバージョンをデプロイ可能
- ビルド
- 自動的にビルドが走る
- テスト
- 自動的にテスト
- デプロイ
- クラウド環境に自動的に反映
- あらゆる規模のお客様で、ソフトウェアの重要性が高まっている
- 重要なテーマになっていると考えられる
Auth0のアプローチ
- Auth0の構成情報のコード化
- Universal Login : HTMLコードを作ることが可能
- User Data : カスタムの認証DBを接続可能、ActionScriptを設定可能(JavaScript)
- Rules : Auth0のユニークな機能、あらかじめ定義したRuleを設定可能(JavaScript)
- これらをYAML形式で管理可能
- DevOpsをAuth0環境に適応
- Auth0の構成情報を一元管理し、不整合を回避
- Auth0の構成情報をデプロイするパイプラインを作ることができる
デモシナリオ
- 起こりうる状況
- 開発テナントの構成情報をGitHubにプッシュし、本番テナントに反映
- 誤って削除された本番テナントの情報をGitHubから復元したい
- 環境
- GitHub + CircleCI
- もちろんこれ以外のツール、サービスも対応している
- Auth0 : 2つのテナントを用意
- 開発テナント
- 本番テナント
- GitHub + CircleCI
デモ1 : 開発テナントの設定を本番テナントに反映
Auth0で認証するReactアプリケーションを対象にしたデモを行っていただきました。
まずは開発用のテナントの確認です。
SAP用のApplicationを作成しています。
ConnectionにはLINEを設定。
Universal LoginはカスタマイズされたHTMLを書いています。
Ruleは7つ設定してあります。
一方、本番環境はまっさらな状態で、何も設定されていないデフォルトの状態です。
まずは開発環境をエクスポートします。こちらはauth0-cliを利用します。
わかりやすくするためにルールを追加し、エクスポートしてみると tenant.yaml
や rules
がローカルにダウンロードされます。
GitHub,CircleCIは設定済み。GitHubの development
ブランチにプッシュすると、デプロイが走り開発環境に反映されます。
CircleCIのパイプラインは非常にシンプル。環境を作り、ローカル同様auth0-cliでデプロイされます。
master
ブランチに development
ブランチをマージするプルリクエストを作成し、マージします。
CircleCIが走り、本番環境に対してのデプロイが行われます。
まっさらな本番環境が、開発環境と同様の設定になりました。Application, Conenction, Rules などなど適用されました。
デモ2 : 本番テナントの復元
本番テナントで誤ってRuleを消してしまった場合を想定。これをリカバリします。
CircleCIの最新のワークフローを再実行するだけで戻ります。
Ruleが元に戻りました!
まとめ
- リリースサイクルの高速化と安全な実験環境の確保、CI/CDは不可欠
- Auth0の構成情報をバージョンコントロール、CI/CDで一元的に管理
- DevOpsプラクティスををAuth0環境に適用し、ノンコア作業を自動化して開発者はコア作業に集中する
まとめ
Auth0のインポート/エクスポート、それからauth0-cliを使うことでDevOps環境が簡単に構築できます。ぜひ試してみてください!