Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

複数サービスを共存させるために 試行錯誤したこと

425 views

Published on

複数サービスを連携させる際、状況によってシステムの結合度を分ける必要があり、そのアーキテクチャについて試行錯誤したことについてのお話です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

複数サービスを共存させるために 試行錯誤したこと

  1. 1. 複数サービスを共存させるために 試行錯誤したこと 株式会社 ヒトクセ 取締役CTO 長尾 俊
  2. 2. Hitokuse Inc.©Hitokuse Inc.© 自己紹介 2 長尾 俊 株式会社ヒトクセ 最高技術責任者 (Co-Founder / CTO) 東京大学大学院情報理工学系研究科 修士 IPA未踏クリエータ 得意領域 C, C++, C#, Objective-C,JAVA, PHP,Ruby,Python,HTML,CSS,JS,Flash,Lisp,VB,SQL,lua… Web, スマートフォンアプリ, 機械工作, マイコン, 音声信号処理, CG, 機械学習… 略歴 2011.4 東京大学工学部 機械情報工学科学士 2011 東大アントレプレナー道場7期 準優勝、その他ビジコン多数受賞 2012.4 株式会社ヒトクセ設立 Co-Founder CTO就任 2012 IPA未踏クリエータ 2012 SIGGRAPHでの学会発表 2013.4 東京大学大学院 情報理工学系研究科電子情報工学科 修士 趣味 ブレイクダンス、ヘヴィメタル、アート
  3. 3. Hitokuse Inc.©Hitokuse Inc.© 自己紹介 (裏) 3 ポートフォリオ ・メタラー起業家 SHUNのブログ:http://shun0750.tumblr.com ・ヘヴィメタルダンスチーム「マソソソマソソソ」: https://www.youtube.com/watch?v=I0iI_EqJYWA https://www.youtube.com/watch?v=Jbh0aYLfWn4 頭で回ったり・・メタルでダンスしたり ・・ 長尾 俊 株式会社ヒトクセ 最高技術責任者 (Co-Founder / CTO) 東京大学大学院情報理工学系研究科 修士 IPA未踏クリエータ
  4. 4. Hitokuse Inc.©Hitokuse Inc.© 会社のご紹介 4 ITの力を駆使して、人々の生活 に 新しい体験を生み出す。 株式会社
  5. 5. Hitokuse Inc.©Hitokuse Inc.© サービスの全体像 5 ヒトクセはリッチメディア広告のクリエイティブ・ソリューションを提供します リッチ広 告 動画広告 環境連動 ネイティブ アド
  6. 6. Hitokuse Inc.© 分析配信 Hitokuse Inc.© システム全体 6 制作 クリック率、認知向上が可能なリッチ広告制作・配信プラットフォーム ◎リッチメディア広告の制作 ◎広告ネットワークを通じた配信 ◎豊富な分析データ 提携ネットワーク : 入稿 配信 分析 ■主な特長 ・30以上の広告テンプレートを用意。Smart Canvas Studioにより無限の表現が可能。 ・提携アドネットワーク・DSPは21社(2016年9月現在)圧倒的なカバー率と在庫を実現。 ・静止画像と比べ、1.5〜2倍のクリック率を実現 Smart Canvas Studio テンプレートからの作成
  7. 7. Hitokuse Inc.© 分析配信 Hitokuse Inc.© 7 制作 クリエイティブ作成 管理画面 クリエイティブ作成 ツール 再生エンジン 計測 動画変換 配信制御 外部API連携 データ集計 デザイン解析 ■ システム要件 ■ サービス システム全体
  8. 8. Hitokuse Inc.©Hitokuse Inc.© 共通化 vs 分断 8 ■ システムを共通化させたい気持ち ・共通で使いたいシステムがある ・共通で使いたいデータがある ■ システムを分けたい気持ち ・サービスブランドを分けたい ・負荷を分けたい ・インストールするソフトウェアを分けたい VS
  9. 9. Hitokuse Inc.©Hitokuse Inc.© 9 状況によってシステムの結合度 を変えていく必要がある
  10. 10. Hitokuse Inc.©Hitokuse Inc.© 10 パターン レポジトリ 共有 DB共有 API 接続 外部 サービス メリット デメリット DB・レポジ トリ共有 ○ ○ APIサーバ 自作 ○ 外部マイクロ サービス (Lambda等) ○ ○ パターンごとのメリット・デメリット
  11. 11. Hitokuse Inc.©Hitokuse Inc.© 11 ■ DB・レポジトリ共有 リッチ・動画広告作成 デザイン最適化広告作成 Smart Canvas & Chameleon
  12. 12. Hitokuse Inc.©Hitokuse Inc.© 12 ■ DB・レポジトリ共有 リッチ・動画広告作成 デザイン最適化広告作成 中身はほとんど同じだが、 サービスブランドは変えたい 共通データ ユーザー、クリエイティブ、広告、配信データなど Smart Canvas & Chameleon
  13. 13. Hitokuse Inc.©Hitokuse Inc.© 13 ■ DB・レポジトリ共有 クリエイティブ情報 各種データ 共通レポジトリ 共通ブランチ RAILS_ENVを変えて 別々のサーバーにデプロイ DBやストレージは 同じものを見に行く システム構成
  14. 14. Hitokuse Inc.©Hitokuse Inc.© 14 ■ DB・レポジトリ共有 🔵良かった点 ・システム共通部分を使いまわせる ・サービス同士の行き来がしやすくなる 🔴良くない点 ・一方のサービスの修正が他方に悪影響を及ぼす可能性がある ・時間が経つとそれぞれのサービスが変わり、一方で使わない 処理やデータが増えてしまう 良かった点・良くない点
  15. 15. Hitokuse Inc.©Hitokuse Inc.© 15 ■ DB・レポジトリ共有 こんなときにオススメ ・OEM提供をするとき ・似たサービスをブランドを変えてローンチするとき おすすめ
  16. 16. Hitokuse Inc.©Hitokuse Inc.© 16 パターン レポジトリ 共有 DB共有 API 接続 外部 サービス メリット デメリット DB・レポジ トリ共有 ○ ○ ・共通部分の使い回し ・ユーザービリティ向上 ・共通部分のデグレ ・システムの冗長化 APIサーバ 自作 ○ 外部マイクロ サービス (Lambda等) ○ ○ パターンごとのメリット・デメリット
  17. 17. Hitokuse Inc.©Hitokuse Inc.© 17 ■ APIサーバ自作 元動画ファイル 加工したデータ スマートフォンでの 自動再生 通常の動画ファイルだけではスマートフォンでの動画自動再生は不可能 様々な端末で再生させるために 動画データの加工が必要 動画広告のフォーマット
  18. 18. Hitokuse Inc.©Hitokuse Inc.© 18 ■ APIサーバ自作 動画処理 Video Encoder クリエイティブ情報 各種データ 動画作成リクエスト 動画作成命令 登録 保存 API化 システム構成
  19. 19. Hitokuse Inc.©Hitokuse Inc.© 19 動画処理 Video Encoder Video Encoderには色々なソフトウェアが インストールされている インストールされているソフトウェア例 ■ APIサーバ自作 システム構成
  20. 20. Hitokuse Inc.©Hitokuse Inc.© 20 Lambda等のマイクロサービスは使わず 独自APIサーバーを構築 ・重い処理を切り離したい ・ソフトウェア管理コストを軽減したい ・色々なソフトウェアを組み合わせて複雑な処理をしたい ■ APIサーバ自作 システム構成
  21. 21. Hitokuse Inc.©Hitokuse Inc.© 21 動画処理 Video Encoder クリエイティブ情報 各種データ 動画作成リクエスト 動画作成命令 登録 保存 オートスケーリングしてもリクエスト が集中すると処理が停止してしまう ■ APIサーバ自作 システム構成
  22. 22. Hitokuse Inc.©Hitokuse Inc.© 22 動画処理 Video Encoder クリエイティブ情報 各種データ キャッシュ登録動画作成リクエスト キャッシュ取得 登録 保存 加工前素材の保存 素材取得 キャッシュを挟む 監視 ■ APIサーバ自作 システム構成
  23. 23. Hitokuse Inc.©Hitokuse Inc.© 23 🔵良かった点 ・サービスメインのサーバーにソフトウェアをインストール するリスクが無くなる ・キャッシュを挟むことで落ちなくなる 🔴良くない点 ・サービスを使わない時間が無駄コスト発生 ・ソフトウェアバージョン管理、システムメンテナンスが面倒 ■ APIサーバ自作 良かった点・良くない点
  24. 24. Hitokuse Inc.©Hitokuse Inc.© 24 こんなときにオススメ ・特殊なソフトウェアが必要な処理をするとき ・サーバーに負荷がかかる処理をするとき ・複雑な処理を1回のリクエストで行いたい時 ■ APIサーバ自作 おすすめ
  25. 25. Hitokuse Inc.©Hitokuse Inc.© 25 パターン レポジトリ 共有 DB共有 API 接続 外部 サービス メリット デメリット DB・レポジ トリ共有 ○ ○ ・共通部分の使い回し ・ユーザービリティ向上 ・共通部分のデグレ ・システムの冗長化 APIサーバ 自作 ○ ・メインサーバーの負荷 、リスク軽減 ・複雑な処理ができる ・管理が面倒 外部マイクロ サービス (Lambda等) ○ ○ パターンごとのメリット・デメリット
  26. 26. Hitokuse Inc.©Hitokuse Inc.© 26 ■ 外部マイクロサービス タイトル アイコン画像 大きめ画像 デザイン最適化 エンジン入稿素材 アドネットワーク・DSP 各メディアのデザインに 自動で溶け込む 配信先メディア カメレオン
  27. 27. Hitokuse Inc.©Hitokuse Inc.© 27 ■ 外部マイクロサービス ◆ 320x50 ◆ 300x250 カメレオン
  28. 28. Hitokuse Inc.©Hitokuse Inc.© 28 ■ 外部マイクロサービス デザイン解析 クリエイティブ情報 各種データ キャッシュ登録デザイン解析 リクエスト キャッシュ取得 登録 保存 広告配信 処理が大量に来ると相当なスケーリング をしなければいけない(1URL数秒) システム構成
  29. 29. Hitokuse Inc.©Hitokuse Inc.© 29 新しいサイトが大量に増えると デザイン解析も大量にしなければいけない ・新しい国や地域で配信を行う時 ・新しい配信先(ネットワーク)が増えた時 ■ 外部マイクロサービス サービスの特徴
  30. 30. Hitokuse Inc.©Hitokuse Inc.© 30 ■ 外部マイクロサービス クリエイティブ情報 各種データ デザイン解析 リクエスト 登録 保存 広告配信 API Gateway経由でアクセス システム構成
  31. 31. Hitokuse Inc.©Hitokuse Inc.© 31 🔵良かった点 ・瞬間的に大量のリクエストが来た時も素早く処理が可能 ・オートスケーリングやモニタリングなど、サーバー監視の コストが削減できる 🔴良くない点 ・リソースが限られる(5分でタイムアウトなど) ・デバッグしにくい ・後から処理やソフトウェアを追加しようとしたときに面倒 ■ 外部マイクロサービス 良かった点・良くない点
  32. 32. Hitokuse Inc.©Hitokuse Inc.© 32 こんなときにオススメ ・単純な一機能をAPI化したいとき ・リソースの使用のアップダウンが激しい時 (サーバー1台で済む時と100台必要な時が不定期にくる) ■ 外部マイクロサービス おすすめ
  33. 33. Hitokuse Inc.©Hitokuse Inc.© パターンごとのメリット・デメリット 33 パターン レポジトリ 共有 DB共有 API 接続 外部 サービス メリット デメリット DB・レポジ トリ共有 ○ ○ ・共通部分の使い回し ・ユーザービリティ向上 ・共通部分のデグレ ・システムの冗長化 APIサーバ 自作 ○ ・メインサーバーの負荷 、リスク軽減 ・複雑な処理ができる ・管理が面倒 外部マイクロ サービス (Lambda等) ○ ○ ・必要なときだけ起動 ・コストの最小化 ・リソースの制限 ・デバッグのしにくさ ・自由度の低さ

×