Successfully reported this slideshow.
Your SlideShare is downloading. ×

Deno を aws fargate で動かす

Ad

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
toranoana@LT #27 × Serverless

虎の穴ラボ

奥谷 一陽

Deno を AWS Fargate で動...

Ad

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
自己紹介

奥谷 一陽



所属:虎の穴ラボ株式会社

担当:とらコインSHOPなど新規事業系の開発

興味:Deno、JavaS...

Ad

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
アジェンダ

- Deno を AWS Fargate で動かそう

- 注意事項




Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 23 Ad
1 of 23 Ad
Advertisement

More Related Content

Slideshows for you (19)

More from 虎の穴 開発室 (20)

Advertisement

Deno を aws fargate で動かす

  1. 1. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. toranoana@LT #27 × Serverless
 虎の穴ラボ
 奥谷 一陽
 Deno を AWS Fargate で動かす 
 

  2. 2. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 自己紹介
 奥谷 一陽
 
 所属:虎の穴ラボ株式会社
 担当:とらコインSHOPなど新規事業系の開発
 興味:Deno、JavaScript(TypeScript) 
 
 おすすめコンテンツ:
   『じゃない方の彼女』
   『機界戦隊ゼンカイジャー』
 
 Twitter:@okutann88

  3. 3. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. アジェンダ
 - Deno を AWS Fargate で動かそう
 - 注意事項
 

  4. 4. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno とは
 - JavaScript のランタイム
 - デフォルトで、TypeScriptを扱える
 - Node.js の作者が開発に関わる
 - Rustで実装
 - シンプル、モダン、安全なランタイム
 
 参考:https://deno.land/
 

  5. 5. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. そもそも Deno には、
 サーバレス な Deno Deploy があるじゃないか?
 
 

  6. 6. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. そもそも Deno には、
 サーバレス な Deno Deploy があるじゃないか?
 =>そのとおりです。
   ただ、アプリの実行環境ではありますが、
   現在 DBや、キャッシュなどリソースを
   提供してくれません
 

  7. 7. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 他にも PaaSあるが、専用のライブラリやCLIで
 プラットフォームで拘束されたくないな。。 
 

  8. 8. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 他にも PaaSあるが、専用のライブラリやCLIで
 プラットフォームで拘束されたくないな。。
 => AWSでインフラを用意したい!
 

  9. 9. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. というわけで、
 ためしに Deno を AWS Fargate で動かそう

  10. 10. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. AWS Fargate とは
 - AWS の提供するコンテナ向けサーバレスコンピューティン グ
 - 従量課金
 - ウェブアプリ、APIやマイクロサービスなど
 - 簡単にスケーリングできる
 

  11. 11. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. AWS ECR
 - AWS の提供するコンテナイメージレジストリ
 AWS ECS
 - AWSの提供するコンテナ実行環境

  12. 12. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 とりあえずコンテナイメージの作成から
 
 
 
 
 
 
 
 参考:https://github.com/denoland/deno_docker
 # Dockerfile
 FROM denoland/deno:1.15.3
 
 EXPOSE 80
 
 WORKDIR /app
 
 ADD . .
 
 RUN deno cache main.ts
 
 CMD ["run", "--allow-net", "main.ts"]
 
 コンテナ起動したら、 
 アプリケーションが動くようになっていることが 必要

  13. 13. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 ソースコード
 
 
 
 
 
 
 
 シンプルに「Hello Deno!!」を返すだけです。
 // main.ts
 import { listenAndServe } from "https://deno.land/std@0.113.0/http/server.ts" ;
 
 console.log("http://localhost:80/");
 listenAndServe(":80", (req) => new Response("Hello Deno!!"));
 
 確認時点でのソースです。 
 最近推奨ライブラリが変更が有ったので注意! 

  14. 14. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 後はデプロイ
 - AWS ECR にコンテナイメージを登録
 - AWS ECS にタスク、クラスター、サービスを作成
 
 =>これで、AWS Fargate でDeno が動きます。
   が、毎回行うにはあまりに面倒で定形作業です。
   「自動化」したい!

  15. 15. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 AWS Fargate x Github Actions でやる
 - AWS ECR 認証
 - AWS ECS のタスク・サービス更新 
 
 これらは AWS が Github Actions Marketplace 用の
 アクションを用意/公開してくれています。
 https://github.com/aws-actions/amazon-ecr-login
 https://github.com/aws-actions/amazon-ecs-deploy-task-definition
 https://github.com/aws-actions/amazon-ecs-render-task-definition

  16. 16. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 github リポジトリに yamlファイルを作成します。
 .github/workflows/deploy.yml 
 name: deno-app on: push: tags: - deploy-* deploy-hogehoge のタグがpushされたら実行します。 
 という設定です。

  17. 17. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 jobs: build-push: runs-on: ubuntu-18.04 timeout-minutes: 30 steps: - uses: actions/checkout@v1 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ap-northeast-1 - name: Login to AWS ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1
 ソースのチェックアウト 
 IAMユーザーを認証 
 ECR にログイン

  18. 18. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 - name: Build, tag, and push image to Amazon ECR id: build-image env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPO_NAME }} run: | IMAGE_TAG=$(echo ${{ github.ref }} | sed -e "s#refs/tags/##g") docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" コンテナをビルドしてpush 

  19. 19. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
   - name: Fill in the new image ID in the Amazon ECS task definition id: task-def uses: aws-actions/amazon-ecs-render-task-definition@v1 with: task-definition: task-definition.json container-name: nginx-container image: ${{ steps.build-image.outputs.image }} - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: ${{ steps.task-def.outputs.task-definition }} service: cluster-for-fargate-service cluster: cluster-for-fargate wait-for-service-stability: true タスク設定を 変更部分+テンプレートのJSONで作成 
 タスク設定をクラスターに割り当て 

  20. 20. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 これらを用意して pushすると、
 数分待つとアプリケーションが更新が完了します。
 
 Github Actions と組み合わせて
 - テストを通さないとデプロイできなくする
 - git tag を参照してデプロイ先を切り替える
 
 なんてこともできます。

  21. 21. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう まとめ
 「〇〇〇〇のサーバレスの動作環境といえば? 」
 =>Denoを問わず、
   コンテナベースの実行環境なら制約を突破できる
 
 「専用CLIがないと、デプロイが面倒なのでは?」
 =>Github Actionsとの連携などで自動化すれば、
   入り口のハードルはやや高いが、かなり解消できる
 

  22. 22. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 注意事項 - 実際にやってみて - 
 - AWS Fargate が、
 時間×スペックの従量課金なので、
 気がつくと思った以上に、課金されていたりします。
 - ECRの無料枠を超過すると課金発生します。
 
   料金関係は特に注意!

  23. 23. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. ありがとうございました


×