GDG DevFest 2018 Tokyo セッションメモ

## 概要

- [公式サイト](https://tokyo2018.gdgjapan.org/)
- [Connpass](https://gdg-tokyo.connpass.com/event/95307/)
- [当日スライド一覧](https://gdg-tokyo.connpass.com/event/95307/presentation/)
- ハッシュタグ: #DevFest18

セッション用に 6 部屋と、Codelabs 用の部屋が用意されていました。

![セッション一覧](https://landen.imgix.net/ahhjw08i4b0e/assets/bdab0s7s.png)

以下自分が見たやつだけですが、各セッションのメモ。

## GCP Compute 概要と選定

> GCPには様々なサービスがあり、色々な形態のサーバ、サービスをチョイスすることができます。 本セッションではGoogle App Engine, Google Cloud Functions, Google Kubernetes Engine, Google Compute Engineの概要を説明し、どういうときにどのオプションを選ぶとメリットがでかいかを解説します。 【セッションレベル：初級】 【登壇者：vvakame】

- 資料: https://speakerdeck.com/vvakame/devfest-tokyo-2018
- Google App Engine (GAE)
  - メリット
    - Web アプリ構築に便利
    - 管理いらずメンテいらず手間いらず
    - 自動でスケール
    - 高速なスピンアップ（起動）
    - 専用マネージドサービスが有る
  - デメリット
    - 固定 IP アドレス使えない
      - GCE に Proxy 立てたりして対処
    - 好きなツールをインストールできない
      - Java, Python, Node.js で緩和 (2nd gen)
  - 2 種類ある
    - Standard Environment
      - 自由度は少ない SpinUp 高速
    - Flexible Environment
      - 裏で GCE が立ち上がる SpinUp 遅い
- Kubernetes
  - メリット
    - Kubernetes 関連システム一式
    - コンテナオーケストレーション
    - Load Balancer など GCP フル活用
    - GKE On-prem の登場
  - デメリット
    - まだ OSS として発展途上
    - 運用チームがいないと辛い
      - 要求される勉強量が単純に多い
      - Spinnaker, Envoy, Istio, etc...
- Google Compute Engine
  - メリット
    - 素の Virtual Machine 相当
    - 自分でなんもかんも管理する必要
  - デメリット
    - 自分で管理しないといけないときも
      - OS のパッチ管理とかも...
    - 基本何らかの抽象化があったほうが
- Cloud Functions
  - メリット
    - イベント処理をさばくのが主な用途
    - アプリリクエストの処理はちょっと微妙
    - 単機能・管理不要
    - Node.js v8, Python 3.7 対応
  - デメリット
    - 単一関数がデプロイ単位
    - アプリの構成には向かない
    - 関数有りすぎ問題
    - ていうか App Engine でよくない？
- Firebase Hosting
  - メリット
    - ファイルをホストできる
    - redirect とかの設定ちょろちょろ書ける
    - Web frontend のヒトはこれで満足では？

## GCP のデータベース・ストレージ

> GCP には存在理由が異なる複数のデータを保存するサービスがあります。このセッションではそれぞれのサービスの存在する意味から説明することで、サービスの選択をできるようにします。 【セッションレベル：中級】 【登壇者：apstndb】

- 資料: https://docs.google.com/presentation/d/1VejBVSTlX3MCvvhv8dSuKxi4eB4jueh_uizMHd2Prcg/mobilepresent?slide=id.p
- ストレージオプション
  - https://cloud.google.com/storage-options/
- どう違うのか
  - 機能がちがう
  - データモデル
  - 特性
    - 冗長性
    - スケーラビリティ

## Container

> Google Kubernetes Engineを中心に取り巻く現在の環境がどのようになっているのについて話します。 【セッションレベル：中級】 【登壇者：Kuma Arakawa】

- 注意点
  - 一度コンテナを作ったらそのコンテナの中をいじらない
    - Immutable
  - コンテナの中にデータを保存しない
    - Stateless
  - コンテナの管理・運用をちゃんとしないといけない
- 主なコンテナ運用を支える製品
  - Kubernetes Engine
    - Kubernetes を自動的に管理運用してくれるサービス
    - Kubernetes の中身は管理運用してくれない 
  - Kubernetes
    - コンテナのオーケストレーションツール
    - https://kubernetes.io/
  - Stackdriver
    - Logging
  - Container Registry
    - Google が管理運用してくれるプライベートなコンテナのリポジトリ（DockerHub みたいな）
  - Cloud Build
    - Google が管理運用しているコンテナのビルドと、ワークフローの指定など

## GCPでつくるデータ処理パイプライン

> Cloud Dataflowを中心としたGCPでのデータ処理パイプラインの作り方を紹介します。 【セッションレベル：初級】 【登壇者：永井 洋一】

- 資料: https://docs.google.com/presentation/d/1Yzya3BfJjEuY0og-gTtWQaPZE_lkDTQcw6EsEmiX1ok/mobilepresent?slide=id.p
- Agenda
  - バッチとストリーム処理の概要と問題
  - Apache beam と Cloud Dataflow の概要と使い方
- バッチ処理
  - 処理対象となるデータの範囲が有限
- ストリーム処理
  - 処理対象となるデータの範囲が（時間軸上）無限
- Dataflow
  - フルマネージド
    - サーバー管理不要
  - オートスケール
    - 負荷に応じて自動でスケール
  - GCP 各種ストレージと連携容易
- Apache beam のプログラミングモデル
  - 抽象データ（PCollection）を処理（PTransform）でつないでグラフを作る
- GCP 連携
  - Template を GCS に登録して、パラメータを渡して起動できる
- パイプライン例
  - https://cloud.google.com/natural-language/

## Codelabs

[Codelabs](https://tokyo2018.gdgjapan.org/codelabs) にはチューターがついており、随時質問しながら、自分の触りたい技術を触れる形式。 GCP の Codelabs をはじめてやったが、テンポラリーのアカウントとプロジェクトが作成されて、料金を気にせずに GCP を触れるのが良かった。

満席の部屋などがある中で、こういったエリアが用意されているのは良いですね。

## まとめ、その他

たくさんセッション有りましたが、自分が参加したセッションのメモでした。
資料は 1 週間後に公開されるそうです。

以上。