SlideShare a Scribd company logo
1 of 22
Download to read offline
Copyright 2021 Toranoana Inc.
とりあえずDenoを
CloudRunで動かしてみる
植竹 惇
虎の穴ラボ株式会社
1
Copyright 2021 Toranoana Inc.
目次

2
● 自己紹介

 

● 何をするのか



● 実際にやってみた



● 解説



● まとめ

Copyright  (C) 2020 Toranoana Inc. All Rights Reserved.
自己紹介
植竹惇(ウエタケ ジュン)
‣ 2018/08 入社のWebエンジニア
‣ 新規事業系 開発リーダー
‣ 前職:エンタメ系アプリ
   サーバーサイドエンジニア
入社理由
‣ 最高のモチベーションを
発揮できる業界で働きたい!
比較的得意なもの
‣ Rails
‣ GCP
Deno歴
‣ 3日程度
いま熱いコンテンツ
‣ バンドリ
‣ 淫獄団地
Copyright 2021 Toranoana Inc.
Deno初心者なので何から

手を付けるか……

4
Copyright 2021 Toranoana Inc.
とりあえず



実際に使うことを想定し、

クラウドサービスで動作させたい

5
Copyright 2021 Toranoana Inc.
※CloudRunについては8月のテックカンファレンスでも登壇 

https://www.slideshare.net/toranoana-lab/fantiagcp-250009922

6
CloudRunとはGCPにある、 

サーバーレスのコンテナ化された 

フルマネージドな

コンピューティング環境 



Copyright 2021 Toranoana Inc.
やってみた

7
Copyright 2021 Toranoana Inc.
参考にしたサイト

https://future-architect.github.io/articles/20200612/

















8
DockerでのHello Worldはできたが… 

Copyright 2021 Toranoana Inc.
$ docker build -t deno-lt .



$ docker tag deno-lt asia.gcr.io/XXXXXXXX/deno-lt:latest




$ docker push asia.gcr.io/XXXXXXXX/deno-lt:latest




$ gcloud beta run deploy deno-lt  …..(略)


9
ビルドして



タグ付けして



GCPのコンテナ登録して



デプロイする

これだけで指定ポートにアクセスしたら動くようになっていなくてはいけない。


Copyright 2021 Toranoana Inc.
つまりは



docker-conpose抜きで、



サーバーの起動まで実行されている必要がある

10
Copyright 2021 Toranoana Inc.
自分のDocker+CloudRunの理解が半端だったこともあり、だいぶ苦戦。



「これだ」というサンプルはないため、Dockerの基礎的な部分で躓く。

11
Copyright 2021 Toranoana Inc.
最終的に参考にしたサイト

https://github.com/denoland/deno_docker

















12
Copyright 2021 Toranoana Inc.
13
$ docker build -t deno-lt .
$ docker run -it -p 8080:8080 deno-lt
server starting on http://localhost:8080/
Ctrl-C to shutdown container
結局のところ、ローカル環境で上記の build+run 直後の



サーバー起動ができればCloudRunで動きます

Copyright 2021 Toranoana Inc.
FROM denoland/deno:1.14.1
EXPOSE 8080
WORKDIR /app
USER deno
ADD . .
RUN deno cache main.ts
CMD ["run", "--allow-net", "--allow-read", "main.ts"]
Dockerfile
公式のイメージ

利用ポート解放

denoのお作法ネッ
ト解放

denoのお作法

ファイル読取許可

Copyright 2021 Toranoana Inc.
import { serve } from "https://deno.land/std@0.113.0/http/server_legacy.ts";
const server = serve({ port: 8080 });
const template = await Deno.readTextFile("app/html/hello.html");
console.log("server starting on http://localhost:8080/nCtrl-C to shutdown
container");
for await (const req of server) {
req.respond({ body: template });
}
main.ts
readFileStrではローカル上のhtmlファイルを読んでいます。 



あとはお決まりのようなものなので特筆することもなく…。 

Copyright 2021 Toranoana Inc.


実際に動く環境を見てみよう 

16
Copyright 2021 Toranoana Inc.


次にoak(ミドルウェアフレームワーク)

を使ったルーティングのAPIも作ってみる

17
Copyright 2021 Toranoana Inc.
利用したサンプルコードのサイト

https://github.com/oakserver/oak



















18
Copyright 2021 Toranoana Inc.
19
import { Application, Router } from "https://deno.land/x/oak/mod.ts";
const samples = new Map<string, any>();
samples.set("1", {
id: "1",
title: "CloudRun Test Deno",
author: "JUNE-JUNE",
});
const router = new Router();
router
.get("/", (context) => {
context.response.body = "Hello world!";
})
.get("/sample", (context) => {
context.response.body = Array.from(samples.values());
})
.get("/sample/:id", (context) => {
if (context.params && context.params.id && samples.has(context.params.id)) {
context.response.body = samples.get(context.params.id);
}
});
const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());
await app.listen({ port: 8080 });
main.tsで動かすコード

