読者です 読者をやめる 読者になる 読者になる

Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

【アドテクおじさんのお悩み相談室 #2】お部屋探しのトレードオフ

アドテクおじさん アーキテクチャ データベース

f:id:ko-shibata:20160404103204p:plain

このコーナーはOpt Technologiesでアドテクとかをやっているエンジニアのおじさん(自称アドテクおじさん)が、様々な技術を使って、皆さんのお悩みをスバッと解決しちゃおうという連載企画です。

第二回目のお悩みはこちら!

本日のお悩み

アドテクおじさんお疲れ様です。

 

僕は今、引越しを考えていて、色んなサイトや不動産屋さんを回っています。

 

築浅で設備や部屋の質が良くて、駅近でアクセス良好、しかも周辺環境の良いエリアで、という条件で部屋を探すと、家賃がとてつもなく高くなるんです!

 

予算内で収めようとすると、アクセスやエリアを優先すればイマイチな部屋になりますし、いい感じの部屋にするとエリアかアクセスが微妙になります。

 

これってひどくないですか? どうすればいいでしょうか?

 

(M.I.さん / 27歳 広告代理店勤務 男性)

アドテクおじさんの答え

私も賃貸住まいなので仰ることは良くわかります。夢を広げながら賃貸サイトを検索すると、突きつけられるのは東京の現実ばかり。たまに奇跡のような物件が見つかったとしても、殆ど内見すらできなかったり。

ここで気づくことは、部屋の質やアクセスやエリアにはトレードオフの関係があることです。そこで、テクノロジーにおける有名なトレードオフを、お部屋探しにおけるトレードオフの写像と仮定して考えてみたいと思います。

CAP定理のトレードオフ

分散データベースなどのシステムでは、以下の3要素全てを同時に成立させるのは困難だとするのが有名なCAP定理です。ここでは、3要素のうち2要素と残りの要素はトレードオフの関係にあると言えます。

  • 一貫性 ("C"onsistency)
    • 全てのノードにおいて同時に同じデータが見えなければならない。
  • 可用性 ("A"vailability)
    • ノード障害により生存ノードの機能性は損なわれない。つまり、ダウンしていないノードが常に応答を返す。単一障害点が存在しないことが必要。
  • 分断耐性 ("P"artition-tolerance)
    • システムは任意の通信障害などによるメッセージ損失に対し、継続して動作を行う。通信可能なサーバーが複数のグループに分断されるケース(ネットワーク分断)を指し、1つのハブに全てのサーバーがつながっている場合は、これは発生しない。ただし、そのような単一障害点のあるネットワーク設計は可用性が成立しない。

CAP定理 - Wikipedia

たくさんのサーバから構成されるようなシステムを作るときには避けては通れない概念です。お部屋探しに当てはめて考えてみるとこうなります。

  • 一貫性 ("C"onsistency) → 部屋の質
    • 全ての人からイケてる部屋だと見えなければならない。
  • 可用性 ("A"vailability) → アクセス
    • ある路線が遅延しても定時出社は損なわれない。つまり、迂回ルートを辿ることで出社が常にできる。社畜の鑑。通勤経路に単一障害点が存在しないことが必要。
  • 分断耐性 ("P"artition-tolerance) → エリア
    • エリアの一部で犯罪が発生しても、治安低下が伝播することなく継続的に治安が保たれる。居住区が複数のエリアに分断されている場合を指し、居住区が集中している場合は、これは発生しない。ただし、そのような単一障害点のある街には可用性が成立しない。

確かに、限られた予算の中でも、どれか一つを諦めればそれなりの条件の物件が見つかりそうな気がしてきました。他のトレードオフも見てみましょう。

ACID特性とBASE特性

CAP定理で言うところの一貫性(整合性)などに着目し、データベースの主にデータ操作について、相対するアーキテクチャとして考えられているのがACID特性BASE特性です。

ACID特性
  • 原子性 ("A"tomicity)
    • データベースに対する操作が不可分(原子的)であり、成功しても失敗しても中途半端な状態で終わらないこと。
  • 一貫性 ("C"onsistency)
    • 互いにユニークであることを保証するユニーク制約などの制約が維持され、データが一貫性のある状態が保たれること。
  • 独立性 ("I"solation)
    • ある部分のデータに対する操作が、他の操作から隔離されており影響を与えないこと。
  • 永続性 ("D"urability)
    • 操作が完了したら、その結果がずっと保たれること。

MySQLなどのリレーショナルデータベース(RDB)はACID特性を持つとされています。強い整合性を持つ代わりに、多数のサーバを使った分散システムにすることが難しいとされています。

BASE特性
  • "B"asically "A"vailable
    • 可用性重視で、少し故障しても利用可能である。
  • "S"oft-state
    • 内部状態によって厳密に管理されず、外部から送られた情報によって柔軟に状態が変わること。
  • "E"ventually consistent
    • 結果整合性。一時的に矛盾のある状態になるかもしれないが、いつかは整合性のある状態になる。

キーバリューストア(KVS)などNoSQLと呼ばれるデータベースはBASE特性を持つとされています。強い整合性を捨てる代わりに、分散システムにしやすかったり、スループットやレイテンシが比較的良かったりします。

お部屋探しにおけるACID特性とBASE特性

ACID特性とBASE特性は、整合性についてのトレードオフを考慮した結果、何かを捨てて何かを選んだアーキテクチャであることがわかりました。何がなんだかよくわからなくなってきましたが、これをお部屋探しに無理矢理当てはめるとこうなります。

ACID特性のお部屋「デザイナーズマンション」
  • 芸術性 ("A"rtistic)
    • デザイナーズを謳うのであれば、利便性よりもデザインが最優先で中途半端は許されない。
  • 快適 ("C"omfortable)
    • ユニークなデザインであることが気に入って入居したのなら、部屋のど真ん中に柱があろうと何だろうと快適に決まってる。
  • (立地が)独立性 ("I"solated)
    • デザイナーズをウリにする物件は、往々にして立地などの条件が微妙なことがある。
  • 独自性 ("D"ifferent)
    • 変わってるね、ってよく言われるんだよね俺〜 自分ではそんなつもりないんだけどさぁ〜

最近は、リノベーションの際にデザイナーズにする例も増えて来ましたよね。築年数に対しては少し高かったりする。

BASE特性のお部屋「シェアハウス」
  • "B"asically "A"ctive
    • 基本アクティブに、意識高く持って。同居人はただ一緒に住んでるだけじゃなくて、互いに高め合うための仲間。
  • "S"ocial
    • 都会のコミュニティの中の小さな小さなコミュニティ。恋愛絡みで色んな事件が起こるかも。
  • "E"xpensive surprisingly
    • 共用部分が充実してたり立地が良いと、意外と賃料の高いシェアハウスもある。普通に一人暮らしするよりも高かったりする。

よくよく考えるとシェアハウスと寮って何が違うんだろう…

アドテクおじさんのまとめ

お部屋探しにおいて、アクセスやエリアや部屋の質にはトレードオフの関係があり、テクノロジーにおけるトレードオフとこじつければ完全に照応していることを学びました。

要件に対して最適なアーキテクチャを考えるようにお部屋探しを行えば、きっとあなたに最適化されたお部屋が見つかるはず!

これにて一件落着!

本コーナーでは、読者の皆さんからのお悩み相談を募集しております。

相談してやってもいいぞ、という寛大なお方は、下記のgoogle formからご応募ください!

docs.google.com

筆者紹介

tech-magazine.opt.ne.jp