ブックマーク / postd.cc (13)

  • Dockerコンテナが遅くなるもう一つの原因 | POSTD

    前回の ブログ記事 では、Kubernetesの話と、 ThoughtSpot がKubernetesを開発インフラのニーズに合わせてどのように取り入れたかをご紹介しました。今回はその続報として、最近の興味深いデバッグ経験について少々駆け足になりますがお話ししていきます。記事も「コンテナ化と仮想化はノットイコールである」という事実に基づいており、たとえcgroupの上限がどれも高くない値に設定されホストマシンで十分な演算能力が利用できるとしても、コンテナ化されたプロセス同士がリソースの競合を起こす場合があることを示したいと思います。 ThoughtSpotでは内部のKubernetesクラスタで 多数のCI/CDや開発関連のワークフロー を稼働させており、ある1点を除いては全てが順調でした。唯一問題だったのは、ドッカー化された製品コピーを起動すると、パフォーマンスが期待を極端に下回るレベ

    Dockerコンテナが遅くなるもう一つの原因 | POSTD
    dekokun
    dekokun 2018/04/27
  • 強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 1. | POSTD

    これは Craft Conference 2015 で私が行った 講演 を編集して記事にしたものです。その時の 動画 と スライド もご覧頂けます。 あなたのデータベースは、どのようにして確実にデータをディスクに保存しているのでしょう? ログを使っているのです。 データベースのレプリカは、どのようにして他のレプリカと同期するのでしょう? ログを使っているのです。 Raft などの分散アルゴリズムはどのようにして合意を取っているのでしょう? ログを使っているのです。 Apache Kafka などのシステムでは、アクティビティデータはどのように記録されるのでしょう? ログを使っているのです。 あなたのアプリケーションのデータ・インフラストラクチャはどのように規模相応の堅牢性を保つのでしょうか? 答えは・・・ ログは至るところにあります。私はプレーンテキストのログファイル(sysloglog

    強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 1. | POSTD
    dekokun
    dekokun 2016/05/08
  • 強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 2 | POSTD

    PART 1.はこちら : 強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 1. ログが使われる場面について4つ説明したいと思います。まずデータベースストレージエンジンの内部です。 B-tree はアルゴリズムの授業で学びましたよね? ストレージエンジンに広く使われているデータ構造です。ほぼ全てのリレーショナルデータベースと、多くの非リレーショナルデータベースで使われています。 B-treeについて簡単に説明しましょう。B-treeは、ディスク上で固定長のブロックとなる ページ から構成されており、通常、その固定長は4KBか8KBです。ある特定のキーを探したい時は、まずtreeのルートにあるページから探索を始めます。そのページは他のページへのポインタを内包していて、各ポインタはキーのレンジ(範囲)にタグ付けられています。例えば、もしキー

    強固なデータ・インフラストラクチャを構築するためのログの活用(デュアル書き込みがダメな理由)PART 2 | POSTD
    dekokun
    dekokun 2016/05/08
  • イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD

    この投稿は、私が去年OSCONで行ったプレゼンテーションを基に作成しています。プレゼンよりは簡潔に編集し直し、プレゼン後にいただいたいくつかのフィードバックに応える形で記事を書いています。 Go言語に関してよく言われるのは、Go言語はサーバでうまく機能し、静的なバイナリや強力な並行処理、高いパフォーマンスを見せくれるということです。 この投稿では、その後半の2つの項目に関して焦点を当てます。プログラマとってGo言語とそのランタイムは、スケーラブルなネットワークサーバをスレッド管理やブロッキングI/Oを気にせずに書くのにどんなに有効かを説明していきます。 効率的なプログラミング言語に関しての議論 技術的な話に入る前に、Go言語をターゲットにしたマーケットを説明する2つの議論に関してお話したいと思います。 ムーアの法則 画像は以下より引用; 2005年5月にHerb Sutter氏が書いたDr

    イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD
    dekokun
    dekokun 2015/09/15
  • サーバの負荷テストのための、何百万ものHTTPリクエストを発生させる方法 | POSTD

    (注記:6/9、いただいた翻訳フィードバックを元に記事を修正いたしました。) 今回の記事は毎秒300万ものリクエストを処理できるほど強力で高性能なWebクラスタの構築についてのパート1になります。まず初めに、あまり多くはありませんが、私がこれまで使用したことのあるロードジェネレータツールをいくつか紹介します。私のようにてこずって時間をかけてしまわないよう、今回の記事が理解の手助けになれば幸いです。 ロードジェネレータはテストを目的とした数種類のトラフィックを発生させるプログラムです。それによって高負荷においてサーバがどのように動いているか、そのサーバの弱点はどこなのか、などが見えてきます。負荷テストを通じてサーバの限界を知ることは、サーバのレジリエンシーを測定する最適な方法であり、あらゆる問題に対する準備の手助けにもなります。 ロードジェネレータツール 負荷テストをする際に頭に入れておくべ

    サーバの負荷テストのための、何百万ものHTTPリクエストを発生させる方法 | POSTD
    dekokun
    dekokun 2015/06/06
    「ツング」って読めばいいんですか?
  • なぜsystemdなのか? | POSTD

    このブログ記事は2014年5月21日に行った私の講演の内容に基づいています。 ここ数年、GNU/LinuxのディストリビューションはSysV initを避ける傾向にあり、代わりに多種多様な新しいinitシステムへと移行が進んでいます。SysV initに満足しているユーザにとっては、これは予想外の流れでしょう。問題なく使えるのに、なぜ多くのディストリビューションはSysV initに背を向けているのでしょうか。 この記事ではSysV initの問題点と、それに対してsystemdがどんな解決法を提供しているのか説明してみようと思います。 私は特にsystemdの大ファンだというわけではなく、ただ広く使われているツールだという認識以上の思い入れは無いことだけお断りしておきます。 initシステムの役割とは何か? コンピュータが起動する時には、ビルトインされたファームウェア(コンピュータの場合

    なぜsystemdなのか? | POSTD
    dekokun
    dekokun 2015/05/09
  • ReactをjQueryの数行に要約する | POSTD

    Reactが素晴らしい理由は、UIをアプリケーションの状態の純粋関数にできるからだ」いうような話を聞いたことがあるでしょう。しかしそれだけではなく、不変性と仮装DOMを利用して動作するということも聞きますよね。その上、保存、読み込み、取り消し、それにタイムトラベル・デバッグと呼ばれるすごい機能まで自由に手に入れられる。でも知っていますか? Reactの核となるアイデアを利用し、その恩恵に預かるのにこれらのことは必要ありません。jQueryの数行にしてお見せします。 <span id="colored-counter">0</span> <input id="color"></input> <button id="inc"></button> <script> $('#color').on('keyup', function () { $('#colored-counter').css('

    ReactをjQueryの数行に要約する | POSTD
    dekokun
    dekokun 2015/04/21
    1. グローバルな一つの状態をもちそいつだけを更新させUIをその状態にすることで組み合わせ爆発を防ぐ 2. そこで問題になる速度低下をvirtualdomで解決 3. virtualdomで速度のために重要な差分更新をどうするか という流れのお
  • Angularとの2年間 ー これからAngularを使う人への薦め | POSTD

    判決: まあまあ(でもないか) 一体何の話なのか? 私は2年間、Angularにのめり込んでいました。 それぞれの考えを持つさまざまなチームによる、10以上のAngularベースのプロジェクトを見守り、関わってきました。 1年目はフレームワークの採用、APIの変更、ドキュメントの改良、コミュニティの形成を注視して過ごし、徹底的に習得しました。 2年目は実務に全面的に携わり、チームメンバーの意見を聞きました。 私の意見は、 Angular.jsは大多数のプロジェクトには“まあまあ”だが、格的なWeb アプリ開発には不十分である ということです。 “格的なWebアプリ”とは? “格的なWebアプリ”というのは、長期の 保守が可能 で、最新の一般的なブラウザで 実行できる 、 スムーズなUX を備えた、 モバイルフレンドリー なアプリのことです。 専門家が開発したWebアプリは単なるアプリ

    Angularとの2年間 ー これからAngularを使う人への薦め | POSTD
    dekokun
    dekokun 2015/01/19
    基本的に本格的なプロジェクトではAngularは使うなという話。
  • コーディング ファスト&スロー: 開発者と自信過剰の心理 | POSTD

    今日は、開発者が見積もりを作成している時に脳内でどんなことが起きているのか話してみたいと思います。なぜこんなにも見積もり作業が難しいのか、そして、私の見積もり精度は相変わらずひどいものですが、私がどうやって(非常に幸せな事業主の方々に向けて)ソフトウェアを書いて生計を立てる術を編み出してきたのかについてお話ししたいと思います。 まずは昔話をひとつ。 あれは\<私がものすごく年寄りには見えない程度の年代をここに挿入>頃でした、私は年若き開発者でした ^(1) 。大学のコーディング演習では優秀な成績を修め、若手開発者として誰がどんな問題を提示してきても解決し、想像を絶する速さでどしどしコードを量産していました。新しい言語は週末の間に習得し、書けるようになっていました(少なくともそう信じていました)。 それで自然な流れとして自分でプロジェクトを取り仕切ることになりました。アカウント・マネージャが

    コーディング ファスト&スロー: 開発者と自信過剰の心理 | POSTD
    dekokun
    dekokun 2014/12/30
    長期の見積もりは大抵大きく外れる。短期の見積もりは大抵当たる。でも短期の見積もりを重ねれば正確な見積もりができるってわけでもないね。短期の見積もりも激しく外れる(数百倍になったり)こともあるねって話。
  • Haskell製サービスを本番投入 | POSTD

    thoughtbotはWebとモバイルアプリを開発するWebコンサルティング会社。Railsの有名プラグインであるPaperclipやFactory Girlなどのオープンソースプロジェクトや、自社プロダクト(hound、Upcase)も開発している。ボストンをベースに、サンフランシスコ、デンバー、ニューヨーク、フィラデルフィア、ローリー、ストックホルムにオフィスを持っている。 数週間前、私たちはGiant Robotブログで新しいコメント機能をひそかにリリースしました。パラグラフやコードブロック上でホバーすると、右側に小さなアイコンが表示され、その記事の該当するセクションにコメントできる機能です。 この機能を公開して、これまでずっと言いたかったことがようやく言えます。ついにHaskellのサービスを一般出荷しました! ここでは、リリースの概要および仕組みを説明し、私たちが遭遇したさまざま

    dekokun
    dekokun 2014/10/06
  • Dockerコンテナ内でsshdを実行してはいけない理由 | POSTD

    Dockerを使い始めた人がよくする質問といえば、「どうすればコンテナに入れますか?」です。その質問に対して、「コンテナ内でSSHサーバを起動すればいいよ」と答える人たちがいますが、これは非常にマズいやり方です。なぜその方法が間違いなのか、そして代わりにどうすればよいのかをこれから紹介します。 注:記事へのコメントやシェアは、 Dockerブログ にアップされた標準版から行ってください。よろしくお願いします。 コンテナでSSHサーバを起動すべきではない …もちろん、コンテナ自体がSSHサーバである場合は除きます。 SSHサーバを起動したくなる気持ちは分かります。それはコンテナの”中に入る”簡単な方法だからです。この業界の人ならほぼ全員がSSHを一度は使ったことがあります。多くの人がSSHを日常的に使用し、公開鍵や秘密鍵、パスワード入力の省略、認証エージェント、そして時にはポート転送やその

    Dockerコンテナ内でsshdを実行してはいけない理由 | POSTD
    dekokun
    dekokun 2014/09/11
    世の中にはいろいろなことにいろいろな方法がある。
  • まずコードの可読性を最適化しよう | POSTD

    最近では 最適化 という言葉を使う場合、GPUメモリ消費やネットワークトラフィックの最適化、などと明示的に言わない限りは、 実行時間の最適化 という意味で使われるケースがほとんどです。 自分が何を最適化しようとしているかを知ろう 私がプログラムを始めた頃、プロセッサの処理能力は遅く、メモリサイズもとても限られていて、キロバイト単位で計算されていました。ですからメモリ容量をよく考え、メモリ消費を上手に最適化しなくてはなりませんでした。大学では最適化について2つの極論を教わりました。 メモリを犠牲にして実行スピードを最適化する。 または何度も計算を繰り返して、メモリ消費を最適化する。 最近では誰もメモリについては大して気にしていません(デモシーン製作者、組み込みシステムのエンジニア、一部の携帯電話ゲームのディベロッパなどは別です)。RAMだけでなく、ハードディスクの容量についても同様です。 W

    まずコードの可読性を最適化しよう | POSTD
    dekokun
    dekokun 2014/08/15
  • Go言語がダメな理由 | POSTD

    私はGo言語が気に入っていますし、多くの場面で使用します。現にこのブログもGoで書いています。Goは便利な言語ですが、優れた言語とは言えません。つまり、悪くはないけれど、十分ではないということです。 満足できない言語を使用する際は注意が必要です。注意を怠ると、その言語を次の20年間使い続ける羽目になるかもしれないからです。 私のGoに対する主な不満を文にまとめました。既に何度も指摘されていることも含まれていますが、中にはこれまでほとんど話題になっていない指摘もあります。 これから列挙する全ての課題には既に解決策があることを示すため、私が優良な言語と考えるRustやHaskellと比較して説明します。 汎用プログラミング 課題 誰でもさまざまな事柄に幅広く対応できるコードを記述したいと考えます。例えば数のリストの合計を求めるために定義した関数が、小数、整数、またその他の合計を求められるもの

    Go言語がダメな理由 | POSTD
    dekokun
    dekokun 2014/07/29
    他はいいとして、「組み込みプログラミング」以下は私があまり普段意識しないところなのでほほぅというかんじでした。
  • 1