CSRF, HTML Form Protocol Attack, Cross-protocol scripting attackについて
自作でイベント駆動型サーバ作るのツライ問題とlua-nginx-module 23 Mar 2016 Nakamura Narihiro 何の因果かわかりませんが、お仕事でちょっと賢いリバースプロキシサーバ(以降、RPサーバ)を作る機会が2回ありました。 HTTPヘッダの内容によってプロキシ先のサーバを動的に切り替えるようなものです。 この要件を満たすため、RPサーバには以下のようなプログラムが必要になります。 HTTPヘッダの内容を知るためにHTTPリクエストをパース プロキシ先のサーバへHTTPリクエストをプロキシ プロキシ先のサーバはRedisから取得 レスポンスをクライアントへ返す 大量のリクエストも捌ける 1回目はRubyとI/O多重化のライブラリを使ってイベント駆動型のRPサーバを自作してみました。 が、振り返ってみるとこれは失敗でした。 なぜ失敗だったのか? Rubyでイベン
GitHubが1月28日のサービス障害の詳細を公開。停電により内部のChatOpsシステムも落ちて初期対応が困難に。Redisクラスタの復旧に時間 報告では、サービス障害はGitHub社内のChatOpsシステムも巻き込んで初期対応に時間がかかってしまったこと、一時的な停電がRedisクラスタの障害を引き起こしたため、その究明と復旧が作業の主な部分だったことなどが説明されています。 報告の要点をまとめました。 内部のChatOpsシステムも障害に GitHubのサービス障害は、すでに報告されているように、自社データセンターにおける一時的な停電が最初の原因でした。 At 00:23am UTC on Thursday, January 28th, 2016 (4:23pm PST, Wednesday, January 27th) our primary data center experi
Redis不適切利用による問題は本番運用が始まってから顕在化することが多く、時限爆弾みたいな存在です。事前に防ぐにはコードレビュー段階で叩くしかありません。 Redisはスクリプト言語と相性が良く、適切に利用するとRDBと比較し驚くほど高速なプログラムを組むことができます。昨年尊敬する先輩にコードレビューで斧100本くらい(レビューコメント)投げられて血まみれになりつつ学んだことを、まとめて書いてます。概要は『消えても良いデータならRedis』 Redisのメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩き起こされました。どうやらアクセス障害みたいです。 何人かで実機確認したら、まったくゲームが遊べない。データ不整合怖いのでメンテIN。 ほどなくしてRedisが溢れメモリ不足で新規書き込みが出来なくなっていると判明。サーバのメモリ容量は64GByteでこれ以
Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは本当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反
Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks. Flask offers suggestions, but doesn't enforce any dependencies or project layout. It is up to the developer
ITエンジニアのコミュニティサイトStackOverflowなどを運営するStackExchangeが、同社のサービスを支えているシステム構成の状況を知らせるWebサイトを公開しています。 同社のサービスは各国版のStack Overflowのほかにも、サーバ管理者のためのServer Fault、数学関係者のためのMathematicsなど多岐にわたっています。 これらを合わせた同社のサービスは月間5億6000万ページビュー。このページビューを、48GBのメモリを搭載した9台のWebサーバ。384GBのメモリを搭載しライブ/ホットスタンバイ構成にクラスタ化した2台のSQL Serverと、288GBのメモリを搭載した2台のSQL Serverによるもう1つのクラスタの合計4台のSQL Server。96GBのメモリを搭載し、マスター/スレーブ構成にした2台のRedis Serverなどで
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は、(ユーザが閲覧している範囲に追加反映するということなの
世界制覇をもくろむLINE――ベールを脱いだプラットフォームの全体像とは:LINE Developer Conferenceまとめリポート(前編)(1/3 ページ) LINEは4月15日と17日の両日、世界初となる「LINE Developer Conference」を開催。LINEプラットフォームの全体像を明らかにした。本稿では、その中でもLINEプラットフォームを統べるChannel Gatewayとは何か、LINEビジネスコネクトの仕組みとは、インフラをどのように高速化しているのかなどについてお届けする。 キーワードは「グローバル」――LINEプラットフォームの世界展開 サービスを開始して3年足らずで登録ユーザー数4億人を突破し、さらなる成長を続けるLINE。トーク送受信件数は1日で最大100億件に達している。こうした成長を支えるために、同社はどのような技術を使ってインフラやプラット
最近発売された技術評論社のムック「データベース徹底攻略」に寄稿しました。 この本は、データベースのための本ということで、データベース設計、SQL、MySQL、Redis、MongoDB、Redshiftという代表的な要素技術についてのまとめとなっています。各プロダクト(MySQL、Redis、MongoDB、Redshift)については、現場で実際に本格的に使われている方々による記事なので大いに参考になると思います。 私は冒頭のまとめ記事を寄稿しました。詳細はぜひお手に取って読んでくださればと思います。ここでも自分が各技術を現時点でどのようにとらえているか、本ではいささか書きづらい内容について、最近流行りの言葉でもある「技術的負債」という観点も踏まえて書いておこうと思います。 ・MySQL (RDBMS) 私はMySQLの中の人でもありましたし、これまで至るところで話してきたので省略します
http://www.youtube.com/watch?v=OGi8FT2j8hE1 comment | 0 pointsドイツのハンブルグで開催されたDeveloper Conference 2013で、Stack Overflowのアーキテクチャが紹介されてます。 Stack Overflowのネットワークは、110 Q&Aサイト、430万ユーザ、質問760万件、回答1360万件、月間5億6千万ページビュー サーバ25台: ウェブサーバ11台(内9台でほぼトラフィックさばく)、ロードバランサ1台 (+ 予備1台)、DBノード4台、アプリサーバ3台、検索サーバ3台(Elasticsearch)、Redisサーバ2台(キャッシュ、メッセージング) 毎秒質問が投稿されているので、トップページには都度最新の質問を掲載するように更新はできないが、ユーザの回答パターン、質問閲覧パターン、好みのタ
Amazon SageMaker Geospatial Capabilities Now Generally Available with Security Updates and More Use Case Samples At AWS re:Invent 2022, we previewed Amazon SageMaker geospatial capabilities, allowing data scientists and machine learning (ML) engineers to build, train, and deploy ML models using geospatial data. Geospatial ML with Amazon SageMaker supports access to readily available geospatial dat
Instagramといえば1年前の以下の資料によればAWS上にDjangoを使ってサービスを展開させておりデータのストレージとしてはPostgreSQLとRedisを使っていました。 「バックエンドの経験はなかった」Instagram創業者は、どうやってシステムをスケールさせてきたか - Publickey Kosei Kitahara's Blog: Instagram のスケール正攻法 Mike Krieger, Instagram at the Airbnb tech talk, on Scaling Instagram | Cache (Computing) | Scalability 今回はさらにCassandraを使うようになったみたいです。 元ネタはこちら Planet Cassandra | DataStax Academy: Free Cassandra Tutorial
最近 SPDY と WebSocket がアツいですね。 再来週の SPDY & WS 勉強会 も、定員100名に対して 参加者が 247 名とかなりアツいことになっています。 その予習というわけでもないですが、最近 WebSocket を実サービスへの 導入方法を考えながら遊んでいたので、 WebSocket の負荷分散方法について 考えていることを書いておこうと思います。 ステートフルな WebSocket アプリケーション HTTP サービスは基本的にステートレスな実装になっており、リクエストが来るたびに DBサーバーや memcached などのバックエンドから情報を取得して返していました。 この構成では Web アプリ自体は完全にステートレス化することができているので、 負荷分散機はラウンドロビン等のアプリケーションを無視した負荷分散をすることができました。 しかし、 WebSo
setIntervalで定期的にevnetを送るのと、redisのPub/Subを利用してeventを送るのという2種類。イベント発生時にレスポンスを書き出すようにするのは、EventEmitterを経由する。resdisからeventを送るのを試すにはredis-cliを使って、'redis-cli publish node-sse-example:myevent foo'みたいにすればいい。クライアントサイドのコードのも一緒に書いているけど、簡単に実行できるように1ファイルにしたかったからで、普通は分ける方がいい。nginxでreverse proxyしたときのバッファリングをオフにするためにX-Accel-Bufferingヘッダーをつけている。バッファリングに気をつければnginx経由でも簡単に動くので、そこはwebsocketよりだいぶ楽。 var util = require(
昨日のPinterestの記事「Pinterestの急成長を支えてきたアーキテクチャとは? Pythonで開発しAmazonクラウドで運用」に続いて、やはり写真を中心としたサービスで急成長してきたInstagramのスケーラビリティについて、まとめてみました。 InstagramもPinterestと同様に、基本はAmazonクラウド上でPythonとフレームワークのDjangoを使ったシステムを構築しています。興味深いのは、創業者の二人ともバックエンドの経験がないなかで試行錯誤をしてシステムをスケールさせてきた点です。 Instagramは先月、Facebookに買収されると発表されています。この先、Instagramのシステムはどう変わっていくのでしょうか。 Instagramのシステム構成 約半年前、昨年12月にInstagramのブログに投稿された記事「What Powers In
Node におけるスケールアーキテクチャ考察(Scale 編)というエントリーを読んで、RedisはPub/Sub型通信をサポートしているという事を知りました。エントリーでも言及されているように、Pub/Subを使えば Node.js + WebSocket サーバをスケールする際に、中継サーバの役割を果たす事が出来るはずです。 そんな訳で実際に Node.js と Redis を使って Pub/Sub の実験を行なってみました。ユーザが別々のNode.jsサーバに接続していてもWebSocketを通してメッセージのやり取りを出来るようにします。 イメージとしてはこんな感じです。 下準備# Ubuntuの場合は apt-get で1発でインストールする事が出来ます。 $ sudo apt-get install redis npmでredisモジュールをインストールします。 $ npm i
[追記] 途中までは Node での複数プロセス起動、プロセス間通信等について書かれていますが、後半は自分が前回の記事 を書くにあたって自分が考えてたことを少し強引に広げて書いた個人的な妄想が多く含まれ、Node におけると言っときながら、後半は Node 関係ない感じになってしまいました。 正直まだ分かっていないことが多いです。変なところをどんどん指摘していただけるとむしろ嬉しいです。 Node におけるスケールアーキテクチャ考察(SSP 編) - Block Rockin’ Codes の続きです。 もともと何となく結論があって書き始めたんですが、書きながら色々調べているうちによくわからなくなりました。 まだまだ調べたらないことがわかったので、とりあえず今わかっているところまで書きます。 結局何がいいたいのかよくわからない感じかもしれないけど、ゴールは SSP のバックエンドの Nod
Note 英語の本家のページは、 PHPを使って説明 説明していますが、このページではPythonと Tornado を使ったチュートリアルに変えてあります。 Bitbucketの リポジトリ に、このチュートリアルのファイル一式が含まれています。 tutorial/retwis/ フォルダを自分の作業フォルダにおいて、 retwis_start.py に、これから説明する内容を追加で実装していってください。なお、実力に自信のある方は、PHPやRubyの参考実装だけを見ながら、 RegisterHandler や、 FollowHandler クラスもPythonに移植してみてください。 また、 @yssk22 氏がnode.js版を実装してくれました。これもリポジトリの中に入っていますので、興味のある方はこちらのファイルの内容に読み替えてください。 RedisとPythonを使ったシンプ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く