ЁЯПл The SchoolтА║ЁЯЦея╕П EC2тА║ЁЯЦея╕П рдзрдбрд╛ 01 тАФ EC2 рдХрд╛ тАФ regions рдЖрдгрд┐ AZs: рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЗрдорд╛рд░рддреАрдВрдордзрд▓реЗ рдбреЗрд╕реНрдХ
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯЦея╕П рдзрдбрд╛ 01 тАФ EC2 рдХрд╛ тАФ regions рдЖрдгрд┐ AZs: рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЗрдорд╛рд░рддреАрдВрдордзрд▓реЗ рдбреЗрд╕реНрдХ

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-instance-types


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

Amazon EC2 рдореНрд╣рдгрдЬреЗ рдХрд╛рдп, рд▓реЛрдХ computers рд╡рд┐рдХрдд рдШреЗрдгреНрдпрд╛рдРрд╡рдЬреА рднрд╛рдбреНрдпрд╛рдиреЗ рдХрд╛ рдШреЗрддрд╛рдд, рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг course рдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░рд╛ рдПрдХрдЪ design рдирд┐рдпрдо: рддреБрдордЪреЗ рдбреЗрд╕реНрдХ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЗрдорд╛рд░рддреАрдВрдордзреНрдпреЗ рдкрд╕рд░рд╡рд╛. рд╕рдВрдкреВрд░реНрдг course рднрд░ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рдЕрд╢рд╛ рдЦрд▒реНрдпрд╛ files:

ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЖрдзреА: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд Python 3 рд▓рд╛рдЧреЗрд▓ тАФ рдмрд╛рдХреА рдХрд╛рд╣реА рдирд╛рд╣реА; AWS account рдирд╛рд╣реА, SDK рдирд╛рд╣реА. Simulations рд╣реА рд╢рд┐рдХрд╡рдгреНрдпрд╛рд╕рд╛рдареАрдЪреА models рдЖрд╣реЗрдд, рдЖрдгрд┐ рддреНрдпрд╛рддрд▓реНрдпрд╛ рдХрд┐рдорддреА рдЕрдВрджрд╛рдЬреЗ рдЖрд╣реЗрдд (рдиреЗрд╣рдореА EC2 pricing page рддрдкрд╛рд╕рд╛). рдкреНрд░рддреНрдпреЗрдХ рдзрдбрд╛ рдЦрд▒реНрдпрд╛ AWS CLI commands рд╕реБрджреНрдзрд╛ рджрд╛рдЦрд╡рддреЛ, рддреНрдпрд╛рдВрд╡рд░ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЦрд▒реНрдпрд╛ account рд╡рд░ рдЕрд╕реЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЕрд╕рддреЗ тАФ рддреНрдпрд╛рдВрдирд╛ credentials рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪрд╛ рдЦрд░реНрдЪ рдпреЗрдК рд╢рдХрддреЛ. рдЪрд╛рдВрдЧрд▓реЗ рд╢реЗрдЬрд╛рд░реА: IAM school (рд╣реЗ рдбреЗрд╕реНрдХ рдШрд╛рд▓рддрд╛рдд рддреЗ badges) рдЖрдгрд┐ AWS school (рд╕рдВрдкреВрд░реНрдг campus).

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рд╢рд╛рд│реЗрд▓рд╛ рдореБрд▓рд╛рдВрдирд╛ рдЧреГрд╣рдкрд╛рда рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрд╛рдЧрд╛ рд╣рд╡реА рдЖрд╣реЗ. рд╢рд╛рд│рд╛ рд╕реНрд╡рддрдГ рдЕрднреНрдпрд╛рд╕рд┐рдХрд╛ рдмрд╛рдВрдзреВ рд╢рдХрддреЗ: рдбреЗрд╕реНрдХ, рдЦреБрд░реНрдЪреНрдпрд╛, рджрд┐рд╡реЗ рд╡рд┐рдХрдд рдШреНрдпрд╛, рд╢рд╛рдВрдд рджрд┐рд╡рд╕рд╛рдВрддрд╣реА рддреНрдпрд╛рдВрдЪреЗ рдкреИрд╕реЗ рднрд░рд╛, рдЖрдгрд┐ рдкрд░реАрдХреНрд╖рд╛ рдЖрд▓реНрдпрд╛ рдХреА рдирд╡реНрдпрд╛ рдбреЗрд╕реНрдХрд╕рд╛рдареА рдорд╣рд┐рдиреЛрдиреНрдорд╣рд┐рдиреЗ рдерд╛рдВрдмрд╛. рдХрд┐рдВрд╡рд╛ рддреА рдПрдХрд╛ рдореЛрдареНрдпрд╛ рдЕрднреНрдпрд╛рд╕рд┐рдХрд╛ рдХрдВрдкрдиреАрдХрдбреВрди рдбреЗрд╕реНрдХ рднрд╛рдбреНрдпрд╛рдиреЗ ЁЯЦея╕П рдШреЗрдК рд╢рдХрддреЗ: рдбреЗрд╕реНрдХ рдорд╛рдЧрд╛, рдПрдХрд╛ рдорд┐рдирд┐рдЯрд╛рдд рдмрд╕рд╛, рдЬрд┐рддрдХрд╛ рд╡реЗрд│ рдмрд╕рд▓рд╛рдд рддрд┐рддрдХреЗрдЪ рдкреИрд╕реЗ рднрд░рд╛, рдХрд╛рдо рдЭрд╛рд▓реЗ рдХреА рдкрд░рдд рджреНрдпрд╛.

