Boost.勉強会 #13 @仙台 鳥小屋

1,148 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,148
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Boost.勉強会 #13 @仙台 鳥小屋

  1. 1. ツイターの皆様からの声 2013/10/19 Boost.勉強会 #13 @仙台
  2. 2. ( ◔⊖◔)...
  3. 3. 鳥小屋を支える技術 & 問題点 ま あり 進捗 !! す! 2013/10/19
  4. 4. 自己紹介 アッ、ぶんちょうです @yutopp C++とか文鳥とか好きです。
  5. 5. 鳥小屋 is 何 ● いわゆるオンラインコンパイラ・実行環境 ○ wandbox ○ ideone ○ codepad ● ユーザーが投げたコードをサーバー側で実行 し、結果を返す ● http://sc.yutopp.net/
  6. 6. 作った理由 ● オンラインコンパイラの処理系は更新が遅いも のが多い ● 競技プログラミング用のジャッジサーバーなど のセキュリティに興味があった ● iPadなどのタブレットで簡単にコードを実行でき る環境が欲しかった
  7. 7. 将来的に ● 実際にジャッジサーバーとして使ったり ● 様々なバージョンの処理系・ライブラリを用いた コードの検証に使えるように
  8. 8. 実装
  9. 9. !!!問題点だらけな ので アイディアを下さ い!!!
  10. 10. 鳥小屋用の処理系 構成 ビルド サーバー ● 実行ノード ● ビルドサーバ ● フロントエンド S3 GCCやBoostなどのビ ルド フロントエンド Rails タスク 管理 キュー ソースコードや入力など ソースコード バイナリ 実行結果 実行ノード
  11. 11. 実行ノード ● コードを実際に実行するサーバー群 ● Amazon EC2(Amazon Linux)を利用 ○ 万が一破壊された場合は使い捨て ● データの通信にmsg packを利用 ● セキュリティは最低限 ○ ネットワークの利用 ○ ユーザーによる別プロセスへの干渉など
  12. 12. 実行ノード(sandbox) ● ● ● ● ユーザーの操作一つをタスクとする タスク一つの実行につき、実行ユーザーを生成 実行環境を整えた後、権限を奪いまくる その他、ネットワークなどのLinux名前空間を分 ける
  13. 13. 実行ノード(sandbox) ● ptraceやsecomp-bpfも使ってみたい ○ C++ Compiler Firmなど ● Amazon Linuxのkernelが古い ○ つらい ● せめてchrootとか
  14. 14. ビルドサーバー ● 実行ノードで利用するバイナリをビルドする ● Amazon EC2(Amazon Linux)を利用 ○ 使いたいときに使いたいだけ ● 実行ノードと環境が同じなので、ひたすらビルド する ● バイナリをRPMに詰めて、各実行ノードに配信 (S3 bucketで共有)
  15. 15. フロントエンド ● 末端のデータ管理 ○ ユーザー管理 ○ ソース管理 ○ タスクキューイング ● データベースにMongoDB ● Ruby on Rails4 ● 実行ノードなどとのやり取りにmsgpack
  16. 16. 問題点がザクザク ● セキュリティの問題 ○ sandboxがやっつけに近い ○ 内部の破壊 ● ビルドサーバーでRPM化が失敗しまくる ○ checkinstallがアアアッ ● 文鳥用のプログラミング言語が載っていない ○ 文鳥言語をBoost.Spirit.QiとLLVMを使って作ってみて る
  17. 17. これから ● sandboxの強化 ● ビルドサーバーの安定化 ● APIの提供
  18. 18. 鳥小屋たのしい ヤッター!!! ありがとうございました

×