🔒

第八章 システムデザイン

システムデザインの対策準備を第三章を見てください。InterviewCatではシステムデザインに大事なコンセプトを紹介しその実用例を述べていきます。
以下の内容について説明していきます。
  • システムデザインのパターン
    • APIデザイン
    • 覚えておきたい数字
    • Cache
    • Replication
    • Sharding
    • Retry
    • Circuit Breaker (サーキットブレーカー)
    • Message queue
    • データベース:SQL vs noSQL
    • リーダー選挙 Leader election
    • 全文検索について
    • 位置検索
    • HTTP Polling vs HTTP Long Polling vs WebSockets
  • 実用例
  • 質問例

システムデザインのパターン

APIデザイン

最初はAPIデザインから入るので
  • CRUD(Create, Read, Update, Delete)の役割
  • ステータスコード:200 OK, 404 Not Found, 500 Internal Server Errorなど
  • リクエストとレスポンスのフォーマット:JSONかXMLかCSVなど
  • URI(Uniform Resource IdentifierIの設計

覚えておきたい数字

Availabilityについて

Availability(可用性)は、サービスが利用可能な時間の割合であるアップタイム(またはダウンタイム)で定量化されることが多い。可用性は一般的に9の数で表され、99.99%の可用性を持つサービスは、9が4つあると表現されます。
 
💡
Availability(可用性)はfault tolerance(耐障害性)とresiliency回復力と似ているところがあるが詳しくはこちらの「耐障害性と回復力について教えてください参考にしてください。
 
Availability level
Allowed unavailability window
per year
90%
36.5 days
95%
18.25 days
99%
3.65 days
99.5%
1.83 days
99.9%
8.76 hours
99.95%
4.38 hours
99.99%
52.6 minutes
99.999%
5.26 minutes
SLAを99.99%にするとサービスを止められる時間が年に1時間もないのでデータベースのメンテナンスなどしたいときどうしてもzero downtimeを考えるのがきついのでサービスの種類によってゆるくしていくのが一般的です。例えばAmazon S3 (Standard)のSLAは99.9%以下としています。
 

Latency について

execute typical instruction
1/1,000,000,000 sec = 1 nanosec
fetch from L1 cache memory
0.5 nanosec
branch misprediction
5 nanosec
fetch from L2 cache memory
7 nanosec
Mutex lock/unlock
25 nanosec
fetch from main memory
100 nanosec
send 2K bytes over 1Gbps network
20,000 nanosec
read 1MB sequentially from memory
250,000 nanosec
fetch from new disk location (seek)
8,000,000 nanosec
read 1MB sequentially from disk
20,000,000 nanosec
send packet US to Europe and back
150 milliseconds = 150,000,000 nanosec
ぜひ覚えておきたいのが:
すべてを見るには

返金は購入日から1日以内に申し出て下さい。詳細はこちらからご確認ください。
また、このコンテンツ以外の他の永久アクセス権は付与されない事はご注意下さい。

支払いはによって保護されています

購入済の方はこちらからログインしてください

テック企業求人一覽

こちらの求人をrecoから紹介されたものです。 recoは現役の外資エンジニアがモックインタビュー付きで面接対策を行ってくれる転職サービスです。 これらの企業にどのように準備に準備して振る舞えば採用されるのか的確なアドバイスを受ける事ができます。 InterviewCatの共著者のgaijineersさんが創業者として皆さんの転職をサポートします。

Mercari
Software Engineer, Backend - Mercoin
Go
Web application development
API development
Protocol Buffers
gRPC

Mercari

Mercari
Software Engineer, iOS - Merpay
UIKit
SwiftUI
Protocol Buffers
Bazel
CircleCI

Mercari

Mercari
Software Engineer, QA - Merpay/Mercoin
QA
Mobile App
Web App
Testing Technology
Testing Automation

Mercari

LegalOn Technologies
TECH-101- Software Engineer, Backend
Go
Docker
Java
AWS
Python

年収: 6501070万円

LegalOn Technologies

LegalOn Technologies
TECH-102- Senior Software Engineer, Backend
Webバックエンド
Linux OS
リレーショナルデータベース
Web API
キャッシュ

年収: 10301500万円

LegalOn Technologies

LegalOn Technologies
TECH-301- Software Engineer, Frontend
Webフロントエンド
TypeScript
HTML
CSS
JavaScript

年収: 7701500万円

LegalOn Technologies

LegalOn Technologies
TECH-MI-101- Software Engineer, LegalOn Technologies Research
AI
Machine Learning
Natural Language Processing
Web Development
Software Development

年収: 7701500万円

LegalOn Technologies

LegalOn Technologies
TECH-NP-104 Senior Software Engineer, Frontend Lead - New Product
React
Next.js
TypeScript
Webpack
Vite

年収: 7701800万円

LegalOn Technologies

LegalOn Technologies
TECH-S-101- Software Engineer - Search
プロダクトマネージャー
テックリード
プロジェクトリーダー
データ構造
アルゴリズム

年収: 7701070万円

LegalOn Technologies

LegalOn Technologies
TECH-S-102- Senior Software Engineer - Search
検索
推薦

年収: 10301500万円

LegalOn Technologies

LegalOn Technologies
TECH-S-103- Software Engineering Manager - Search
検索
推薦
マネジメント
機械学習
自然言語処理

年収: 14402500万円

LegalOn Technologies

LegalOn Technologies
TECH-S/EN-103- Software Engineering Manager - Search
Python
Java
SQL
gRPC
Kubernetes

年収: 14.425万円

LegalOn Technologies

LegalOn Technologies
TECH-US-101- Software Engineer, Backend - Global Team
Ruby
AWS
Docker
DDD
Clean Architecture

年収: 7701070万円

LegalOn Technologies

LegalOn Technologies
TECH-US-102- Senior Software Engineer, Backend - Global Team
Ruby
AWS
GCP
Azure
Docker

年収: 10701500万円

LegalOn Technologies