新人研修でサーバレスな蔵書管理システムを作った話

E36c76466f83a866fabc6eb23c2dd51e?s=47 Misso
July 14, 2016

 新人研修でサーバレスな蔵書管理システムを作った話

JAWS-UG アーキテクチャ専門支部 クラウドネイティブ分科会 CDP議論会 #10 LT発表資料

E36c76466f83a866fabc6eb23c2dd51e?s=128

Misso

July 14, 2016
Tweet

Transcript

  1. Copyright © 2016. All rights reserved. Copyright © 2016 All

    rights reserved. ৽ਓݚमͰ αʔόϨεͳ ଂॻ؅ཧγεςϜΛ ࡞ͬͨ࿩ 2016/07/14 ハンズラボ株式会社美代 苑生 JAWS-UG アーキテクチャ専門支部 クラウドネイティブ分科会 CDP議論 #10 LT資料
  2. Copyright © 2016 All rights reserved. 1 自己紹介 n美代 苑生

    l ハンズラボ 株式会社 l 2016年4月 入社 - 試用期間終わり l イノベーショングループ l 基幹システム
  3. Copyright © 2016 All rights reserved. 2 新卒研修 n新卒入社 4名

    n技術研修 (4月 – 6月) l どのようにコンピュータは動いているのか? - 座学 l どうやってコンピュータを動かすのか? - Python演習 l どうやってソフトウェアを作っていくのか? - 仮想プロジェクト 新卒研修の詳細は弊社エンジニアブログの記事へ: https://www.hands-lab.com/tech/entry/1531.html
  4. Copyright © 2016 All rights reserved. 3 新卒研修 n新卒入社 4名

    n技術研修 (4月 – 6月) l どのようにコンピュータは動いているのか? - 座学 l どうやってコンピュータを動かすのか? - Python演習 l どうやってソフトウェアを作っていくのか? - 仮想プロジェクト 新卒研修の詳細は弊社エンジニアブログの記事へ: https://www.hands-lab.com/tech/entry/1531.html
  5. Copyright © 2016 All rights reserved. 4 仮想プロジェクト n社内の蔵書を管理するシステムを作る l

    本を登録する, 削除する l 本を借りる, 返す l 一覧を見る nシステム開発 (1.5ヶ月) l フロントエンド: モバイルアプリ, Webアプリ l バックエンド: AWSのサービスを使ったサーバレス アーキテクチャ
  6. Copyright © 2016 All rights reserved. 5 仮想プロジェクト n社内の蔵書を管理するシステムを作る l

    本を登録する, 削除する l 本を借りる, 返す l 一覧を見る nシステム開発 (1.5ヶ月) l フロントエンド: モバイルアプリ, Webアプリ l バックエンド: AWSのサービスを使ったサーバレス アーキテクチャ
  7. Copyright © 2016 All rights reserved. 6 なぜサーバレスアーキテクチャか? n本の登録, 貸し借りがある時に動けばいい

    l イベント駆動 l RESTful API n2人, 1.5ヶ月で作る (学習コスト, 時間的制約) l ロジックの実装に集中できる l API, ユーザ管理を実装しなくてよい nせっかく作るならサーバレスでやってみよう! (技術的挑戦)
  8. Copyright © 2016 All rights reserved. 7 蔵書管理システムの構成 AWS リージョン:

    ap-northeast-1 AWS リージョン: us-east-1 クライアント API Gateway Lambda Cognito User Pools Lambda DynamoDB Slack API カスタム 認証 ログイン・ トークン取得 トークン付きで API アクセス ユーザへ 通知 認証許可 トークンが 有効?
  9. Copyright © 2016 All rights reserved. 8 APIの設計 /v3 バージョン

    /books 本の集合 /{ISBN} 特定の本 /borrowers この本を借りている人の一覧 /reservers この本を予約している人の一覧 [GET] 本を検索して一覧を取得 [GET], [POST] 本を追加, [PUT] 本の情報を修正, [DELETE] 本を削除 [GET], [POST] 本を借りる, [DELETE] 本を返す [GET], [POST] 予約する, [DELETE] 予約を削除する /users ユーザの集合 /{Username} 特定のユーザ [GET] ユーザの貸出履歴を取得する [GET] Slackユーザ名が存在するか判定する /ranking 本のランキング [GET] 本のランキングを取得する
  10. Copyright © 2016 All rights reserved. 9 API 仕様 (Swagger)

  11. Copyright © 2016 All rights reserved. 10 APIのテスト (Postman)

  12. Copyright © 2016 All rights reserved. 11 どうだったか? n必要になった知識や技術 l

    設計: HTTP, REST API, KVS, OAth 2.0 l 実装: Python, JavaScript, CORS n大変だったところ l 認証失敗時のレスポンスがCORS対応してない l 手作業でテスト (コピペ,API実行,結果をコピペの繰返し) l 手作業で本番環境へ移行 (Swagger YAMLで定義してたが, インポートする時にエラーになった) nAWS利用料 l 本番環境で 約$4.0/月 (ユーザ数:22, 蔵書数: 120)
  13. Copyright © 2016 All rights reserved. 12 まとめ n新卒研修でサーバレスな蔵書管理システムを作成 l

    Cognito User Pools l API Gateway l Lambda l DynamoDB 新卒でもサーバレスなシステムを 構築できる!!