参加してきました。
会社紹介
おきまりの宣伝
- アイレット株式会社
- 2003〜
- 従業員162名ちょい
- システム開発、ゲーム開発、保守、マネージドホスティング
- cloudpack大阪
- 構築
- MSP運用
- MSP開発
- cloudpack
- デザイン
- 設計・コンサル
- システム開発
- MSP
- 7年間AWSのみで運用
- 600社1200プロジェクト超
- APNプログラム
- Amazonパートナープログラムの
- プレミアパートナーに5年連続選ばれている
- アジアで7社だけ
- 請求代行サービス
- AWSよりも安い
- 大阪の話
- RoBoHon オートヒーリングシステム
- 改ざん自動修復
- スタバのサーバーレス案件
- 毎日放送 動画イズム444
- フルサーバーレスで実現
- 3ヶ月でデザインからリリースまで
- 近畿大学AWS移行
- MSP事業支援開発
- kibana
- RoBoHon オートヒーリングシステム
- サーバーレス開発チームの取り組み
- MaaS(仮) & ServerlessPack
- KDDIの子会社になりました。 2017/01/25
- 募集
- 開発・インフラ・UI/UXエンジニア
雲勉について
- cloudpackの社内勉強会を外に公開
- 基本的に資料公開はしない
- 今回は中級者向け
#kumoben
サーバレスで作るモバイルアプリバックエンド
やっとはじまり
自己紹介
- すみさきさん
- Webアプリケーションエンジニア
- 2016/09~cloudpackにjoin
サーバレスってなに
サーバ「レス」
サーバが存在しない- サーバはあります
- サーバの存在を意識しなくていい
- 自動スケーリング
- ハードウェア、OS、ミドルウェアに依存しない
- コードが動くことが大事
- ステートレス
- リクエストごとにプロセスを使い捨てる
- 使いたい「機能」にフォーカスを当てる
- FaaS (Function as a Service)
どっかの偉い人 0.5秒実行するインスタンスを20mm秒以下で効率的に起動できるならサーバレス
メリット
- リソースを時間単位で確保
- 運用費用を削減できる
- インフラが存在しないため構築の手間を削減
- 初期費用も削減できる
デメリット
- それぞれが独立・非同期
- 原子性を確保することが難しい
- SLAが保障されていないものが多い
- 障害発生時のリカバリー手順が必要
- 構築から運用まで一貫して考える必要あり
実案件で使おうとするとここらへんが難しい
構成例
AWSにおけるサーバレスサービス
いくつかある。
AWS Lambda
- AWSのサーバレスといえばこれ
- Java8、Node.js、Phthon2.7、C#で記述可能
- java 初回が重たい
- CPUがっつり使う処理には有効
- Node.js
- 色々めんどくさい
- Phthon
- コンソールでかけるのでよい
- C#
- まだあまり試してない
- java 初回が重たい
- たいていの処理はなんとかしてくれる
- 初期の同時実行数は100に制限(アカウント単位!)
- 過度な依存は禁物
- AWSに相談すれば少しあげることはできる・・・
- 最大処理可能時間は5分
Amazon API Gateway
- RESTfulなAPIを構築できるサービス
- 他のサービスのプロキシをしたり、APII/Fになったり
- Webサービスのスロットリングにも使える
- スロットリング:際限なくアクセスされることを防ぐ
- Lambdaと仲良し
- 30秒でタイムアウトする
Amazon DynamoDB
- 高速で柔軟なNoSQLデータベース
- 事前に設定したスループット要件に合わせて自動的にスケーリング
- オンラインゲームのバックエンドに使われたりする
- スループット要件に対して課金される
- 利用料金が青天井
- 例)秒間1万件データ取得したい
- -> 秒間1万件以上に設定すると、その金額がずっとかかる
- 1日2回しかスループット要件変えられない。
Amazon S3 (Simple Storage Service)
- シンプルで耐久性がありスケーラブルなオブジェクトストレージ
- 99.999999999%の耐久性
- 99.99%の可用性
- 静的ウェブサイトホスティングという機能があり、コレ1つでWebサイトを作ることも可能
- 仕組み上高速ではない
- 同じオブジェクトを読み書きする際には注意が必要
- 親戚
- グレイシア(長期保存用)
Amazon Cognito
- ユーザーのサインアップとサインインの機能を追加できる
- ソーシャルIDや自前のIDシステムによる認証もできる
- 認証したユーザーにIAMロールを割り当てる使い方など
- 中身は3つぐらいに分かれている
- Cognito UserPool
- Cognito Identity
- Cognito Sync
- スマホ間同期とか
- 認証用メールがAmazon SESを通じて発行される
- キャリアメールが関わる場合は工夫が必要
- キャリア側の迷惑メールフィルタに引っかかる
- 動画IZMではSendGridを利用
- キャリアメールが関わる場合は工夫が必要
番外編
Amazon CloudFront
- CDNサービス
- コンテンツを世界に配信できる
- S3やAPIGatewayの前段に挟むことで痒いところに手が届く
- S3へのアクセスを減らせる
- S3は404以外のエラーはサポートしていない
- APIGatewayの前段でAppFirewallの機能を担う
Amazon Route 53
- 可用性・拡張性に優れたDNSサービス
- S3の静的ホスティング、APIGateway、CloudFrontを独自ドメインで使いたい場合に
他にも
- Amazon SNS
- プッシュ通知
- Amazon SES
- Email配信
- Amazon SQS
- メッセージキューイング
- 溜め込んでLambdaで取り込んで処理とか。
実際にモバイルバックエンドをサーバレスで考えてみる
簡単な構築パターンを考えてみる
アプリから送ったデータを保存したい
- 構成例
- API Gateway -> Lambda -> S3 or DynamoDB
Lambdaを直接たたくためにはIAMが必要
- APIGatewayを挟むと抽象化できる
写真をとったらサムネイルを作りたい
- 構成例
- API Gateway -> Lambda(保存) -> S3 -> Lambda(加工) -> S3
- たまにLambdaの処理が抜ける
- API Gateway -> Lambda(保存) -> S3 -> Lambda(加工) -> S3
構成例2
- API Gateway -> Lambda(保存) -> S3 / SQS -> (Timer起動)Lambda(加工)
- SQSを挟むことで確実性を上げる
- API Gateway -> Lambda(保存) -> S3 / SQS -> (Timer起動)Lambda(加工)
許可した人にだけAPIを公開したい
- 構成例
- Amazon Cognito
- 認証トークンを発行
- API Gateway -> Lambda -> …
- Amazon Cognito
デモ
- API Gateway -> Lambda -> Lambda -> S3
- Unity -> Lambda <- S3
Unity用SDKもあっていくつかの機能は直接呼べる
- API Gateway
- AJAXで呼ぶならCORS設定が必要
ホワイトペーパー
cloudpackサーバーレス開発ホワイトペーパーとして公開している
質疑
サーバーレスのログ追跡どうやってるの?
- CloudWatchは大変
- 答えはあるがまだ発表できない
- 2月末ぐらいに発表できる
次回予告
- 2月開催
- AWS Storage Gateway
- 3月
- 3/1 ホワイトペーパーの説明
- 3/8 AWS Code Deploy
- 3/29 クラウド基礎
感想
まだほとんど使えてないけど雰囲気つかめてよかった。 簡単に試せそうやし触ってみよう。