SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Copyright (C) CA Advance,inc
OpenSTFを
ECSに乗せてみた話
Copyright (C) CA Advance,inc
自己紹介
名前: 知花 司(ちばな つかさ)
所属: CA-Advance 技術統括本部
twitter: @chibana_555
趣味:ジョギング (よなよな浦添近辺を走ってますw)
癖:なんでもhogehoge
だいたいアプリ側のエンジニアです。
Copyright (C) CA Advance,inc
• OpenSTFとは
• STFのアーキテクチャ
• なぜECSに乗せようと思ったのか
• ECSに載せるにあたって
• まとめ
アジェンダ
Copyright (C) CA Advance,inc
OpenSTFとは
Copyright (C) CA Advance,inc
たくさんのAndroidスマートフォンをサーバーへ接続し、
ブラウザでのリモート操作を可能にするツールです。
今年7月にCyberAgentがOSSで公開し、
OpenSTFとして開発が続いております。
STFとは
ブラウザ
  OpenSTFとは
https://www.cyberagent.co.jp/news/press/detail/id=10664
Copyright (C) CA Advance,inc
百聞は一見に如かず
  OpenSTFとは
→デモ
Copyright (C) CA Advance,inc
STFのアーキテクチャ
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
Devices
Copyright (C) CA Advance,inc
Devices
  STFのアーキテクチャ
• ロードバランサ
• APサーバー
• DBサーバー
• プロバイダ
• 端末 X 160台以上
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
OS/MiddleWare
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
OS CoreOS クラスター構成を前提に設計された軽量OS
 デーモン管理 systemd 従来のinitに変わるもの
 クラスター管理 etcd クラスター間の状態監視とデータ共有
 プロセス管理 fleet クラスター上のsystemdのプロセスを管理
 実行環境 Docker プロセス実行
DB RethinkDB JsonDB
Proxy, LB Nginx 説明不要ですね。
リソース監視 cAdvisor
googleが開発した監視ツール
dockerに対応している
OS/MiddleWare
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
ただのOS
クラスター管理
etcdクラスター上の
systemdのプロセスの
リーモート管理
STFはすべてDocker
OS/MiddleWare
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
ちょっと蛇足ですが・・・
「物理node100台以上、1000サービス以上はお勧めしません。対応するつ
もりもありません。」
だそうです。
(fleetのREADME)
https://github.com/coreos/fleet
Copyright (C) CA Advance,inc
Application
  STFのアーキテクチャ
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
Frontend
SPA AngularJS 1.X系
ビルド gulp + webpack
Serverside
AP NodeJS
プロセス間通信 ZeroMQ
プロセス間プロトコル Protocol Buffers
端末制御 ADB
Application
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
プロセス間通信
websocket 通常アクセス
画面ストリーム
通信パターンは3種類あります。
通常アクセス
• 静的コンテンツ、SPAの取得
• データ取得API等
websocketによる常時接続
• 端末制御系API等
画面キャプチャのストリーム
• 端末に自動インストールされるプロセスからの画
像ストリーム
これらはそれぞれ異なるプロセスで処理されます。
主な処理はwebsocketに実装されており、
websocketは内部でさらに分散されております。
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
プロセス間通信
https://github.com/openstf/stf/blob/master/doc/DEPLOYMENT.md
websocket
provider
ブラウザのリクエストはwebsocketで
protocolBuffersに変換され、
バックエンドではZeroMQで通信されます。
主な処理は processor で実行され、この
プロセスは任意の数を起動でき容易に拡張
できる仕組みになっております。
また、providerでは接続された端末一つ一
つに対して dev というプロセスがフォー
クされ、端末の制御を行っております。
主な処理はここ
で行われる
接続された端末数分
フォークされる
Copyright (C) CA Advance,inc
  STFのアーキテクチャ
adb connect の通信フロー
adb connect
認証情報登録
認証
STFはadb接続機能も提供しております。
adb接続は、STF上でadbの認証情報(指紋)を
登録後に利用可能となります。
Copyright (C) CA Advance,inc
なぜECSに乗せようと思ったのか
Copyright (C) CA Advance,inc
  なぜECSに乗せようと思ったのか
