ローコードで業務アプリケーションを構築できる「Retool」オンプレ版をTerraformで構築してみました!

ユビーを退職しまして、6月より株式会社JMDCに入りフルスタックで開発やってます。
転職の理由はまた別の時に書こうと思いますが、今回はRetoolオンプレ版の環境構築をしてみたので紹介します。

ローコードでWebベースの業務アプリケーションを構築できるRetoolが便利!ということで、株式会社クエストさんのRetool導入のお手伝いをしました。

Retool SaaS版を使うために本番DBをインターネットに公開するのは流石に怖いということで、Retoolのオンプレ版(ベータ)を使うことになったのですが、実際のAWS環境に構築するのが思いのほか大変でした。

まずRetool とは?

Retoolは前述の通り、ローコードでWebベースの業務アプリケーションを構築できるクラウドサービスです。
詳しくは公式サイトやcdataさんのブログを参照ください。

Retoolがデフォルトで提供しているオンプレ版の導入方法

まず公式に提供されているオンプレ版のデプロイ方法ですが、https://my.retool.com/ に登録するとAWS EC2, Kubernetes, Helm, Local machineの方法が提供されています。

クエストさんの環境ではKubernetesを使っていないので、この中だと選択肢はEC2となります。
EC2のインストールはCloudFormationで提供されています。
2022年6月19日現在、以下の理由で利用できませんでした。

  • Security groupのVPC設定が正しくなく、デフォルトVPCでしか使えない。

  • 独自ドメイン使えない。

  • DBを含むAll in oneインスタンスで立ち上がる。

  • SSHポートがパブリックになる。

もちろん、デプロイ後にGUIで微調整しても良いのですが、AWS上のリソースは可能な限り管理したいので、Terraformによる導入を試みました。

ざっとインターネットで検索すると、RetoolのterraformモジュールがすでにRetoolから公開されていました。
しかし、このモジュールも現時点では以下の問題があったため見送りました。

  • デフォルトVPCでしか使えない。

  • 独自ドメイン使えない。

  • jwt_secretとかrandom stringがapplyごとに毎回変わってしまう。

  • Fargate対応されていない。

そのため、Retoolの構成の理解がてらに自前でTerraformモジュールを作ってみました!

上記の既存Terraformモジュールの問題解決に加えて、以下の観点を入れています。

  • 管理ツール用のVPCにRetoolを構築、ターゲットのVPCにPeeringする。

  • ACMでRetool用ドメインのSSL証明書を作る。

  • デバッグはSSHでなくSession Managerを利用。

  • WAFを差し込めるようにしてBasic認証やIP制限を入れる。

この環境は以下の構成になっています。

retool module architecture

それぞれのVPCは任意のものを使用できるようにしています。
同一のVPCを指定すればPeeringなしでそのまま使えます。

そして無事、セルフホストしたダッシュボードにアクセスすることができました!

Reoolのダッシュボード

今回はあくまでも試しに作ったものなので、構成の改善やモジュールとしての設定項目調整が必要にはなるかと思いますが、改善すべきところやフィードバックなどあればコメントでもGitHubへのPRでもいただけると嬉しいです。
もしすでにもっと完成度の高いRetoolモジュールが存在していたらそちらを使いたいので教えてください!

この記事が気に入ったらサポートをしてみませんか?