システム設計を勉強する上でのチェックポイント


目的

今ままでは、このシステム入門というリンクを渡していただけだったのですが、項目が多くどのくらい勉強したら良いか判断しにくいため、勉強した時のチェックポイントを整理しました。
チェックポイントは、仕組みを確認する質問と応用の質問を用意しました。仕組みを勉強した後、応用の事例を勉強することがおすすめです。

チェックポイント

  • 垂直スケーリング・水平スケーリングとは何か?どちらをよく利用するか?それぞれどのような時に利用するか?
    • kubernetesで、垂直スケーリング・水平スケーリングはそれぞれどのように行われているか?
  • データベースレプリケーション・データベースパーティションはどのようなものか?
    • BigQueryやSpannerはどのようにデータベースパーティションを行っているか?
  • RDBやNoSQLのスケーラビリティはどのように担保されているのか?それぞれの違いは?
    • RDBやNoSQLそれぞれ一つづつ、オープンソースもしくはクラウドサービスの例を上げて、詳細に説明してください。
  • Write-through, Write-behindそれぞれどのような意味か?
  • Eviction Policyとは何か?
    • Eviction Policyの設定ごとに、適したシステム要件はどのようなものか例を説明してください
  • 一貫性と可用性のトレードオフは何か?CAP理論とは何か?
    • Spanner, Auroraはなぜ便利か?どのような仕組みで実装されているか?
  • Fault-tolerantとは何か?
  • Event Driven Architectureとは何か?
  • CQRS(Command and Query Responsibility Segregation)とは何か?
  • クライアント,CDN,Webサーバー,データベース,アプリケーションそれぞれ何か?
    • それぞれのレイアでキャッシュはどのような時利用すると便利か?
    • Nginxとは何か?どのような仕組みで動いているか?
  • メッセージキューとは何か?どのような時に使われるか?
    • Google pub/subは、どのような仕組みのサービスか?どのような時に利用されるか?一貫性と可用性のトレードオフはどのような選択をしているか?
  • 冪等性とは何か?
    • 冪等な更新処理はどのように行えば良いか?

チェックポイント確認用URL

その他参考URL

システム設計関係で勉強になったリンクをいろいろ貼っています。
基礎を知った上で、それぞれの企業がどのようなことを行っているか、クラウドサービスやオープンソースはどんな特徴があるか勉強すると、より理解が深まります。