STFは全部docker
再掲
これに尽きます。。。
Copyright (C) CA Advance,inc
ECSに乗せるにあたって
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
現状の構成、物理ファシリティ
再掲
LB, AP, DB, Provider の4種類
端末接続が必要
なので無理
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
ECS移行対象
AWS
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
起動しているサービス
LB AP DB Provider
proxy (nginx) stf-rev-proxy.service
rethinkdb-proxy-28015.service
stf-app@.service
stf-auth@.service
stf-log-rethinkdb.service
stf-notify-hipchat.service
stf-processor@.service
stf-reaper.service
stf-storage-plugin-apk@.service
stf-storage-plugin-image@.service
stf-storage-temp@.service
stf-triproxy-app.service
stf-triproxy-dev.service
stf-websocket@.service
stf-migrate.service
rethinkdb.service adbd.service
stf-provider@.service
https://github.com/openstf/stf/blob/master/doc/DEPLOYMENT.md
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
ECS移行後の構成 ※とりあえず最小構成で・・・
LB AP DB Provider
proxy stf-rev-proxy.service
rethinkdb.service
rethinkdb-proxy-28015.service
stf-app@.service
stf-auth@.service
stf-log-rethinkdb.service
stf-notify-hipchat.service
※監視系サービスのため今回は省略
stf-processor@.service
stf-reaper.service
stf-storage-plugin-apk@.service
stf-storage-plugin-image@.service
stf-storage-temp@.service
stf-triproxy-app.service
stf-triproxy-dev.service
stf-websocket@.service
stf-migrate.service
rethinkdb.service adbd.service
> docker使用しないので不要
stf-provider@.service
> stfコマンドで直接実行
省略 ECSへ以降 APで実行 ローカルで実行
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
ECS起動スクリプト
あとで整理してGitHubにあげます
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
デモ!
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
画面が出ない?
Copyright (C) CA Advance,inc
  ECSに乗せるにあたって
プロセス間通信
websocket 通常アクセス
画面ストリーム
これ
AWS
ローカル(お家 / その他)
NAT超えが必要・・・
Copyright (C) CA Advance,inc
まとめ
Copyright (C) CA Advance,inc
  まとめ
感想
• STFはOSS化してるためECSに移行するのは意外と簡単でした
• 必要なdockerイメージが公開リポジトリから全部取れる
• ECSの くせ になれるのに時間がかかりました
• dockerコマンドの書き方とか、cpuとかメモリの設定とか
その他
• プロセス間通信がセキュアじゃないので真似しないでください
• Direct Connect 利用すればOK.
• トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です
Copyright (C) CA Advance,inc
  まとめ
感想
• STFはOSS化してるためECSに移行するのは意外と簡単でした
• 必要なdockerイメージが公開リポジトリから全部取れる
• ECSの くせ になれるのに時間がかかりました
• dockerコマンドの書き方とか、cpuとかメモリの設定とか
その他
• プロセス間通信がセキュアじゃないので真似しないでください
• Direct Connect 利用すればOK.
• トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です
Copyright (C) CA Advance,inc
  まとめ
プロセス間通信
ここの通信が全部
平文です。
Copyright (C) CA Advance,inc
  まとめ
感想
• STFはOSS化してるためECSに移行するのは意外と簡単でした
• 必要なdockerイメージが公開リポジトリから全部取れる
• ECSの くせ になれるのに時間がかかりました
• dockerコマンドの書き方とか、cpuとかメモリの設定とか
その他
• プロセス間通信がセキュアじゃないので真似しないでください
• Direct Connect 利用すればOK.
• トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です。
↑ この件
Copyright (C) CA Advance,inc
  まとめ
プロセス間通信
これ
Copyright (C) CA Advance,inc
  まとめ
プロセス間通信
WebRTCに乗せてこうし
ようとしてます
Copyright (C) CA Advance,inc
  まとめ
ご静聴ありがとございました
Copyright (C) CA Advance,inc
質疑応答

Weitere ähnliche Inhalte

