Upload
ryuichi-ueda
View
878
Download
1
Embed Size (px)
DESCRIPTION
実際に使った発表資料を少しマイルドにしてあります。
Citation preview
第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
コマンドとシェルスクリプトで企業システムを作る
― USP 研究所の取り組み
有限会社ユニバーサル・シェル・プログラミング研究所
上田隆一
2第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
本日の発表内容
1. 会社の話
ちゃんと仕事をしている
2. 技術の話
かなり独創的
3. お知らせ
「 かなり独創的な方法で、ちゃんと仕事をしている話」(そしてお知らせも聞いてください)
3第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
その前に自己紹介(誰?)
名前:上田隆一 USP 研究所社員 @ uecinfo USP 友の会
会長 @usptomo の中の人 bash で CGI を書く人
その他 連載:開眼シェルスクリプト( SD 誌) 「Ryuichi Ueda robotics」で検索
4第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
USP 研究所 シェルスクリプトでシステム開発する会社
社員数:20人++ 元受け・少人数で開発・自社開発指導
5第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
自社開発指導
顧客企業の情報システム部にて・・・ CUI で OS を使う講習 vim の講習 awk sed ・ の講習 シェルスクリプトの書き方講習 イントラ用 CGI の書き方講習 ・・・
6第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
「 いわゆる SI 業界」の常識
ウォーターフォール
「 どの RDBMS(以下 DB)を入れるか」から始まる
7第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
なぜそうなるか?
問い
A) 実績ある企業(見積もり1億円)
B) 知らない企業(見積もり3千万円)
最終的にどっちが選ばれるか分からないが、B は警戒される。
「 あなたは長年卵焼きを製造販売している会社の社長です。最近、1台の卵焼きマシーンがへたってきました。予算1億円、納期半年で新型マシーンを発注したいと考えています。どこに頼みますか?」
8第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
システム開発は(卵焼きマシーンより)厄介
見えない 「 安い」といわれても実物がどんなものになるか分からない
完成と同時に分かる
失敗リスク 抱える人・ものが多くなる
9第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
そんなに人がいない。どう戦うか?
実績をコツコツと 自分たちで作ってもらう
仲間作り 我々の取り組みを知ってもらう
失敗しない仕組みを 人 マニュアル 見通しのよいアーキテクチャ
10第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
USP手法(ユニケージ)
コマンド+シェルスクリプト
データをテキストファイルで持つ ファイルシステムを使う
余計なソフトウェアを入れない(ブラックボックスを作らない)
コマンド、 apache NFS、 、その他標準のもの
データを整理整頓するノウハウの塊 自由度の高いファイルシステムにデータ基盤を作る
11第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
データの整理整頓(レベル分け)
実社会でのデータの流れを意識 データ基盤の構築
受け取った伝票は捨てないで綴じておく →レベル1 綴じた伝票をノートに全部書き出して台帳とする →レベル2 台帳からなにか統計データを集計する →レベル3
データを利用するアプリケーション 統計データを加工、聞かれたら答えるデータを準備 →レベル4 (レベル5もある)
12第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
実物 ―ウェブサイトのアクセス解析
ごちゃごちゃしたログをグラフィカルに表示するまで レベル1→4のプロセスを踏む
生のログウェブ画面
13第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
レベル1
レベル2 キーを左に、キーの整形・ソート、 awk で扱える形式
$ tail -n 1 access_log1.2.3.4 - - [21/Apr/2012:06:15:10 +0900] "GET /TUKUBAI_MAN/CGI/TUKUBAI_MAN.CGI?POMPA=MAN1_yarr HTTP/1.1" 200 16814 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
$ tail -n 1 ACCESS_LOG.CURRENT20120421 062410 1.2.3.4 - - GET_/COMMON/HTML/rss20.xml_HTTP/1.1 304 - - Feedfetcher-Google;_(+http://www.google.com/feedfetcher.html;_6_subscribers;_feed-id=4796065779311373044)
14第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
レベル3 項目別に集計 様々な切り口で
有意な情報を作成
$ tail VISIT/VISIT_COUNT.HOUR20120420 18 620120420 19 520120420 20 420120420 21 520120420 22 420120420 23 2220120421 00 7820120421 01 2320120421 02 1020120421 03 7
例)時間ごとの訪問者数
15第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
レベル4 表示する形式にしておく
$ cat HIT.ACCUM89138$ cat UPDATE.TIME2012 年& nbsp; 4月& nbsp;21 日& nbsp;土曜日& nbsp;06:40:01 JST$ tail -n 5 VISIT_COUNT.HOUR.REV20120406 09 520120406 08 420120406 07 620120406 06 420120406 05 1
16第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
「DB を使う」方法との差異
DB v.s. テキスト という話ではない 「DB を使う」は道具の話 レベル1-5はアーキテクチャの話なのでもっと親切
データを整理して失敗を避ける仕組み
レベル1-5を実現する道具: DB よりも生の UNIX DB は木構造の概念が薄い→ディレクトリの方が便利 ファイルからファイルへの変換は伝統的な UNIX そのもの
ファイルの入力リダイレクト => コマンド => パイプ => コマンド => 出力リダイレクト
17第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
USP手法(ユニケージ)
コマンド+シェルスクリプト コマンド
C言語で爆速
シェルスクリプト プログラムというよりは、レベル間をつなぐ変換器
(データの方が大事)
データをテキストファイルで持つ 余計なソフトを入れない( black box を作らない)
データを整理整頓するノウハウの塊
18第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
デモ
ログファイル変換のシェルスクリプト 速いソート オープン版
19第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
もし興味があったら・・・
usp engineers' community (UEC) https://uec.usp-lab.com, @uecinfo
Open-usp-Tukubai オープン版で SQL ライクな処理をするコマンドを公開 GitHub, FreeBSD ports /usr/ports/devel/open-usp-tukubai/ ( )
SoftwareDesign 連載: 「開眼シェルスクリプト」
20第七回 カーネル/VM探検隊 2012/4/22 @東京 © usp lab. 2012
おわりに
USP 研究所は・・・ ファイルシステム上にデータを整理 UNIX系 OS を極限まで使用 爆速を目指す