LoginSignup
164
65

ノーコード開発なのに盛大にやらかした

Last updated at Posted at 2023-12-06

はじめに

この記事は、本番環境などでやらかしちゃった人 Advent Calendar 2023 の7日目です。

私はIT関連企業ではないサービス業の人間ですが、IT関連全般のことをやってます。
現在ノーコード開発としてはかなりメジャーな Bubble というプラットフォーム上でサービスを展開しているのですが、そこでのやらかしを共有したいとおもいます。

Bubbleとは

Qiitaにはノーコードエンジニアはあんまりいなさそうなので説明します。
Bubbleは、プログラミング知識がなくても使えるノーコードプラットフォームです。ドラッグ&ドロップでウェブアプリを作れるので、、技術がない人でも簡単にアプリ開発が可能です。このプラットフォームのいいところは、見た目のデザインからデータベースまで、全部自分で作れる点。プログラミングがわからなくても、条件分岐やデータ操作などの複雑なことができます。

Bubbleの特徴は、使いやすくてカスタマイズが自由自在。デザインも自分の好きなようにできるし、必要な機能はプラグインで追加できます。Google MapsやFacebookといったサービスと組み合わせるのも簡単。技術者でなくても、自分のアイデアを形にするのにぴったりなツールです。
(by ChatGPT)

Bubbleのリリース

Bubbleには、わりといい感じのバージョン管理システムがあります。
アプリケーションは、Live(本番環境) と Main(開発環境のメインブランチ) があり、Mainから分岐したいくつかのブランチを切れます。リリースの際には、MainからLiveへのコピー(デプロイ)を行います(サブブランチからのLiveデプロイは不可能)。この際には、コンフリクトの検知や解決(どっちを生かすのか)ができます。

一方、データベースはLive と Dev という2つのバージョンのみで、開発環境の全ブランチはDevデータベースを共有しています。
そして、各テーブル単位にLive ↔ Devの一括コピーが行なえます。部分的なコピー機能などはなく、テーブルまるごとしかありません。

我々のサービスでは、データベースにいくつかのマスタデータ用のテーブルがありました。マスタデータは、DevとLiveで同じものを利用したいので、頻繁にDev to Liveのテーブルコピーを行っていました。

テーブルコピーのUI

スクリーンショット 2023-12-06 15.06.25.png

こちらの画像をごらんください。これがBubbleのデータベースコピー機能のUIです。
まず、コピーの方向(Live to DevまたはDev to Live)を指定します。
次に、コピー対象のテーブルを選択します。
最後に、呪文を記入してConfirmボタン押下でコピーが実施できます。

そして、コピー対象の選択プルダウンには、「All types」が存在します。
mosaic_20231206151019.png

もう、何が起きるか、おわかりでしょうか。

そして事件は起こった

ある日、私はとあるマスタデータをDevで編集し、それをLiveにコピーしました。

5分後、「なんかログインできないんだけど」という同僚の声。

ん、なんだろう。

Liveのデータベースを見る。Userテーブルの数が明らかにすくない。まるで開発環境のような少なさ…。

もしかして。

原因発覚、そして

そう、私はテーブルコピーの対象に「All types」が選択されていたのに気づかず、コピーを実行していたのです。
Live環境のUserを含む、すべてのデータは、Devデータによって置き換えられていました。しかも、まだデータのコピーは完了しておらず実行中。あと何十分かかかりそう。途中で止めることはできない。

止まらない冷や汗。

事情をみんなに説明。
約1時間かかって、データコピーが完全に終了。途中で止めたいのに、止められない、待つしかないという地獄の時間。

今度はBubbleのデータベースリストア機能を使って、事件が起こる前の状態に戻す指示を実行。これまた時間がかかる。

さらに1時間後、ようやく元通りになりました。お客様やチームに、大変ご迷惑をおかけしました。

学び

2時間のサービス停止時間によって得られたものは、「ちゃんと確認する」「一人でやらない」ということでした。それ以降、データコピーの際には複数人の監視下で実施するようにしています。

また、自分でUIを設計する際にも、BubbleのこのUIはアンチパターンとして気にするようになりました。
トランザクションデータを含む全テーブルコピーと、マスタデータ1テーブルのコピーという、目的も影響範囲も異なる行為が、全く同じUIで実施できてしまう、という問題。
本来あるべきなのは、テーブル単位に、「このテーブルは一括コピーを禁止する」というような機構をつけ、さらに全テーブルコピーと1テーブルコピーの確認UIに差をつけることでしょう。

そして、あれから数年

Bubble側も、この問題をようやく認識してくれたようです。
なんと、下記のようにAll typesを選択している際に、注意書きがつくようになりました。
スクリーンショット 2023-12-06 15.06.42.png

…こんなんじゃ絶対また事故起こるとおもうよ!!

164
65
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
164
65