Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless and Microservices for Newspass

Serverless and Microservices for Newspass

Microservices Meetup vol.1 @FiNC

y_matsuwitter

July 07, 2016
Tweet

More Decks by y_matsuwitter

Other Decks in Programming

Transcript

  1. 2 ©Gunosy Inc. ⾃⼰紹介 n Gunosy Inc. – 開発本部執⾏役員 n

    業務 – 開発全般のマネジメント – Go⾔語布教係 – パフォーマンスチューニング – ISUCONとか好きです n 担当 – 右⼿でiOS、左⼿でAndroid – Web – Infrastructure(AWSのみ) n 最近の興味 – VR ウォッチングおにいさん 松本 勇気 @y_matsuwitter
  2. 3 ©Gunosy Inc. Gunosy Inc. について n 情報キュレーションサービス「グノシー」の 開発・運営 n

    iOS/Android合わせ、約1300万DL n 「数値は神より正しい」を合⾔葉に、数値中 ⼼の改善・経営 n 広告配信、機械学習、データ分析、AWS運⽤ などに強いチームです 「情報を世界中の⼈に最適に届ける」
  3. 5 ©Gunosy Inc. 今⽇の話 n マイクロサービスの採⽤について n サーバレスアーキテクチャとの関わり n 開発・運⽤を⽀える技術

    n 最後に ニュースパスの開発にあたりマイクロサービスを採⽤した話について。
  4. 8 ©Gunosy Inc. ニュースパスとマイクロサービス 短期間・少数で⾼品質なサービスをマイクロサービス上で実現 n システムの規模感 – 30個のサブシステム –

    45個のGithubリポジトリ – iOS/Android/Webでの提供 – 全てOpsworks上で管理・運⽤ – サービスダウンやアプリのクラッシュは ほぼ0 n 運⽤・開発は少数精鋭で実施 ニュース配信の裏側の各ビジネスドメインをマイクロサービス化 API Gateway Auth Content Log
  5. 9 ©Gunosy Inc. 記事配信サービス 検索サービス マイクロサービスをなぜ採⽤したか 柔軟なスケール・柔軟な構成によりリソースを適切に運⽤する n ドメインごとに必要なシステムの性質は違う –

    検索 – ログ解析 – 推薦・⾃然⾔語処理 – 認証・認可 – クローラ – 管理画⾯ – …etc n 適切なシステムを適切なミドルウェアと規模 で運⽤する n データを他のドメインに汚染させない データの完全なカプセル化とドメインごとの柔軟な構成が⽬的 Elasticsearch Golang API MySQL DynamoDB Golang API Python Batch DBへの直接の参照禁止
  6. 11 ©Gunosy Inc. サーバレスアーキテクチャ 柔軟にスケール可能 運⽤を簡素化 スケールの最⼩単位を⼩さく、柔軟 に増減する コード⾃体の設計・開発に集中 n

    インフラの最⼩単位がコードに – 実⾏単位でのスケールが可能 – 働いてないリソースを極⼒削る n 実⾏リソースもコードごとに柔軟に – あるスクリプトだけメモリを⼤き く当てる、など n コードの実⾏環境は管理不要 – リソース監視やスケーリングはク ラウド側が担保 – 成功・失敗やその他実⾏時のログ は管理 n サーバ単位のセキュリティなどもクラ ウド側で担保 コスト・運⽤両⾯でメリットが⼤きい サーバを抽象化し、ロジックを必要に応じてデプロイ・実⾏できる仕組み
  7. 12 ©Gunosy Inc. 2-Tierアーキテクチャ ロジックの持ち⽅を柔軟に 開発を最⼩限に これまでのサーバサイド・クライア ントサイドの境界を塗り替える ロジックの責任をクラウドに n

    どこで実装すべきか?という問い – 認証・認可 – ログ配送 – 設定値管理 etc... n クライアントサイドの実装を⽀援する 仕組みが増えた – クライアントでやる選択肢 n SDKを介してマネージドなサービスを 利⽤する – ロジックは各種サービスに任せる n 例:AWS – Cognito … AWS上での認証・認 可の仕組みを提供する クライアント側がインフラ構成に参加する新しい形態 Client-sideが直接マネージドなサービスを操作する
  8. 13 ©Gunosy Inc. マイクロサービスとこれらの関わり リソースを柔軟に コアの価値に集中 コスト効率を上げる n サービスごとに必要な リソースを必要なだけ

    割り当てる n 突発的なスケールもク ラウド側で担保 n コアロジック以外はク ラウド提供者側やクラ イアント側に移譲 n コードを書く以外に考 えるべき要素を最⼩化 n 各サービスのマイクロ さを⾼める n スケールの単位の⼩さ さを担保 n 必要なサービスに必要 な量だけリソース割当 n タイミングに応じてコ ストも柔軟にスケール する システム内の多数のサービスの開発・運⽤負荷というデメリットを軽減 ドメインごとのサービスをより効率よく・スケーラブルな構成へ
  9. 15 ©Gunosy Inc. Microservicesを⽀えるAWSの技術 n コードの実⾏環境 n Node.jsやPython等多 くの⾔語環境が提供さ れている。

    n AWSの多くのサービス がイベントフックにて Lambdaを呼び出し可 能に。 Lambda n ユーザーのAWSに対す る認証・認可サービス n OpenID Connectと組 み合わせ、ユーザー管 理を可能に。 n 直近ではメールによる ユーザー登録・管理機 版も登場 Cognito n ログ配送の中継 n Fluentdと似たようなレ イヤ n ⼀定期間分のデータを 溜め、中継先が任意に 読み取り可能 n 周辺ツールが充実しつ つある Kinesis ピタゴラスイッチ的に組み合わせるだけでも様々な可能性がある マネージドで効率的に使いやすいサービスが増えている
  10. 16 ©Gunosy Inc. 事例:プッシュ通知の管理系統 Amazon Cognito Mobile Client 設定値 Push:

    有効 トークン: aaaa … Push System CognitoSyncで LocalとAWS上 を同期 AWS Lambda Queue On SQS Amazon SNS Syncイベントをフック Pushシステム側で Dequeue => DB登録 Amazon Elasticsearch Service Amazon SNS Mobile Puh SNSのエンドポイント登録 無効なトークンの削除 Amazon SNS Mobile Puh PushをSNS経由で配信 コアの配信ロジック以外は マネージドなAWSツール 実装も配信ロジックが主
  11. 18 ©Gunosy Inc. 最後に 開発・運⽤コストを最⼩にし、サービス改善に注⼒しよう Microservices + 次世代のアーキテクチャで効率的なサービス運⽤が可能 ニュースパスでのMicroservices AWSの活⽤による省⼒化

    n 各サブシステムを適切なアーキテクチ ャで構成・運⽤する n 多数のシステムから単⼀のデータを触 る際の拘束具としてのサービス分割 n サーバレスや2-Tierを組み合わせて、 より効率的な形を求めていく n Lambdaなどのマネージドなサービス をフル活⽤していく n ロジックの責務やインフラの運⽤を AWSに担保させる n スケール単位を細かくしていくことで 必要に応じて柔軟にスケール、コスト 効率も⾼い