ЁЯОк рдзрдбрд╛ 01 тАФ Scaling рдХрд╛: рд╢рд╛рд│реЗрдЪреНрдпрд╛ рдЬрддреНрд░реЗрддреАрд▓ рдирд┐рдХрд╛рд▓рд╛рдЪрд╛ рджрд┐рд╡рд╕
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 13 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-measuring-load
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рд╣рд╛ рдкреВрд░реНрдг рдХреЛрд░реНрд╕ рд╕реЛрдбрд╡рддреЛ рддреА рдПрдХрдЪ рд╕рдорд╕реНрдпрд╛: рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╡рд╢реА рд╢рд╛рд│реЗрдЪреНрдпрд╛ website рд▓рд╛ рд╕реЗрдХрдВрджрд╛рд▓рд╛ 40 рднреЗрдЯреА рдорд┐рд│рддрд╛рдд. рдирд┐рдХрд╛рд▓рд╛рдЪреНрдпрд╛ рджрд┐рд╡рд╢реА рддреНрдпрд╛ 2,000 рд╣реЛрддрд╛рдд. Site рд╕рдЧрд│реНрдпрд╛рдВрд╕рд╛рдареА рдЬрд▓рдж рд░рд╛рд╣рд┐рд▓реА рдкрд╛рд╣рд┐рдЬреЗ тАФ page (UI), рддреНрдпрд╛рдорд╛рдЧрдЪрд╛ API, рдЖрдгрд┐ рддреНрдпрд╛рдорд╛рдЧрдЪрд╛ database. рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕рднрд░ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рддреНрдпрд╛ рдЦрд▒реНрдпрд╛ files:
- scale/sim.py тАФ рд╢рд╛рд│реЗрдЪреА рдЬрддреНрд░рд╛: web app рдХрд╕рд╛ scale рд╣реЛрддреЛ рдпрд╛рдЪреЗ рд▓рд╣рд╛рди, рдкреНрд░рд╛рдорд╛рдгрд┐рдХ simulations, рд╢реБрджреНрдз Python рдордзреНрдпреЗ (227 рдУрд│реА, рд╢реВрдиреНрдп dependencies)
- scale/demo.py тАФ рдкреНрд░рддреНрдпреЗрдХ рдзрдбрд╛ рдПрдХ рд▓рд╣рд╛рди program рдореНрд╣рдгреВрди (
python3 scale/demo.py <section>; sections:why measure cdn edge balance autoscale kubernetes serverless cache replicas shards queues resilience) - scale/test_scale.py тАФ рдЬрддреНрд░реЗрдЪреНрдпрд╛ рдирд┐рдпрдорд╛рдВрд╡рд░ 13 checks
- demo-output.txt тАФ рдирд┐рд░реЛрдЧреА run рдХрд╛рдп print рдХрд░рддреЛ
ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЖрдзреА: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд Python 3 рд╣рд╡реЗ тАФ AWS account рдирдХреЛ,
pip installрдирдХреЛ.sim.pyрдордзреНрдпреЗ рдЧреЛрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдЪреНрдпрд╛ рдЖрдХрдбреНрдпрд╛рдВрд╕рд╣ рд╢рд┐рдХрд╡рдгреНрдпрд╛рд╕рд╛рдареАрдЪреЗ models рдЖрд╣реЗрдд (рдПрдХрд╛ server рд▓рд╛ рд╕реЗрдХрдВрджрд╛рд▓рд╛ 150 requests, 2 рдорд┐рдирд┐рдЯрд╛рдВрдЪрд╛ warm-up, 200 ms рдЪрд╛ Lambda). рдЦрд▒реНрдпрд╛ systems рдордзреНрдпреЗ network jitter, retries рдЖрдгрд┐ limits рдпреЗрддрд╛рдд тАФ рдПрдЦрд╛рджреНрдпрд╛ рдЖрдХрдбреНрдпрд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рдгреНрдпрд╛рдЖрдзреА рдЦрд▒реНрдпрд╛ system рдЪрд╛ load test рдХрд░рд╛ (рдзрдбрд╛ 02). on a real account рдЕрд╕реЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ commands рд╕рд╛рдареА AWS CLI (рдХрд┐рдВрд╡рд╛ Terraform /kubectl) рдЖрдгрд┐ credentials рд▓рд╛рдЧрддрд╛рдд, рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдкреИрд╕реЗ рд▓рд╛рдЧреВ рд╢рдХрддрд╛рдд.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рджрд░рд╡рд░реНрд╖реА рдирд┐рдХрд╛рд▓рд╛рдЪреНрдпрд╛ рджрд┐рд╡рд╢реА рд╢рд╛рд│рд╛ рдЬрддреНрд░рд╛ рднрд░рд╡рддреЗ. рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╡рд╢реА рдХрд╛рд╣реА рдкрд╛рд▓рдХ office рдордзреНрдпреЗ рдпреЗрддрд╛рдд. рдПрдХрд╛ рдЦрд┐рдбрдХреАрд╡рд░ рдПрдХ рдХрд╛рд░рдХреВрди рдкреБрд░реЗрд╕рд╛ рдЕрд╕рддреЛ.
рдордЧ рдирд┐рдХрд╛рд▓ рд╕реВрдЪрдирд╛ рдлрд▓рдХрд╛рд╡рд░ рд▓рд╛рдЧрддреЛ. рд╕рдЧрд│реЗ рдПрдХрджрдо рдпреЗрддрд╛рдд. рд░рд╛рдВрдЧ рдлрд╛рдЯрдХрд╛рдмрд╛рд╣реЗрд░ рдЬрд╛рдКрди рд░рд╕реНрддреНрдпрд╛рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрддреЗ.
рдореБрдЦреНрдпрд╛рдзреНрдпрд╛рдкрд┐рдХрд╛ рджреАрдкрд┐рдХрд╛рд╕рдореЛрд░ рджреЛрди рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд:
- рдореЛрдареА рдЦрд┐рдбрдХреА ЁЯкСтЮбя╕ПЁЯЫЛя╕П тАФ рдореЛрдареНрдпрд╛ рдЯреЗрдмрд▓рд╛рд╡рд░ рдЬрд╛рд╕реНрдд рдЬрд▓рдж рдХрд╛рд░рдХреВрди рдмрд╕рд╡рд╛. рд╕реЛрдкреЗ. рдкрдг рд╕рд░реНрд╡рд╛рдд рдореЛрдареЗ рдЯреЗрдмрд▓ рдХрдзреАрддрд░реА рд╕рдВрдкрддреЗрдЪ, рдЖрдгрд┐ рддреЛ рдПрдХрдЪ рдХрд╛рд░рдХреВрди рдЖрдЬрд╛рд░реА рдкрдбрд▓рд╛ рддрд░ рдХреБрдгрд╛рд▓рд╛рдЪ рд╕реЗрд╡рд╛ рдорд┐рд│рдд рдирд╛рд╣реА.
- рдЬрд╛рд╕реНрдд рдЦрд┐рдбрдХреНрдпрд╛ ЁЯкСЁЯкСЁЯкС тАФ рд╢реЗрдЬрд╛рд░реА рд╢реЗрдЬрд╛рд░реА рджрд╣рд╛ рдЦрд┐рдбрдХреНрдпрд╛ рдЙрдШрдбрд╛, рдЖрдгрд┐ рдлрд╛рдЯрдХрд╛рд╡рд░ рдПрдХ рдорджрддрдиреАрд╕ рдареЗрд╡рд╛ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рд▓рдХрд╛рд▓рд╛ рдореЛрдХрд│реНрдпрд╛ рдЦрд┐рдбрдХреАрдХрдбреЗ рдкрд╛рдард╡рддреЛ. рдЗрдереЗ рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ size рдирд╕рддреЛ. рдкрдг рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рдбрдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рд▓рдХрд╛рд▓рд╛ рдорджрдд рдХрд░реВ рд╢рдХрд▓реА рдкрд╛рд╣рд┐рдЬреЗ тАФ рдХреЛрдгрддреАрд╣реА рдЦрд┐рдбрдХреА рд╕реНрд╡рддрдГрдЪреА рдЦрд╛рдЬрдЧреА рд╡рд╣реА рдареЗрд╡реВ рд╢рдХрдд рдирд╛рд╣реА.
рдЖрдгрд┐ рдЖрдгрдЦреА рдПрдХ рдирд┐рдпрдо: рдЬрддреНрд░рд╛ рддрд┐рдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд╣рд│реВ рднрд╛рдЧрд╛рдЗрддрдХреАрдЪ рдЬрд▓рдж рдЕрд╕рддреЗ. рд╕рдЧрд│реНрдпрд╛ рджрд╣рд╛ рдЦрд┐рдбрдХреНрдпрд╛рдВрдирд╛ office рдЪреНрдпрд╛ рдПрдХрд╛рдЪ рдиреЛрдВрджрд╡рд╣реАрдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рд╛рд╡реА рд▓рд╛рдЧрдд рдЕрд╕реЗрд▓ рддрд░ рджрд╣рд╛ рдЦрд┐рдбрдХреНрдпрд╛рдВрдЪрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдд рдирд╛рд╣реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
p["ЁЯСк parents<br/>40 тЖТ 2,000 per second"]
subgraph up["ЁЯЫЛя╕П scale UP"]
big["one bigger counter<br/>more CPU, more memory<br/>there is a biggest size"]
end
subgraph out["ЁЯкСЁЯкСЁЯкС scale OUT"]
lb["тЪЦя╕П helper at the gate<br/>load balancer"]
c1["counter 1"]
c2["counter 2"]
c3["counter тАж23"]
lb --> c1
lb --> c2
lb --> c3
end
db["ЁЯУТ the one register<br/>database тАФ the slowest part?"]
p --> big
p --> lb
big --> db
c1 --> db
c2 --> db
c3 --> db
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/scaling/lesson-diagrams.html#l01
тЭУ рдХрд╛рдп
- Scaling тАФ load рд╡рд╛рдврд▓рд╛ рддрд░реА system рдЬрд▓рдж рдЖрдгрд┐ рдмрд░реЛрдмрд░ рдЪрд╛рд▓реВ рдареЗрд╡рдгреЗ.
- Load тАФ рдХрд┐рддреА рдХрд╛рдо рдпреЗрддреЗ, рд╕рд╣рд╕рд╛ requests per second (req/s) рдордзреНрдпреЗ рдореЛрдЬрд▓реЗ рдЬрд╛рддреЗ.
- Scale up (vertical) тАФ рдореЛрдареЗ machine: рдЬрд╛рд╕реНрдд CPU, рдЬрд╛рд╕реНрдд memory. Code рдмрджрд▓рд╛рдпрд▓рд╛ рдирдХреЛ. рдкрдг рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ size рдХрдзреАрддрд░реА рд╕рдВрдкрддреЛрдЪ, рдЖрдгрд┐ size рдмрджрд▓рдгреЗ рдореНрд╣рдгрдЬреЗ рд╕рд╣рд╕рд╛ restart.
- Scale out (horizontal) тАФ рддреЗрдЪ рдХрд╛рдо рдХрд░рдгрд╛рд░реА рдЬрд╛рд╕реНрдд machines, load balancer рдорд╛рдЧреЗ. рдорд░реНрдпрд╛рджрд╛ рдирд╛рд╣реА, рдЖрдгрд┐ рдПрдХ machine рдЧреЗрд▓реЗ рддрд░реА рддреЗ рдЕрдиреЗрдХрд╛рдВрдкреИрдХреА рдПрдХрдЪ рдЕрд╕рддреЗ. рдкрдг app рдиреЗ рддреЗ рд╣реЛрдК рджрд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ: user рдЪрд╛ data рдлрдХреНрдд рдПрдХрд╛рдЪ server рдЪреНрдпрд╛ рдЖрдд рдареЗрд╡рд╛рдпрдЪрд╛ рдирд╛рд╣реА (рдзрдбрд╛ 05).
- Headroom тАФ рдкреНрд░рддреНрдпреЗрдХ server 100% рдирд╡реНрд╣реЗ рддрд░ рд╕реБрдорд╛рд░реЗ 60% рд╡реНрдпрд╕реНрдд рдареЗрд╡рд╛, рдореНрд╣рдгрдЬреЗ рдЕрдЪрд╛рдирдХ load рд╡рд╛рдврд▓рд╛ рдХрд┐рдВрд╡рд╛
рдПрдЦрд╛рджрд╛ server рдЧреЗрд▓рд╛ рддрд░реА рдмрд╛рдХреАрдЪреНрдпрд╛рдВрд╡рд░ рдЬрд╛рд╕реНрдд рднрд╛рд░ рдкрдбрдд рдирд╛рд╣реА.
servers_needed()60% рд╡рд╛рдкрд░рддреЗ. - рд╕рд░реНрд╡рд╛рдд рд╣рд│реВ рднрд╛рдЧ рд╡реЗрдЧ рдард░рд╡рддреЛ тАФ web app рдЪреЗ рддреАрди tiers рдЕрд╕рддрд╛рдд, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рд╕реНрд╡рддрдГрдЪрд╛ рдЖрд░рд╛рдЦрдбрд╛ рд╣рд╡рд╛: UI (pages, scripts, рдЪрд┐рддреНрд░реЗ тАФ рдзрдбреЗ 03тАУ04), API (рдзрдбреЗ 05тАУ08) рдЖрдгрд┐ database (рдзрдбреЗ 09тАУ12). рддреНрдпрд╛рдирдВрддрд░ рдзрдбрд╛ 13 рдПрдЦрд╛рджрд╛ рднрд╛рдЧ рдмрд┐рдШрдбрд▓рд╛ рддрд░реА рддрд┐рдиреНрд╣реА рдЪрд╛рд▓реВ рдареЗрд╡рддреЛ.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг traffic рд╕рдкрд╛рдЯ рдирд╕рддреЗ. рдирд┐рдХрд╛рд▓рд╛рдЪрд╛ рджрд┐рд╡рд╕, sale, рдПрдЦрд╛рджреА рдмрд╛рддрдореА рдХрд┐рдВрд╡рд╛ TV рдЬрд╛рд╣рд┐рд░рд╛рдд рдПрдХрд╛ рдорд┐рдирд┐рдЯрд╛рдд рд╕рд╛рдорд╛рдиреНрдп load рдЪреНрдпрд╛ 50 рдкрдЯ load рдЖрдгреВ рд╢рдХрддреЗ. 40 req/s рд▓рд╛ рдареАрдХ рдЪрд╛рд▓рдгрд╛рд░реА site 2,000 рд▓рд╛ рдХреЛрд╕рд│рддреЗ тАФ рдЖрдзреА рд╣рд│реВ pages, рдордЧ errors, рдордЧ рдХрдзреАрдЪ рд░рд┐рдХрд╛рдореА рди рд╣реЛрдгрд╛рд░реА рд░рд╛рдВрдЧ. 50 рдкрдЯ рдореЛрдареЗ рдПрдХ machine рддреБрдореНрд╣реА рд╡рд┐рдХрдд рдШреЗрдК рд╢рдХрдд рдирд╛рд╣реА. App рдиреЗ рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА рддрд░ рддреБрдореНрд╣реА 20 рд▓рд╣рд╛рди machines рдЖрдгрдЦреА рдЬреЛрдбреВ рд╢рдХрддрд╛. рд╣рд╛ рдХреЛрд░реНрд╕ app рд▓рд╛ рддреЗ рд╢рдХреНрдп рдХрд░рд╛рдпрд▓рд╛ рд╢рд┐рдХрд╡рддреЛ, рдПрдХрд╛ tier рдорд╛рдЧреВрди рджреБрд╕рд░рд╛.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
scale/sim.py рдордзрд▓реЗ servers_needed(rps, per_server_rps, target_util=0.6)
load рд▓рд╛ рдПрдХ server 60% рд╡рд░ рдЬрд┐рддрдХреЗ рдХрд░реВ рд╢рдХрддреЛ рддреНрдпрд╛рдиреЗ рднрд╛рдЧрддреЗ рдЖрдгрд┐ рд╡рд░рдЪреНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХрд╛рдд рдиреЗрддреЗ:
ceil(rps / (per_server_rps ├Ч 0.6)). scale/demo.py рдордзрд▓реЗ why()
рддреНрдпрд╛рд▓рд╛ рдПрдХрд╛ server рд▓рд╛ 150 req/s (рдЙрджрд╛рд╣рд░рдгрд╛рдЪрд╛ рдЖрдХрдбрд╛) рдзрд░реВрди 40, 400 рдЖрдгрд┐ 2,000 req/s рд╕рд╛рдареА рд╡рд┐рдЪрд╛рд░рддреЗ.
рддреБрдордЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ рдЖрдХрдбрд╛ load test рдордзреВрди рдпреЗрддреЛ (рдзрдбрд╛ 02).
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 scale/demo.py why
python3 - <<'EOF'
import sys; sys.path.insert(0, "scale"); from sim import servers_needed
for per in (150, 300, 600):
print(f"per server {per:>3} req/s тЖТ {servers_needed(2000, per):>2} servers for 2,000 req/s")
for u in (0.6, 0.8, 1.0):
print(f"run each server at {u:.0%} тЖТ {servers_needed(2000, 150, u):>2} servers")
print("results x10 (20,000 req/s) тЖТ", servers_needed(20000, 150), "servers")
EOF
python3 scale/test_scale.py
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
why рд╣реЗ print рдХрд░рддреЗ:
40 req/s at 150 req/s per server (run at 60%) тЖТ 1 server(s)
400 req/s at 150 req/s per server (run at 60%) тЖТ 5 server(s)
2000 req/s at 150 req/s per server (run at 60%) тЖТ 23 server(s)
рддреБрдордЪрд╛ snippet рд╣реЗ print рдХрд░рддреЛ:
per server 150 req/s тЖТ 23 servers for 2,000 req/s
per server 300 req/s тЖТ 12 servers for 2,000 req/s
per server 600 req/s тЖТ 6 servers for 2,000 req/s
run each server at 60% тЖТ 23 servers
run each server at 80% тЖТ 17 servers
run each server at 100% тЖТ 14 servers
results x10 (20,000 req/s) тЖТ 223 servers
Tests рд╢реЗрд╡рдЯреА 13/13 passed рджрд╛рдЦрд╡рддрд╛рдд.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдореЛрдареНрдпрд╛ server рд▓рд╛ (300 рдХрд┐рдВрд╡рд╛ 600 req/s) рдХрдореА рдкреНрд░рддреА рд▓рд╛рдЧрддрд╛рдд тАФ рд╣реЗ scaling up. рддреНрдпрд╛рдЪ server рдЪреНрдпрд╛ рдЬрд╛рд╕реНрдд рдкреНрд░рддреА тАФ рд╣реЗ scaling out, рдЖрдгрд┐ рддреЗ 10├Ч рд▓рд╛ рд╕реБрджреНрдзрд╛ рдЪрд╛рд▓рдд рд░рд╛рд╣рддреЗ (223 servers). 100% рд╡рд░ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдиреЗ рд╣рд┐рд╢реЛрдмрд╛рдд 9 servers рд╡рд╛рдЪрддрд╛рдд, рдкрдг рдЕрдЪрд╛рдирдХ рд╡рд╛рдвреАрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдЧреЗрд▓реЗрд▓реНрдпрд╛ server рд╕рд╛рдареА рдЬрд╛рдЧрд╛рдЪ рдЙрд░рдд рдирд╛рд╣реА.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рдкреНрд░рддреНрдпреЗрдХ server рд▓рд╛ рдерд╛рдВрдмрд╡реВрди рдареЗрд╡рдгрд╛рд░реА рддреА рдПрдХ рд╣рд│реВ query рджреБрд░реБрд╕реНрдд рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рд╕рддрдд scale up рдХрд░рдд рд░рд╛рд╣рдгреЗ
- logins рдХрд┐рдВрд╡рд╛ uploads рдПрдХрд╛рдЪ server рдЪреНрдпрд╛ рдЖрдд рдареЗрд╡рдгрд╛рд▒реНрдпрд╛ app рд▓рд╛ scale out рдХрд░рдгреЗ (рдзрдбрд╛ 05 рд╣реЗ рджреБрд░реБрд╕реНрдд рдХрд░рддреЛ)
- рд╕рд░реНрд╡рд╛рдд рдЧрд░реНрджреАрдЪреНрдпрд╛ рдорд┐рдирд┐рдЯрд╛рдРрд╡рдЬреА рд╕рд░рд╛рд╕рд░реА рджрд┐рд╡рд╕рд╛рд╕рд╛рдареА рдирд┐рдпреЛрдЬрди рдХрд░рдгреЗ
- database рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рд╣рд│реВ рднрд╛рдЧ рдЕрд╕рддрд╛рдирд╛ API servers рд╡рд╛рдврд╡рдгреЗ тАФ рдЖрддрд╛ рдЬрд╛рд╕реНрдд servers рддреНрдпрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рддрд╛рдд
- рдЗрдерд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдЪреНрдпрд╛ рдЖрдХрдбреНрдпрд╛рдВрд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рдгреЗ: рдПрдХрд╛ server рд▓рд╛ 150 req/s рд╣рд╛ рдзрдбреНрдпрд╛рд╕рд╛рдареАрдЪрд╛ рдЧреЛрд▓ рдЖрдХрдбрд╛ рдЖрд╣реЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
On a real account тАФ рдПрдХрд╛ EC2 instance рд▓рд╛ scale up рдХрд░рдгреЗ рдореНрд╣рдгрдЬреЗ рддреЗ рдерд╛рдВрдмрд╡рдгреЗ, type рдмрджрд▓рдгреЗ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рдгреЗ (рддреНрдпрд╛ machine рдХрдбреВрди рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рд╕реЗрд╡рд╛ рдирд╛рд╣реА):
aws ec2 stop-instances --instance-ids i-0123456789abcdef0
aws ec2 wait instance-stopped --instance-ids i-0123456789abcdef0
aws ec2 modify-instance-attribute --instance-id i-0123456789abcdef0 --instance-type '{"Value": "m7g.2xlarge"}'
aws ec2 start-instances --instance-ids i-0123456789abcdef0
Scaling out рдореНрд╣рдгрдЬреЗ load balancer рдорд╛рдЧрдЪреНрдпрд╛ Auto Scaling group рд╡рд░рдЪрд╛ рдПрдХ рдЖрдХрдбрд╛ (рдзрдбрд╛ 06):
aws autoscaling set-desired-capacity --auto-scaling-group-name school-api --desired-capacity 23
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдирд┐рдХрд╛рд▓рд╛рдЪреНрдпрд╛ рджрд┐рд╡рд╕рд╛рдЖрдзреА рдкреНрд░рддреНрдпреЗрдХ tier рд╕рд╛рдареА рдПрдХ рдУрд│ рд▓рд┐рд╣рд╛: "UI тАж рдиреЗ scale рд╣реЛрддреЛ, API тАж рдиреЗ scale рд╣реЛрддреЛ, database тАж рдиреЗ scale рд╣реЛрддреЛ". рдЬреНрдпрд╛ tier рд▓рд╛ рдЙрддреНрддрд░ рдирд╛рд╣реА рддреЛрдЪ рдЖрдзреА рдХреЛрд╕рд│рддреЛ.
тПня╕П рдкреБрдвреЗ
"рд╕реЗрдХрдВрджрд╛рд▓рд╛ 2,000" рдЖрдгрд┐ "рдПрдХрд╛ server рд▓рд╛ 150" рд╣реЗ рдЖрдХрдбреЗ рдЖрд╣реЗрдд. рдЦрд░реЗ рдЖрдХрдбреЗ рдХреБрдареВрди рдпреЗрддрд╛рдд? рдмрд╛рдВрдзрдгреНрдпрд╛рдЖрдзреА рдореЛрдЬрд╛.
git checkout lesson-02-measuring-load