$30 off During Our Annual Pro Sale. View Details »

Serverless

 Serverless

\Serverless/

さっちゃん

August 31, 2016
Tweet

More Decks by さっちゃん

Other Decks in Programming

Transcript

  1. Serverless

    View Slide

  2. Serverless
    λ

    View Slide

  3. View Slide

  4. .。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

    View Slide

  5. Serverless

    View Slide

  6. FaaS

    View Slide

  7. FaaS
    (Function as a Service)

    View Slide

  8. FaaS
    (函數 as a Service)

    View Slide

  9. 例へば AWS Lambda
    Google Cloud Functions
    Azure Functions
    IBM OpenWhisk 等

    View Slide

  10. 例へば AWS Lambda
    Google Cloud Functions
    Azure Functions
    IBM OpenWhisk 等

    View Slide

  11. Serverless
    PaaS、IaaS、BaaSとは何が違ふの?

    View Slide

  12. Serverless
    Serverless Architectures
    http://martinfowler.com/articles/serverless.html

    View Slide

  13. Serverless
    FaaSはfull managedでstateless

    View Slide

  14. Serverless
    If your PaaS can efficiently start instances in 20ms that run for
    half a second, then call it serverless.
    https://twitter.com/adrianco/status/736553530689998848

    View Slide

  15. Serverless
    0.02秒でインスタンスを起動し0.5秒だけ動作するなら、その
    PaaSはserverless。

    View Slide

  16. Serverless
    (Erlangっぽいよね)

    View Slide

  17. AWS Lambda
    対応⾔語は Python 2
    Node.js
    Java 8

    View Slide

  18. AWS Lambda
    λを呼び出せるイベントは
    LambdaのHTTP API、AWS IoT、API Gateway、CloudWatch
    Schedule、CloudWatch Logs、CognitoのSync、DynamoDBの
    更新、Kinesis、S3の更新AWS SNS

    View Slide

  19. AWS Lambda
    λから使へるリソースは
    AWSの全部、
    AWS外のAPIで呼べるリソースも何でも

    View Slide

  20. AWS Lambda
    バージョン管理 → 函數バージョンにエイリアスを付ける
    Log → CloudWatchに吐く
    監視 → CloudWatchで
    API Gatewayでの認證 → 認證⽤のLambdaを呼ぶ

    View Slide

  21. AWS Lambda
    フレームワークには
    Serverless
    Apex 等

    View Slide

  22. AWS Lambda
    フレームワークには
    Serverless
    Apex 等

    View Slide

  23. Serverless Framework
    https://serverless.com/

    View Slide

  24. Serverless Framework
    Nearly 1.0
    (1.0.0-beta2)

    View Slide

  25. Serverless Framework
    10,316☆stars on GitHub

    View Slide

  26. Serverless Framework
    pluggable

    View Slide

  27. Serverless Framework
    プロジェクト = 函數とイベントとリソースの集まり

    View Slide

  28. Serverless Framework
    AWS Lambda
    Google Cloud Functions
    Azure Functions
    IBM OpenWhisk に対応してゐる

    View Slide

  29. λとAPI Gatewayとの連携

    View Slide

  30. λとAPI Gatewayとの連携
    Terraformでやる場合

    View Slide

  31. λとAPI Gatewayとの連携
    API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんで
    すよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508
    29,238⽂字
    Terraformのmoduleを書く - c4se記:さっちゃんですよ☆
    http://c4se.hatenablog.com/entry/2016/08/09/152619
    11,198⽂字

    View Slide

  32. λとAPI Gatewayとの連携

    View Slide

  33. λとAPI Gatewayとの連携

    View Slide

  34. λとAPI Gatewayとの連携

    View Slide

  35. λとAPI Gatewayとの連携
    コードのデプロイ⼿順

    View Slide

  36. λとAPI Gatewayとの連携
    最初のデプロイ:
    1. aws_lambda_alias.prodのfunction_versionを "$LATEST" にしておく。Lambda函數作成前で、publish_versionも
    してゐずバージョンが未だ無い爲。
    2. LambdaとAPI Gatewayをデプロイ。
    3. API Gatewayをstagingステージにデプロイ。
    4. stagingで検証。
    5. Lambdaをpublish_versionして、Versionをメモする。
    6. aws_lambda_alias.prodのfunction_versionを 上でメモしたバージョンに書き換へる。
    7. Lambdaをデプロイ。
    8. API Gatewayをprodステージにデプロイ。
    API Gatewayの設定を更新した場合:
    1. API Gatewayをデプロイ。
    2. API Gatewayをstagingステージにデプロイ。
    3. stagingで検証。
    4. API Gatewayをprodステージにデプロイ。
    Lambdaの設定やコードを変更した場合:
    1. Lambdaをデプロイ。
    2. stagingで検証。
    3. Lambdaをpublish_versionして、Versionをメモする。
    4. aws_lambda_alias.prodのfunction_versionを 上でメモしたバージョンに書き換へる。
    5. Lambdaをデプロイ。

    View Slide

  37. λとAPI Gatewayとの連携

    View Slide

  38. λとAPI Gatewayとの連携

    View Slide

  39. λとAPI Gatewayとの連携

    View Slide

  40. λとAPI Gatewayとの連携
    ⼀⽅、Serverlessでは
    s-function.json 2628⽂字

    View Slide

  41. λとAPI Gatewayとの連携
    `sls deploy`

    View Slide

  42. λとAPI Gatewayとの連携
    やりましたね!

    View Slide

  43. Serverless

    View Slide

  44. Serverless
    0.02秒でインスタンスを起動し0.5秒だけ動作するなら、その
    PaaSはserverless。

    View Slide