Save 37% off PRO during our Black Friday Sale! »

Go x AWSによるシンプルなサーバーレス実装

Afbe710f9ab725e2f404fd4e79c61c65?s=47 yukpiz
March 27, 2019

Go x AWSによるシンプルなサーバーレス実装

シューマイGo編での登壇資料です。
https://shuuu-mai.connpass.com/event/122861/

Afbe710f9ab725e2f404fd4e79c61c65?s=128

yukpiz

March 27, 2019
Tweet

Transcript

  1. Go x AWSによる シンプルなサーバーレス実装 Written by @yukpiz Mar 27, 2019

    #shuuumai #golang
  2. Who?

  3. Who? Yuuki Zayasu(@yukpiz) リディッシュ株式会社 テックリード

  4. Who? Yuuki Zayasu(@yukpiz) リディッシュ株式会社 テックリード #golang #aws

  5. Who? Yuuki Zayasu(@yukpiz) リディッシュ株式会社 テックリード #golang #aws #engineers_lt(エンジニアの登壇を応援する会)

  6. Who? Yuuki Zayasu(@yukpiz) リディッシュ株式会社 テックリード #golang #aws #engineers_lt(エンジニアの登壇を応援する会) 釣り スノボ

    小型船舶操縦士1級
  7. Who? Yuuki Zayasu(@yukpiz) リディッシュ株式会社 テックリード #golang #aws #engineers_lt(エンジニアの登壇を応援する会) 釣り スノボ

    小型船舶操縦士1級 第二種電気工事士 生コン打設 養鶏 野菜栽培
  8. Who? Please follow me! @yukpiz https://labo.yukpiz.me

  9. Go言語への入り口

  10. Go言語への入り口 Go言語 触ったことありますか?

  11. Go言語への入り口

  12. Go言語への入り口 Go言語に興味を持っている、もしくは普段使っている皆さんに 少しでも知らなかった事を知って欲しい

  13. Go言語への入り口 Go言語に興味を持っている、もしくは普段使っている皆さんに 少しでも知らなかった事を知って欲しい AWSと簡単に組み合わせて 様々な使い方ができる事を知ってほしい

  14. Go言語への入り口 Go言語に興味を持っている、もしくは普段使っている皆さんに 少しでも知らなかった事を知って欲しい AWSと簡単に組み合わせて 様々な使い方ができる事を知ってほしい 是非、持ち帰って自分でGo言語を触ってみるキッカケにして欲しい

  15. Go言語への入り口

  16. Go言語への入り口 コマンドラインツールを作る(urfave/cli等)

  17. Go言語への入り口 コマンドラインツールを作る(urfave/cli等) A Tour of Goをやる(https://go-tour-jp.appspot.com/)

  18. Go言語への入り口 コマンドラインツールを作る(urfave/cli等) A Tour of Goをやる(https://go-tour-jp.appspot.com/) Webフレームワークを使ってWebサイトを作る(gin, echo等)

  19. Go言語への入り口 コマンドラインツールを作る(urfave/cli等) A Tour of Goをやる(https://go-tour-jp.appspot.com/) Webフレームワークを使ってWebサイトを作る(gin, echo等) AWSを組み合わせてサービスを作ってみる(New!)

  20. Go言語への入り口 コマンドラインツールを作る(urfave/cli等) A Tour of Goをやる(https://go-tour-jp.appspot.com/) Webフレームワークを使ってWebサイトを作る(gin, echo等) AWSを組み合わせてサービスを作ってみる(New!) DynamoDB,

    Lambda, SQS, API Gateway, ECS/EKS, EC2, etc...
  21. Go言語への入り口 AWS Lambda

  22. Go言語への入り口 機能を実装してクラウド上で実行可能(FaaS)

  23. Go言語への入り口 機能を実装してクラウド上で実行可能(FaaS) Go言語(1.x Runtime)が使える

  24. Go言語への入り口 機能を実装してクラウド上で実行可能(FaaS) Go言語(1.x Runtime)が使える 様々なAWSの各種サービスと連携が可能

  25. Go言語への入り口 機能を実装してクラウド上で実行可能(FaaS) Go言語(1.x Runtime)が使える 様々なAWSの各種サービスと連携が可能 API Gateway AWS IoT Alexa

    Skills Kit Alexa Smart Home Application Load Balancer CloudWatch Events CloudWatch Logs CodeCommit Cognito Sync Trigger DynamoDB Kinesis S3 SNS SQS
  26. Go言語への入り口 機能を実装してクラウド上で実行可能(FaaS) Go言語(1.x Runtime)が使える 様々なAWSの各種サービスと連携が可能 API Gateway AWS IoT Alexa

    Skills Kit Alexa Smart Home Application Load Balancer CloudWatch Events CloudWatch Logs CodeCommit Cognito Sync Trigger DynamoDB Kinesis S3 SNS SQS + Invoke Lambda
  27. 活用事例

  28. 活用事例 サービス内メッセージの一斉配信サービス

  29. 活用事例 サービス内メッセージの一斉配信サービス レストランに関連するデータの収集サービス

  30. 活用事例 サービス内メッセージの一斉配信サービス レストランに関連するデータの収集サービス SendGridを使ったメール配信サービス ...etc

  31. 活用事例

  32. 活用事例 配信予定時刻に処理を開始

  33. 活用事例 配信予定時刻に処理を開始 SQSで一定速度でLambdaに排出

  34. 活用事例 配信予定時刻に処理を開始 SQSで一定速度でLambdaに排出 配信処理を担うLambda

  35. 活用事例 配信予定時刻に処理を開始 SQSで一定速度でLambdaに排出 配信処理を担うLambda ユーザーの端末へ

  36. 活用事例 配信予定時刻に処理を開始 SQSで一定速度でLambdaに排出 配信処理を担うLambda ユーザーの端末へ 処理に失敗した配信レコード

  37. 活用事例 各種サービスの制限について

  38. 活用事例 各種サービスの制限について サービスごとに制限項目がある Lambdaなら実行時間や同時実行数など 他のサービスと連携させる場合、その考慮も必要

  39. 活用事例 各種サービスの制限について サービスごとに制限項目がある Lambdaなら実行時間や同時実行数など 他のサービスと連携させる場合、その考慮も必要 詳細は各種サービスのドキュメントに記載がある 以下はLambdaの制限事項ドキュメント https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/limits.html

  40. Go × Lambdaへの入り口

  41. Go × Lambdaへの入り口 デプロイツールの選定(Apex, Lamvery, Serverless Framework)

  42. Go × Lambdaへの入り口 デプロイツールの選定(Apex, Lamvery, Serverless Framework) 実装したLambda関数をツールを使ってアップロードする LambdaはApex、それ以外のサービスはterraformに一元化

  43. Go × Lambdaへの入り口 デプロイツールの選定(Apex, Lamvery, Serverless Framework) 実装したLambda関数をツールを使ってアップロードする LambdaはApex、それ以外のサービスはterraformに一元化 関数の実装

  44. Go × Lambdaへの入り口

  45. Go × Lambdaへの入り口 必要なのは2パッケージ

  46. Go × Lambdaへの入り口 必要なのは2パッケージ Lambda実行時に呼び出される関数

  47. Go × Lambdaへの入り口 必要なのは2パッケージ Lambda実行時に呼び出される関数 発火元から受け取るイベント引数

  48. Go × Lambdaへの入り口 必要なのは2パッケージ Lambda実行時に呼び出される関数 発火元から受け取るイベント引数 処理結果を返す errorインターフェース型

  49. Go × Lambdaへの入り口 デプロイツールの選定(Apex, Lamvery, Serverless Framework) 実装したLambda関数をツールを使ってアップロードする LambdaはApex、それ以外のサービスはterraformに一元化 関数の実装

    Handlerの引数で受け取れるイベントはgodocで確認できる https://godoc.org/github.com/aws/aws-lambda-go/events
  50. Go × Lambdaへの入り口 デプロイツールの選定(Apex, Lamvery, Serverless Framework) 実装したLambda関数をツールを使ってアップロードする LambdaはApex、それ以外のサービスはterraformに一元化 関数の実装

    Handlerの引数で受け取れるイベントはgodocで確認できる https://godoc.org/github.com/aws/aws-lambda-go/events AWSの各種サービスとの連携
  51. Go × Lambdaへの入り口 Lambdaの発火元

  52. その他の用途

  53. その他の用途 BOTを作ってみよう!

  54. その他の用途 BOTを作ってみよう! Slack BOTやTwitter BOTで遊んでみる API Gatewayと連携して、Webhook駆動のBOT CloudWatchと連携して、定期実行するBOT

  55. その他の用途 BOTを作ってみよう! Slack BOTやTwitter BOTで遊んでみる API Gatewayと連携して、Webhook駆動のBOT Cloudwatchと連携して、定期実行するBOT

  56. 最後に

  57. 最後に Go言語入門の選択肢にAWS Lambdaを! 連携できるサービスを組み合わせて、簡単に作ろう

  58. 最後に Go言語入門の選択肢にAWS Lambdaを! 連携できるサービスを組み合わせて、簡単に作ろう 仕事じゃなくても、まずはプライベートの簡単なツールから! こういうのも作れそうとか面白いアイデア、是非教えてください

  59. Written by @yukpiz Mar 27, 2019 #shuuumai #golang Slides Policy

    The Go gopher was designed by Renée French. #f3f3f3 #434343 #da6272