рддреНрдпрд╛ рдХрдВрдкрдиреАрдЪреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рд┐рдХрд╛ рдЕрдиреЗрдХ рдЬрд┐рд▓реНрд╣реНрдпрд╛рдВрдордзреНрдпреЗ рдЖрд╣реЗрдд (ЁЯПЩя╕П Regions, рдЬрд╕реЗ us-east-1 рдХрд┐рдВрд╡рд╛ eu-west-1). рдкреНрд░рддреНрдпреЗрдХ рдЬрд┐рд▓реНрд╣реНрдпрд╛рдд рдЕрдиреЗрдХ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЗрдорд╛рд░рддреА рдЖрд╣реЗрдд (ЁЯПв Availability Zones) тАФ рдкреНрд░рддреНрдпреЗрдХреАрдЪреА рд╕реНрд╡рддрдГрдЪреА рд╡реАрдЬ, рд╕реНрд╡рддрдГрдЪреА cooling рдЖрдгрд┐ рд╕реНрд╡рддрдГрдЪреЗ network, рдПрдХрдореЗрдХреАрдВрдкрд╛рд╕реВрди рдХрд╛рд╣реА рдХрд┐рд▓реЛрдореАрдЯрд░ рджреВрд░, рд╡реЗрдЧрд╡рд╛рди рдЦрд╛рд╕рдЧреА рд░рд╕реНрддреНрдпрд╛рдВрдиреА рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛.

