Teremkaスタイルのプログラミング

彼は翻訳をできる限り正確にしようとし、会社の名前のみを変更しました。これは例として使用されていますが、小売業の範囲と原則は元のものと似ています。



テレムカメニューの各パンケーキは、約8成分のセットです。 このような単純な元素周期表により、同社は昨年19億ドルを稼いだ( いいえ、Teremokではなく、Taco Bellである )。

システムをプログラムし、設計すればするほど、多くの場合、Unixから提供されたツールの基本セットを簡単に組み合わせることで目的の結果を達成できることがわかります。 結局、機能は価値であり、コードは借金です。 この声明は、システム管理者が開発者を支援する単体テストやその他のことを書き始めるDevOps( developer-admins )の不条理な傾向の反対であり、Teremkスタイルのプログラミングは管理(そして一般的にUnix )車輪を再発明せず、シンプルでスケーラブルなソリューションを考案します。



具体的な例を次に示します。数百万のWebページをダウンロードして、さらに処理するためにディスクに書き込む必要があるとします。 どうやってやるの? 小さな子供たちは、Clojureで分散スパイダーを作成し、それをEC2で実行し、SQSまたは0MQを使用して通信する必要があると言うでしょう。



xargsおよびwget。 インターネットチャネルを詰まらせるまれなケースでは、splitとrsyncを追加できます。 「分散スパイダー」は、実際にはシェルスクリプトのコードの約10行のみです。



次に、これらの数百万(または数千万)のページを取得したら、それらをどのように処理しますか? もちろん、Hadoop MapReduceが必要になるのは、結局のところ、GoogleがWebページを処理する方法ですか?



ブエ、このナンセンスで地獄に:



crawl_dir / -type f -print0 | xargs -n1 -0 -P32 ./process



32個の並列プロセスとサポートするゼロスラーコード。 要件は満たされています。



コードを記述するか、サードパーティのサービスを使用するたびに、システムに障害が発生する可能性があります。 Hadoopよりもxargsの方がずっと信頼しています。 はい、私は実際にマルチスレッドハンドラの記述において、xargsを自分よりも信頼しています。 syslogは、キューサービスよりも多くのメッセージを非同期に書き込むと信じています。



Teremkスタイルのプログラミングは、Unix Zenへのステップの1つです。 これが私が始めたばかりの道ですが、配当はすでに流れ始めています。 実際に入力するには、システムをどのように設計するかについて多くの考えを捨てる必要があります。SOAPサーバーのほとんどは、静的ファイルとApache mod_rewriteを使用して作成しました。 sedを理解するだけの強さを見つけたなら、すべてがTeremkのスタイルでできていたかもしれませんが、私は怖くなり、Pythonで何かを書きました。



Zenの観点から考えたくない場合は、資本主義の観点から考えてください。テーブルに食べ物を置くコードを書きます。 よく知られているツールを使用してリスクを軽減するか、未知の土地に入ることができます。 会議でスピーチをするように招待されることはおそらくないでしょうが、作業は完了し、ページャーは夜間に電源を切らないようにすることができます。



All Articles