Netflixの社内ITの概要

4年弱前 | 1 point

CxOTalk はエンタープライズITをターゲットにした番組のようで、大手企業のCIOが週替わりで紹介されています。Netflixも、今や大企業と言えば大企業ですが、この番組にネット系の会社が出演するとちょっと場違いな感じで、MCの人たちとのやりとりがややチグハグなところが微笑ましい感じでした。今回は、NetflixのVP of IT OperationsのMike D. Kailが、同社の社内ITについてインタビューに答えています。本業と同様に徹底的にクラウド移行しています。

社員は1,400人 (Annual Reportによると、2012年末で、フルタイム2,045人、パートタイム含めて2,429人なので米国内のメンバだけのことを指しているか?)

責任範囲は、ファイナンスシステムや広告のリアルタイム入札システムを含む社内IT全般。メンバは、 125-130人。

Netflix...

Economistの特集「Tech startups」を読んでみた

4年弱前 | 2 comments

TechCrunchに「必読」という記事がでていたので、Economistの14ページに及ぶ特集「Tech startups」を読んでみました。(無料でダウンロードできます。)

米国のメディアを読むことが多いので、米国視点に情報が偏ってしまいがちなのですが、Economistはいつもグローバルに語った記事が中心なのが良いです。今回も、米国 / 欧州 / シンガポール / 中国(深セン)をカバーし、取り上げている話題も、起業コストの大幅な低下と起業意欲の向上 & 事業立上げのスピードアップ、AngelListの台頭、インキュベーター、他地域のネットビジネスモデルをコピーする戦略、起業家のメンタル問題、ハードウェア事業のプラットフォームなど多岐に渡ってます。既知の話題も多いかと思いますが、バランスがとれています。

まず、「スタートアップの動きが全ての産業を変革し、...

DevOpsの使命感

4年弱前 | 2 comments

Kickstarterのブログで、Aaron SuggsがDevOpsの役割をピラミッド型で階層分けして紹介しています。[図: Hierarchy of DevOps needs]

「DevOpsの役割は何か?」という議論では、色々カバーしなければいけないことが多くて、「やらねばいけないこと。」という話しに終止しがちな印象がありますが、このようなかたちで整理されると、今必要にかられて手元でやっている作業は「何のために(究極的には何を達成するために)やっているのか。」という使命感的なものがはっきりもてるのではないでしょうか。

階層は上から順に、

  1. Team Happiness: 教え合い、学び合い、信頼し、自律的に仕事するカルチャーづくりをする。
  2. Team efficiency: モダンなツール / 柔軟なプロセス / しっかりした監視システム & 体制の導入
  3. Resiliency:...

仕事で新しいプログラミング言語、または新技術を採用するとき、どういう基準で導入していますか?

4年弱前 | 1 point

プロジェクト単位で人員を外部から調達することが多い日本の受託開発業界では、開発者を集めやすいという理由で開発者人口の多い言語 (例: Java, PHP) を採用することが多いと思います。中途採用の世界でも圧倒的に経験者が多いのはこの 2 言語と言われています。

一方、開発者人口が減ったとしても、自分たちが使っていてわくわくするもの、生産性が高いと感じるものを選ぶ組織も、自社サービス企業を中心に増えています。優秀なエンジニアに人気がある言語を選ぶほうが優秀なエンジニアを集めやすいですし、優秀なエンジニアほどプログラミング言語をスイッチするのは苦にならないということも経験的にわかってきています。

他にも、性能が要求される場面 (高トラフィックを低コスト、低リソースでさばく必要があるなど) では実行効率やリソース使用量の特性も考慮するでしょうし、...

テスト駆動型開発についての議論

4年弱前 | 3 comments | 2 points

Test Double社がブログで、TDD (テスト駆動型開発) を教える場合のアプローチを提案しています。

TDDについて、同じ用語やツールを使っていても、「モックオブジェクトがありすぎて、ひどい。」「モックオブジェクトがあふれていて素晴らしい!」という異なる見解に至るケースがでてしまっているのは、理想的なゴールに至る道筋を統一したかたちで教えきれてないからだと指摘しています。

TDDの一番の効果はコードのデザインの改善であり、コードのクオリティの担保は、うまくいけば二次的な効果、まかり間違えば幻想になるとし、失敗に陥りやすい具体的なパターンとして挙げているのが、

Failure #1: Encouraging Large Units

「直接問題を解決する。」(つまりコードの正しさを担保する。)というアプローチでユニットの単体テストを書きはじめると、仕様が増える度に解決すべき問題が増える。...

AngularJSとRails4を組み合わせる

4年弱前 | 1 point

Railsアプリのホスティングサービスを提供しているShelly Cloudがブログで、フロントでAngularJS、バックエンドでRails 4を採用するときの留意点について、まとめています。使用しているコードサンプルはこちらになります。

1) Building a JSON API in Rails

