AWSアドバンスドコンサルティングパートナーの一員として活動する株式会社スタイルズが、AWS導入、移行、開発、セキュリティ、運用保守など、すべてのご相談に乗らせていただきます。 AWSを導入したいが何から始めたらいいかわからない 既存のベンダーが新技術に弱く、良い提案がもらえない クラウドの導入にセキュリティの不安がある AWSをとりあえず導入したが、さらに活用していきたい 社内にAWSの知見を持っている人がいない AWSならではのシステム開発を詳しく知りたい
![株式会社スタイルズ](https://cdn-ak-scissors.b.st-hatena.com/image/square/58f644d3665409b638fde7cfd1b46265abce4d73/height=288;version=1;width=512/https%3A%2F%2Fwww.stylez.co.jp%2Fwp-content%2Fuploads%2F2017%2F07%2Fstylez_image.jpg)
こんにちは。パートナーサービス部の加藤和良です。 2008年末に、mixi の年末年始対策について紹介しました。今回は、ここ数年の年末年始対策の歩みと、今年の対策について紹介したいと思います。実をいうと、設計も実装も自分じゃなかったりするのですが、このまま歴史に埋もれていくのも悲しいので、関係各所に取材してみました。 2008年末をふりかえる まずは、2008年末をふりかえってみましょう。 あのころはまだ mixi の機能も少なく、年末年始の負荷は主に日記に集中していました。そこで当時は ID Generator の改善 - mod_perl をあいだにはさんで MySQL への接続本数を減らす 最新情報DBへの書き込みを非同期に - Q4M をつかって負荷を時間軸で分散する という2つを日記に実装したのでした。 しかし、2008年末から2009年のお正月にかけて、mixi はまたも日記に
大規模なコードベースでリファクタリングを省エネ化するためにcodemodを最近調べていて、軽く試行錯誤したのでそのメモ。 やりたいこと 例えば以下のようなTable Driven TestなコードをBEFOREからAFTERに書き換えたい。コード量が多いため人間がやるのは現実的ではなく、codemodで機械的に書き換えたい。 BEFORE package main import ( "slices" "testing" ) func TestContains(t *testing.T) { type args struct { ss []string s string } tests := []struct { name string args args want bool }{ { name: "empty: false", args: args{[]string{}, ""}, wan
こんにちは、 最近愛用のMacbookが外観も中身もボロボロになってきて悲しいkyannyです。 ライブドアでは、画像やCSSファイルやjavascriptファイルなどの静的なコンテンツを配信するウェブサーバとウェブアプリケーション本体が稼働するアプリケーションサーバを別々のホストで運用する、いわゆるリバースプロキシ環境を構築しています。今回は、このリバースプロキシ環境の作り方を解説します。 リバースプロキシとは リバースプロキシとはプロキシサーバの一種で、クライアントに対してファイアウォールの中にあり外部のネットワークから直接アクセスできないサーバへのアクセスを提供する機能です。これ以外にも、複数のバックエンドサーバを用意して負荷分散をしたり、プロキシサーバでキャッシュを併用することでバックエンドサーバへのリクエストを減らしたりと、様々なシーンで活用できるため、大規模なウェブサイトを構築
画像配信の負荷分散も比較的簡単?(その5)のつづき. 初めての方は画像配信の負荷分散も比較的簡単?(その1)からどうぞ. さて前置きが長くなったが,本題に入ろう. アクセスが特定の画像に集中した場合には問題が出ると思うのですが どのように対応したらよろしいでしょうか? 例えばある画像が1枚某ブログにウプされて 2ちゃんのいろんなスレに画像への直リンクURLが貼り付けられて祭りになり 1台の画像鯖に負荷が集中しさばききれなくなった場合、 先生の方法ではいくら鯖を増設しても負荷は分散されないし アクセスが集中している画像鯖だけ別にDNATやmod_proxy+mod_rewriteとかその他の方法との併用で 負荷分散はできますけど祭りが起きるたびに毎回毎回特定鯖だけネットワークに手を加えるのも めんどくさいと思うのですがこの辺はどのようにしているのでしょうか?』 特定の画像のアクセスが多くなっ
画像配信の負荷分散も比較的簡単?(その4) のつづき. 初めての方は画像配信の負荷分散も比較的簡単?(その1)からどうぞ. 画像配信の負荷分散も比較的簡単?(その3)にて下記のようなコメントをいただいた. アクセスが特定の画像に集中した場合には問題が出ると思うのですが どのように対応したらよろしいでしょうか? 例えばある画像が1枚某ブログにウプされて 2ちゃんのいろんなスレに画像への直リンクURLが貼り付けられて祭りになり 1台の画像鯖に負荷が集中しさばききれなくなった場合、 先生の方法ではいくら鯖を増設しても負荷は分散されないし アクセスが集中している画像鯖だけ別にDNATやmod_proxy+mod_rewriteとかその他の方法との併用で 負荷分散はできますけど祭りが起きるたびに毎回毎回特定鯖だけネットワークに手を加えるのも めんどくさいと思うのですがこの辺はどのようにしているのでし
http://d.hatena.ne.jp/yamaz/20060509の続き. 初めての方は画像配信の負荷分散も比較的簡単?(その1)からどうぞ. Googleはimages.google.com 1つで1,187,630,000(11.8億!)の画像を保持している(ように見える).1つの画像が10KBだったとしても12.5TBの画像を保持していることになる. GoogleがこんなことができてるのはGoogleFileSystemがあるからだ. http://labs.google.com/papers/gfs.html GoogleFileSystemは簡単に言うとデータバックアップ機能つきの分散NFSのようなものだ. GoogleFileSystemに関しては上記URLのPDFに詳しいので,そちらを参照してほしいが,基本的な考え方は今まで負荷分散の考え方となんら変ることはない.つまり
画像配信の負荷分散も比較的簡単?(その2)のつづき. 初めての方は画像配信の負荷分散も比較的簡単?(その1)からどうぞ. アクセス/保持データ量ともに多くなってきてどうにもならなくなったらどうするか?お金があるところはサーバを強化したりメモリを増やしたりするのも手だろう.ただもっと安上がりで効果的な方法がある. どうにかなるまで1台あたりのアクセス数と保持データ量を減らせばいいのだ. ずっこけた人がいるかもしれないけど,こっちは大真面目である(笑).別にアクセスが少なくなるまでサービスを縮小させろという意味ではないので,もうちょっと付き合っていただきたい. 下記のような仮想の実装例を考えてみよう. http://i.yimg.jp/images/search/head_050825.gif にアクセスがあったらURLを10で割ってその余りに応じて img0.yimg.jp img1.yim
http://d.hatena.ne.jp/yamaz/20060426 の続き.待ち行列理論に従うと遅延のないサービスを行うためには サーバの単位時間のリクエスト処理能力 > ユーザの単位時間のリクエスト数 という非常に単純なことを行えばいいことになる.「なにをあたりまえのことを...」と思われるかもしれないがもうちょっと付き合っていただきたい. ところでたいていのBlogや画像サービスのサービスURLはこうなってる. http://ホスト名/<ユーザ名>/ http://ホスト名/id?ユーザ名 http://ホスト名/ディレクトリ名/コンテンツ名 例で言うと下記のような感じだ. http://d.hatena.ne.jp/yamaz/ http://mixi.jp/show_friend.pl?id=128497 http://i.yimg.jp/images/search/head
http://d.hatena.ne.jp/naoya/20060407/1144376197 ではてなおやさんがYouTubeの負荷分散について語っておられる. mixiの負荷分散とは質が違うことについてはおおむね同意だけど, YouTube のシステムを見たときにその焦点になるのは、まず第一にネットワーク帯域。第二にストレージをどうしているかというところじゃないかなと思います。動画配信にリソースがいるポイントは、ネットワーク帯域とディスク I/O です。つまり YouTube の負荷分散で気になるところは * ネットワーク帯域 * ストレージ o 容量の管理 o 動画を格納しているストレージサーバーの I/O あたりです。 はちょっと踏み込み足りないなぁという印象なので書いておく.集合知.集合知. 動画配信は通常の画像配信と違って下記の特性を持つ. 画像のように1ページに複数個配信する
30万個ぐらいの静的ファイルを配信するサーバーの選び方 で静的な配信サーバに関することが述べられている. naoyaさんが公開されてるInside Hatena Bookmark's Backend の資料などを読むと、mod_perlなサーバーやMySQLサーバーの選び方の参考になったりするわけですが、世の中を見渡してみても、静的コンテンツ(画像とか)を配信するサーバーの指南書らしきものはなかなか見あたりませんでした。 なので、経験を元に書いてみることにします。 ということらしい.書いてあることはすべて同意だけど, つい3ヶ月くらい前まで 平均15k×1万URL×50億httpアクセス/day 平均4KByte×100万URL×3億HTTPアクセス/day な画像サーバと某所で向き合ってたため,ちょっとは役に立てるかもしれないと思ったので,私の経験を書いてみようと思う. 動画配信の負荷分
ミツバチワークスのエンジニアは、「月間57億PV」という巨大なトラフィックをさばくため、さまざまな技術を駆使してインフラを構築している。主と副の2本立てでデータベースを運用し、300台のサーバを使いながら「負荷の限界」に挑むエンジニアに、技術ノウハウを聞く。 ミツバチワークスが運営するケータイブログサービス「DECOLOG」は、異色のサービスである。10代後半から20代前半の女性に最も人気のあるケータイブログサービスで、「デコメール」などを利用して、かわいくカラフルなブログを作成できる。広告基準を厳しくすることで女性ユーザーにも不安なく使ってもらえるような安心感を作り出し、口コミだけでじわじわとアクセス数を伸ばしてきた。 結果、2010年7月実績で月間57億PV(ページビュー)超、想定800万UU(ユニークユーザー)、会員登録者数180万件と、ケータイブログサイトでは国内最大のサービスとし
こんにちわ、stoneです。 今回は、MySQLのストレージエンジンの中の1つ、ArchiveエンジンのDECOLOGでの使い方をご紹介したいと思います。 ※「DECOLOGでのMySQL BlackHoleエンジンの使い方」も合わせてどうぞ Archiveエンジンの概要MySQLのマニュアルをご覧いただくのが正確なのですが、その特徴を簡単にまとめると。。。。 insert/selectは出来るが、update/deleteは出来ない order byはサポートされない blobもサポートされない データは圧縮されてディスクに保存される まぁ、最初にこのマニュアルを読んだときの、正直な感想は、 「どうやって使うんだ、これ?」 って感じでした。 deleteが出来ないので、データは溜まる一方だし、データは圧縮して保存されているので、selectもそんなに速くないことは容易に想像できます。 ア
こんにちは、hiroshiです。おひさしぶりですね。 stoneが書いたhadoopの記事が打ち合わせとかで「見ましたよ。評判ですよ。」とか言われてジェラシーいっぱいです。 僕もがんばります。目指せホッテントり! といっても、僕だと書けることに限界があるので、今日は半定常作業のMySQLの増設作業について書こうと思います。 下図のように、master1台←slave2台がLVS+keepalivedで負荷分散構成されているDBがあるとします。 この構成の組み方にしようかと思ったのですが、これはググったらいっぱいあったのでホッテントリは狙えないと思ってやめました。 なので、今回のテーマは「このテーブルはwriteは余裕だけどreadがきつくなってきたからslaveを増設しなければ!」となった場合のslaveを増設する手順について書いてみます。 下図のslaveCを追加するぞ!の場合です。 ※
大まかな手順は以下です。 三段構成にする。 slaveを切り替える masterを切り替える 余分なテーブルを落とす の4ステップです。 1.三段構成にする。 これはつまりこんな状態にすることをいいます。 この作業は基本的には単純なslave増設と新規レプリケーション構成を組むのの組み合わせでできるので、前回のエントリ「replicationしてるMySQLのslave増設手順」を参考にしてください。 通常のレプリケーション構築との違う、ポイントとしては テーブル構成は最初は丸ままコピーすること 「New master」my.cnfの設定にlog-slave-updatesとreplicate-do-tableでノレン分けしたいテーブルを設定しておくこと です。 テーブル構成を丸ままコピーするのは、そうしないとレプリケーションが失敗するからです。replicate-ignore-dbやre
はじめまして。プラットフォーム開発本部のせじまです。好きなものはDisk I/Oです。 今回はMySQL(on Linux)のレプリケーションにまつわる、ちょっとしたお話をさせていただきたいと思います。 はじめに MySQL4.0以降のレプリケーションは、 Masterのmysqldが、INSERT/UPDATE/DELETEなどの更新情報を、バイナリログに記録する。 Slaveのmysqld(IOスレッド)は、masterのmysqldに接続し、バイナリログを転送する。 Slaveのmysqld(IOスレッド)は、受信したバイナリログ内容を、リレーログに記録する。 Slaveのmysqld(SQLスレッド)は、リレーログを読み込み、更新内容をslaveのDBに反映する。 といった仕組みになっています。図にすると次の通りです(*1)。 MySQLのレプリケーションはとても良くできた仕組みな
レプリケーションとは、あるデータベースから他のデータベースに複製を作ることです。 これは通常、以下のような理由から使われます。 サーバがダウンしたときの対処 複数のデータベースが同じ内容を持つことで、一つのサーバがダウンしても 他のサーバを使うことが可能になります。 負荷分散 複数のデータベースを交互にアクセスすることで、一つのサーバに掛かる負担を減らすことが出来ます。 MySQLでは「一方向レプリケーション」を採用しています。 一つのサーバを「マスタ」として機能させ、残りのサーバが「スレーブ」になります。 データの複製は「マスタ→スレーブ」という方向でのみ行われます。 そのため、データの更新は必ずマスタサーバで実行する必要があります。 マスタサーバで更新を行うと、その更新内容が全てのスレーブサーバに通知され スレーブサーバはマスタサーバと同じ更新処理を行います。これにより、マスタとスレー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く