рддреБрдореНрд╣реА рддреАрди рдбреЗрд╕реНрдХ рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрдКрди рддреЗ рд╕рдЧрд│реЗ рдЗрдорд╛рд░рдд A рдордзреНрдпреЗ рдареЗрд╡рд▓реЗ, рддрд░ рдПрдХрджрд╛ рд╡реАрдЬ рдЧреЗрд▓реА рдХреА рддреБрдордЪреА рд╕рдВрдкреВрд░реНрдг рдЕрднреНрдпрд╛рд╕рд┐рдХрд╛ рдмрдВрдж. A, B рдЖрдгрд┐ C рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдорд╛рд░рддреАрдд рдПрдХ-рдПрдХ рдбреЗрд╕реНрдХ рдареЗрд╡рд╛, рдЖрдгрд┐ рддреАрдЪ рд╡реАрдЬ рдЧреЗрд▓реНрдпрд╛рд╡рд░рд╣реА рджреЛрди рдбреЗрд╕реНрдХ рдХрд╛рдо рдХрд░рдд рд░рд╛рд╣рддрд╛рдд. рд╣рд╛рдЪ рд╕рдВрдкреВрд░реНрдг рдзрдбрд╛ рдЖрд╣реЗ.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    region["ЁЯПЩя╕П Region us-east-1 тАФ the district"]
    a["ЁЯПв AZ-a<br/>ЁЯЦея╕П desk 1"]
    b["ЁЯПв AZ-b<br/>ЁЯЦея╕П desk 2"]
    c["ЁЯПв AZ-c<br/>ЁЯЦея╕П desk 3"]
    region --> a
    region --> b
    region --> c
    cut["тЪб AZ-a loses power"]
    cut -.->|"1"| a
    ok["тЬЕ 2 of 3 desks still serving"]
    b -->|"2"| ok
    c -->|"2"| ok
    bad["ЁЯТе all 3 desks in AZ-a тЖТ 0 of 3 тЖТ site down"]
    cut -.->|"3 the other plan"| bad

ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/ec2/lesson-diagrams.html#l01

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдХрд╛рд░рдг рдкреВрд░реНрд╡реА computer рдЪрд╛ рдЦрд░реНрдЪ рд╡рд░реНрд╖рд╛рддрд▓реНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рдЧрд░реНрджреАрдЪреНрдпрд╛ рджрд┐рд╡рд╕рд╛рд╡рд░реВрди рдард░рд╛рдпрдЪрд╛, рдЖрдгрд┐ рдмрд╛рдХреА рд╕рдЧрд│реНрдпрд╛ рджрд┐рд╡рд╕рд╛рдВрддрд╣реА рддреЛ рднрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд╛рдпрдЪрд╛. EC2 рддреНрдпрд╛рдЪреЗ meter рдмрдирд╡рддреЗ: рдкрд░реАрдХреНрд╖реЗрдЪреНрдпрд╛ рдХрд╛рд│рд╛рдд рдЬрд╛рд╕реНрдд рдбреЗрд╕реНрдХ, рд╕реБрдЯреНрдЯреНрдпрд╛рдВрдд рдХрдореА, project рд╕рдВрдкрд▓реНрдпрд╛рд╡рд░ рд╢реВрдиреНрдп.

рдЖрдгрд┐ рдХрд╛рд░рдг hardware рдмрд┐рдШрдбрддреЗ. "рдмрд┐рдШрдбреВ рд╢рдХрддреЗ" рдирд╛рд╣реА тАФ рдмрд┐рдШрдбрддреЗрдЪ. рдкреНрд░рддреНрдпреЗрдХ instance рдПрдХрд╛рдЪ AZ рдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓рд╛ design рддреНрдпрд╛ AZ рд╕реЛрдмрддрдЪ рдмрдВрдж рдкрдбрддреЛ. рдЕрдиреЗрдХ AZs рдордзреНрдпреЗ рдкрд╕рд░рд╡рдгреНрдпрд╛рдЪрд╛ рдЬрд╡рд│рдЬрд╡рд│ рдХрд╛рд╣реАрдЪ рдЬрд╛рд╕реНрдд рдЦрд░реНрдЪ рдирд╛рд╣реА (рдереЛрдбреЗрд╕реЗ cross-AZ data transfer) рдЖрдгрд┐ рд╣рд╛ AWS рдордзрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реНрд╡рд╕реНрдд рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддреЗрдЪрд╛ рдирд┐рд░реНрдгрдп рдЖрд╣реЗ.

ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)

