29
Copyright © 2015. All rights reserved. 201598EC2レスに挑戦! フルマネージドのポイントシステム ハンズラボ株式会社

フルマネージドのポイントシステム

Embed Size (px)

Citation preview

Copyright  ©  2015.  All  rights  reserved.

2015年9月8日

EC2レスに挑戦!フルマネージドのポイントシステム

ハンズラボ株式会社

はじめに

ü 東急ハンズシンガポール店向けポイントシステム

ü 今日話す事

1 自己紹介

2 ポイントシステム概要をざっくり

3 なぜEC2レスのフルマネージドか4 AWS全体構成5 要所クローズアップ

6 課題

ü お約束ですが現在もシステム開発中の為、このままの構成で運用していくかどう

かはご配慮ください。

1

自己紹介

ü名前: 加藤 雅之

ü所属: ハンズラボ株式会社

ü担当: 外販案件(ポイントシステム)

ü技術: Webシステム、インフラü出身: チーバくんの目と鼻の間

ü趣味: ゴルフ、野球、お酒

ü好きなAWSサービス:

(呑まれる)

2

ポイントシステム概要をざっくり

お客様

店舗

QR読み込み

ポイントシステム

ポイント付与

ポイント画面提示

ü 基本的な動きは一般的なポイントカード

1 お客様 スマホ(Web)でバーコード表示とポイント詳細等2 店舗 ポイント付与: 会計時にPOS端末でバーコードを読み込み

ポイント使用: PC端末で会員ID打ち込み(金券発行)

会員ID打ち込み会員情報確認

ポイント使用

ポイント画面提示

金券発行レシート発行

3

ポイントシステム概要をざっくり

ü 今日は秋のAWS  Lambda  &  API  Gateway  祭りü POSや売り上げのポイント云々の箇所は省略し、Webシステムとしてよく使う認証を行っている部分についてクローズアップ

4

Copyright  ©  2015.  All  rights  reserved.

なぜEC2レスのフルマネージド?

なぜEC2レスのフルマネージド?

6

Amazon  RDS

AWS  Elastic  Beanstalk

一般的なWebシステム

6

なぜEC2レスのフルマネージド?

ü 単純にワクワクする 〜エンジニアの性〜

ü コスト圧縮

→ EC2が半分以上を占める事が多いü 運用がつらい

→ Heartbleed、Shellshock、POODLE→ リザーブドインスタンス等々

フルマネージドサービスを積極活用せずに、何が、AWSの活用じゃ!フルマネージドこそ、クラウドの真髄ではありませんか!

ü ボスの意向

77

なぜEC2レスのフルマネージド?

行こうぜ!ピリオドの向こうへ・・・

88

Copyright  ©  2015.  All  rights  reserved.

ポイントシステム基盤 AWS全体構成

新ポイントシステム基盤 AWS全体構成

1010

1/3  ログイン認証(ID  Manager)

1111

2/3  ログイン認証後(動的データ取得)

1212

3/3  データ操作部(会員情報 /  ポイント)

1313

1/3  ログイン認証(ID  Manager)概要

14

2/3  ログイン認証後 動的データ概要

15

3/3  データ操作部(会員情報 /  ポイント)概要

16

Copyright  ©  2015.  All  rights  reserved.

・ 動的データはJSONのみを徹底

・ なぜCognitoか

・ JWT(JSON  Web  Token)

3.要所クローズアップ

動的データはJSONのみを徹底

ü トラフィック軽減

ü 分担作業での 適化

①. 静的ファイル(html/img/CSS/js/SDK)提供 → CloudFront②. 動的情報JSON返却(ポイント等) → API  Gateway  -­ Lambda③. デザイン → クライアント側でAjax描画

ü JSONデータのみを徹底する事で→ Android  /  iOS  /  Web  で共通として使用できる

1818

なぜCognitoか

Cognitoには認証機能はないので、認証自体はLambda側で行う。認証後の連携としてDeveloper  Authenticated  Identityという仕組みを使う。

→ API  Gateway  – Lambdaだけで認証管理すれば良いのでは?

1919

なぜCognitoか

ü セキュリティの向上

API  Gateway  で全公開したくない場合はAuthorization  typeでIAMを選択→ API  Keyを認証としては使ってはいけない→ IAMのCredentialをクライアントに直接書くのはセキュリティ上良くない

→ CognitoのAuth Roleでセンシティブな部分を楽にガードできるü 拡張性の向上

→ 複数のidPに簡単に対応可能 (Amazon  /  Facebook  /  google  …  )→ Cognito IDで一元管理→ 今後のアプリ対応も考えると端末変更も楽に対応可能

2020

なぜCognitoか

注意点

ü 3つの接続管理が必要

・STSのCredential有効期限は 大1時間

・Cognitoの Open  ID  Tokenの有効期限は 大24時間

→ ログインをそれ以上維持させたい場合

・独自認証部分の有効期間をToken等で管理(Cookie等々…)

2121

JWT(JSON  Web  Token)

2015年5月に RFCのStandardになった規格

JWT(RFC7519 http://www.rfc-­editor.org/info/rfc7519)CompactシリアライゼーションのJWSに、いくつかの有用なパラメータ名を導入して、ログイン情報やアクセス許可情報を伝達できるようにしたものRESTfulなシステムでの利用を想定しているがそれ以外でも利用可能。

Tokenを分解するとHeaderとPayloadとSignatureという3つのセグメントから構成され、それぞれURL-­safe  Base64  Encodingしたもの。

1 Headerは署名アルゴリズムなどを含むJSON2 Payloadは実際に送信したいJSONデータそのもの3 Signatureは、HeaderとPayloadを “.”  で連結した文字列に対して、Headerに指定されたアルゴリズムで署名

既に、GoogleやMicrosoftも大規模に実装済み(OpenIDConnect)→ 実はAWS  Cognitoでも採用されている

JSON  Web  Tokenとは。。。

2222

JSON  Web  Tokenとは

23

JSON  Web  Tokenとは

ü もし書き換えがあっても、Signatureでチェックができる。→ セッションハイジャック対策は忘れずに

ü Cognitoでも使用しているので、作成したモジュールの使い回しできる

ü ペイロード部にクライアントに渡しても良いデータ(ユーザーID等)をかけるので、Lambda上でいちいちDBアクセスしなくて良い。→ 非同期で動作するLambda(node.js)では、DBアクセス(同期処理)が減ら

せるのは非常に都合が良いです。

24

Copyright  ©  2015.  All  rights  reserved.

課題

課題

ü ポイント増減のニアリアルタイム性

→ StreamTrainでデータが流れるので、特に使用時のロック処理等が必要ü レイテンシー(API  Gateway  /  CognitoのTokyoRegion)

→ 現在はUS-­West-­1に寄せている。CognitoはUS-­EAST-­1ü Lambdaの開発設計

→ 1つのFunctionだけで見るとアップロードするだけで楽に見えるが、moduleの共通化等をしようとすると急に面倒になる。→ Github -­ CircleCIで自動デプロイを自作した

ü API  Gateway  -­ Lambdaの運用→ Lambda側で新旧2系統持ち、API  GatewayのIntegrationを切り替えてデプロイするBlue  /  Greenの要領で行う予定。Swaggerを使おう。

2626

募集中

求む!

・AWSエンジニア

・iOSエンジニア・Webエンジニアハンズラボは積極的に技術者採用中です。

2727

Thank you.