Japanese subtitles

← PS 19-14 Scaling

Get Embed Code
4 Languages

Showing Revision 1 created 03/11/2014 by Fran Ontanaya.

  1. さて各キャッシュを動かすAPサーバと
  2. 互いのレプリカである2つのデータベースを
    手に入れました
  3. この時 片方のAPサーバのプログラムを実行する
  4. ロードバランサを追加しました
  5. 2台のAPサーバはキャッシュを同期し続けています
  6. Spreadによる同期は複雑で
    APサーバの台数には限界があったので
  7. 次はmemcachedレイヤを足しました
  8. APサーバにインメモリキャッシュを持たせる代わりに
  9. memcached経由で通信します
  10. キャッシュを同期する代わりに
    APサーバ同士で共有したのです
  11. 悲しいことに
    ここに到達するまでに長くかかりすぎました
  12. memcachedを早く使えばよかったです
  13. これですべてのキャッシュをmemcachedに移行し
  14. 任意のAPサーバも増やせました
  15. APサーバは大きくなりキャッシュも同期し
  16. 何も心配する必要がなくなりました
  17. 次はデータベースの負荷の問題です
  18. 耐久性とパフォーマンス向上のため
    すでにレプリケートしていましたが
  19. 読み込んだデータを複数のマシンに
    送れるようになりました
  20. またリンクとコメントを
    別々に格納できるようになりました
  21. コメント用のデータベースもレプリケートします
  22. リンクを投稿したらリンク専用のデータベースに
  23. コメントはコメント専用に格納されるのです
  24. 今でも基本的にこの方法で
    データベースを拡張しています
  25. 最初にシャーディングを作ればよかったと思います
  26. Thing DBを書き直した時 いつか必要になるから
  27. シャーディングを追加したほうがいいと思ったのですが
  28. thingの稼働に必死だったので やめたのです
  29. 巨大なシステムを作る時は困難なことを先にしないと
  30. 2度とそのチャンスはやってこないことを学びました
  31. データベースが大きすぎて
    シャーディングの追加は大変です
  32. 今やマシンやキャッシングを増やす方が簡単です
  33. いつか誰かがやらねばなりません
  34. あの時やればもっと簡単でした
  35. Thing DBに変えた時 結合を使うのをやめたので
  36. 結果的にシャーディングを作ってもよかったのです
  37. APサーバのソフトは徐々に変えましたが
    常にPythonを使っていました
  38. 最初のサーバは覚えていませんが
  39. Redditでアーロンが作成したフレームワークの
    web.pyに変えたのです
  40. web.pyは今でもネットでシェアしています
  41. ハンドラクラスとかGETやPOST関数の概念をもつ
  42. フレームワークを見たのは初めてでした
  43. 以来その考え方に夢中になったのです
  44. 実はGAEやWebapp2もweb.pyの
  45. デザインを継承しています
  46. 意志決定を模索していた時期だったので
  47. web.pyの導入は嬉しかったです
  48. 現在PythonはPylonsという
    フレームワークを使っています
  49. Pylonsに変えた時web.pyの維持はやめました
  50. 第三者が作ったデータベースを使って
  51. それをバラバラにしてweb.pyのように機能させました
  52. あとから考えれば自前のものにするべきでしたが
  53. 結局Pylonsを使ったのです
  54. PylonsのReddit版はオープンソースになっています
  55. それはPylonsとは
    まったく別物になっているのですが
  56. どうやらRedditではまだそれを使っているようです