2019.09.18

Salesforceのリリース管理No. 1ツール Flosumとは?

Flosumとは?

Flosumとは、米国のAppExchangeでリリース管理ツールNo. 1(※)の評価を得ているネイティブLightningインターフェースを持つソリューションです。
(参考URL: https://www.flosum.com)

テラスカイでは、このソリューションを日本で販売、導入支援するべく米国Flosum社と7月に代理店契約を締結しました。

今回のブログはこのFlosumについてご紹介したいと思います。

※AppExchangeのEnglish版、カテゴリー(App Categories)「Admin & Developer Tools」のすべてのソリューションのうち、レビュー数が最も多く高評価である。自社調べ。(2023/11/7時点)
 AppExchangeのEnglish版は Salesforce.com, inc.が運営しています。(https://appexchange.salesforce.com/)

リリース管理・バージョン管理は大変?

皆さんはSalesforceのリリース管理や設定・開発したリソースのバージョン管理はどうされているでしょうか?何かツールを使われているでしょうか?

リリース管理では、スクリプトからも実行可能なAntを利用されている場合もあるでしょうし、やはりSalesforceネイティブな変更セットを利用されている場合が多いかもしれません。

また、バージョン管理ではSalesforceに限らず汎用的にGit等のサードパーティ製ツールを利用されている場合もあるでしょうし、Sandbox自体を一定の世代管理用に利用されている場合もあるかもしれません。

さらにSalesforce DXと共に活用されている場合もあるかもしれません。

いずれにしても、下記のようなケースに遭遇されたことがあるのでは?と想定しています。
・Salesforceネイティブなツールを使いたい
・変更セットはSalesforce標準ツールだが
  - 対象のリソースを検索するのに手間がかかる
  - リリースの度に対象リソースを送信・受信して操作するのは面倒
  - リリースをスケジュール実行できない
  - 設定/開発内容や本番環境との差異を事前に把握できずエラー対応に追われる
  - リリースした内容を簡単に元に戻したい
・システム管理者、リリース管理者としてはコマンドラインから実行するツールに慣れていない
・開発リソースだけでなく宣言的/静的リソース、Lightning等全て同等にバージョン管理をしたい
・Sandboxを世代管理に使っても数が足りない
・Sandbox間、Sandbox-本番環境間のDiff機能が無い

これらのケースを解決してくれるのがFlosumで、Salesforceのリリース管理、バージョン管理をより容易に行うことができます。

Flosumがどんな機能を提供してくれるかを以下に簡単ではありますがご紹介します。

Flosumの位置付け

Flosumは、既存のSalesforce組織にインストールすることも可能ですが、原則的には新規のEE (Enterprise Edition) 組織としてFlosum組織が払い出されます。イメージ的にはこのFlosum組織がお客様が保有されているSalesforceの本番組織やSandbox組織や開発者用組織にOAuthで接続され、設定や開発リソースであるメタデータを取得、保持、デプロイする役割を担います。

上記イメージのように、お客様の各組織に対して双方向でFlosum経由でのメタデータ移送が可能です。Flosumと各組織との接続にはOAuth認証を用いますので、最初の接続の際にユーザID、パスワードは入力しますが、以降の入力は不要です。

Flosumはお客様保有組織間のハブのように機能して変更箇所の取得からデプロイを行います。上記の例に限らず、Sandboxから本番組織に対してだけでなく開発者用組織からSandboxまたは本番組織、本番組織からSandboxまたは開発者組織、開発者組織同士、Sandbox同士、本番組織同士の間でもやりとりが可能です。

Snapshot機能

Snapshotは、Salesforceの組織(開発者/本番/Sandbox)から必要なメタ情報を各種フィルタリング条件で指定することにより、取得することができます。実際の画面イメージを見てみましょう。

過去何日間、もしくは何時間(最新バージョンでは時間指定も可)の変更箇所全てであったり、コンポーネントタイプやコンポーネント名、変更ユーザなどを条件指定して取得することが可能です。

Branch & Merge機能

Flosumは変更情報を機能のかたまりをBranchとして管理します。Snapshotで取得した結果をコミットしてBranchを作成します。この時、開発を1人で実施していたり、少ない機能の開発を実施している場合は該当機能のバージョン管理や他の開発者による機能とのマージや上書きを気にすることはあまり無いかもしれません。ただし、通常の開発は複数の開発者やチームで開発していることは普通で、開発組織やSandBoxも複数環境使いながら1つのアプリケーションを構築していることが多いのではないでしょうか。このような場合には、各環境から新規で設定・開発した情報、変更/削除した情報をまとめて(マージして)管理することが必要になると思います。この時、一旦コミットして作成したBrachを他のBranchにマージして1つの機能単位としてまとめることができます。マージを行う際にBranch間で同じリソース内容でコンフリクトが発生したり、バージョンが異なったりする場合に、どちらの内容を活かすべきか、反映すべきかを確実に把握できることがデグレや漏れを回避する上で重要ですが、Flosumはそのための機能を提供してくれます。
(全てのコンポーネントをマージするのではなく、必要なコンポーネントを取捨選択してマージ実行することもできます)

Conflictの表示

写真提供:Flosum>Demo Videos>Merge Changes

Conflict箇所の比較・特定

写真提供:Flosum>Demo Videos>Merging Changes
上記は実際にBranchのマージを実行する際に表示される画面です。ここで対象となるコンポーネントがコンフリクトを起こしていないか、安全にコミットできるかを自動判定してくれます。コンフリクトが発生していると画面上赤字で"Conflict"と表示されるのでそこをクリックすると具体的なコンフリクト箇所を画面の左右に比較して表示してくれます。そこでさらに詳細なレベルで追加されたのか変更されたのか削除されたのかをカラー付きで示してくれます。

この機能はBranchマージの時だけでなく例えばBranchをRepositoryにコミットする際にも同様にバージョンチェックとして働き、確認することができます。

Comparison機能

Branchをマージする際にコンポーネント間のコンフリクトやバージョンの異なるコンポーネントのチェックができることは確認できました。

FlosumはさらにSnapshot間やRepository間でも比較機能を提供します。比較は同じ組織の異なるタイミングのSnapshot間でも可能ですし、異なる組織のSnapshotやRepository間でも可能です。下記が画面イメージとなります。左右でSourceとTargetとして比較対象を指定することで相違があるコンポーネントを下部に一覧として表示してくれます。

Git連携機能

Flosumは単体でバージョン管理機能を提供してくれますが、既にGitなどの外部のバージョン管理ツールを利用されている場合、それらと連携することも可能です。

Git連携としてFlosumをフロントエンドで使い、Gitをバックグランドで使うことも可能です。またFlosumとGitの間でBranch及びRepositoryの両方のレベルで双方向において変更内容の反映が可能です。

下記の画面の例ではBranchをGit上に連携しています。

Gitに連携

写真提供:Flosum>Demo Videos>Version Control

Git画面

写真提供:Flosum>Demo Videos>Version Control

Deploy & Rollback機能

いよいよ機能(リソース)をまとめてDeploy(リリース)する作業です。Flosumはリリース対象をManifestsとして管理しますが、ここでコンポーネントの追加・削除などを行うことも可能です。またここでまとめたDeployment Manifestsは複数のターゲット組織に対して且つ何度でも再利用することが可能です。これは作業者にとって大変便利な要素になると思います。

Deployment Manifests

いきなりDeploy(リリース)するのではなく、もちろん事前テスト検証としてValidate実行を行うことができます。またDeployも以下の5つのオプションを選択して実行することができます。

1. Do not run tests:テストは実行されません。これは開発環境のリリース、例えばSandbox、Developer Edition組織、トライアル組織等にのみ適用されます。
2. Default:このオプションは特にテストレベルを指定せずリリースを開始します。リリースパッケージの中身によってテストを実行するかどうかシステムが判断します。
3. Run specified test:テスト実行で選択したテストのみが実行されます。
4. Run local tests, ignore test from managed packages:インストールされた管理パッケージ以外の組織の全てのテストが実行されます。
5. Run all tests:全てのテストが実行されます。組織の全てのテストを含みます。

Validate, Deploy, and Rollbackボタン

ValidateやDeployは画面右上に配置されたボタンを押すだけです。ここにRollbackというボタンも確認できると思いますが、一旦リリース完了しても何らかの理由で元に戻したい場合はこのボタンを押して対象を指定することでRollbackできます。この機能も大変便利ですね。

Scheduling機能

Flosumでは各種操作や処理の実行をスケジューリングすることができます。これにより担当者が画面の前で対応しなくても好きな日時(夜間や休日でも)に処理を自動化することができます。

下記の画面のようにSnapshotの取得とDeploymentの実行についてスケジュールを登録することが可能です。

Snapshotのスケジューリング

Deploymentのスケジューリング

あと自動化という意味では、CI (Continuous Integration) の機能としてBranchやRepositoryにコミットを行なったタイミングで事前登録しておいた組織に対してリリース実行することも可能です。

Flosumの意外な用途

Flosumはここまで見てきたようにSalesforceのアプリケーション開発ライフサイクルの中でバージョン管理やリリース管理で力を発揮するツールですが、意外な使い方もあります。それはSalesforceの組織を複数お持ちのお客様で組織統合や組織分割時にも利用されているという事実です。
具体的には以下の用途で利用されているようです。

・組織間比較
・影響度分析
・削除変更対応
・デプロイ(再デプロイ)

確かにコンポーネント単位だけでなく組織のSnapshot単位での比較機能があるので事前の影響分析にも利用できそうですし、本番組織からSandboxや本番組織から本番組織にもデプロイができるので組織統合/分割には威力を発揮しそうです。また、一旦組織統合/分割が完了後は、従来の用途として使えるので​継続的な価値を享受できると思いますので、もしニーズがある場合は検討頂ければと思います。

最後に

個々の機能の説明で全体の流れがわかりにくかったかもしれませんので、最後に開発からリリースの流れのイメージを1例として付けておきたいと思います。実際にFlosumを利用頂く時には、この流れ・プロセスをきっちり決めておくこと(現行プロセスからの変更・改善含め)が大事ですので、テラスカイとしてはこの辺りも是非ご支援できればと考えております。

開発~リリースの流れ(例)

FlosumはSalesforceのアプリケーションとして100%ネイティブな環境で動きますので、開発者はもちろんシステム管理者や運用管理者などコード開発をしないCitizen Developerにとっても非常に使い易いツールです。またSalesforceプラットフォームの信頼性の上で稼働しますのでコンプライアンス的にも安心できるツールです。是非日本でも多くの方に使って頂きたいと思いますので、お気軽にテラスカイまでお問い合わせ下さい。
46 件
     
  • banner
  • banner

関連する記事