業務アプリにとってデータは大切なデジタル資産です。何かの間違いがあったら取り返しがつきません。そこで今回は少し技術運用よりのTipsとして、2回に分けてkrewDataでのバックアップと復旧対応について説明します。
データ編集フロー実行後にデータ復旧が必要になるケース
krewDataではkintoneのメンテナンス中にデータ編集フローを実行してしまった場合など、ご利用状況によってはごく稀にエラーが発生してしまう可能性があります。
その内、データ復旧が必要なケースはフロー最後の出力アプリコマンドでエラーが発生した場合です。
出力アプリコマンドでは100レコード単位で出力アプリにレコードを追加/更新、しているため(出力方法が「再生成」の場合は削除処理も実行されます)、たとえば、500レコードあって、その内300レコード処理済みで、残りの200レコードが未完了の状態でエラーが発生した場合、出力先のアプリには先の300レコードのみ追加/更新され、残りの200レコードの追加/更新が反映されていない不整合な状態になってしまいます。
エラーが発生した場合に、自動でアプリのデータを復旧できれば良いのですが、krewDataでは出力アプリのフロー実行前データを保持しておらず、kintoneではトランザクション機能を有していないため、そのような場合にアプリのデータを処理前の状態に復元する機能は提供されていません。そのため、ご自身でデータのバックアップを取得し、そのバックアップを基にデータを復元する必要があります。
なお、以下の場合に関しては、データ編集フローを再実行することでデータを復旧できる可能性が高くなります。
- 出力アプリコマンドで出力先アプリに「新しいアプリ」を指定している場合
- 入力アプリと出力アプリが異なり出力方法に「再生成」を設定している場合
おすすめしているバックアップの選択肢
krewDataではデータのバックアップ機能を提供していないため、以下のような方法でデータフロー実行前にバックアップいただくことをおすすめしています。
- kintoneのファイル書き出し機能を使用して、手動でアプリの既存データを外部ファイルに出力しておく
- 自動バックアップ機能を備えるkBackup等の連携製品と併用してバックアップをとる
krewDataで自動バックアップと復旧対応する方法
お客さまの状況によっては、手動での外部ファイル出力とkBackup等の連携製品でのバックアップが難しい場合もあるかもしれません。
そのようなお客さまの参考になればと、krewDataを使用したバックアップと復旧対応について紹介します。
バックアップの目的
まずは、バックアップの目的について確認します。なぜデータをバックアップする必要があるか、それは以下の目的を達成するためです。
- 同じ処理結果になるようにデータ編集フローを再実行できること(入力アプリの整合性が保たれていること)
- データ編集フローを再実行した結果が正しいこと(出力アプリの整合性が保たれていること)
バックアップ用データ編集フロー
それでは、バックアップ用データ編集フローについて確認します。基本的にバックアップ対象のデータは、kintoneのAPI使用数の消費を抑えることを考慮しないのであれば、アプリの全データをバックアップする形で問題ありません。
同じフィールド構造のバックアップ用アプリを用意し(kintoneのアプリ複製機能が便利です)、そのアプリを出力アプリとして設定することでバックアップを取得します。
(入力アプリと出力アプリが異なる場合は、入出力アプリ数分バックアップを取得する必要があります。)
なお、バックアップ用アプリは、常にクリアな状態である必要があるので、その時の出力方法は「再生成」を設定します。
例えば、利用例にある予実データ編集フローのバックアップは下記のように設定します。元のデータ編集フローでは、入力アプリが2つと出力アプリが1つ設定されています。
そのアプリ数分全データをバックアップ用アプリに出力するデータ編集フローを作成します。予実データ編集フローの例ではこのように3つのバックアップ用データ編集フローを作成します。
復元用データ編集フロー
バックアップしたデータから、不整合状態の出力アプリをデータ編集フローの実行前に復元する、復元用データ編集フローを作成します。これは単純にバックアップ用データ編集フローの流れを逆転させたフローを作成する形になります。
予実データ編集フローの例では先に作成した3つのバックアップ用データ編集フローのデータの流れを逆転させたフローを3つ作成します。
これで復元用データ編集フローの作成が完了しました。予実データ編集フローの例では最終的に3つのバックアップ用フローと3つの復元用フローが追加されます。
後は、バックアップ用データ編集フローを該当のデータ編集フロー実行前にスケジュールすることでバックアップデータを取得できるようになります。
復元用データ編集フローは、万が一エラーが発生してしまった時に適宜手動でフローを実行し復旧対応を行う形になります。データ復元後に改めてエラーになったデータ編集フローを実行します
いかがでしたか?今回説明した通り、krewDataを使用してバックアップとデータの復元が可能です。krewDataをお客さまにより安全にお使いいただけるように、ぜひ今回紹介した対応方法についても検討いただければ幸いです。なお、次回は引き続きkintone APIの節約に繋がる、差分データパターンでのバックアップと復元方法についてご紹介します。お楽しみに!