Copyright 2021 Toranoana Inc.
20
await app.listen({ port: 8080 });
サンプルコードをそのまま使えます。

listenするポートを、CloudRunに合わせるのだけ忘れないように。

Copyright 2021 Toranoana Inc.


実際に動く環境を見てみよう 

21
Copyright 2021 Toranoana Inc.


まとめ



・とりあえず超簡易的に実用できるような検証をした



・どちらかといえばDockerとCloudRunの勉強になりました



・次はデータベースへの接続までCloudRunで試したい

22

More Related Content

What's hot

Deno の node 互換モードと ソケット
Deno の node 互換モードと ソケットDeno の node 互換モードと ソケット
Deno の node 互換モードと ソケット虎の穴 開発室
 
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)虎の穴 開発室
 
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話虎の穴 開発室
 
サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編虎の穴 開発室
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴 開発室
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3虎の穴 開発室
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!虎の穴 開発室
 
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディングオタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング虎の穴 開発室
 
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた虎の穴 開発室
 
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用虎の穴 開発室
 
Tech day#2 オープニングトーク
Tech day#2 オープニングトークTech day#2 オープニングトーク
Tech day#2 オープニングトーク虎の穴 開発室
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴 開発室
 
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ虎の穴 開発室
 
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)虎の穴 開発室
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechconYosaku Toyama
 
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Akito Tsukahara
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!デベロッパーネットワーク
 
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016Takahiko Wada
 

What's hot (20)

Deno の node 互換モードと ソケット
Deno の node 互換モードと ソケットDeno の node 互換モードと ソケット
Deno の node 互換モードと ソケット
 
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
【虎の穴ラボLT】非エンジニアにGASを教えた話(とらラボTech conference)
 
仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話仕事部屋の温度管理をLambdaで実施した話
仕事部屋の温度管理をLambdaで実施した話
 
サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編サーバサイドKotlinへの入門 Ktor編
サーバサイドKotlinへの入門 Ktor編
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
 
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディングオタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
オタクエンジニアを熱くさせる!モチベーションをあげるチームビルディング
 
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
【とらラボLT】アニメ視聴状況を管理するWebページを作ってみた
 
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
0から1へ、1からその先の未来へ!とらのあなラボのエンジニア採用
 
Tech day#2 オープニングトーク
Tech day#2 オープニングトークTech day#2 オープニングトーク
Tech day#2 オープニングトーク
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
 
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ
【LT「超」募集中!】リモートワークTips 超LT会 - vol.3 スタンディングデスクと、 雑談のススメ
 
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
[X-Tech] アニメ・漫画 企業でITを活用してオタク業界の未来を変える取り組み (Anitech)
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
 
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
 
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
 
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
ボトムアップアプローチでのVRサービス立ち上げ / DeNA TechCon 2016
 

Similar to 【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる

Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します虎の穴 開発室
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –虎の穴 開発室
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る虎の穴 開発室
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform CloudWataru Unno
 
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現CData Software Japan
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムGo Sueyoshi (a.k.a sue445)
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜虎の穴 開発室
 
マルチクラウドDWH(Snowflake)のすすめ
マルチクラウドDWH(Snowflake)のすすめマルチクラウドDWH(Snowflake)のすすめ
マルチクラウドDWH(Snowflake)のすすめYuuta Hishinuma
 
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)DeNA Games Tokyo
 
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウFantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ虎の穴 開発室
 
DeNA の Slack 導入と活用の事例紹介
DeNA の Slack 導入と活用の事例紹介DeNA の Slack 導入と活用の事例紹介
DeNA の Slack 導入と活用の事例紹介DeNA
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
Amplify Studioを使ってみた
Amplify Studioを使ってみたAmplify Studioを使ってみた
Amplify Studioを使ってみた虎の穴 開発室
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏Daisuke Ikeda
 

