見出し画像

Datomic Cloud のシステム構成とインストール方法

(これは「week-of-datomic」初日の記事です)

Datomic は単体で動く「on-prem」とクラウドで動かす「Datomic Cloud」がありますが、今回は自分の AWS アカウント上で Datomic Cloud を動かしてみようともいます。

Datomic Cloud のインストール方法について

まずは AWS Marketplace ではなく、公式の Cloud Formation(Split Stack)テンプレートを使って作成します。

AWS Marketplace に公開されている Solo Cloud Formation テンプレートではなく Storage と Compute を個別に作った理由は、Solo の Access Gateway はコスト節約のためスペックが低すぎて後ほど使う Analytics が起動しないようになっているのでご注意ください!公式ドキュメントも Split Stack を推薦しております。

For production operation, you should use a split stack system, i.e. separate top-level storage and compute stacks.

システム構成

画像1

Datomic Cloud は主に
(1)ストレージ x 1
(2)Primary Compute x 1
(3)複数の Query Group
によって構成されます。(1)と(2)は必須ですが、今回みたいにコストを節約する場合(3)を省略しても問題ありません。

名前について

Datomic Cloud は一つのインフラで複数の環境(例:dev、prod)を表現できますので、予めユニークなシステム名(application name)と環境名(例:dev)を考えておいた方がスムーズに展開できます。

今回は「falcon」という名前で作ってみます(名前の由来は Millennium Falcon、Star Wars ファンなので)。

Storage Stack 作成

まずは公式のリリースログから最新の Cloud Formation テンプレートを見つけます。

画像2

必要なのは(1)Storage と(2)Primary Compute 今回はコスト節約のため Solo を使いますが、プロダクション環境ですと Storage、Primary Compute(Production)、あと複数の Query Group で構成されます。

画像3

AWS のアカウントにログインして Cloud Formation の「Create Stack」を選び、Storage テンプレートの URL を貼り付けます。

画像4

そこから「Next」を押して、「Stack name」欄に予め決めてあるシステム名を入力します(何回も使うのでコピペしやすいようにすると便利です)。既存のシステム(同名)からデータを引き継ぐ場合は「Reuse Existing Storage」を「true」を選択しますが、新規の場合は「no」を選択してください

画像5

ここから「Next」を数回押して作成を開始しますが、スタックのステータスが「CREATE_COMPLETE」になると完了です。

Primary Compute Stack 作成

今回は遊んでみるだけなのでコストを節約して「Solo」バージョンを使います。Datomic Cloud はデータを保持したまま Production 版に移行できるように設計されております。

(Storage Stack を削除してもバックアップは残ります、完全に削除する場合は連載の最終回をご覧ください)

画像6

Solo 版の Cloud Formation テンプレートを貼り付けて設定を開始します。「Stack name」はわかりやすく「falcon-primary-compute」と設定しますが、「System name」は上の Storage stack と同じ「falcon」と設定します。

ローカルの環境から Access Gateway に接続するために登録されている EC2 Key Pair を設定してください。(EC2 Key Pair の登録方法はこちら

画像7

少し下にスクロールして「Environment Map」を設定して、Access Gateway のインスタンスタイプを「t3.small」以上に設定してください(nano では後で使う Analytics が起動しません)。ここから「Next」を数回押して作成を開始しますが、スタックのステータスが「CREATE_COMPLETE」になると完了です。

もしプロダクション環境を作る場合は分析用のリソースとアプリケーションのリソースとしてそれぞれの Query Group を作成しますが、その場合は「Analytics Endpoint」を設定してください。

アクセス制御

出来上がった Datomic Cloud のクラスターは独立した VPC とプライベートサブネットの中に隔離されてます。そのクラスターにアクセするには Access Gateway(別名 Bastion)を経由するのですが、公式でも紹介されている方法の中で一番簡単な方法は自分の IP に対して SSH ポートを解放する方法です。

画像8

AWS コンソールから EC2 画面で Bastion Security Group を探して Inbound ポートを許可します。

接続確認

クラスターに接続するには Datomic CLI を使います。(まだインストールしていない方はこちらからダウンロードしてインストールしてください)

datomic-access client falcon

● falcon は設定したシステム名に置き換えてください
● AWS CLI のプロファイルとリージョンを指定する場合は -p と -r パラメータを使います

Access Gateway に接続できたらポート(デフォルト 8182)が表示されますので、以下のコマンドで接続確認をします。

curl -x socks5h://localhost:8182  http://entry.falcon.ap-northeast-1.datomic.net:8182/

● falcon は設定したシステム名に置き換えてください
● リージョン(ap-northeast-1)は適切なものに置き換えてください

以下のような EDN データが表示されたら完成です。

{:s3-auth-path "falcon-storage......"}

次回はデータモデリングとスキーマ管理についてご紹介させて頂ければと思います

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