ec2/demo.py рдордзрд▓реЗ regions() рджреЛрди plans рдШреЗрддреЗ тАФ рддреАрдирд╣реА рдбреЗрд╕реНрдХ AZ-a рдордзреНрдпреЗ, рдЖрдгрд┐ рддреАрди рдбреЗрд╕реНрдХ a/b/c рдордзреНрдпреЗ рдкрд╕рд░рд╡рд▓реЗрд▓реЗ тАФ AZ-a рдЪреА рд╡реАрдЬ рддреЛрдбрддреЗ, рдЖрдгрд┐ рдЕрдЬреВрди рдХреЛрдг рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ рддреЗ рдореЛрдЬрддреЗ. рд╣рд╛рдЪ check ec2/test_ec2.py рдордзрд▓рд╛ test L01 рдЖрд╣реЗ. ec2/costs.py рдордзреНрдпреЗ рдзрдбрд╛ 02 рдкрд╛рд╕реВрди рддреБрдореНрд╣реА рд╡рд╛рдкрд░рд╛рд▓ рддреНрдпрд╛ рдЕрдВрджрд╛рдЬреЗ рджрд░-рддрд╛рд╕ рдХрд┐рдорддреА рдЖрд╣реЗрдд.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 ec2/demo.py regions
python3 - <<'EOF'
import sys; sys.path.insert(0, "ec2"); import costs
desks = ["a", "a", "b", "c"]                      # 4 desks, two of them in AZ-a
for lost in "abc":
    up = sum(1 for z in desks if z != lost)
    print(f"AZ-{lost} goes dark тЖТ {up} of {len(desks)} desks still serving")
# rented by the second: a t3.micro used for 90 minutes, then terminated
price = costs.PRICE_PER_HOUR["t3.micro"][2]
print(f"90 minutes of t3.micro тЙИ ${price * 1.5:.4f} (approximate)")
EOF

рдЦрд▒реНрдпрд╛ account рд╡рд░ (AWS credentials рд▓рд╛рдЧрддрд╛рдд; рд╣реЗ рдлрдХреНрдд-рд╡рд╛рдЪрдгрд╛рд░реЗ calls рдореЛрдлрдд рдЖрд╣реЗрдд):

aws ec2 describe-regions --query 'Regions[].RegionName' --output text
aws ec2 describe-availability-zones --region us-east-1 \
    --query 'AvailabilityZones[].[ZoneName,ZoneId,State]' --output table

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

regions рдЫрд╛рдкрддреЗ all in AZ-a AZ-a loses power тЖТ 0 of 3 desks still serving ЁЯТе site down рдЖрдгрд┐ spread a/b/c AZ-a loses power тЖТ 2 of 3 desks still serving тЬЕ, рдордЧ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЗ рдХреА stopped рдбреЗрд╕реНрдХ compute рдЪреЗ рдмрд┐рд▓ рдерд╛рдВрдмрд╡рддреЛ рдкрдг disk рдЪреЗ рдмрд┐рд▓ рдирд╛рд╣реА. рддреБрдордЪрд╛ snippet рдЫрд╛рдкрддреЛ AZ-a goes dark тЖТ 2 of 4, AZ-b тАж 3 of 4, AZ-c тАж 3 of 4 тАФ рдЬреНрдпрд╛ AZ рдордзреНрдпреЗ рджреЛрди рдбреЗрд╕реНрдХ рдЖрд╣реЗрдд рддрд┐рдереЗрдЪ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдлрдЯрдХрд╛ рдмрд╕рддреЛ тАФ рдЖрдгрд┐ 90 minutes of t3.micro тЙИ $0.0156 (approximate). рдЦрд▒реНрдпрд╛ account рд╡рд░, рджреБрд╕рд░реА command рдкреНрд░рддреНрдпреЗрдХ zone рдЪреЗ рдирд╛рд╡ рддреНрдпрд╛рдЪреНрдпрд╛ zone ID (use1-azтАж) рд╢реЗрдЬрд╛рд░реА рджрд╛рдЦрд╡рддреЗ.

ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ

