DMMにおけるサーバー構築の今と未来
Serverless Single Page Apps -DMM CM AWARDS-
@Y_Fujikawa
DMM CM AWRDS について
Serverless を選択した理由
  - Lambdaが盛り上がってきた ** 事例も出てきた
 
  - エンジニアは少数(インフラエンジニアいない)
 
  - キャンペーンのサイトのためなるべくランニングコストを安くする
 
システム構成
  - EC2 ** フロント
 
  - APIGateway ** API全体の管理
 
  - Lambda ** サーバーサイド
 
  - DynamoDB ** フォームの内容を保存
 
  - S3 ** アップロードされた動画のサムネイルが造ファイルの保存
 
  - Swagger ** JSON形式の設定ファイル→Gatewayの設定
 
  - Node.js
 
管理画面
  - WAF ** IP制限
 
  - CloudFront
 
  - Java8 ** 知見があったから ** → やっぱりだめ(立ち上がり遅い)
 
  - Maven
 
なぜEC2を使ったの?
  - User-Agentをもとに、Redirect,Rewrite処理を柔軟にする
 
  - レスポンシブでなければ
 
コスト
  - EC2 = DynamoDB > ELB > その他
 
  - APIGateway、Lambda $4/月使っていない
 
  - 関連する費用は最初の資産だけでは見えない ** →運用して常に改善を繰り返す
 
振り返り
  - なんとか形になった
 
  - サービス提供ができなくなるぐらいのバグを出さずに問題なく運用出来た
 
  - Serverlessの知見を得られた
 
苦労した話
  - JavaとNodeどっち? ** WebはNode.js
 
  - 実装中にAWSのアップデート ** 運用途中でも導入できるように
 
  - 構成管理のフレームワークを使えばもっと楽だった ** もう少しプロトタイプの開発期間があれば導入できた
 
まとめ
  - スモールスタートとして良いシステムだった
 
  - EC2をつかってWebサービスの置き換えになるとは言い難い
 
  - アーキテクチャを選択できる幅が増えた
 
  - Serverlessでできることが増えた
 
DMM picturesを流行りのサーバーレス構成で開発している話
@ayumu_ao
開発中の話
「かなりシンプルな構成でもWebアプリケーションをリリースできる」
DMM pictures
  - アニメレーベル
 
  - レーベルサイトって儲かるの? ** No → そこでServerless ** お金を生まないサービスに対してどれだけ工数を減らせるか
 
なぜサーバーレスなのか?
  - スモールリリースにしたかった
 
  - 可能な限りあらゆるコストが最小になる方法としてサーバーレス ** 開発 ** 運用
 
  - 三ヶ月に一回ぐらいの更新 ** デザイナさんにちょっと頑張ってもらえばいい
 
構成
  - CloudFrontとS3だけでいい説? ** が、PC,SPの表示切替ができなかった ** 両方のHTMLを送ると重い → 許容できない ** → edge location
 
悩み
  - PC/SPの表示切替をどう実現するか
 
  - Lambda Edgeがプレビュー機能だった
 
Edgeを使って困ったところ
  - クエリストリングが使えない(現状は仕様)
 
  - 日本語サイトに書いてあるドキュメントに誤植があった
 
  - user-agentが文字列じゃなくてObjectだった
 
  - Edge自体はバージニアリージョンなのにCloudWatchのログは東京リージョンに出力されてた
 
LamdaだけじゃないAWSのServerless
  - ServerlessといえばLambda
 
  - Lambda以外にも沢山サービスあるよ!
 
Webサービス・コンテンツ配信
  - CloudFront/Lambda@Edge
 
  - Elastic Transcoder
 
Lambda@Edge
  - Lambda@Edge ** ユーザーエージェント ** URLの書き換え ** A/Bテスト ** リモートネットワークの呼び出し
 
  - Node.js 6.10
 
データ分析
  - Kinesis Firehose
 
  - Elasticsearch
 
  - Athena
 
  - Quick Sight
 
AWS Glue
  - Sparkをホストする
 
  - ETL スクリプト ** コードを書かなくてもある程度データの変換が可能
 
CI/CD
  - CodeCommit
 
  - CodePipeline ** スケーラブルに優れたビルドサービス
 
  - CodeBuild
 
  - CloudFormation ** → Lambda
 
  - CodeDeploy ** → EC2
 
CodeStart
  - プロジェクトテンプレート
 
  - GUIポチポチからサンプルプロジェクトができる
 
  - あとはいじるだけ!
 
モニタリング・オペレーション
X-Rey
AWS Answers
何を使えばいいの?