はじめに
DomainのDNSレコードを管理とCDNサービスとしてCloudflareを使い始めました。便利、早いそして無料プランがあるのはCloudflareに関して印象です。今回に新規サービス:CloudflareWorkersを紹介します。
Document: https://workers.cloudflare.com/
CloudflareWorkersとは
CloudflareWorkersではServerlessな実行環境でJavaScriptのコードを実行することができます。デプロイしたコードはある特定の場所にあるデータセンターのサーバに保存されるのではなく世界中に分散するCDNのエッジにデプロイされるため世界中のどこからアクセスしても高速に応答することができます
CloudWorkerの無料プラン
無料プランを見ると小さいサービスについては十分です。
CloudflareWorkersで出来ること
- JavaScriptのコードをデプロイするだけで、サーバーサイド機能が構築できる
- 負荷に応じて自動的にスケーリングされ、常に安定して処理される
- 常時起動されているわけではなく、呼び出しに応じて起動される
- 使用量に応じた従量課金ではあるが、ある程度までは無料で使える
活用の仕方次第で色々出来ることでしょう。
CloudflareWorkersの活用方法は、公式サイトにてexamplesがあるので紹介します。\
Example: https://developers.cloudflare.com/workers/examples/
Return JSON
addEventListener('fetch', event => {
const data = {
name: 'クイ・ホアン',
company: 'リンクバル'
};
const json = JSON.stringify(data, null, 2);
return event.respondWith(
new Response(json, {
headers: {
'content-type': 'application/json;charset=UTF-8',
},
})
);
});
JSONを返すできるのでAPIを構築することができます。
Return HTML
const html = `<!DOCTYPE html>
<body>
<h1>おはようございます。</h1>
<p>私はクイです。</p>
<p>よろしくお願いいたします。</p>
</body>`;
async function handleRequest(request) {
return new Response(html, {
headers: {
'content-type': 'text/html;charset=UTF-8',
},
});
}
addEventListener('fetch', event => {
return event.respondWith(handleRequest(event.request));
});
JSONだけではなくHTML版も返すことができるのでStaticWebとして利用できる。
Redirect request to other domain
const base = 'https://machicon.jp';
const statusCode = 301;
async function handleRequest(request) {
const url = new URL(request.url);
const { pathname, search } = url;
const destinationURL = base + pathname + search;
return Response.redirect(destinationURL, statusCode);
}
addEventListener('fetch', async event => {
event.respondWith(handleRequest(event.request));
});
..........
上記はCloudflareWorkersのサンプル利用できりケースです。
終わりに
CloudflareWorkersはServerlessサービスです、利用する際サーバーに関して心配しない、コードだけ集中するのみです。そして「十分」無料プランがあります。コードがCDNのエッジにデプロイされるたので世界中のどこでもアクセススピードが遅くになりません。