Similar to 【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる (20)

Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
 
20180319 ccon sync kintone
20180319 ccon sync kintone20180319 ccon sync kintone
20180319 ccon sync kintone
 
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
 
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜 俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
俺が好きなのはJavaだけどJavaじゃない 〜虎の穴でのJava活用について〜
 
マルチクラウドDWH(Snowflake)のすすめ
マルチクラウドDWH(Snowflake)のすすめマルチクラウドDWH(Snowflake)のすすめ
マルチクラウドDWH(Snowflake)のすすめ
 
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)
ゲーム運営の上流工程 -領域を閉じないエンジニア-(DeNA Games Tokyo・岡村謙)
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウFantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ
 
DeNA の Slack 導入と活用の事例紹介
DeNA の Slack 導入と活用の事例紹介DeNA の Slack 導入と活用の事例紹介
DeNA の Slack 導入と活用の事例紹介
 
2018/1/30 Django勉強会
2018/1/30 Django勉強会2018/1/30 Django勉強会
2018/1/30 Django勉強会
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
Amplify Studioを使ってみた
Amplify Studioを使ってみたAmplify Studioを使ってみた
Amplify Studioを使ってみた
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
 

More from 虎の穴 開発室

Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴 開発室
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf虎の穴 開発室
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明虎の穴 開発室
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと虎の穴 開発室
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説虎の穴 開発室
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!虎の穴 開発室
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴 開発室
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き虎の穴 開発室
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴 開発室
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI虎の穴 開発室
 
Deno を aws fargate で動かす
Deno を aws fargate で動かすDeno を aws fargate で動かす
Deno を aws fargate で動かす虎の穴 開発室
 
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話虎の穴 開発室
 
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しましたワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました虎の穴 開発室
 
はじめてのわーけーしょん
はじめてのわーけーしょんはじめてのわーけーしょん
はじめてのわーけーしょん虎の穴 開発室
 
社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション虎の穴 開発室
 

More from 虎の穴 開発室 (18)

FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
 
GitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼうGitHub APIとfreshで遊ぼう
GitHub APIとfreshで遊ぼう
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
 
Deno を aws fargate で動かす
Deno を aws fargate で動かすDeno を aws fargate で動かす
Deno を aws fargate で動かす
 
【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話【コードレビューLT資料】コード規約の策定会を実施した話
【コードレビューLT資料】コード規約の策定会を実施した話
 
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しましたワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
ワーケーションを 体験してみて〜富山 ワーケーションモニターツアーに参加しました
 
はじめてのわーけーしょん
はじめてのわーけーしょんはじめてのわーけーしょん
はじめてのわーけーしょん
 
社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション
 