RailsでAPIをいちから作ってみる。angularjs-rails-resourceのようなライブラリを使うときは詳細が違ってくるが、考え方は概ね同じ。

Routing

namespace :api, defaults: {format: :json} do resources :task_lists, only: [:index] do resources :tasks, only: [:index, :create, :update, :destroy] endend

...

GitHubと子供の教育の未来

4年弱前 | 1 point

言われてみれば「そうだよね。」と共感することでも、それまで気付いてなければ、ハッとする瞬間があります。このReutersのブログエントリーには、まさにハッとさせられました。

GitHubでコードが共有され、Tumblrでクリエイティブな作品がリブログされる社会環境の中で、これからの子供教育にあるべきアプローチについて語ってます。

…they will now have to produce creative individuals skilled in ideation, pattern recognition, and opportunistic team-building。Those things aren't easily measured by standardized tests. But the children who are taught them are...

CSSアニメーションの応用事例

4年弱前 | 1 point

Zach SaucierがCSSアニメーションを駆使したテクニックを披露しています。

#1) Jump to another state mid-animation

CSS animationで、微妙に数値の違う二つのkeyframe(例えば、.001%)を利用して、propertyを新しい値に即ジャンプする方法。

CSSコード

@keyframes toggleOpacity { 50% { opacity: 1; } /* Turn off / 50.001% { opacity: 0.4; } / Keep off state for a short period / 52.999% { opacity: 0.4; } / Turn back on */ 53% { opacity: 1; }}

ビルボード照明広告を模したこのデモで効果を確認できます。

#2) Negative...

GitHubのDNS障害 [Postmortem8]

4年弱前 | 1 point

このシリーズでは久しぶりのエントリーです。米国のネット企業では、システム障害が起きたときに詳細な原因/影響範囲/経過/対策をブログで報告するのがかなりデフォルトになってきて、すばやい開示姿勢はポジティブな評価をうけることも多いですが、いずれにしてもサービスを運営するうえで参考になる情報も多いので、適宜取り上げています。

今回は、GitHubが先週DNSの障害で、42分間サービスがダウンし、その復旧の過程で一部のレポジトリではさらに1時間35分利用不能になったケースです。

Some background

DDoS攻撃対策の一貫で、アクセスコントロールのルールをシンプルにするために、DNSリクエストができるホスト数を削減し、DNSのリプライを限られたネームサーバに制限することにした。これにより、ホワイトリストに入っていないアドレスからのDNSトラフィックは明示的に拒否することができ、...

NTPベースのDDoS攻撃を理解する

4年弱前 | 1 point

年初にLeague of Legends、EA.comのサーバがダウンする原因となったNTPベースのDDoS攻撃について、CoudFalreがエンジニアブログでまとめています。

DNS Reflection is so 2013

DNSベースのDDoS攻撃とNTPベースの攻撃は似ている。プロトコルの違いだけ。攻撃者が、被害者となる相手のIPアドレスを偽ってパケットを送付。事情を知らないサーバは、リクエストに応えて、被害者のIPアドレスにデータを返すという仕組み。実際の攻撃者のソースは隠されていて、トレースするのが難しい。もし大量のサーバが利用されると、相当のボリュームのパケットが、世界中から被害者を攻撃することになる。

この攻撃がパワフルなのは、増幅されるからである。[増幅攻撃の概念図] 攻撃者が少数のマシンから送る小さなパケットが、多くのサーバからの大量のリプライを被害者に返す。...

TLS/SSLのチェックリスト

4年弱前

セキュリティチェック用のJSON APIを提供しているHow's My SSL?のサイトで、TLS/SSLクライアントのチェックリストが簡潔にまとまってます。詳細説明ページには、「おそらく」「悪い」事例もあるのでチェックしてみてください。

1) Version

良い: クライアントは、最新の暗号文プロトコルTLS 1.2を使っている。

2) Ephemeral Key Support

良い: クライトがサポートしている暗号文スイーツの中でephemeral keyは使われる。つまりそれが使われていれば、サーバがサポートしるという前提で、forward secrecyを提供できるということ。大量の暗号化されたトラフィックを盗み、攻撃のときまで保管させる手口に効果があります。

3) Session Ticket Support

良い: Session ticket...

D3.jsでグラフを描いてみる

4年弱前

Alex Rothenbergが、GitHubグラフでおなじみのD3.jsの解説をしています。

今日は、D3.jsを使って、このようなグラフを描いてみる。D3.jsのポイントとしては、

  • データをDOM elementとバインディングする。
  • チャート、地図、配列など多くのAPIがある。
  • チャートなどをビジュアル化するにはSVGが適している。

Binding data to the DOM

D3とはData-Driven Documentを意味し、データをDOM elementに同期する機能を提供してくれる。では早速見てみよう。

<script src="http://d3js.org/d3.v3.min.js"<script

d3.jsスクリプトをインクルードすると、elementを追加するのに必要なトップレベルのd3オブジェクトができる。SVGはHTML5のタグで、...