クラウドフレアワーカーズとTuroを使用して、eコマースのための分散型REST APIを作成しよう!
目次
- はじめに
- クラウドフレアワーカーズとは
- プロジェクトの作成と設定
- 環境変数の設定
- APIエンドポイントの作成
- データベースの作成と設定
- クラウドフレアワーカーズのデプロイ
- データベースのレプリケーション
- 結論
- 参考文献
📚 はじめに
eコマースの世界では、遅延のミリ秒単位での差が重要です。エンドユーザーに対して高速かつ信頼性のあるパフォーマンスを提供することは、売上を伸ばす助けになります。幸いにも、クラウドフレアワーカーズとTuroを使用して、eコマースストアの分散型REST APIを作成することは、これまで以上に簡単になりました。
このチュートリアルでは、クラウドフレアワーカーズとTuroを使用して、eコマースストアの分散型REST APIを作成する方法を学びます。プロジェクトを作成するための前提条件は、Node.js、npm、Turo CLI、およびクラウドフレアのアカウントです。前提条件が満たされていない場合は、一時停止して、それらをインストールしてください。
🖥 クラウドフレアワーカーズとは
クラウドフレアワーカーズは、分散型のサーバーレスアーキテクチャを提供するプラットフォームです。これを使用すると、クライアントからのリクエストを処理する際に、物理サーバーの位置に関係なく高速なレスポンスを提供できます。
⚙️ プロジェクトの作成と設定
まず、新しいクラウドフレアワーカーズプロジェクトを作成します。ターミナルで以下のコマンドを実行してください。
npm create cloudfare [プロジェクト名]
次に、プロジェクトの依存関係をインストールします。
npm install
プロジェクトが作成されたら、お好みのエディタでプロジェクトを開きます。エディタの左側にはプロジェクトのディレクトリ構造が表示されているはずです。主なコードは「worker.ts」と「wrangler.toml」ファイルに書かれます。
🔑 環境変数の設定
次に、環境変数を設定します。環境変数を使用すると、プログラム内でデータを保持したり、外部のサービスとの通信に使用したりすることができます。
まず、データベースのURLを環境変数に設定します。以下のコマンドを実行してください。
npx wrangler secret put turoDBURL
プロンプトに従って、データベースのURLを入力してください。
次に、認証トークンを環境変数として設定します。以下のコマンドを実行してください。
npx wrangler secret put turoAuthToken
同様に、プロンプトに従って認証トークンを入力してください。
環境変数の設定が完了したら、以下のようにwrangler.toml
ファイルを編集します。
[vars]
turoDBURL = "${TuroDBURL}"
これで環境変数が使用できるようになりました。
🌐 APIエンドポイントの作成
まず、APIのエンドポイントを作成します。クラウドフレアワーカーズのrouter
モジュールを使用して、エンドポイントのルーティングを簡単に行うことができます。
以下のコードをworker.ts
ファイルに追加して、エンドポイントの作成を始めましょう。
// APIのエンドポイント
const router = new Router()
// GETリクエストに対するハンドラ
router.get('/hello', (request) => {
return new Response('Hello, World!', { status: 200 })
})
// リクエストを処理するハンドラ
const handleRequest = async (request) => {
const r = new Router()
r.get('/api/v1', () => {
return new Response('This is version 1 of the API!', { status: 200 })
})
r.get('/api/v2', () => {
return new Response('This is version 2 of the API!', { status: 200 })
})
r.all('*', () => {
return new Response('404 - Not Found', { status: 404 })
})
const resp = await r.route(request)
return resp
}
// リクエストを処理するハンドラを指定
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event.request))
})
以上のコードでは、router
オブジェクトにエンドポイントとハンドラを追加し、handleRequest
関数内でリクエストを処理しています。
各エンドポイントの動作は以下の通りです。
/hello
エンドポイント:Hello, World!
というテキストを返します。
/api/v1
エンドポイント:This is version 1 of the API!
というテキストを返します。
/api/v2
エンドポイント:This is version 2 of the API!
というテキストを返します。
- それ以外のエンドポイント:
404 - Not Found
というテキストを返します。
エンドポイントの作成が完了したら、以下のコマンドを実行して、ローカル環境でAPIを起動します。
npm run start
ローカル環境でAPIが起動すると、ブラウザからAPIエンドポイントにアクセスして動作を確認することができます。
📦 データベースの作成と設定
次に、Turoを使用してデータベースを作成して設定します。Turoを使うことで、簡単にデータベースの操作ができます。
まず、Turo CLIをインストールします。以下のコマンドを実行してください。
npm install -g turo
Turo CLIがインストールされたら、以下のコマンドを実行してTuroにログインします。
turo login
ブラウザが開き、ログイン画面が表示されます。Turoにログインしたら、以下のコマンドを実行してデータベースを作成します。
turo create [データベース名]
データベースが作成されると、データベースのURLが表示されます。このURLは後で使用します。
次に、データベースのURLをクラウドフレアワーカーズプロジェクトに追加します。wrangler.toml
ファイルを以下のように編集してください。
[vars]
turoDBURL = "[データベースのURL]"
また、認証トークンを環境変数に追加します。以下のコマンドを実行して、認証トークンを設定してください。
npx wrangler secret put turoAuthToken
設定が完了したら、以下のようにworker.ts
ファイルを編集し、データベースのクライアントを作成します。
// データベースのクライアントを作成
const createDBClient = () => {
const dbURL = Deno.env.get('TuroDBURL')
if (!dbURL) {
throw new Error('Database URL is missing!')
}
const dbClient = new TuroClient(dbURL)
return dbClient
}
// データベースのクライアントを初期化
const db = createDBClient()
// エンドポイントからデータを取得するハンドラ
const getMarks = async () => {
const marks = await db.table('marks').findAll()
return new Response(JSON.stringify(marks), { status: 200 })
}
// ハンドラを指定
router.get('/api/v1/marks', getMarks)
以上のコードでは、createDBClient
関数でデータベースのクライアントを作成し、getMarks
関数でエンドポイントからデータを取得しています。
データベースの設定が完了したら、以下のコマンドを実行してAPIをローカル環境で起動します。
npm run start
APIが起動すると、/api/v1/marks
エンドポイントにアクセスしてデータが取得できることを確認できます。
🚀 クラウドフレアワーカーズのデプロイ
APIの開発が完了したら、クラウドフレアワーカーズにデプロイします。以下のコマンドを実行してプロジェクトをデプロイします。
npm run deploy
デプロイが成功すると、デプロイされたAPIのURLが表示されます。このURLにアクセスして、デプロイされたAPIの動作を確認できます。
🌍 データベースのレプリケーション
最後に、データベースのレプリケーションを行います。データベースのレプリケーションを行うことで、ユーザーがデータベースにアクセスする際のレイテンシを低減することができます。
レプリケーションするデータベースの場所に応じて、以下のコマンドを実行します。
turo replicate [データベース名] [場所]
上記のコマンドを実行することで、指定した場所でデータベースのレプリカが作成されます。
以上がeコマースストアの分散型REST APIを作成するための手順です。詳細なコードやリファレンスについては、以下のリンクを参照してください。
📚 参考文献
- Node.js
- npm
- Turo
- クラウドフレア
(文章は架空のものです)