【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる

  • 1. Copyright 2021 Toranoana Inc. とりあえずDenoを CloudRunで動かしてみる 植竹 惇 虎の穴ラボ株式会社 1
  • 2. Copyright 2021 Toranoana Inc. 目次
 2 ● 自己紹介
  
 ● 何をするのか
 
 ● 実際にやってみた
 
 ● 解説
 
 ● まとめ

  • 3. Copyright  (C) 2020 Toranoana Inc. All Rights Reserved. 自己紹介 植竹惇(ウエタケ ジュン) ‣ 2018/08 入社のWebエンジニア ‣ 新規事業系 開発リーダー ‣ 前職:エンタメ系アプリ    サーバーサイドエンジニア 入社理由 ‣ 最高のモチベーションを 発揮できる業界で働きたい! 比較的得意なもの ‣ Rails ‣ GCP Deno歴 ‣ 3日程度 いま熱いコンテンツ ‣ バンドリ ‣ 淫獄団地
  • 4. Copyright 2021 Toranoana Inc. Deno初心者なので何から
 手を付けるか……
 4
  • 5. Copyright 2021 Toranoana Inc. とりあえず
 
 実際に使うことを想定し、
 クラウドサービスで動作させたい
 5
  • 6. Copyright 2021 Toranoana Inc. ※CloudRunについては8月のテックカンファレンスでも登壇 
 https://www.slideshare.net/toranoana-lab/fantiagcp-250009922
 6 CloudRunとはGCPにある、 
 サーバーレスのコンテナ化された 
 フルマネージドな
 コンピューティング環境 
 

  • 7. Copyright 2021 Toranoana Inc. やってみた
 7
  • 8. Copyright 2021 Toranoana Inc. 参考にしたサイト
 https://future-architect.github.io/articles/20200612/
 
 
 
 
 
 
 
 
 8 DockerでのHello Worldはできたが… 

  • 9. Copyright 2021 Toranoana Inc. $ docker build -t deno-lt .
 
 $ docker tag deno-lt asia.gcr.io/XXXXXXXX/deno-lt:latest 
 
 $ docker push asia.gcr.io/XXXXXXXX/deno-lt:latest 
 
 $ gcloud beta run deploy deno-lt …..(略) 
 9 ビルドして
 
 タグ付けして
 
 GCPのコンテナ登録して
 
 デプロイする
 これだけで指定ポートにアクセスしたら動くようになっていなくてはいけない。 

  • 10. Copyright 2021 Toranoana Inc. つまりは
 
 docker-conpose抜きで、
 
 サーバーの起動まで実行されている必要がある
 10
  • 11. Copyright 2021 Toranoana Inc. 自分のDocker+CloudRunの理解が半端だったこともあり、だいぶ苦戦。
 
 「これだ」というサンプルはないため、Dockerの基礎的な部分で躓く。
 11
  • 12. Copyright 2021 Toranoana Inc. 最終的に参考にしたサイト
 https://github.com/denoland/deno_docker
 
 
 
 
 
 
 
 
 12
  • 13. Copyright 2021 Toranoana Inc. 13 $ docker build -t deno-lt . $ docker run -it -p 8080:8080 deno-lt server starting on http://localhost:8080/ Ctrl-C to shutdown container 結局のところ、ローカル環境で上記の build+run 直後の
 
 サーバー起動ができればCloudRunで動きます

  • 14. Copyright 2021 Toranoana Inc. FROM denoland/deno:1.14.1 EXPOSE 8080 WORKDIR /app USER deno ADD . . RUN deno cache main.ts CMD ["run", "--allow-net", "--allow-read", "main.ts"] Dockerfile 公式のイメージ
 利用ポート解放
 denoのお作法ネッ ト解放
 denoのお作法
 ファイル読取許可

  • 15. Copyright 2021 Toranoana Inc. import { serve } from "https://deno.land/std@0.113.0/http/server_legacy.ts"; const server = serve({ port: 8080 }); const template = await Deno.readTextFile("app/html/hello.html"); console.log("server starting on http://localhost:8080/nCtrl-C to shutdown container"); for await (const req of server) { req.respond({ body: template }); } main.ts readFileStrではローカル上のhtmlファイルを読んでいます。 
 
 あとはお決まりのようなものなので特筆することもなく…。 

  • 16. Copyright 2021 Toranoana Inc. 
 実際に動く環境を見てみよう 
 16
  • 17. Copyright 2021 Toranoana Inc. 
 次にoak(ミドルウェアフレームワーク)
 を使ったルーティングのAPIも作ってみる
 17
  • 18. Copyright 2021 Toranoana Inc. 利用したサンプルコードのサイト
 https://github.com/oakserver/oak
 
 
 
 
 
 
 
 
 
 18
  • 19. Copyright 2021 Toranoana Inc. 19 import { Application, Router } from "https://deno.land/x/oak/mod.ts"; const samples = new Map<string, any>(); samples.set("1", { id: "1", title: "CloudRun Test Deno", author: "JUNE-JUNE", }); const router = new Router(); router .get("/", (context) => { context.response.body = "Hello world!"; }) .get("/sample", (context) => { context.response.body = Array.from(samples.values()); }) .get("/sample/:id", (context) => { if (context.params && context.params.id && samples.has(context.params.id)) { context.response.body = samples.get(context.params.id); } }); const app = new Application(); app.use(router.routes()); app.use(router.allowedMethods()); await app.listen({ port: 8080 }); main.tsで動かすコード

  • 20. Copyright 2021 Toranoana Inc. 20 await app.listen({ port: 8080 }); サンプルコードをそのまま使えます。
 listenするポートを、CloudRunに合わせるのだけ忘れないように。

  • 21. Copyright 2021 Toranoana Inc. 
 実際に動く環境を見てみよう 
 21
  • 22. Copyright 2021 Toranoana Inc. 
 まとめ
 
 ・とりあえず超簡易的に実用できるような検証をした
 
 ・どちらかといえばDockerとCloudRunの勉強になりました
 
 ・次はデータベースへの接続までCloudRunで試したい
 22