Serverless Meetup Japan Virtual #3 にオンラインで参加したので、その参加レポート・メモです。

Twitter のハッシュタグは #serverlessjp です。

前回の様子はこちら。

目次

タイムテーブル

Timeline Title Speaker
20:45-21:00 Social
21:00-21:05 Opening Talk 吉田真吾 さん
21:05-21:25 GCP の Network Endpoint Groups の新しい機能 「Serverless NEG」を試してみる 五十嵐透 さん
21:25-21:35 Meetup Zoom参加メンバー
21:35-21:40 Forkwellさん告知!! 永田りさ さん
21:40-22:00 AWS CDK/AppSync/Athena/S3 select あたり 和田祐介 さん
22:00-22:30 Meetup Zoom参加メンバー
22:30- Closing

セッションレポート

GCP の Network Endpoint Groups の新しい機能 「Serverless NEG」を試してみる

Network Endpoint Groups とは

  • GCP のリソース
  • エンドポイントまたはサービスのグループを指定する構成オブジェクト
  • GCP の一部のロードバランサのバックエンド (アプリケーションの手前) として使用する
  • NEG と略される
  • 公式ドキュメント : ネットワーク エンドポイント グループの概要  |  負荷分散  |  Google Cloud
  • NEG は Compute Engine リソース (Network services リソースではない)
  • NEG の種類
    • Zonal (GA)
      • VM インスタンスや GKE 上の Pod を指定
    • Internet (GA)
      • Google Cloud の外部にあるサービスを指定
    • Serverless (Beta)

Serverless NEG とは

  • NEG の新しい機能
    • 2020/07/08 に Beta 版がリリース
  • GCP のサーバレスサービスをロードバランサのバックエンドサービスとして指定できる
  • ロードバランサにつけられる機能の恩恵を受けられる
    • Cloud Armor (WAF)
    • Cloud CDN
    • これらをマネージドなサービスとして使える

Serverless NEG を実際に動かしてみる

  • Fowerding rules -> Target proxies -> Backend serviceies
  • Serverless NEG は現時点で Beta なので今ソースでは見れない (作れない)
    • CLI から操作する

まとめ

  • Serverless NEG によって GCP でサーバレスなシステムを作りやすくなった

Q&A

  • Q. AWS だと ALB のターゲットグループという感じで、ターゲットに Lambda を置いたり、同時に EC2 を置いたりもできたが、 NEG でもできる?
    • A. できる。Serverless NEG と Zonal NEG を一緒に使えば実現できる。
  • Q. いま運用しているシステムで使えるところはある?
    • A. 現在は Zonal を主に使っている。が、 Cloud Run と App Engine を同じドメインで使うことはないので…。ただユースケースとしては色々考えられそう。オンプレからのリフト&シフトするときなどにも使えそう。
  • Q. パスで重み付けは可能か?
    • A. 現時点ではわからない。が、必要そうな機能なので今後に期待。
  • その他
    • Cloud Armor がつけられることにより IP 制限が可能になった。
    • Cloud Run は作成した時点でエンドポイントが作られるので、それを NEG 経由のアクセスのみに制限できればいい

AWS CDK/AppSync/Athena/S3 select あたり

  • サーバーレスで ETL
    • AWS Glue (なんか変換する人?)
    • Amazon Athena (S3 のデータに対してクエリ発行してくれる人?)
    • 名前は知っているが、アプリケーションに組み込むイメージがあまり沸かない

AWS Glue

  • 構成要素
    • データカタログ (Table)
      • スキーマの定義
      • データの実体は S3, DynamoDB などに持たせて、 Glue はスキーマの定義のみ持つ
      • この Table に対して Athena などからクエリ発行
    • サーバレス ETL (Job)
      • ETL (データ変換処理) の本体
      • スクリプトは Python Shell または Spark
      • 大規模向けのジョブ
      • 小規模だと、起動時間と課金額がネック
        • 最低実行時間が 10 分
        • ざっくり、最低でも数万円/月
        • 代わりに Step Functions + Lambda で構築するという選択肢 (肌感で 5,000円/月 くらい)
    • オーケストレーショ (Workflow)
      • クローラとジョブを組み合わせて一連の処理を定義
      • Step Functions と同じような機能
  • 構成要素は CloudFormation のリソース名称を確認するとわかりやすい
  • Athena との関係

