GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Abel Avram , 翻訳者 徳武 聡 投稿日 2010年3月26日
DiggとRedditは、今月中にCassandraへ移行することを発表した。彼らのサービスにとってMySQLのスケーラビリティでは不十分なのが原因だ。もはやMySQL + memcacheという構成がスケーラビリティの課題に対する解決策のデファクトではないと考えている人もいる。
昨年9月、DiggはCassandraへの移行計画を発表した。この計画は今月に完了している。HBaseやHypertable、Tokyo Cabinet/TyrantやVoldemort、そしてDynomiteなどいくつかの同類のプロジェクトを検討した後、彼らがCassandraを選んだ理由は、
それぞれのシステムが長所と短所を持っていますが、Cassandraはこれらすべての良い点を取り込んでいます。列指向データストレージを提供しているので、単純なキー/バリュー型のストレージよりも多少は構造化してデータを保持できます。また、可用性の高いピアツーピアで連携する分散環境でも動作します。未実装の重要な機能もありますが、私たちを目的地に近づけてくれるのは、他のソリューションではなくCassandraなのです。
DiggはLAMP構成から脱却するためにインフラを完全に再構築した。この再構築作業で一番の難点になったのがMySQLだ。他のSQLデータベース同様、MySQLは読み込み処理に対して最適化されていて、書き込みは必ずしも適切に制御できていない。
MySQLから脱却しようと思った最大の動機は、ものすごい勢いで際限なく増えていくデータを扱う、高性能で書き込み処理に特化したアプリケーションを構築するのが次第に難しくなってきたことです。データが爆発的に増えることで私たちは水平そして垂直のパーティショニング戦略を適用しなければなりませんでした。しかし、この戦略を採用したことで関係データベースを使っていることの価値はほとんどなくなってしまいました。しかもオーバヘッドは残ったままです。
システムが成長するにつれ、冗長性とネットワークの性能を確保するため複数のデータセンターで運用することが大事になってきました。また、キャパシティを確保しダウンタイムなしで破損したノードを取り替えることができるようにしておくことも重要です。また、これからも一般的なハードウエアを使い続ける予定であり、これらのハードは頻繁に故障するだろうと想定して計画を立てています。このようなことを総合的に考えるとMySQLでは運用がますます難しくなるだろうと考えました。
一方、RedditはmemcacheDBの抱える問題と取り組んできた。最初はRAMを追加することで対処していたが、長期的な観点から解決する必要があることは明確だった。結局、彼らは10日間でCassandraへの移行を実現した。彼らは、1人の開発者と“Cassandraの素晴らしい開発者とコミュニティの力を借りて移行を実現しました。また、EC2を使って新しいインスタンスのテストと最終的な配置を行いました。”.
FacebookやTwitterのような、多くの大規模サイトが既にCassandraを使っているか使う計画を立てているので、デファクトのスケーラビリティ対策としてMySQL + memcachedを選択する時代は終わったという人もいる。Todd Hoff氏はMySQLがすぐに消え去るとは思っていないが、第一の選択肢であり続けることはないと考えている。
今現在の状況から考えれば、MySQL+memcachedの時代が終わりつつあるのは明らかです。もちろん、状況は急には変わりません。古い技術が完全に消え去ることはほとんどありえません。いまでも馬に乗る人がいますし、CDで音楽を聞く人もいます。時代遅れの電磁気型情報配信技術であるテレビが完全にインターネットに取ってかわることもないでしょう。しかし、大多数の人は新しい時代に移行します。…
MySQL+memcachedの背後にある多くの考え方が的を得ているのは明らかですし、新しいシステムの中でも生かされます。しかし、これらの考え方は少し不格好です。そこで開発者たちがやってきて様々な溝を埋め、角にヤスリをかけることで、新しいエコシステムと新しい時代の基礎になるような新しい強力なプラットフォームを作りました。
“MySQL+memcachedの時代は終わりつつあるのは間違いない”という氏の考えに対して、memcachedはこれからも長く使われるだろうと考えているMark Atwood氏が反論のコメントをしている。
スケールすることで性能を改善する方法の最新技術としてのmemcachedの時代は確かに"終わりつつある"のかもしれませんが、これはmemcachedに落ち度があるからではありません。その他の技術的な選択肢(代替手段ではなくて選択肢)が現れつつあるからです。…
しかし、だからといってmemcachedが使われなくなることはないでしょう。高性能なキー/バリューストアの技術はひとつの構成要素として使いやすく、他のシステムのサブコンポーネントとしても扱いやすいのです。
memcacheがこれからも進化していくことは間違いないと思います。様々な実装がされるでしょうし、制限も解除されるでしょう。管理ツールも豊富になるでしょうし、memcachedプロトコルを使う他のシステムも現れるでしょう。memcachedが使えることを前提にしたORMやフレームワークもきっと出てきます。共有ホスティングやクラウド環境に対応したプロトコルや実装も現れるでしょう。
その後、Todd Hoff氏は自身の記事に対して次のようなコメントをしている。“キャッシュ技術やMySQLがなくなってしまうと言おうとしたわけではありません。メモリ全体はディスクについての新しい課題だと考えています。…過ぎ去りつつあるのはMySQLとmemcachedの組み合わせのことです。スケーラブルなシステムを開発するときのデフォルトのプラットフォームとしてこのふたつは互いに補完し合ってきました。”
現在でもMySQLとmemcacheの組み合わせがスケーラビリティについての課題に対する優れたソリューションであり続けているが、非SQLのソリューションも生まれている。これらの方法は巨大なシステムにより良い効果を提供しそうだ。
【ネクストスケープ】.NET、C#のアプリケーション開発者募集
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信