Was ist angesagt?

Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
RPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFgree_tech
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと心 谷本
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用gree_tech
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x AndroidToshiyuki Hirata
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようToshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Toshiyuki Hirata
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろgree_tech
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフToshiyuki Hirata
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることKazuaki KURIU
 
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・Yoshie Kaneno
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法Toshiyuki Hirata
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercariVishal Banthia
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築Toshiyuki Hirata
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割Toshiyuki Hirata
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Toshiyuki Hirata
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスToshiyuki Hirata
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例gree_tech
 

Was ist angesagt? (20)

Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
RPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoF
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例
 

Andere mochten auch

ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできることTomoaki Imai
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)Taketo Sano
 
Model View Presenter for Android
Model View Presenter for AndroidModel View Presenter for Android
Model View Presenter for Androidshinnosuke kugimiya
 
20160913 cookpad ios_jp
20160913 cookpad ios_jp20160913 cookpad ios_jp
20160913 cookpad ios_jpKazuaki Matsuo
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAmazon Web Services Japan
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Masahito Zembutsu
 

Andere mochten auch (7)

ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできること
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)
 
Model View Presenter for Android
Model View Presenter for AndroidModel View Presenter for Android
Model View Presenter for Android
 
20160913 cookpad ios_jp
20160913 cookpad ios_jp20160913 cookpad ios_jp
20160913 cookpad ios_jp
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
 
はじめての Elastic Beanstalk
はじめての Elastic Beanstalkはじめての Elastic Beanstalk
はじめての Elastic Beanstalk
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 

Ähnlich wie OpenSTFを ECSに乗せてみた話

AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介ssuser39314d
 
クロスプラットフォーム開発を可能にするMonaca
クロスプラットフォーム開発を可能にするMonacaクロスプラットフォーム開発を可能にするMonaca
クロスプラットフォーム開発を可能にするMonacaMonaca
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryKazuto Kusama
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonightAmazon Web Services Japan
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向NTT Software Innovation Center
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性JPCERT Coordination Center
 
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumiYahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumiYahoo!デベロッパーネットワーク
 
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」アシアル株式会社
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Shinichiro Arai
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
オールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みオールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みKazuto Ohara
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Shinobu Kawano
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るGo Miyasaka
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet ServicesNaoto Gohko
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化Fixstars Corporation
 

Ähnlich wie OpenSTFを ECSに乗せてみた話 (20)

AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
 
Ansible+Docker
Ansible+DockerAnsible+Docker
Ansible+Docker
 
クロスプラットフォーム開発を可能にするMonaca
クロスプラットフォーム開発を可能にするMonacaクロスプラットフォーム開発を可能にするMonaca
クロスプラットフォーム開発を可能にするMonaca
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud Foundry
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
 
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumiYahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
Yahoo! JAPANが実践するOpenStackと大規模環境でのコンテナ利用 #devsumi
 
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
オールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みオールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組み
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
 

