๊ตญ๋ฏผ๋ํ๊ต์์ "ํด๋ผ์ฐ๋ ์ปดํจํ " ๊ต๊ณผ๋ชฉ์ ์งํํ์๋
์ด๊ฒฝ์ฉ ๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค
AWS High Availability (๊ณ ๊ฐ์ฉ์ฑ)
Fault-tolerance์ Scalability ๊ด์ ์์ ์ดํด๋ณด์
๊ณ ๊ฐ์ฉ์ฑ (High Availability)๋?
์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฌ๋์ด ๊ด๋ฆฌ๋ฅผ ํ์ง ์์๋ ์๋น์ค๊ฐ ๋์ํ์ง ์๋ ์๊ฐ์ ์ต์ํํด์ ์ฌ์ฉ์์๊ฒ ์์ธก๋ ์ฑ๋ฅ์ ์ ๊ณตํด์ค ์ ์๋ ์ฒ๋
๊ณ ๊ฐ์ฉ์ฑ์ ๊ตฌํ ์์๋ค
Fault tolerance
- ์์ฉ์์ ์์ฒด์์ ๋ฌธ์ ๊ฐ ๋ฐ์์์๋ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ ํํ์ง ์๋ ๋ฅ๋ ฅ
=> fault๊ฐ failure๊ฐ ๋์ง ์๊ฒ - ๋ฐฑ์ ์๋ฒ์ ๊ตฌ๋ ๋ฑ
Scalability
- ์์คํ ์ ๋์์ธ์ ๋ฐ๊พธ์ง ์๊ณ ๋ ์ฆ๊ฐํ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฅ๋ ฅ
์ฌ์ฉ์ ๋ณด์ ๋ฐ์ดํฐ ์ผํฐ์ ํด๋ผ์ฐ๋์์ ๊ฐ์ฉ์ฑ
์ฌ์ฉ์ ๋ณด์ ๋ฐ์ดํฐ์ผํฐ
- ๋ง์ ๊ฒฝ๋น ์์ (ํ๋์จ์ด ๊ตฌ๋งค ๋ฑ)
- ์ค์ํ ์ผ๋ถ ์๋น์ค์ ๋ํด์๋ง ๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด
ํด๋ผ์ฐ๋ ์๋ฒ์์ ๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด ๋ฐฉ์
- ์ฌ๋ฌ๋์ ์๋ฒ
- Region ์์ ์ฌ๋ฌ AZ๋ฅผ ํ์ฉ
- ์ฌ๋ฌ Region์ ํ์ฉ
=> ๊ด๋ฆฌ๊ฐ ๋๋ฌด ์ด๋ ค์ - ์๋น์ค ์์ฒด์ ๋ด์ฌ๋ fault-tolerant ๊ธฐ๋ฅ ํ์ฉ (fully-managed service)
๋ฐ๋์ ์ฌ๋ฌ Region์์ ์๋น์ค๋ฅผ ํด์ผํ๋๊ฒ ์๋๋ผ๋ฉด, ํ๋์ Region์์ ์๋น์ค๋ฅผ ์์ํ๊ณ ์ต์ํ ์ฌ๋ฌ AZ ๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ด์์ ์
=> ์ฌ๋ฌ Region์ ํ์ฉํ๋ฉด ๊ฐ์ฉ์ฑ์ด ๋์์ง์ง๋ง ๋ ๋ง์ ๊ฒฝ๋น๊ฐ ์์๋๊ณ ์์คํ ์ด ๋ณต์กํด์ง ์ ์์
AWS ์ ๊ณต ์๋น์ค๋ค์ ๊ณ ๊ฐ์ฉ์ฑ ํน์ฑ
AWS๊ฐ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณต (Fully managed service)
=> ํด๋ผ์ฐ๋ ๋ฒค๋๊ฐ ์์์ ํด์ค
Amazon S3 and Amazon Glacier, Amazon DynamoDB, Amazon CloudFront, Amazon Route 53 ๋ฑ์ด ์์
์ฌ์ฉ์๊ฐ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด์ ์์คํ ๊ตฌ์ถ์ ํด์ผํ๋ ์๋น์ค (unmanaged service)
Amazon EC2, Amazon VPC, Amazon Redshift ๋ฑ
(EC2 ์๋ฒ๋ฅผ ํค๊ธฐ๋ง ํ๋ค๊ณ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ์ง ์์)
AWS Managed ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค - AWS Load Balancer
์ฌ๋ฌ AZ ์ฌ์ด์ ๋ฐฐํฌ๋ EC2 ์ธ์คํด์ค๋ก ์ฌ์ฉ์ ์์ฒญ์ ๋ฐฐํฌํด์ฃผ๋ ์ญํ ๋ด๋น
=> AWS EC2 ์ธ์คํด์ค์ ๊ฑด๊ฐ์ํ (health check)๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌํ์ฌ ์ ์ ๋์ํ์ง ์๋ ์ธ์คํด์ค๋ค์ ๋ถํ ์ํ ๋ฐ ๋์ ์ํ๋ฅผ ๊ณ ๋ คํ์ฌ ์์ฒญ ๋ถ๋ฐฐ
(ping์ ํตํด health check)
ํ๋์ AZ ๋๋ ์ฌ๋ฌ AZ์ ๊ฑธ์ณ์ ์์ฒญ์ ์ ๋ฌ์ด ๊ฐ๋ฅํ์ง๋ง ์ฌ๋ฌ ์ง์ญ์ ์ ๋ฌ ๋ถ๊ฐ๋ฅ
=> DNS์๋น์ค์ธ Route 53์ ์ด์ฉํ๋ฉด ์ฌ๋ฌ ์ง์ญ์ผ๋ก ์์ฒญ ๋ถ๋ฐฐ ๊ฐ๋ฅ
LoadBalancer ์ข ๋ฅ
Application Load Balancer
- OSI 7๊ณ์ธต์์ Application ๋จ์์ ๋์ํจ (http, https ๋ฑ)
- ์ปจํ
์ธ ๊ธฐ๋ฐ ๋ผ์ฐํ
์ ๊ฐ๋ฅํ๊ฒ ํด์ค
ex. HTTP ๊ฒฝ๋ก์ ๋ฐ๋ฅธ ๋ผ์ฐํ ์ผ๋ก ๋ค๋ฅธ ๊ฒฝ๋ก์ ์๋น์ค๋ค์ด ๋ค๋ฅธ ์๋ฒ ํธ์คํธ์ ์ํด์ ์ ๊ณต๋ ์ ์์
Network Load Balancer
- OSI 7 ๊ณ์ธต์์ Transport ๋จ์์ ๋์
- TCP, UDP์ ๊ธฐ๋ฐํ ๋ผ์ฐํ
ex. ๊ฐ์ ์์ฉ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋๊ณ ์ด์ค ์์์ ์์ฉ ์๋ฒ์ ์์ฒญ ์ ๋ฌ
Gateway Load Balancer
- Inbound traffic์ ๋ํ ๋จ์ผ ์ง์
์ ์ ์ ๊ณตํจ์ผ๋ก ๋ณด์ ์๋น์ค (์ฌ์ธต ํจํท ๊ฒ์ฌ ๋ฑ)๋ฅผ ๊ตฌ์ถ ๊ฐ๋ฅํ๊ฒ ํด์ค
(์ด๋ฅผ ์ด์ฉํด ์ธ๋ถ ๋ณด์ ์๋ฃจ์ ์ ๋ถ์ฌ์ ์ฌ์ฉ ๊ฐ๋ฅํจ)
AWS Load Balancer Sticky Session
Sticky ์ธ์ ์ ์ฌ์ฉ์์ ์์ฒญ ๋๋ ์ธ์ ์ด ํน์ ์ธ์คํด์ค์ ๋ฐ์ธ๋ ๋์ด ๋ค๋ฅธ ์ธ์คํด์ค๋ก ํฅํ์ง ๋ชปํ๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- Sticky ์ธ์ ์ด ๋์ํ์ง ์๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ฉฐ, Sticky ์ธ์ ์ด ๋์ํ์ง ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ์์ ๋ถํ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์๋ฒ๋ก ์์ฒญ์ ์ ๋ฌ
- ์ธ์
์ ๋ณด๋ฅผ ์ ์งํ๊ณ ์์ด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ์ข์ (stateful)
- ์ฟ ํค๋ฅผ ํตํด์ ๋ก๋๋ฐธ๋ฌ์ ์๋น์ค๊ฐ ํน์ ์ธ์คํด์ค๋ก ์์ฒญ ์ ๋ฌ
Sticky ์ธ์ ์ ๋จ์
์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ฅ์ฑ์ ์ ํํ ์ ์์ (state๋ฅผ ์ง์ผ์ผ ํ๋ ์ ์ฝ ์ฌ์ ์กด์ฌ)
๋ถ๊ณตํํ ๋ถํ ์ฒ๋ฆฌ ๋ถ๋ด์ด ๋ฐ์ํ ์ ์์
๋์ ์ฌ์ฉ์ ๊ฒฝํ (์ค๋ ์ฒ๋ฆฌ ์๊ฐ) ๋ฐ์ ๊ฐ๋ฅ
Sticky ์ธ์ ๋จ์ ์ ๊ทน๋ณตํ๋ ๋ฐฉ์
์ธ์ ์ ๋ณด๋ฅผ ๋น ๋ฅธ ์ฝ๊ธฐ๋ฅผ ์ง์ํ๋ ๋ถ์ฐ ์ ์ฅ์๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ข์
=> ๋ถ์ฐ ์บ์ฌ, NoSQL ์๋น์ค (AWS DynamoDB ๋ฑ)
Elastic Load Balance๋ฅผ ํ์ฉํ ์์คํ
์์ ์ฑ ๋ฐ์ ์
Load Balancer ์ TLS/SSL Termination
HTTP ๊ท์ฝ์ ํ์ฉํ์ฌ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ์ค plain text๋ก ์ ์ก๋๋ฉด ์ค์ ์ ๋ณด๊ฐ ์ ์ง ๋ ์ ์๋ ์ ๋ณด๋ค์ ์ ์กํ ๋ ์ด๋ฅผ ํด๋ผ์ด์ธํธ ๋จ์์ ์ํธํํด์ ์ก์ ํ๊ณ ์๋ฒ๋จ์์ ๋ณตํธํ ํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
=> http ํต์ ์ ํจํท ๊น๋ฉด plain text๊ฐ ๋ค ๋ณด์ (id, pw ์ฐ๋ฉด ์๋จ)
TLS / SSL Termination
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ํต์ ์ค์ ์ํธํ๋์ด ๋์ฐฉํ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณตํธํ ํ์ฌ plain text ํ์์ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ณผ์
EC2 ์๋ฒ ํ๊ฒฝ์์ Termination ๊ฐ๋ฅํ ๋จ๊ณ
Load Balancer : ELB๊ฐ ๋ณตํธํ ํ ํ VPC ๋ด์ Private network๋ฅผ ํตํด์ EC2๋ก ์ ๋ฌ
EC2 : ๋ฐ์ดํฐ๊ฐ ์ํธํ ๋ ์ฑ๋ก ELB๋ฅผ ํตํด์ EC2๋ก ์ ๋ฌ ๋ ํ EC2์์ ๋ณตํธํ
๋ณด์ ์๊ตฌ ์ฌํญ๊ณผ LoadBalancer ์ ํ
ELB ๋จ์์ termination
- EC2์ ์์์ ๋ค๋ฅธ ์ฉ๋๋ก ํ์ฉ ๊ฐ๋ฅ
- ํจ์จ์ ์ธ ์์ ํ์ฉ
- EC2 ์๋ฒ๊ฐ ๋ง์ ๊ฒฝ์ฐ ๊ด๋ฆฌ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ฌ
- ์๊ตฌํ๋ ๋ณด์ ์กฐ๊ฑด์ด end-to-end ์ํธํ๋ฅผ ๊ฐ์ ํ๋ค๋ฉด EC2์์ ๋ณตํธํ ํด์ผํจ
(Load Balancer ์์ EC2๋ก ๊ฐ๋ ๋ฐ์ดํฐ๋ ์ํธํ ๋์ง ์๊ธฐ์)
Application load balancer ์์๋ ๋ฐ๋์ TLS/SSL termination ์ ์ํํด์ผ ํจ
=> Application load balancer๋ ๋ณตํธํ ํ header ์ ๋ณด๋ฅผ ํ์ธ ํ ์์ฒญ์ ๋ผ์ฐํ
ํจ
End-to-End encryption์ด ํ์์ฌ์ EC2 ๋จ์์ ๋ณตํธํ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๋ฉด Network load balancer๋ฅผ ์ฌ์ฉํ๊ณ TCP ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผ ํจ
(ํธ๋ํฝ์ด ์ค๊ฐ์์ ํด๋
๋์ง ์์์ผํจ)
=> HTTPS ์ฌ์ฉ ๋ถ๊ฐ
(HTTPS๋ ALB์์ ํด๋
๋๋ฏ๋ก End-to-End ์ํธํ๊ฐ ๊นจ์ง ์ ์์ผ๋ TCP ์ฌ์ฉ)
UDP๋ ์ฐ๊ฒฐ์ ์ถ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ TLS/SSL Termination์ ๋น์ฐํ ์ํํ ์ ์์
Azure Managed ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค - Load Balancer
AWS Load Balancer์ ๋์ ๋๋ ์๋น์ค์
=> ๋ฐฑ์๋ ๋ฆฌ์์ค ๋ฐ ์๋ฒ๋ค์ ํธ๋ํฝ์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ์ํค๋ ์๋น์ค
Public, Private 2๊ฐ์ง๋ก ๋๋จ
GCP Managed ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค - Load Balancing
AWS Load Balancer์ ๋์๋๋ ์๋น์ค์
=> ํธ๋ํฝ์ ์ฌ๋ฌ VM์ ๋ถ์ฐ
AWS Elastic IP
๊ณ ์ IP ์ฃผ์๋ก ์ฌ์ฉ์๋ ์์์ ์ธ์คํด์ค์ IP๋ฅผ ํ ๋นํด์ค ์ ์์
- ๋์์ค์ด๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ข
๋ฃ๋ ๊ฒฝ์ฐ Elastic IP๋ฅผ ํ์ฉํ๋ฉด ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ ํ ๊ฐ์ IP๋ฅผ ํ ๋นํด์ค ์ ์์
=> EC2์ ๊ธฐ๋ณธ๋์์ ์๋ก์ด ์ธ์คํด์ค๊ฐ ์์ํ๋ฉด ์๋ก์ด IP๋ฅผ ํ ๋น ๋ฐ๊ฒ ๋จ
=> ๋์์ค์ธ App ์๋ฒ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ Elastic IP๋ฅผ ์๋ก์ด ์ธ์คํด์ค์ ํ ๋นํด ์ค์ผ๋ก ์ธ์คํด์ค์ ๋ฌธ์ ๋ฅผ ์จ๊ธธ ์ ์์
(๊ณ ๊ฐ์ฉ์ฑ์ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฐ์)
Azure Static Public IP
NIC์ ๊ณ ์ IP ์ฃผ์๋ฅผ ํ ๋นํด์ค ์ ์์
=> ์๋ฒ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ์ข ๋ฃ๋๋ค๋ฉด ํด๋น NIC๋ฅผ ๋ค๋ฅธ ์๋ฒ๋ก ํ ๋นํด์ค ์ ์์
(์๋ก์ด ์๋ฒ๋ ํ ๋น ๋ฐ์ NIC๋ก ๋ณ๋์ ๋คํธ์ํฌ ์ค์ ์์ด ์ฌ์ฉ ๊ฐ๋ฅ)
GCP Static Public IP
AWS Elastic IP์ ๊ฐ์ ์๋ฆฌ์
AWS์์ Region ์ฌ์ด์์์ ๊ณ ๊ฐ์ฉ์ฑ ๋ณด์ฅ
Region ๋ด์ ์ฌ๋ฌ AZ์์์ ๋ถํ ๋ถ์ฐ : Load Balancer
Region ์ฌ์ด์์์ ๋ถํ ๋ถ์ฐ : Route53
=> Route53์ Fully-managed DNS ์๋น์ค์
(DNS query๋ UDP port 53์ ์ด์ฉ)
Amazon Route53
์์ ์ฑ (reliable)
- ์ฌ๋ฌ์ง์ญ์ ๋ฐฑ์ ์์คํ ๊ตฌ๋ ์ค
- AWS ์๋น์ค์ค ๊ฐ์ฅ ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํด์ค
๋น ๋ฅธ ์๋ต ์๋
- ์ ์ธ๊ณ์์ ์๋น์ค๊ฐ ๋ฐฐํฌ๋๊ณ ์๋น์ค ๋๊ณ ์์
- ์๋ก์ด ๋ณํ์ ๋ํ ๋น ๋ฅธ ๋ฐฐํฌ
์์ฌ์ด ์ฌ์ฉ
- AWS ์ฝ์ ๋ฐ ํ๋ก๊ทธ๋๋ฐ API๋ฅผ ํ์ฉํ ๋ ์ฝ๋ ๋ฑ๋ก ๊ฐ๋ฅ
๋ค์ํ Resolve ๊ธฐ๋ฒ ์ง์
- Latency-based, geolocation, weighted round-robin
Route53 DNS Resolve ๋ผ์ฐํ ๊ธฐ๋ฒ
Simple routing
ํ๋์ ์๋ฒ๋ง ์์ ๊ฒฝ์ฐ ํด๋น ์๋ฒ์ IP ์ฃผ์๋ก๋ง resolve
Weighted Round Robin
์ฌ๋ฌ๋์ ์๋ฒ๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ ์๋ฒ์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ ํ ๊ฐ์ค์น ๊ฐ์ ๊ธฐ๋ฐํ์ฌ IP resolve ์์ ์ด ์คํ๋จ
=> A/B ํ ์คํ ์๋ ํ์ฉ๋ ์ ์์ (์๋ก์ด binary์ ํ ์คํธ)
A/B ํ ์คํธ๋ ๋ ๊ฐ์ง ์ด์์ ๋ฒ์ (A ์ B) ์ค์์ ์ด๋ ๊ฒ์ด ๋ ๋์ ์ฑ๊ณผ๋ฅผ ๋ด๋์ง ๋น๊ตํ๋ ์คํ ๋ฐฉ์์
=> ์ผ๋ถ ์ฌ์ฉ์์๊ฒ A๋ฒ์ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ B ๋ฒ์ ์ ๋ณด์ฌ์ฃผ๊ณ ๋ถ์
์๋ก์ด binary ํ ์คํธ๋ ์ ๋ฐ์ดํธ๋ ์คํ ํ์ผ(๋ฐ์ด๋๋ฆฌ)๋ฅผ ๋ฐฐํฌํ๊ณ ๊ทธ ์ฑ๋ฅ์ด๋ ์์ ์ฑ์ ๊ฒ์ฆํ๋ ๊ณผ์
=> ์ผ๋ถ ์๋ฒ์ ๋จผ์ ์๋ก์ด ๋ฒ์ ์ ๋ฐฐํฌํ์ฌ ์์ ์ฑ ํ ์คํธ
Latency-based routing
๊ธ๋ก๋ฒ์ ์์นํด ์๋ ์ฌ์ฉ์๊ฐ ์์ ๊ฒฝ์ฐ ์ ๊ทผ์ด ๊ฐ์ฅ ๋น ๋ฅธ ์๋ฒ๋ก resolve
Health checks and DNS Failover
๋ง์คํฐ ์๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์์์ ๋ฏธ๋ฆฌ ๋ฑ๋ก๋์ด ์๋ ๋ฐฑ์ ์๋ฒ๋ก resolve
Geolocation routing
ํน์ ๋๋ผ, ๋๋ฅ, ๋๋ ์ง์ญ์ ์๋ฒ๋ง resolve ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ
=> ์ปจํ ์ธ ๊ฐ ํน์ ์ง์ญ์์๋ง ์ ๊ณต๋จ์ ๊ฐ์ ํด์ผํ ๋ ์ฌ์ฉ๋จ
AWS Route53๋ฅผ ํ์ฉํ Multi-Region ๋ฐฐํฌ
us-west-2๋ก ๊ฐ๋ ์์ฒญ์ Latency-based Routing ์ ํตํด ์ ๊ทผ์ด ๋ ๋น ๋ฅธ ap-southeast-2๋ก ๋ณด๋
AWS Route53๋ฅผ ํ์ฉํ Primary-Secondary ๋ฐฐํฌ ์์
Chaos Engineering : ํด๋ผ์ฐ๋ ๋งน์ ํ์ง ์๊ณ ์ผ๋ถ๋ฌ ์คํจ ์๋๋ฆฌ์ค๋ฅผ ์ฃผ์ ํ์ฌ ๋์ํ๋ ๋ฐฉ์
Azure DNS
AWS Route53์ ๋์๋๋ ์๋น์ค
=> Azure ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ์ฌ DNS ํธ์คํ
์๋น์ค ์ ๊ณต
(Route 53๊ณผ ๋ฌ๋ฆฌ ๋๋ฉ์ธ ์ด๋ฆ์ ๊ตฌ๋งค ํ ์๋ ์์)
Azure Multi-Region ๋ฐฐํฌ
GCP Cloud DNS
AWS Route53์ ๋์ํ๋ ์๋น์ค๋ก ๋๋ฉ์ธ ๋ฐ DNS ๋ ์ฝ๋๋ฅผ ํธ์คํ ํ๊ณ ๊ด๋ฆฌํจ
์์คํ ์ ๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด - Scalability
์์คํ ์ ํ์ฅ์ฑ ํ๋ณด ๋ฐฉ์
Vertical Scaling
- Sacle up and down
- ์ธ์คํด์ค์ ํ๋์จ์ด ์คํ ๋ณ๊ฒฝ
- ex. ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ, ๋์คํฌ ์ฆ๊ฐ ๋ฑ
Horizontal Sacling
- Sacle in and out
- ์ธ์คํด์ค์ ๊ฐ์ ๋ณํ
- ์ธ์คํด์ค ๊ฐ์ ์ฆ๊ฐ ๋๋ ๊ฐ์ ์ํด
์์คํ ํ์ฅ์ด ํ์ํ ์๊ธฐ์ ํ๋จ
ํด๋ผ์ฐ๋ ์์์ด ์ด๋ป๊ฒ ํ์ฉ๋๊ณ ์๊ณ , ์ฌ์ฉ์์ ๊ฒฝํ์ด ์ด๋ค์ง์ ๋ํ ๋ฐ์ดํฐ ํ์
- ์๋น์ค์ ์ปดํจํ
์์ ํ์ฉ๋ (CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋)
- ์ฌ์ฉ์์ ์๋น์ค ์ํ (์๋ต ์๊ฐ, 400 ๋ฒ๋ ์๋ต ๋น์จ, 500 ๋ฒ๋ ์๋ต ๋น์จ)
- ์ฌ์ฉ์์ ๊ฒฝํ์ด ์์์ ๋ถ์กฑ์ผ๋ก ์ธํด์ ์ํฅ์ ๋ฐ๊ณ ์๋๊ฐ?
- ์ถ์ธก์ ์ํ ์์คํ ํ์ฅ ์์
์์คํ
์ ๋์ ์ํ ๋ชจ๋ํฐ๋ง - Amazon CloudWatch
์ธ์คํด์ค์ ์ํ๋ฅผ ๊ด์ฐฐํ์ฌ ์ค์๊ฐ์ผ๋ก ์ ๋ณด ์ ๊ณต
=> ์ฌ๋ฌ ํด๋ผ์ฐ๋ ์๋น์ค๋ค์ด ์ํ ์ ๋ณด๋ฅผ ๋ณด๋ด์ค
์์ง๋ ์ ๋ณด๋ฅผ ํ์ฉํ ํต๊ณ ๋ฐ ์๋ ์ ๊ณต
=> AWS๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ํต๊ณ ๋ฐ ์ฌ์ฉ์ ์ง์ ํต๊ณ ์์ฑ ๊ฐ๋ฅ
(๋ค๋ฅธ ์๋น์ค์์ ์ฐ๋์ด ์ฐ์ํจ)
์ค์ ๋ ๊ธฐ์ค์ ๋ฐ๋ผ์ Auto Scaling์ ๊ฐ๋ฅํ๊ฒ ํด์ค
=> ๋์ CPU ์ฌ์ฉ๋, ๋์ ์๋ต์๊ฐ, ์๋ฌ ๋ฐ์์จ๋ฑ์ ์๋์ ํตํด AutoScaling์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํด๋๊ณ ์๋ํ
CloudWatch Logs๋ฅผ ํ์ฉํ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ก๊ทธ ์์ง
์์ฉ ํ๋ก๊ทธ๋จ์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ CloudWatch์ ์ ์ฅ
- AWS ์ฝ์์ ํตํ ์ค์๊ฐ ์ฝ๊ธฐ ๊ฐ๋ฅ
- Batch Processing์ ์ํด S3์ ์ถ๊ฐ ์ ์ฅ ๊ฐ๋ฅ
- ์คํธ๋ฆผ ํ๋ก์ธ์ฑ ์์คํ (Amazon Kinesis)์ ํ์ฉํ ์ค์๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
์์จ์ ์ธ ์ธ์คํด์ค ๊ด๋ฆฌ - AutoScaling
amazon.com ์นํ์ด์ง์ ์ ํ์ ์ธ ์์ฒญ ํ์ ํจํด
=> ๋ฎ์ ์ฌ์ฉ๋ ๋ง๊ณ ์๋ฒฝ์ ์ ์
๋ํ 11์์ BlackFriday๋ Cyber Monday์ ์ ์๋์ ๋ณด๋ฉด ๋ค๋ฅธ ๋ ๋ค์ ๋นํด ๊ธ๋ฑํจ
=> ํน์ ์๊ธฐ์ ๋ฐ์ ๊ฐ๋ฅํ ์ฌ์ฉ๋์ ๊ธ์์ ์ธ ์ฆ๊ฐ๋ฅผ ์์ธกํ๋ ๊ฒ์ ์ด๋ ค์
AWS AutoScaling
CPU ํ๋๋์ด ๋์์ง๋ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ EC2 ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ์์/์ข ๋ฃํ๊ฒ ํด์ค
๋ก๋๋ฐธ๋ฐ์์์ ์ฐ๋์ฑ์ด ์ข์
- AutoScaling์์ ์์/์ ์ง๋ ์ธ์คํด์ค๋ ๋ก๋๋ฐธ๋ฐ์์ ์๋์ผ๋ก ๋ฐ์๋จ
- ์ธ์คํด์ค ์์ ํ ์ฌ์ฉ์ ์์ฒญ์ ์๋์ผ๋ก ์ ๋ฌ๋จ
์ฌ๋ฌ AZ์ ๊ฑธ์ณ์ ์ธ์คํด์ค๋ฅผ ์์ํ ์ ์์ (๊ณ ๊ฐ์ฉ์ฑ ์ธก๋ฉด์์)
์ฌ์ฉ์ ์ง์ ๋ฉํธ๋ฆญ์ ํ์ฉํ scale-out ๊ณผ scale-in ์ฌ๋ถ ๊ฒฐ์ ๋จ
=> ex. ํ๊ท CPU ์ฌ์ฉ๋์ด 80% ์ด์์ผ ๋ ์๋ฒ ์ถ๊ฐ, ์ฃผ์ค 7์์ ์๋ฒ๋ฅผ ์๋กญ๊ฒ ์ถ๊ฐ
(CloudWatch ์์ฐ๋ฉด ์งํ์ ์ํ ์ด๋ฒคํธ๋ ์ฌ์ฉ ๋ชปํจ ์๊ฐ์ด๋ ์ธ์คํด์ค ์์กด ์ํ ๋ฑ์ ํตํ ์ด๋ฒคํธ๋ง ๊ฐ๋ฅ)
AWS EC2 Scaling ๋ฐฉ๋ฒ
Auto Scaling ๊ทธ๋ฃน : ์์์ ์ค์ผ์ผ๋ง์ ์๋์ผ๋ก ํ๊ณ ์ ํ๋ ์ธ์คํด์ค ๊ทธ๋ฃน
=> Minimum, Maximum, Desired (default) ์ธ์คํด์ค ๊ฐ์ ์ค์ ๊ฐ๋ฅ
AWS AutoScaling ์ฌ์ฉ ์์ ๋ฐ ๋์ ์ฐจ๋ก
CloudWatch, Elastic Load Balancing ๊ณผ AutoScaling
AutoScaling ๊ทธ๋ฃน์์ ์ธ์คํด์ค ๊ฐ์ ํ์ธ
AutoScaling ๊ทธ๋ฃน์์ ์ค์ ๊ฐ๋ฅํ ์ธ์คํด์ค ๊ฐ์
- Maximum ๊ฐ์
- Minimum ๊ฐ์
- Desired ๊ฐ์
=> ์ด์์ ์ผ๋ก ๋์ ๋์ด์ผ ํ๋ ์ธ์คํด์ค ๊ฐฏ์
(๋ก๋๊ฐ ํฌ์ง ์์ผ๋ฉด ์ต์ ์ธ์คํด์ค ๊ฐฏ์๋ง ๋์)
์ด์์ ์ธ Minimum ๊ฐ์๋?
์ฃผ ๋จ์๋ก ์ผ์ด๋๋ ์์ : 0์ผ๋ก ์ค์
=> ํธ๋ํฝ ํจํด์ด ์์ธก ๊ฐ๋ฅํ๊ณ ํน์ ์๊ฐ๋์๋ง ํ์ฑํ๋๋ ๊ฒฝ์ฐ, Minimum Capacity๋ฅผ 0์ผ๋ก ์ค์ ํ ์ ์์
๊ฐ AZ๋ง๋ค ํ๋์ ์ธ์คํด์ค๊ฐ ํญ์ ๋์ํด์ผ ํ๋ค๋ฉด : ํฌ๋ง AZ ๊ฐ์๋ก ์ค์
์ธ์คํด์ค๋ฅผ ์์ํ๋๋ฐ ์๊ฐ์ด ์์๋จ์ ์ ์ํด์ผํจ
=> warm-up period
(์ด ์๊ฐ ๋์์ EC2 ์์ฑ/์ญ์ ๊ฐ ์ผ์ด๋์ง ์์)
์ด์์ ์ธ Maximum ๊ฐ์๋?
ํธ๋ํฝ ํจํด์ด ๊ธ๊ฒฉํ ๋ณ๋ํ๋ ์์คํ ์ด๋ผ๋ฉด, maximum์ ํธ๋ํฝ์ด ํผํฌ์ ๋๋ฌํ ๋ ํ์ํ ์ธ์คํด์ค ์๋ฅผ ๊ณ ๋ คํ์ฌ ์ค์
=> ๋๋ฌด ๋ง์๋ฉด ๋น์ฉ์ ์ผ๋ก ๋ถ๋ด์ด ๋ ์ ์์
AutoScaling ๋์์ ๋ ๋ค๋ฅธ ์
์๋๋ฆฌ์ค ์์
- Auto Scaling Group minimum = 2
- Auto Scaling Group maximum = 10
- Auto Scaling Policy: ์ธ์คํด์ค ํ๊ท CPU ์ฌ์ฉ๋์ด 60% ์ด์์ด๋ฉด ํ์ฌ ์ธ์คํด์ค ์์ 100% ์ถ๊ฐ
ํ๊ท CPU ์ฌ์ฉ๋์ด 60% ๊ฐ ๋์ด๊ฐ๋ค๋ฉด ์ธ์คํด์ค์์ 2๋ฐฐ์ฉ ๋๋ฆผ - 2, 4, 8, 10 (maximum)
=> ์ธ์คํด์ค๋ค์ ์ด๊ธฐ์ ๋ฑ๋ก๋ AZ ์ ๊ณ ๋ฃจ ๋ถ๋ฐฐ๋จ
๋ฉํธ๋ฆญ ๊ฐ์ ๊ตฌ๊ฐ์ผ๋ก ๋ถ๋ฆฌ ํ ๊ตฌ๊ฐ ๊ฐ์ ๋ฐ๋ผ์ ์ธ์คํด์ค ์กฐ์ ๊ฐ๋ฅ
(์ปค์คํฐ ๋ง์ด์ฆ ๊ฐ๋ฅ)
=> ex. ํ๊ท CPU ์ฌ์ฉ๋์ด 80% ~ 100% ๋ผ๋ฉด ์ธ์คํด์ค 2๋ ์ถ๊ฐ, 60~ 80% ๋ผ๋ฉด 1๋ ์ถ๊ฐ, 20%
๋ฏธ๋ง์ด๋ผ๋ฉด 1๋ ๊ฐ์
Warm up period : ์ธ์คํด์ค ์์ ํ ์ค๋น๋๊ธฐ๊น์ง ์๊ฐ์ด ์์๋๊ธฐ์, ์๋ก์ด ์๋์ด ๋ฐ์ํ๋๋ผ๋
์์์ค์ธ ์ธ์คํด์ค๋ ๋์์ค์ธ ๊ฒ์ผ๋ก ํ๋จ ํจ
Azure Virtual Machine Scale Sets (VMSS)
AWS Auto Scaling์ ๋์๋๋ ์๋น์ค์
GCP Instance Group AutoScaling
๋จ์ผ ํญ๋ชฉ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ VM ๋ชจ์
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน๊ณผ ๋น๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ผ๋ก ๋๋๋๋ฐ
๋น๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน
- ์ธ์คํด์ค๋ค์ ๋
ผ๋ฆฌ์ ๋ฌถ์
- Load Balancer ์ฐ๊ฒฐ ๊ฐ๋ฅ
(์๊ท๋ชจ ํ๊ฒฝ์ด๋ ํน์ํ ์๊ตฌ ์ฌํญ์ ๋ง์ถ ๋)
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน
- Failover ๊ธฐ๋ฅ ์ ๊ณต
- ๋ค์ํ VM ๋ฐฐํฌ ์ต์ ๋ฐ ์๋ ํ์ฅ ๊ธฐ๋ฅ ์ ๊ณต
(๊ณ ๊ฐ์ฉ์ฑ์ด ํ์ํ ๋)
๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน(MIG)๋ Stateless ์ Stateful๋ก ๋๋จ
=> Stateful์์๋ ๋ก๋๋ฐธ๋ฐ์ฑ, AutoScaling์ด ๋ถ๊ฐ๋ฅํจ
(ํด๋น ๋ ธ๋๋ก ๊ฐ๋๋ผ๋ ํน์ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์ฒ๋ฆฌ๋ฅผ ๋ชปํ๋๊น)
'๐ Infra > AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Serverless Computing (ํด๋ผ์ฐ๋๋ฅผ ์ด์ฉํ Decoupling ๋ฐฉ์๋ค) (0) | 2024.11.30 |
---|---|
Cloud Deployment Automation (4) | 2024.10.19 |
Cloud Network (3) | 2024.10.16 |
Cloud Basic Service (13) | 2024.10.14 |
Distributed System (5) | 2024.10.06 |