Slide 1

Slide 1 text

Angular +Elixir 製SPA をGKE で動かす Takuto Yoshimura [email protected]

Slide 2

Slide 2 text

自己紹介 本名 吉村 拓人 カラビナテクノロジー株式会社 社内のあだ名は つちろー 元はJava の金融系SIer 昨年より顧問エンジニアとしてElixir でWeb システ ム開発はじめました

Slide 3

Slide 3 text

顧問エンジニアとは 月額定額で0 からのシステム開発をサポート Web サービス立ち上げのビジネスモデル構築など からお供いたします 数名の担当で複数のお客様のサービスを開発

Slide 4

Slide 4 text

数名とは ぶっちゃけ3名です ※2018 年実績 ・デザイン&フロントエンジニア ・バックエンドエンジニア(つちろー) ・バックエンド-> フロントエンジニア

Slide 5

Slide 5 text

基盤がしんどい そうだGCP にしよう

Slide 6

Slide 6 text

GCP に決めた理由 コンソールのUI が素敵

Slide 7

Slide 7 text

GKE に決めた理由 GAE プログラムの実行環境ホスティング 抽象度高 (ElixirRuntime がWebSocket に未対応) GKE コンテナオーケストレーションのホスティン グ 抽象度中 GCE 仮想サーバーのホスティング 抽象度低

Slide 8

Slide 8 text

結論 今回はGKE で

Slide 9

Slide 9 text

システムの論理構成

Slide 10

Slide 10 text

ソフトウェア/ サービススタック

Slide 11

Slide 11 text

デプロイフロー

Slide 12

Slide 12 text

クライアントポッド構成

Slide 13

Slide 13 text

クライアント構成定義(1/2) apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: client-app name: client-app namespace: default spec: progressDeadlineSeconds: 600 replicas: 2 revisionHistoryLimit: 10 selector: matchLabels: app: client-app strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate ~~

Slide 14

Slide 14 text

クライアント構成定義(2/2) ~~ template: metadata: creationTimestamp: null labels: app: client-app spec: containers: - image: us.gcr.io/sample-deploy-project/client-app:latest command: ["nginx", "-g", "daemon off;"] imagePullPolicy: Always name: client-sha256 resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30

Slide 15

Slide 15 text

サーバーポッド構成

Slide 16

Slide 16 text

サーバー構成定義(1/2) ~~ spec: containers: - image: us.gcr.io/hogehoge-project/app-ex:latest command: ["/bin/sh"] args: ["/opt/app_ex/app_start_prod.sh"] env: - name: "APP_EX_DB_USER" valueFrom: secretKeyRef: name: "app-ex-repo" key: "APP_EX_DB_USER" - name: "APP_EX_DB_PASS" valueFrom: secretKeyRef: name: "app-ex-repo" key: "APP_EX_DB_PASS" imagePullPolicy: Always name: vanking-server-sha256 ~~

Slide 17

Slide 17 text

わかりやすいまとめ

Slide 18

Slide 18 text

ご静聴ありがとうございました。