OpenSTFを ECSに乗せてみた話

  • 1. Copyright (C) CA Advance,inc OpenSTFを ECSに乗せてみた話
  • 2. Copyright (C) CA Advance,inc 自己紹介 名前: 知花 司(ちばな つかさ) 所属: CA-Advance 技術統括本部 twitter: @chibana_555 趣味:ジョギング (よなよな浦添近辺を走ってますw) 癖:なんでもhogehoge だいたいアプリ側のエンジニアです。
  • 3. Copyright (C) CA Advance,inc • OpenSTFとは • STFのアーキテクチャ • なぜECSに乗せようと思ったのか • ECSに載せるにあたって • まとめ アジェンダ
  • 4. Copyright (C) CA Advance,inc OpenSTFとは
  • 5. Copyright (C) CA Advance,inc たくさんのAndroidスマートフォンをサーバーへ接続し、 ブラウザでのリモート操作を可能にするツールです。 今年7月にCyberAgentがOSSで公開し、 OpenSTFとして開発が続いております。 STFとは ブラウザ   OpenSTFとは https://www.cyberagent.co.jp/news/press/detail/id=10664
  • 6. Copyright (C) CA Advance,inc 百聞は一見に如かず   OpenSTFとは →デモ
  • 7. Copyright (C) CA Advance,inc STFのアーキテクチャ
  • 8. Copyright (C) CA Advance,inc   STFのアーキテクチャ Devices
  • 9. Copyright (C) CA Advance,inc Devices   STFのアーキテクチャ • ロードバランサ • APサーバー • DBサーバー • プロバイダ • 端末 X 160台以上
  • 10. Copyright (C) CA Advance,inc   STFのアーキテクチャ OS/MiddleWare
  • 11. Copyright (C) CA Advance,inc   STFのアーキテクチャ OS CoreOS クラスター構成を前提に設計された軽量OS  デーモン管理 systemd 従来のinitに変わるもの  クラスター管理 etcd クラスター間の状態監視とデータ共有  プロセス管理 fleet クラスター上のsystemdのプロセスを管理  実行環境 Docker プロセス実行 DB RethinkDB JsonDB Proxy, LB Nginx 説明不要ですね。 リソース監視 cAdvisor googleが開発した監視ツール dockerに対応している OS/MiddleWare
  • 12. Copyright (C) CA Advance,inc   STFのアーキテクチャ ただのOS クラスター管理 etcdクラスター上の systemdのプロセスの リーモート管理 STFはすべてDocker OS/MiddleWare
  • 13. Copyright (C) CA Advance,inc   STFのアーキテクチャ ちょっと蛇足ですが・・・ 「物理node100台以上、1000サービス以上はお勧めしません。対応するつ もりもありません。」 だそうです。 (fleetのREADME) https://github.com/coreos/fleet
  • 14. Copyright (C) CA Advance,inc Application   STFのアーキテクチャ
  • 15. Copyright (C) CA Advance,inc   STFのアーキテクチャ Frontend SPA AngularJS 1.X系 ビルド gulp + webpack Serverside AP NodeJS プロセス間通信 ZeroMQ プロセス間プロトコル Protocol Buffers 端末制御 ADB Application
  • 16. Copyright (C) CA Advance,inc   STFのアーキテクチャ プロセス間通信 websocket 通常アクセス 画面ストリーム 通信パターンは3種類あります。 通常アクセス • 静的コンテンツ、SPAの取得 • データ取得API等 websocketによる常時接続 • 端末制御系API等 画面キャプチャのストリーム • 端末に自動インストールされるプロセスからの画 像ストリーム これらはそれぞれ異なるプロセスで処理されます。 主な処理はwebsocketに実装されており、 websocketは内部でさらに分散されております。
  • 17. Copyright (C) CA Advance,inc   STFのアーキテクチャ プロセス間通信 https://github.com/openstf/stf/blob/master/doc/DEPLOYMENT.md websocket provider ブラウザのリクエストはwebsocketで protocolBuffersに変換され、 バックエンドではZeroMQで通信されます。 主な処理は processor で実行され、この プロセスは任意の数を起動でき容易に拡張 できる仕組みになっております。 また、providerでは接続された端末一つ一 つに対して dev というプロセスがフォー クされ、端末の制御を行っております。 主な処理はここ で行われる 接続された端末数分 フォークされる
  • 18. Copyright (C) CA Advance,inc   STFのアーキテクチャ adb connect の通信フロー adb connect 認証情報登録 認証 STFはadb接続機能も提供しております。 adb接続は、STF上でadbの認証情報(指紋)を 登録後に利用可能となります。
  • 19. Copyright (C) CA Advance,inc なぜECSに乗せようと思ったのか
  • 20. Copyright (C) CA Advance,inc   なぜECSに乗せようと思ったのか STFは全部docker 再掲 これに尽きます。。。
  • 21. Copyright (C) CA Advance,inc ECSに乗せるにあたって
  • 22. Copyright (C) CA Advance,inc   ECSに乗せるにあたって 現状の構成、物理ファシリティ 再掲 LB, AP, DB, Provider の4種類 端末接続が必要 なので無理
  • 23. Copyright (C) CA Advance,inc   ECSに乗せるにあたって ECS移行対象 AWS
  • 24. Copyright (C) CA Advance,inc   ECSに乗せるにあたって 起動しているサービス LB AP DB Provider proxy (nginx) stf-rev-proxy.service rethinkdb-proxy-28015.service stf-app@.service stf-auth@.service stf-log-rethinkdb.service stf-notify-hipchat.service stf-processor@.service stf-reaper.service stf-storage-plugin-apk@.service stf-storage-plugin-image@.service stf-storage-temp@.service stf-triproxy-app.service stf-triproxy-dev.service stf-websocket@.service stf-migrate.service rethinkdb.service adbd.service stf-provider@.service https://github.com/openstf/stf/blob/master/doc/DEPLOYMENT.md
  • 25. Copyright (C) CA Advance,inc   ECSに乗せるにあたって ECS移行後の構成 ※とりあえず最小構成で・・・ LB AP DB Provider proxy stf-rev-proxy.service rethinkdb.service rethinkdb-proxy-28015.service stf-app@.service stf-auth@.service stf-log-rethinkdb.service stf-notify-hipchat.service ※監視系サービスのため今回は省略 stf-processor@.service stf-reaper.service stf-storage-plugin-apk@.service stf-storage-plugin-image@.service stf-storage-temp@.service stf-triproxy-app.service stf-triproxy-dev.service stf-websocket@.service stf-migrate.service rethinkdb.service adbd.service > docker使用しないので不要 stf-provider@.service > stfコマンドで直接実行 省略 ECSへ以降 APで実行 ローカルで実行
  • 26. Copyright (C) CA Advance,inc   ECSに乗せるにあたって ECS起動スクリプト あとで整理してGitHubにあげます
  • 27. Copyright (C) CA Advance,inc   ECSに乗せるにあたって デモ!
  • 28. Copyright (C) CA Advance,inc   ECSに乗せるにあたって 画面が出ない?
  • 29. Copyright (C) CA Advance,inc   ECSに乗せるにあたって プロセス間通信 websocket 通常アクセス 画面ストリーム これ AWS ローカル(お家 / その他) NAT超えが必要・・・
  • 30. Copyright (C) CA Advance,inc まとめ
  • 31. Copyright (C) CA Advance,inc   まとめ 感想 • STFはOSS化してるためECSに移行するのは意外と簡単でした • 必要なdockerイメージが公開リポジトリから全部取れる • ECSの くせ になれるのに時間がかかりました • dockerコマンドの書き方とか、cpuとかメモリの設定とか その他 • プロセス間通信がセキュアじゃないので真似しないでください • Direct Connect 利用すればOK. • トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です
  • 32. Copyright (C) CA Advance,inc   まとめ 感想 • STFはOSS化してるためECSに移行するのは意外と簡単でした • 必要なdockerイメージが公開リポジトリから全部取れる • ECSの くせ になれるのに時間がかかりました • dockerコマンドの書き方とか、cpuとかメモリの設定とか その他 • プロセス間通信がセキュアじゃないので真似しないでください • Direct Connect 利用すればOK. • トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です
  • 33. Copyright (C) CA Advance,inc   まとめ プロセス間通信 ここの通信が全部 平文です。
  • 34. Copyright (C) CA Advance,inc   まとめ 感想 • STFはOSS化してるためECSに移行するのは意外と簡単でした • 必要なdockerイメージが公開リポジトリから全部取れる • ECSの くせ になれるのに時間がかかりました • dockerコマンドの書き方とか、cpuとかメモリの設定とか その他 • プロセス間通信がセキュアじゃないので真似しないでください • Direct Connect 利用すればOK. • トラフィックが半端ないです。沖縄の一般回線じゃ実運用無理です。 ↑ この件
  • 35. Copyright (C) CA Advance,inc   まとめ プロセス間通信 これ
  • 36. Copyright (C) CA Advance,inc   まとめ プロセス間通信 WebRTCに乗せてこうし ようとしてます
  • 37. Copyright (C) CA Advance,inc   まとめ ご静聴ありがとございました
  • 38. Copyright (C) CA Advance,inc 質疑応答