タグ

ブックマーク / wazanova.jp (24)

  • [その1] Ruby 2.0のガベージコレクタを使いこなす - ワザノバ | wazanova

    http://samsaffron.com/archive/2013/11/22/demystifying-the-ruby-gc Ruby 2.1のガベージコレクタ (GC) については、「RubyPythonの違いからガベージコレクタを理解する [その1] [その2] 」で取り上げましたが、今回は、DiscourseのSam SaffronがまとめているRuby 2.0のGCを利用するにあたっての学びを紹介します。 1) Heaps of heaps MRIはヒープにRVALUEとして知られているオブジェクトをもつ。各ヒープは約16KB。RVALUE構造体は、マシンのアーキテクチャによって異なる量のメモリを消費する。x64マシンでは40 byte、x32マシンではサブアーキテクチャー次第で20 byteから24 byte。RVALUEはマジカルなC構造体で、Rubyの様々なローレベル

  • Luaが支えるCloudFlareのWebアプリファイアウォール - ワザノバ | wazanova

    https://www.youtube.com/watch?v=nlt4XKhucS4 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 CloudFlareのWAF (Web Application Firewall)は、HTTPリクエストをフィルタリングし、 SQLインジェクション コメントスパム XSS DDoSアタック WordPressなど特定のアプリを狙った攻撃 などの攻撃をネットワークのエッジで、つまりサーバに到達する前に守ってくれます。 適用するフィルタリングルールは、オープンソースのOWASPなどの共通ルール 5,682件 + CloudFlare内製のルール 102件 + 顧客企業がカスタムメイドしたルールの総計で、それが全てのリクエストに当てはめられます。その処理速度は平均1ms以

  • Gilt: 単一のRailsアプリから複数のScalaアプリへの移行 - ワザノバ | wazanova

    http://tech.gilt.com/post/73434506726/scaling-gilt-at-gilt-nyc-tech-talks-comes-to-2-park 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 GiltのYoni Goldbergが、同社のアプリが、RailsベースからScalaに移行しスケールしてきた経緯を紹介しています。 Videoがでたら是非紹介したいと思っていたネタですが、1ヶ月待ってもアップされないので、ひとまずあきらめてスライドの紹介だけになります。もしビデオがアップされたら改めて更新します。 2007年の典型的なスタートアップ。サービスをとにかくなるはやでローンチするために、当時盛り上がってきていたRailsを採用。 2009年、フラッシュセール開催時の

  • Goと大規模分散システムの相性 - ワザノバ | wazanova

    Googleで分散システムの開発をてがけ、現在はソーシャルメディア mttr.toを立上げ中のBen Sigelmanが、Goを分散システムの開発に利用する場合の、メリットおよびチャレンジについて講演しています。 分散システムのあるべき姿 分散システムの勘所は、最上位ビットをパフォーマンス的にも構造的にもうまく扱うことができるかというのがポイント。その効果が一番大きい。スループットの改善のような詳細は、自分もGoogleでそれに取組んだけれども、9ヶ月くらいたつとハードウェアの性能で解決される可能性が高い。また、構造的にというのは、なるべく小さなコンポーネントを組み合わせたシステムにできるかという意味。 Goのよいところは、 両方、とくに後者によい。Railsだとアプリを複数個用意して並列処理するのは大変だったけど、Goだとシンプルにできて、標準ライブラリも読みやすいとかなどなど。パフォー

  • Pinterestをスケールさせる中で学んだこと - ワザノバ | wazanova

    https://www.youtube.com/watch?v=jQNCuD_hxdQ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 PinterestのMarty Weinerによる goto; conference 2014の講演。 「webサイトどうやってつくるの?」という創業期から、現在に至るまで、段階的にテクノロジースタックがどう進化したか。 現在のPinterestのシステムアーキテクチャの全貌。 個別のテクノロジーの選択理由。 などを語った45分のビデオですが、goto; conferenceのサイトからスライドのPDFをダウンロード(初日の10:20のコマです。)できるので、そちらを見ていただいてもわかりやすいかと。 「サイトが落ちてしまうのである意味自然に学ぶことができてしまった。

    motchang
    motchang 2014/10/28
  • AngularJSとRails4を組み合わせる - ワザノバ | wazanova

    https://shellycloud.com/blog/2013/10/how-to-integrate-angularjs-with-rails-4 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約4時間前 Railsアプリのホスティングサービスを提供しているShelly Cloudがブログで、フロントでAngularJS、バックエンドでRails 4を採用するときの留意点について、まとめています。使用しているコードサンプルはこちらになります。 1) Building a JSON API in Rails RailsAPIをいちから作ってみる。angularjs-rails-resourceのようなライブラリを使うときは詳細が違ってくるが、考え方は概ね同じ。 Routing namespace :api

  • Twitterのキャッシュを支えるRedis - ワザノバ | wazanova

    https://www.youtube.com/watch?v=rP9EKvWt0zo 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 TwitterのYao Yuが、大規模サービスのキャッシュにおいてRedisを活用する取組みについて紹介しています。 1) Redisを採用している理由 キャッシュだけで、ストレージとしては利用していない。 主なところでは、Twitterのタイムラインで利用している。ホーム画面であれ、ユーザ画面であれ、タイムラインはTweetのインデックスなので、key/valueストア型のRedisを利用するケースとして最適。 以前はmemcachedを使っていたが、問題になったのは、タイムラインでおきるread/writeは、(ユーザが閲覧している範囲に追加反映するということなの

  • Facebook: iOSアプリのアーキテクチャ - ワザノバ | wazanova

    https://www.youtube.com/watch?v=XhXC4SKOGfQ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 39分前 FacebookのiOSチーム、Adam ErnstとAri Grantによる@Sacle 2014での講演。データモデルとビューレイヤの改善の取組みについて紹介してくれてます。 1) データモデル 背景 2年前からHTML5からネイティブに切り替えて一旦大きく改善したが、その後機能を追加するたびにアプリのパフォーマンスが悪化。 ネイティブに移行後、オブジェクトのキャッシュレイヤとしてiOSのCore Dataを使ったのが失敗であった。 Core Dataの役割は「整合性を含むオブジェクトグラフ管理」 Facebook iOSアプリの場合、サーバ側を正のデータとするが、

    motchang
    motchang 2014/09/17
  • シングルページアプリづくりのJavaScriptフレームワーク比較 - ワザノバ | wazanova

    http://blog.andyet.com/2014/08/13/opinionated-rundown-of-js-frameworks 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 開発言語やフレームワークの比較は、参考になるところはありつつも、その結果、不愉快な気分になる人がいるわけですが、それを懸念して、「(これを読んだ人は、他人の)意見を読んでいるだけだと思い返してほしい。貴方にどうすべきだと言ってるのではなく、自分にもしくはチームのために何がよいかは自分で判断すべきこと。」と前置きして、Henrik Joretegが、JavaScriptフレームワークについて私見をシェアしています。 反対意見も併記しようと思ったのですが、TwitterやHNでの反応がまだないようなので、注目すべきコメ

  • GitHub: Tom Preston-Wernerが語る「幸せの最適化」 - ワザノバ | wazanova

    http://www.youtube.com/watch?v=Ms-8GcZXiDA PandoDailyのSarah Lacyのインタビューの中で、GitHubCEOのTom Preston Wernerが、GitHubを創業するまでの半生を語ってます。かなりガッツな人生です。 1999年にサマーインターンとしてスタートアップでJavaで開発をしていて、そのまま誘われて大学をドロップアウト。 しかし、ほどなくドットコムバブルが弾けて、解雇される。クビになった仲間と3人でウェブ開発の会社を起業したが、ビジネスには素人だったため、まったくうまくいかず、他の2人は諦めてあっさり就職。Tomは一人で受託開発を続けるが、あまり稼げず、8枚のクレジットカードを駆使して、$50K (500万円) ほどの借金生活。それでも、結婚して、ローンで家を買って、さらに2番目のローンも組んで、クレカの借金の支払

  • Githubの組織が成長する過程で変えたことと変えなかったこと - ワザノバ | wazanova

    GithubのZach Holmanが語るGithubの組織戦略です。まず最初に、 Step #1: ロックスターエンジニアを雇う Step #2: ものすごく透明性のある経営をする Step #3: ブログ/ソーシャルメディアなどでテクノノロジーについて発信する Step #4: カンファレンスで会社について話す Step #5: カネに余裕ができる Step #6: 社員を大勢雇う Step #7: 会社のことを話さなくなる Step #8: コミュニティを無視する Step #9: 創業者が株を売って儲ける Step #10: 別の会社をはじめる という事例を挙げて、Githubは組織が成長する中で、このようなパターンに陥らないように、コミュニケーション及び仕事の進め方をどのように進化させてきたかについて紹介してます。 Dunbar's numberとしてよく知られるとおり、人間が良

  • Facebook: 永続的key-value型高速データストアRocksDBをオープンソースで提供 - ワザノバ | wazanova.jp

    http://rocksdb.org/ RocksDBは、FlashSSDメモリ/RAMに高速でアクセスできる組込み型の永続的key-valueデータストアです。LevelDBのうえに構築されていてCPUコアがたくさんあるサーバでスケーラブルに実行され、高速のストレージを効率的に利用し、IO-bound / in-memory / write-once な作業をサポートします。 (GoogleのLevelDBは「Hood.ie: “noBackend & Off-line first” という考え方」でもちょっと話題にでてました。) 利用用途としては遅延を避けたいケース、例えば、 ユーザの閲覧履歴やステータスを保持するアプリ 大きなデータにすぐにアクセスしなくてはいけないスパム検知アプリ リアルタイムでデータにアクセスするソーシャルグラフ検索のクエリ Hadoopデータのキャッシュに利用し

  • Quora: 新しい社員の迎え方について - ワザノバ | wazanova.jp

    http://www.quora.com/Quora-company/What-is-the-on-boarding-process-for-new-engineers-at-Quora スタートアップだと新しい社員を採用したときに、面接までで手一杯で、受け入れ態勢を当日までに用意するのが大変だったりします。「xxさんは今週から入社じゃない?」と気づき、大慌てでPCやソフトの準備をすることもままありました。そして間に合わないという失態もしました。。 数年前の話しですが、Quoraはまだ創業間もないのに、新しい社員を迎え入れる体制がしっかりしていて、エンジニアは、ロゴ入りグッズもらって、hardware/softwareは当然揃っていて、ウェルカムランチをへて、必ず初日に番アップまで経験できるような仕組みになってたと記憶してます。事業の成功を担保するためのせっかくの新戦力なので、優先順位は

  • Groupon: 単一のRailsアプリから複数のNode.jsアプリへの移行 - ワザノバ | wazanova.jp

    https://engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/ Grouponのビジネス自体はかつての盛り上がりはないですが、シンプルなRailsアプリが、事業の成長 & グローバル化に従って、アーキテクチャを変えていった過程をエンジニアブログで紹介してるので、参考になればと。 1) まとめ Grouponは、Railsのシングルコードベースを独立した20個のNode.jsアプリにアーキテクチャを変更した。 ページの読み込み時間が概ね50%改善。これはテクノロジーの効果とコードの書き直しでwebページが軽くなったのとの相乗効果。 同じトラッフィクに対してハードウェアが削減できた。 チーム間の依存関係が少なくなったので、新機能リリースのペースが早くなった 同じ機能を複数の国にそれぞれ導入するような冗長さが

  • Go言語で苦労したポイントの事例 - ワザノバ | wazanova.jp

    http://da-data.blogspot.jp/2013/10/experience-with-epaxos-systems-research.html Go言語についての記事をまとめていて困るのが、特にHacker Newsでは熱狂的な賛成派と執拗な反対派が感情的に戦っていて、Go言語の何がいいのかはわかるが、まだ改善すべき余地のあることが実際どれほどの支障になるのかについては、議論からは判別しづらいことです。 カーネギーメロン大のDavid Andersonが、分散アルゴリズムEPaxosをGo言語でインプリしたときの経験について”Huge Positive” “It proved a huge win” としていながら、苦労したポイントを挙げています。このような具体的な事例がもった蓄積していくと参考になるのではないかと思います。 Go言語による開発で苦労したのは、Zookeep

  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

  • 猿が暴れてクラウドの障害に強くなるNetflixのシステム - ワザノバ | wazanova.jp

    http://techblog.netflix.com/2013/10/introducing-chaos-to-c.html歴史上の有名な開発プロジェクトからまなぶべきこと」をまとめていたときに、Videoの中で、ある大型ロケットエンジンの開発において、信頼性テストのために小型爆弾をエンジンの噴射口辺りで爆発させて耐性を調べた云々のエピソードが紹介されていて、更に続いて「ネット業界で同じようなことをやってるのはNetflixぐらいだ。」という説明がありました。その時は何のことだかよくわからなかったのでブログでは取り上げなかったのですが、今回見つけました。 以前紹介したように、北米のインターネットトラフィックの30%以上を占めるNeflixはインフラをAmazonに全面的に移行しています。クラウドに移行した後の学びとして、 自社データセンターの時は、個別のハードウェアインスタンスが障害

    motchang
    motchang 2013/10/14
  • Docker : eBayでの事例とポータビリティに関する議論 - ワザノバ | wazanova.jp

    [Video] http://www.youtube.com/watch?v=0Hi0W4gX—4 eBayが2年前に買収したローカルショッピングサイトMilo.comのファウンダーであるTed Dziubaが、eBayでDockerを採用したケースを紹介してます。現在はeBay Nowというローカルショップからの1時間内配送をするサービスの開発をしています。 Pythonのバーチャル環境構築ツールVirtualenvは更のUbuntuマシンでもlxmlパッケージがインストールできない。 アプリ / DB / Redis / Memcache / RabbitMQを入れたVagrant VMファイルを番にはあげられない。番環境は、ロードバランサに何台マシンが接続されててDBの関係がどうなってるかなど対処するために、基的にコンテナの配列になっている。番に対応するにはもっとコンテナ化が

  • Netflix Culture: Freedom & Responsibilityを読み直す (その3) - ワザノバ | wazanova.jp

    http://www.slideshare.net/reed2001/culture-1798664 Values are what we Value [Judgement] あいまいな状況の中で、筋のとおった正しい判断ができること。 物事の質をつきつめ、必要な状況に場当たり的に対応する以上のアクションをとれること。 戦略的に、何をしようとして、何をしないようにするか、正確に考えられること。 今やるべきことと、後ほど改善することを切り分けられること。 [Communication] すぐに反応する前に、よく聞くこと。そしてよく理解すること。 よく考えて、正確に、話し、書くこと。 他人をその人の職責や反対意見があることなどに関わらず、尊敬をもって扱えること。 ストレスのかかる状況でも落ち着いた態度でいられること。 [Impact] 驚く程のボリュームの重要な仕事を成し遂げること。 よいパフ

    motchang
    motchang 2013/10/09
    "同僚について批評するときは本人に向かって言うこと。" ムズカシイナー
  • Netflix Culture: Freedom & Responsibilityを読み直す (その2) - ワザノバ | wazanova.jp

    http://www.slideshare.net/reed2001/culture-1798664 どうして高いパフォーマンスにこだわるかというと、よいチームづくりができれば、業務フローベースの仕事だと2倍、クリエティブ/開発系の仕事だと10倍成果が違ってくるからです。 パフォーマンスよりも職を失わないことを重視する人には向かない職場です。 責任感がある人は自分で行動を起こせます。ですので自由な環境で活かすことができます。多くの会社は大きくなるにつれて自由度が狭まりますが、うちは逆に広げます。 会社は大きくなると運営が複雑になり、高いパフォーマンスの社員率が減ります。そこで、「複雑化する業務プロセス」と「高いパフォーマンスの社員がこなせる業務範囲」の差分を埋めるために、官僚化が進み、つまらなく感じた高いパフォーマンスの社員が更に減るというサイクルにおちいます。 プロセスを整備して官僚化す

    motchang
    motchang 2013/10/09