Amazon Athena

  • データソースを S3 として、初期状態で Glue のデータカタログ (Table) と統合されている
  • S3 をデータソースとする Glue のデータカタログにクエリを発行し、結果を S3 にエクスポートする

具体的なユースケース

  • 今回 “ファイル” に焦点を当てた理由

    • 複数のサービスの情報から一つのサービスのバックエンドに見せかける仕組みが今後増えそう
    • いろんなサービスを組み合わせて生活していく
    • 大抵のサービスでは CSV 出力が可能
    • Webhook や EventBridge などいろんな連携方法があるが、ファイルを入力とする連携も残る
  • チケット ID からセッションデータを引き当てる

    • RDB であれば各テーブルに CSV データを入れて、取得時に JOIN
    • サーバレスだと
      • DynamoDB
      • S3 Select
    • ゴール : S3 to S3 の ETL
    • 今回は小規模なので、 Glue Job は使わず、 Step Functions + Lambda で構築

CDK でリソースを作成してみる

  • TypeScript などでコードから CloudFormation テンプレートを生成
  • アプリケーションエンジニアがインフラを書く
  • Athena を使うには、まず Glue Table リソースを作成する

Q&A

  • Q. 今回の方法だと、どれくらいのデータ量までなら?
    • A. 300 MB くらいなら。行数なら 100 万行くらい。
  • Q. ファイル to ファイルの ETL という前提がなければ、最初に考えうる構成は?
    • A. データストアが S3 ではなく DynamoDB になるかなと。
      • Q. その場合だと Glue 等でやりづらくなるポイントは?
        • A. クエリ結果が S3 に出力されるので、もう一度そこから取得する必要が出てくる。
  • Q. CDK に切り替えたきっかけは?
    • A. もともとベータ版で使っていたが、 GA のタイミングで 100 % 切り替えた。(from SAM)
      • Q. みんなで?
        • A. まずは個人で使って、それを横展開。チームで使う場合に教材になるようなものが欲しかったため。
  • その他
    • CloudFormation のリソース名で確認するのは凄く良い
    • S3 ファーストの考え方は凄く良い
    • S3 Select をゴールにするためにアーキテクチャを考えるユーザも多い
      • 圧縮されたファイルに対してクエリ実行できる良さ

まとめ

Serverless Meetup Japan Virtual #3 の参加メモでした。

今回は GCP の話と AWS の話ということで、 Serverless というキーワードで複数のクラウドの話を聞くことができて楽しかったです。

GCP の方はほぼ使用経験がないのですが、 AWS だとこの部分にあてはまるのかなーとかを考えながら聞いているのは面白かったです。 AWS だけでなく他のクラウドについても触ってみると、より AWS の理解が深まるのかなと思いました。ただ、やりたいことが増えていって沼にハマってしまいそうという思いもあります。

和田さんの話の中では、 Glue というサービスの構成要素の話がすごくわかりやすかったです。サービスがどんな機能を持っていて、どのようなリソースで構成されているかを知るためには CloudFormation のリソース名を確認してみるというのも、あーなるほど!と思いました。
CDK に関しては、個人的にも IaC するうえで凄く便利なツールだと思っています。
あと、 S3 Select の話もありましたが、その便利さの恩恵を受けるためにアーキテクチャを設計することもあるという話があり、相当便利な機能なんだろうなと思いました。

今回もサーバレスに関する面白い話を聞けてよかったです!次回も楽しみです。


以上、よっしー (michimani) でした。

Share to ...

0

Follow on Feedly