рдПрдХ AZ рдмрдВрдж рдкрдбрд▓реА рддрд░реА рддреБрдореНрд╣реА рдЯрд┐рдХрддрд╛, рдкрдг рддреБрдордЪреЗ рд╕рдЧрд│реЗ рдбреЗрд╕реНрдХ рддреНрдпрд╛рдЪ AZ рдордзреНрдпреЗ рдирд╕рддреАрд▓ рддрд░рдЪ тАФ рдЖрдгрд┐ 90 рдорд┐рдирд┐рдЯрд╛рдВрд╕рд╛рдареА рдбреЗрд╕реНрдХ рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрдгреНрдпрд╛рдЪрд╛ рдЦрд░реНрдЪ рд╕реБрдорд╛рд░реЗ рджреАрдб cent рдЖрд╣реЗ, server рд╡рд┐рдХрдд рдШреЗрдгреНрдпрд╛рдЪрд╛ рдирд╛рд╣реА.

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдкреНрд░рддреНрдпреЗрдХ AWS architecture review "рдПрдХ AZ рдЧреЗрд▓реА рддрд░ рдХрд╛рдп рд╣реЛрддреЗ?" рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдиреЗ рд╕реБрд░реВ рд╣реЛрддреЛ. Load balancer (рдзрдбрд╛ 10) рдорд╛рдЧреЗ Auto Scaling group (рдзрдбрд╛ 09) рд╕рд╣ рджреЛрди рдХрд┐рдВрд╡рд╛ рддреАрди AZs рд╣реЗ рдард░рд▓реЗрд▓реЗ рдЙрддреНрддрд░ рдЖрд╣реЗ тАФ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рд╕реБрд░реБрд╡рд╛рдд рдпрд╛ рдзрдбреНрдпрд╛рдЪреНрдпрд╛ рд╕рд╡рдпреАрдиреЗ рд╣реЛрддреЗ.

тПня╕П рдкреБрдвреЗ

рдбреЗрд╕реНрдХ рдореНрд╣рдгрдЬреЗ рдлрдХреНрдд рдбреЗрд╕реНрдХ рдирд╛рд╣реА: scooters, family cars, racing cars рдЖрдгрд┐ рдЯреНрд░рдХ. рдпреЛрдЧреНрдп рдХреЛрдгрддрд╛ рддреЗ рдирд┐рд╡рдбрдгреЗ тАФ instance types рдЖрдгрд┐ burstable рдЗрдВрдзрди рдЯрд╛рдХреА.

git checkout lesson-02-instance-types

ЁЯЦея╕П Lesson 01 тАФ Why EC2 тАФ regions & AZs: desks in separate buildings

ЁЯУН You are here: Lesson 01 of 12 ┬╖ Next: lesson-02-instance-types


ЁЯУж What's in this branch

What Amazon EC2 is, why people rent computers instead of buying them, and the one design rule that runs through the whole course: spread your desks over more than one building. Real files you will use all the way through:

ЁЯОТ Before you start: you need Python 3 тАФ nothing else; no AWS account, no SDK. The simulations are teaching models, and the prices in them are approximate (always check the EC2 pricing page). Each lesson also shows real AWS CLI commands, clearly marked on a real account тАФ those need credentials and can cost money. Good neighbours: the IAM school (the badges these desks wear) and the AWS school (the whole campus).

ЁЯзТ Explain like I'm 5

The school needs a place for pupils to do homework. It could build a study hall: buy desks, chairs, lamps, pay for them on the quiet days too, and wait months for new ones when exams come. Or it could rent desks ЁЯЦея╕П from a huge study-hall company: ask for a desk, sit down a minute later, pay only for the time you sat there, give it back when you are done.

That company has study halls in many districts (ЁЯПЩя╕П Regions, like us-east-1 or eu-west-1). Inside each district there are several separate buildings (ЁЯПв Availability Zones) тАФ each with its own power, its own cooling and its own network, a few kilometres apart, joined by fast private roads.

If you rent three desks and put them all in building A, one power cut closes your whole study hall. Put one desk in each of buildings A, B and C, and the same power cut leaves two desks working. That is the whole lesson.

ЁЯЧ║я╕П Diagram

