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