#chiroito ’s blog

Java を中心とした趣味の技術について

エンタープライズ向けのシステムを自動構築するツール

エンタープライズで使われるミドルウェアを使うためには、環境が使えるようになるまで構築に膨大な時間がかかるほか、開発用途などでちょっと使うだけで莫大なライセンス料がかかります。

クラウドが当たり前になって、ライセンス料が非常に安価になって触りやすくなったものの、エンタープライズなシステムではInfrastructure as a Codeや自動化などといったレガシーと比べて新しい仕組みを導入するのはハードルが高く、クラウドらしさを得ているエンタープライズなシステムは多くありません。 そのため、クラウド移行というとオンプレと同じ構成・リソースをクラウドにリフトするだけのシステムが多く、開発環境においても常にうごかしっぱなしのため、インフラコストは下がるどころか高くなります。また、インフラ担当者が温かみのある手作業で環境を構築・運用するため構築や運用のコストもこれまでどおりです。その結果、システム全体のコストはクラウド移行前と比べて高くなります。

ミッションクリティカルなシステムで使われるレベルのシステムを1から構築するのは骨が折れるものです。複数環境を手作業でとなると尚更です。

なので、エンタープライズなシステムを自動化するためのベースとなるツールを作成しました。基本的な構成はツールの設定変更だけでできることを目標とし、設定変更では対応できないケースではカスタマイズするベースとなることを目的としています。ツールといってもただのTerraformのファイル群です。

GitHub - chiroito/rapid-build-tool

このツールを使うと以下のような構成のシステムを設定だけで作れるようになります。実行してしばらく待つだけで環境が構築でき不要になったらすぐに環境が削除できる上、システム全体で100~200円程度からさわり始めることができます。

f:id:chiroito:20190219014813p:plain
LB経由でアプリケーションと管理ツールへアクセスし、システムのバックアップをオブジェクトストレージに取得する

f:id:chiroito:20190219014828p:plain
アプリケーションと管理ツールへのアクセスはアプリケーションサーバが直接受け付け、システムのバックアップは取らない

システムの開発時には必要な時だけ立ち上げて、不要なときだけ停止することでかなりのコスト削減に繋がります。また、同時に複数面を構築できるので、環境の構築待ちや開放待ちなども無くなり、開発の生産性向上にも繋がります。アプリケーションの単体試験や、Java EE のコンテナとの結合試験、外部システムをモック化した結合試験などの自動テストなどは既にある場合には、このツールと組み合わせることで開発者がソースをコミットしたら環境が自動で立ち上がり、これらのテストを実施し、テストが終わったらレポートを送信して環境は無くなるという使い方がエンタープライズなシステムでも可能となります。

エンタープライズなシステムでもよりクラウドらしさが得られることを願っています。