クラウドを 使 いこなす 技 術 その 到 達 点 RACK Real Application Centric Kernel 金 子 雄 大
アジェンダ CTCのクラウドビジネス CTCが 考 える Cloud Native Cloud Native Application を 実 現 する RACK Cloud Native Application のデモ コミュニティ 活 動 1
CTCのクラウドビジネス 2
CTCのクラウドビジネス 第 2プラットフォーム 基 幹 システム EDBMS ERP FileServer 第 3プラットフォーム BigData Mobile M2M IoT Social TechnoCUVIC ElasticCUVIC (Virtustream) (Cisco) クラウドインテグレーション 運 用 サービス OpenStack AWS Softlayer Windows Azure HP Helion Cisco CTC DC パートナーDC 3
今 日 のお 話 第 2プラットフォーム 基 幹 システム EDBMS ERP FileServer 第 3プラットフォーム BigData Mobile M2M IoT Social TechnoCUVIC ElasticCUVIC (Virtustream) (Cisco) クラウドインテグレーション 運 用 サービス OpenStack AWS Softlayer Windows Azure HP Helion Cisco CTC DC パートナーDC 4
OpenStackへの 取 り 組 み OpenStack 基 盤 構 築 OpenStack/クラウド 活 用 クラウドネイティブ オープンハードウェア OpenCompute Project ブロックストレージ SolidFire クラウドOS Mirantis オブジェクトストレージ CleverSafe PaaS 実 行 環 境 Pivotal Web API 統 合 プラットフォーム apigee クラウドネイティブ 環 境 の 実 現 CTC RACK Real Application Centric Kernel Cloud Native Application Cumulus Netwoks ネットワークファブリック Penguin Computing Web UI / オーケストレータ オリジナル 開 発 process process process RACK (Kernel) ログ 統 合 Splunk バージョン 管 理 Github 監 視 (Zabbixなど) ビルド 管 理 (Jenkinsなど) 構 成 管 理 /デプロイエンジン (Chef/Ansibleなど) テスト 自 動 化 (Serverspecなど) compute network storage 5
CTCが 考 える Cloud Native 6
いかに 作 るか から いかに 使 うか の 段 階 へシフト OpenStackは 使 えるか? の 議 論 はすでに 終 了 OpenStackをいかに 活 用 するか? が 現 在 のテーマ 非 テクノロジー 企 業 による 海 外 事 例 BMW : 車 メーカー Expedia : 旅 行 サイト BBVA : 大 手 銀 行 OpenStack Summit 2014 Paris 7
システムの Cloud Native 化 システムを Cloud Native にすることで Cloud のメリットを享受できる そのまま移行 monolithic single-tiered legacy Cloud Native化 Chef/Puppet... http://www.ctc-g.co.jp/ 8
Cloud Native なシステムとは? Designing for the cloud http://docs.openstack.org/arch-design/content/designing-for-the-cloud.html Be a pessimist Put your eggs in multiple baskets Think efficiency Be paranoid But not too paranoid Manage the data Hands off Divide and conquer Think elasticity Be dynamic Stay close Keep it loose Be cost aware すべてのものは 壊 れると 思 え マルチプロバイダ リージョン AZを 活 用 せよ 移 植 性 の 高 いアプリケーションにせよ 自 動 化 を 活 用 せよ Cloud APIの 活 用 コンポーネントは 小 さくせよ 9
高 度 で 複 雑 な Cloud Native システム アプリケーション 自 身 はCloud APIを 使 用 しない Cloud Native システムのイメージ 基 本 的 なアプリケーションのデザインは 従 来 と 変 わら ないため スケーリング 等 の 自 動 化 にはオーケストレー ションツールなどが 必 要 となる クラスタにJoin Serf デプロイ API openstack Cloud Native なシステムは 運 用 管 理 が 高 度 で 複 雑 なものとなる インスタンス 追 加 Chef / Puppet / Ansible 10
CTCが 考 える 真 の Cloud Native アプリケーションが 自 らCloud APIをコントロールし 自 律 的 にスケールするデザインにする Cloud Native Application 連 携 して 動 作 自 らデプロイし クラスタにJoin インスタンス 追 加 API openstack 11
Cloud Native Application を 実 現 する RACK 12
どうやって Cloud Native Application を 実 現 するか? Non Cloud Native Application Cloud Native Application API openstack Chef / Puppet / Ansible API openstack 13
Linux プロセスモデル source compile libraries httpd executable binary options content indication line display range output format fork fork launch(exec) shared memory/pipe process process process signal Linux filesystem 14
Cloud Native Applicationのモデル プログラム source compile ライブラリ libraries middleware OS fork process fork process VM Template psコマンド executable binary process openstack options launch(exec) 表 option1 示 内 容 表 option2 示 範 囲 出 option3 力 形 式 shared memory/pipe signal filesystem 15
RACK -Real Application Centric Kernel- Cloud Native Application の実行環境の提供 シンプルで簡単なプログラミング環境の提供 Cloud Native Application リソースの抽象化 VM ネットワーク ストレージといった個別のリソースを抽象化し Unixライクな process としてプログラムから操作可能にする process process process RACK (Kernel) process 起動確認 process(vm) 内部のアプリケーションが正常に動作しているかを 確認する プログラム上では隠蔽される compute process 間連携機能の提供 process 間でのデータ共有 シグナル通知といった機能をプログ ラムから操作可能にする http://www.ctc-g.co.jp/ network storage openstack 16
RACKのアーキテクチャ RACK の 構 成 要 素 API ライブラリ (プロセス 間 連 携 に 利 用 するソフトウェア 群 ) Application RACK server openstack Process(VM) API Nova API rackclient Neutron API Redis Process(VM) rackclient プロセス 間 連 携 Websocket Swift Keystone API 17
RACK を 使 ったプログラミング 例 (Python) def parent(args_list): children = fork(args_list) results = pipe.read() file.write( result.txt, results) Parent write File System def child(args): result = something(args) pipe.write(result) fork RACK API read Pipe if name == main : if not ppid: parent(args_list) else: child(args) Child Child write 18
Cloud Native Application のデモ 19
円 周 率 近 似 値 計 算 アプリケーション モンテカルロ 法 というシミュレーション 手 法 を 利 用 する 実 行 過 程 で 大 量 の 乱 数 生 成 処 理 が 発 生 する 大 量 のCPUリソースを 必 要 とする Parent Child Child Child 自 律 的 にスケールアウト(fork)する 並 列 処 理 で 高 速 に 動 作 する 処 理 が 終 われば 自 らkillする CPUリソースをスケールアウトする 20
円 周 率 近 似 値 計 算 アプリケーション montecarlobinary 試 行 回 数 プロセス 数 出 力 先 boot 親 プロセス 子 プロセスをForkする 子 プロセスの 終 了 を 待 つ 子 プロセスの 出 力 結 果 を 集 計 してレ ポートを 出 力 する 子 プロセス シミュレーションを 実 行 する 結 果 を 親 に 通 知 する 21
実 行 と 結 果 実 行 結 果 rack process-create --image montecarlo --args trials=1000000, workers=3, stdout=/output/result.txt +----------+-------------------+ Property Value +----------+-------------------+ trials 1000000 workers 3 points 785444 pi 3.14159265359 result 3.141776 error 0.00018334641 time 63.4065971375 +----------+-------------------+ 22
Demonstration 23
処 理 フロー $ rack process-create RACK Functions Parent API boot Pipe put File System binary send results deploy Child Child Child Child 24
分 散 ファイル 解 析 アプリケーション 膨 大 な 数 のファイルを 一 度 に 処 理 する grepやsedといった 簡 単 なコマンドをクラウドスケールで 実 行 する Parent Child Child Child 自 律 的 にスケールアウト(fork)する 並 列 処 理 で 高 速 に 動 作 する 処 理 が 終 われば 自 らkillする CPUリソースのスケールアウト IOの 分 散 25
分 散 ファイル 処 理 アプリケーション シェルコマンド distributedshellbinary boot クラスタ 数 入 力 ファイルパス 出 力 ファイルパス 親 プロセス コマンド 解 析 子 プロセスをFork 子 プロセスの 処 理 を 待 つ 子 プロセス ファイルを 取 得 コマンドを 実 行 してファイルを 処 理 結 果 を 出 力 26
実 行 と 結 果 実 行 結 果 rack process-create --image distributed-shell --args command= grep foo grep bar, stdin=/input, stdout=/output foo bar foo bar foo bar foo bar 27
処 理 フロー $ rack process-create input files output files RACK Functions API File System put fork boot Child (grep) Pipe Child (sed) binary deploy Child (grep) Pipe Child (sed) Parent Child (grep) Pipe Child (sed) 28
パフォーマンス( 円 周 率 近 似 値 計 算 アプリケーション) 試 行 回 数 が 増 えても 実 行 時 間 は 一 定 試 行 回 数 を 増 やすほど 精 度 が 向 上 29
RACKの可能性 RACKはその名の通り Kernel としての役割を果たす その上で動かすアプリケーションは自由に開発することができる Mobile BigData process IoT process Analytics process RACK (Kernel) compute network openstack storage http://www.ctc-g.co.jp/ 30
コミュニティ 活 動 31
OpenStack Community OpenStack プロジェクトを運営している OSS コミュニティ ソースコード レビュー管理システムなどの開発関連ツールの提供や OpenStack Summit の運営などを行っている RACK もこのコミュニティで開発を行っており 誰でも開発に参加可能である https://github.com/stackforge/rack https://wiki.openstack.org/wiki/rack http://www.ctc-g.co.jp/ 32
OpenStack Summit 2014 Paris OpenStack Summit で RACK を 発 表 海 外 の 開 発 者 たちからの 注 目 評 価 を 得 た 開 催 場 所 :フランス 開 催 期 間 :2014 年 パリ 11/3~11/7 https://www.openstack.org/summit/openstack-paris-summit-2014/session-videos/presentation/the-road-to-a-openstacknative-application-what-if-vms-are-treated-as-linux-processes 33
Cloud Native Hackathon Cloud Native Application/RACK に 関 する 勉 強 会 ハッカソン 等 を 企 画 予 定 オープンな 場 での 意 見 交 換 やアプリケーション 開 発 を 通 して Cloud Native Application の 可 能 性 を 広 げていきたい 34
Thank you!