flowchart LR
    region["ЁЯПЩя╕П Region us-east-1 тАФ the district"]
    a["ЁЯПв AZ-a<br/>ЁЯЦея╕П desk 1"]
    b["ЁЯПв AZ-b<br/>ЁЯЦея╕П desk 2"]
    c["ЁЯПв AZ-c<br/>ЁЯЦея╕П desk 3"]
    region --> a
    region --> b
    region --> c
    cut["тЪб AZ-a loses power"]
    cut -.->|"1"| a
    ok["тЬЕ 2 of 3 desks still serving"]
    b -->|"2"| ok
    c -->|"2"| ok
    bad["ЁЯТе all 3 desks in AZ-a тЖТ 0 of 3 тЖТ site down"]
    cut -.->|"3 the other plan"| bad

ЁЯЧ║я╕П Drawn version + a lab: https://school-edh.pages.dev/ec2/lesson-diagrams.html#l01

тЭУ What

ЁЯдФ Why

Because the cost of a computer used to be decided on the busiest day of the year, and paid for on all the other days too. EC2 turns that into a meter: more desks at exam time, fewer in the holidays, zero when the project ends.

And because hardware fails. Not "might" тАФ does. A design with every instance in one AZ is a design that goes down with that AZ. Spreading over AZs costs almost nothing extra (a little cross-AZ data transfer) and is the single cheapest reliability decision in AWS.

ЁЯФз How (in this repo)

regions() in ec2/demo.py takes two plans тАФ three desks all in AZ-a, and three desks spread over a/b/c тАФ cuts the power to AZ-a, and counts who is still serving. The same check is test L01 in ec2/test_ec2.py. ec2/costs.py holds the approximate per-hour prices you will use from lesson 02 on.

ЁЯзк Try it

python3 ec2/demo.py regions
python3 - <<'EOF'
import sys; sys.path.insert(0, "ec2"); import costs
desks = ["a", "a", "b", "c"]                      # 4 desks, two of them in AZ-a
for lost in "abc":
    up = sum(1 for z in desks if z != lost)
    print(f"AZ-{lost} goes dark тЖТ {up} of {len(desks)} desks still serving")
# rented by the second: a t3.micro used for 90 minutes, then terminated
price = costs.PRICE_PER_HOUR["t3.micro"][2]
print(f"90 minutes of t3.micro тЙИ ${price * 1.5:.4f} (approximate)")
EOF

On a real account (needs AWS credentials; these read-only calls are free):

aws ec2 describe-regions --query 'Regions[].RegionName' --output text
aws ec2 describe-availability-zones --region us-east-1 \
    --query 'AvailabilityZones[].[ZoneName,ZoneId,State]' --output table

тЬЕ Verify тАФ what you should see

regions prints all in AZ-a AZ-a loses power тЖТ 0 of 3 desks still serving ЁЯТе site down and spread a/b/c AZ-a loses power тЖТ 2 of 3 desks still serving тЬЕ, then the reminder that a stopped desk stops the compute bill but not the disk bill. Your snippet prints AZ-a goes dark тЖТ 2 of 4, AZ-b тАж 3 of 4, AZ-c тАж 3 of 4 тАФ the AZ holding two desks is the one that hurts most тАФ and 90 minutes of t3.micro тЙИ $0.0156 (approximate). On a real account, the second command shows each zone name next to its zone ID (use1-azтАж).

ЁЯПБ What you just proved

One AZ failing is survivable only if your desks are not all in it тАФ and renting a desk for 90 minutes costs about a cent and a half, not a server purchase.

тЪая╕П Common mistakes

ЁЯПн Why this matters in production: every AWS architecture review starts with "what happens when one AZ goes away?". Two or three AZs behind a load balancer (lesson 10) with an Auto Scaling group (lesson 09) is the default answer тАФ and it starts with this lesson's habit.

тПня╕П Next

A desk is not just a desk: scooters, family cars, racing cars and lorries. Choosing the right one тАФ instance types and the burstable fuel tank.

git checkout lesson-02-instance-types
тЖР Course homeall lessonsNext тЖТinstance types

This page is the lesson's README from the lesson-01-why-ec2 branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.