Skip to content

JAEIL1999/PNU_cloud_computing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ–₯️ λ‘œλ“œλ°ΈλŸ°μ„œμ™€ μ˜€ν† μŠ€μΌ€μΌλŸ¬ κ΅¬ν˜„ 및 μ‹œκ°ν™” λͺ¨λ‹ˆν„°λ§


pnu_proj_screen

πŸ’‘ ν”„λ‘œμ νŠΈ 멀버

μ΄μƒν˜„ : Autoscaler 및 metric μˆ˜μ§‘ κ΅¬ν˜„
λ°•μž¬μΌ : Loadbalancer (with health check) κ΅¬ν˜„
κΉ€λ‚˜λ¦Ό : Grafana μ‹œκ°ν™” 및 λ°±μ—”λ“œ μ„œλ²„ κ΅¬ν˜„


πŸ’‘ ν”„λ‘œμ νŠΈ μ†Œκ°œ

λ³Έ ν”„λ‘œμ νŠΈλŠ” μ΅œμ†Œν•œμ˜ μžμ›μœΌλ‘œ μ•ˆμ •μ μΈ μ„œλΉ„μŠ€ μ œκ³΅μ„ μœ„ν•΄, νŠΈλž˜ν”½ 뢄산을 λ‹΄λ‹Ήν•˜λŠ” λ‘œλ“œλ°ΈλŸ°μ„œμ˜ 개발 및 μ„œλ²„ μžμ› μžλ™ ν™•μž₯을 μœ„ν•œ μ˜€ν† μŠ€μΌ€μΌλ§ κΈ°λŠ₯을 ν†΅ν•©μ μœΌλ‘œ κ΅¬ν˜„ν•˜κ³  이λ₯Ό μ‹œκ°ν™”ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€. λ‘œλ“œλ°ΈλŸ°μ„œλŠ” ν—¬μŠ€ 체크 κΈ°λŠ₯을 톡해 λ°±μ—”λ“œ μ„œλ²„μ˜ μƒνƒœλ₯Ό 주기적으둜 ν™•μΈν•˜κ³ , 응닡이 μ—†κ±°λ‚˜ 비정상적인 μ„œλ²„λ₯Ό μžλ™μœΌλ‘œ νŠΈλž˜ν”½ λΆ„μ‚° λŒ€μƒμ—μ„œ μ œμ™Έν•¨μœΌλ‘œμ¨ μ•ˆμ •μ„±μ„ ν™•λ³΄ν•©λ‹ˆλ‹€. λ˜ν•œ, λ‹¨μˆœ λΌμš΄λ“œλ‘œλΉˆ 방식에 더해 μ„œλ²„ λΆ€ν•˜ 정보λ₯Ό λ°˜μ˜ν•œ λΆ„μ‚° μ•Œκ³ λ¦¬μ¦˜μ„ λ„μž…ν•˜μ—¬, μš”μ²­ 처리 νš¨μœ¨μ„ λ†’μž…λ‹ˆλ‹€. μ˜€ν† μŠ€μΌ€μΌλŸ¬ λͺ¨λ“ˆμ€ ν”„λ‘œλ©”ν…Œμš°μŠ€λ‘œλΆ€ν„° 사전 μ„€μ •λœ κΈ°κ°„λ§ˆλ‹€ μˆ˜μ§‘λœ μ»¨ν…Œμ΄λ„ˆλ³„ CPU μ‚¬μš©λ₯ μ„ 기반으둜, docker-compose.yml νŒŒμΌμ— μ„€μ •λœ μž„κ³„μΉ˜ μ΄μƒμ˜ μ‚¬μš©λ₯ μ΄ 3λΆ„ 이상 μ§€μ†λ˜λ©΄ scale-out ν•˜κ³  μž„κ³„μΉ˜μ˜ 절반 미만의 μ‚¬μš©λ₯ μ΄ 1λΆ„ 이상 μ§€μ†λ˜λ©΄ scale-in ν•©λ‹ˆλ‹€. 이 λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ λ³„λ„μ˜ μˆ˜λ™μ μΈ κ°œμž… 없이 μ‹œμŠ€ν…œμ˜ νŠΈλž˜ν”½/λΆ€ν•˜ 변화에 따라 μžλ™μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆμ˜ 수λ₯Ό μ‘°μ ˆν•˜μ—¬ λΉ„μš© 효율적인 μš΄μ˜μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. λ˜ν•œ ν”„λ‘œλ©”ν…Œμš°μŠ€λ₯Ό 톡해 μˆ˜μ§‘ν•œ λ©”νŠΈλ¦­λ“€μ„ Grafanaλ₯Ό ν™œμš©ν•΄ ν”„λ‘ νŠΈμ—”λ“œλ‘œ ν‘œκΈ°ν•©λ‹ˆλ‹€. ν”„λ‘ νŠΈμ—”λ“œμ°½μ—μ„œλŠ” CPU μ‚¬μš©λŸ‰ 및 ν˜„μž¬ μ„œλ²„μ˜ 수 등을 μ‹œκ°μ μœΌλ‘œ 확인 κ°€λŠ₯ν•˜κ³ , μΈν„°νŽ˜μ΄μŠ€μ˜ λ²„νŠΌμ„ μ΄μš©ν•΄ μ†μ‰½κ²Œ λΆ€ν•˜λ₯Ό κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ’‘ ν”„λ‘œμ νŠΈμ˜ ν•„μš”μ„±

효율적인 λ¦¬μ†ŒμŠ€ μ‚¬μš©
κ³ μ •λœ μ„œλ²„ 개수둜 항상 μ΅œλŒ€ νŠΈλž˜ν”½μ„ κ°λ‹Ήν•˜λ„λ‘ κ΅¬μ„±ν•˜λ©΄, νŠΈλž˜ν”½μ΄ 적을 λ•Œμ—λ„ λΆˆν•„μš”ν•˜κ²Œ μžμ›μ΄ λ‚­λΉ„λ©λ‹ˆλ‹€.
μ˜€ν† μŠ€μΌ€μΌλ§ κΈ°λŠ₯을 톡해 νŠΈλž˜ν”½ 변화에 따라 λ™μ μœΌλ‘œ μΈμŠ€ν„΄μŠ€ 수λ₯Ό μ‘°μ •ν•¨μœΌλ‘œμ¨, μ΅œμ†Œν•œμ˜ μžμ›μœΌλ‘œ μ•ˆμ •μ μΈ μ„œλΉ„μŠ€ 제곡이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ•ˆμ •μ μΈ νŠΈλž˜ν”½ λΆ„μ‚°
λ‹¨μˆœ Round-Robin 방식은 μ„œλ²„μ˜ μ‹€μ‹œκ°„ λΆ€ν•˜ μƒνƒœλ₯Ό κ³ λ €ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, νŠΉμ • μ„œλ²„μ— κ³ΌλΆ€ν•˜κ°€ 집쀑될 수 μžˆμŠ΅λ‹ˆλ‹€. 이에 latency λͺ¨λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ„±λŠ₯이 μš°μˆ˜ν•œ μ„œλ²„κ°€ 더 λ§Žμ€ λΆ€ν•˜λ₯Ό κ°λ‹Ήν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
λ˜ν•œ, ν—¬μŠ€μ²΄ν¬κ°€ κ΅¬ν˜„λœ λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•˜λ©΄, 응닡 μ§€μ—° λ˜λŠ” μž₯μ• κ°€ λ°œμƒν•œ μ„œλ²„λ₯Ό μžλ™μœΌλ‘œ νšŒν”Όν•˜μ—¬ νŠΈλž˜ν”½μ„ λΆ„μ‚°μ‹œν‚¬ 수 μžˆμ–΄ κ°€μš©μ„±μ„ λ†’μž…λ‹ˆλ‹€.

운영 νŽΈμ˜μ„± 및 κ°€μ‹œμ„± 확보
Prometheus와 Grafanaλ₯Ό ν†΅ν•œ λͺ¨λ‹ˆν„°λ§ 및 μ‹œκ°ν™” μ‹œμŠ€ν…œμ„ κ°–μΆ”λ©΄, μš΄μ˜μžλŠ” ν˜„μž¬ μ„œλ²„ μƒνƒœλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ νŒŒμ•…ν•˜κ³ , μž₯μ• λ‚˜ κ³ΌλΆ€ν•˜ λ°œμƒ μ‹œ μ¦‰μ‹œ λŒ€μ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ ν•™μŠ΅μ„ μœ„ν•΄ λΆ€ν•˜ λ²„νŠΌμ„ ν†΅ν•΄μ„œ μ†μ‰½κ²Œ λ‘œλ“œλ°ΈλŸ°μ„œμ™€ μ˜€ν† μŠ€μΌ€μΌλ§ 과정을 μ‹œκ°μ μœΌλ‘œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.


πŸ’‘ κ΄€λ ¨ 기술 μ†Œκ°œ

Docker / Docker Compose

각 μ»΄ν¬λ„ŒνŠΈ(λ°±μ—”λ“œ, λ‘œλ“œλ°ΈλŸ°μ„œ, μ˜€ν† μŠ€μΌ€μΌλŸ¬, Prometheus, Grafana)λ₯Ό μ»¨ν…Œμ΄λ„ˆν™”ν•˜μ—¬ λΆ„λ¦¬λœ ν™˜κ²½μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
docker-compose.yml을 톡해 전체 μŠ€νƒμ„ ν•œλ²ˆμ— 기동/μ’…λ£Œν•  수 μžˆλ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

Prometheus

μ˜€ν”ˆμ†ŒμŠ€ μ‹œκ³„μ—΄ λ°μ΄ν„°λ² μ΄μŠ€ 및 λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

HTTP 기반의 ν‘Έμ‹œ(Push) 방식이 μ•„λ‹Œ, κ΅¬μ„±λœ λŒ€μƒ(Target)μœΌλ‘œλΆ€ν„° λ©”νŠΈλ¦­μ„ 폴링(Pull)ν•˜μ—¬ μˆ˜μ§‘ν•©λ‹ˆλ‹€.

μ˜€ν† μŠ€μΌ€μΌλŸ¬μ™€ λ°±μ—”λ“œ μ„œλ²„μ—μ„œ μ œκ³΅ν•˜λŠ” λ©”νŠΈλ¦­ μ—”λ“œν¬μΈνŠΈ(/metrics)λ₯Ό μŠ€ν¬λ ˆμ΄ν•‘ν•˜μ—¬ CPU μ‚¬μš©λ₯ , λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰, 응닡 μ§€μ—° μ‹œκ°„ 등을 μˆ˜μ§‘ν•©λ‹ˆλ‹€.

Grafana

Prometheus에 μ €μž₯된 λ©”νŠΈλ¦­μ„ μ‹œκ°ν™”ν•˜λŠ” λŒ€μ‹œλ³΄λ“œ λ„κ΅¬μž…λ‹ˆλ‹€.

λ‹€μ–‘ν•œ κ·Έλž˜ν”„, 차트, μ•ŒλžŒ 섀정을 톡해 μš΄μ˜μžκ°€ μ‹€μ‹œκ°„μœΌλ‘œ μ‹œμŠ€ν…œ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³ , 이상 μ§•ν›„λ₯Ό 감지할 수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.

Python 3.x

ν”„λ‘œμ νŠΈμ˜ λŒ€λΆ€λΆ„μ˜ λͺ¨λ“ˆλ“€μ΄ λͺ¨λ‘ Python μ–Έμ–΄λ‘œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

requests 라이브러리λ₯Ό μ‚¬μš©ν•΄ Prometheus HTTP APIμ—μ„œ λ©”νŠΈλ¦­μ„ μ‘°νšŒν•˜κ³ , Docker SDK (docker νŒ¨ν‚€μ§€)λ₯Ό 톡해 μ»¨ν…Œμ΄λ„ˆ μ œμ–΄(생성, μ‚­μ œ, μƒνƒœ 쑰회) κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

HTTP μ„œλ²„ ν”„λ ˆμž„μ›Œν¬ (Flask)

λ‘œλ“œλ°ΈλŸ°μ„œμ˜ ν—¬μŠ€μ²΄ν¬ μ—”λ“œν¬μΈνŠΈ 및 μš”μ²­ λΆ„λ°°μš© HTTP μ„œλ²„(loadbalancer/server.py)λŠ” Python 기반 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

ν—¬μŠ€μ²΄ν¬λ₯Ό μœ„ν•œ κ°„λ‹¨ν•œ GET μš”μ²­ ν•Έλ“€λŸ¬μ™€, ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ λ°±μ—”λ“œλ‘œ μ „λ‹¬ν•˜λŠ” Reverse Proxy 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

둜컬 λ„€νŠΈμ›Œν¬ 및 λ¦¬λˆ…μŠ€ ν™˜κ²½

전체 μŠ€νƒμ€ λ¦¬λˆ…μŠ€(ν˜Ήμ€ WSL2) κΈ°λ°˜μ—μ„œ Docker둜 μ‹€ν–‰λ©λ‹ˆλ‹€.

λ‘œλ“œλ°ΈλŸ°μ„œκ°€ λ°±μ—”λ“œ μ»¨ν…Œμ΄λ„ˆλ“€μ˜ IP와 포트λ₯Ό λ™μ μœΌλ‘œ κ°μ§€ν•˜μ—¬ νŠΈλž˜ν”½μ„ λΆ„μ‚°μ‹œν‚€κΈ° λ•Œλ¬Έμ—, λ„€νŠΈμ›Œν¬ 섀정에 λŒ€ν•œ κΈ°λ³Έ 이해가 ν•„μš”ν•©λ‹ˆλ‹€.

πŸ’‘ ν”„λ‘œμ νŠΈ κ²°κ³Όλ¬Ό μ„€λͺ…

흐름도 λ‹€μ΄μ–΄κ·Έλž¨

diagram

디렉토리 ꡬ쑰

PNU_cloud_computing/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── src/
β”‚       β”œβ”€β”€ server.py
β”‚       └──requirements.txt
β”‚
β”œβ”€β”€ autoscaler/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ autoscaler.py
β”‚   β”œβ”€β”€ metrics.py
β”‚   └── Dockerfile
β”‚
β”œβ”€β”€ load_balancer/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ health_check.py
β”‚   β”œβ”€β”€ balancer.py
β”‚   β”œβ”€β”€ server.py
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ prometheus/
β”‚   β”œβ”€β”€ targets/
β”‚   β”‚   └── flask.json
β”‚   └── prometheus.yml
β”‚
β”œβ”€β”€ grafana/
β”‚   β”œβ”€β”€ plugins/
β”‚   └── grafana.db
β”œβ”€β”€ .grafana.ini
β”‚
β”œβ”€β”€ fe/
β”‚   └── ...
β”‚
└── docker-compose.yml

backend/

μ‹€μ œ μ„œλΉ„μŠ€ λ‘œμ§μ„ μ‹€ν–‰ν•˜λŠ” λ°±μ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ†ŒμŠ€ μ½”λ“œκ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€.

ν˜„μž¬ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ‹¨μˆœνžˆ λ°±μ—”λ“œμ˜ 기본적인 κΈ°λŠ₯λ§Œν•˜λ„λ‘ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

autoscaler/

autoscaler.py: 주기적으둜 Docker μ»¨ν…Œμ΄λ„ˆμ˜ CPU μ‚¬μš©λ₯  등을 μ‹€μ‹œκ°„μœΌλ‘œ μ‘°νšŒν•œ λ’€, ν™•μž₯/μΆ•μ†Œ λ‘œμ§μ— 따라 μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜κ±°λ‚˜, μ œκ±°ν•©λ‹ˆλ‹€.

metrics.py: Prometheusλ‘œλΆ€ν„° λ©”νŠΈλ¦­μ„ μ‘°νšŒν•˜λŠ” PrometheusClient ν΄λž˜μŠ€μ™€, Docker μ»¨ν…Œμ΄λ„ˆλ₯Ό μ œμ–΄ν•˜λŠ” DockerManager 클래슀λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

- Scale-Out: μ§€μ •λœ CPU μž„κ³„μΉ˜(예: 70%)λ₯Ό 일정 μ‹œκ°„(예: 3λΆ„) μ΄ˆκ³Όν•˜λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό μΆ”κ°€

- Scale-In: CPU μž„κ³„μΉ˜μ˜ 절반(예: 35%) μ΄ν•˜λ‘œ 일정 μ‹œκ°„(예: 1λΆ„) 연속 μœ μ§€λ˜λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό 제거

μ΅œμ†Œ/μ΅œλŒ€ μΈμŠ€ν„΄μŠ€ 개수λ₯Ό μ„€μ •ν•˜μ—¬, λ¬΄ν•œ ν™•μž₯을 λ°©μ§€ν•©λ‹ˆλ‹€.

loadbalancer/

health_check.py: 각 λ°±μ—”λ“œ λ…Έλ“œ(μ»¨ν…Œμ΄λ„ˆ)의 ν—¬μŠ€μ²΄ν¬λ₯Ό μˆ˜ν–‰ν•˜λŠ” λ‘œμ§μ„ μ •μ˜ν•©λ‹ˆλ‹€. 주기적으둜 HTTP μš”μ²­μ„ 보내고, 응닡 μ½”λ“œλ₯Ό 기반으둜 정상/비정상 μƒνƒœλ₯Ό νŒμ •ν•©λ‹ˆλ‹€.

balancer.py: λΌμš΄λ“œλ‘œλΉˆ 방식과 ν˜„μž¬ 각 μ„œλ²„μ˜ λΆ€ν•˜(예: CPU μ‚¬μš©λ₯  λ˜λŠ” 응닡 μ‹œκ°„)λ₯Ό κ³ λ €ν•œ κ°€μ€‘μΉ˜ 기반 λΆ„μ‚° μ•Œκ³ λ¦¬μ¦˜μ„ λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€.

server.py: ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° λ“€μ–΄μ˜€λŠ” μš”μ²­μ„ λ°›μ•„, balancer.pyμ—μ„œ μ„ νƒλœ λ°±μ—”λ“œ λ…Έλ“œλ‘œ μš”μ²­μ„ 전달(ν”„λ‘μ‹œ)ν•˜λŠ” λΌμš°νŒ… 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€λ‹€. λ™μ‹œμ—, /health μ—”λ“œν¬μΈνŠΈλ₯Ό μ œκ³΅ν•˜μ—¬ μ™ΈλΆ€μ—μ„œ λ‘œλ“œλ°ΈλŸ°μ„œ 자체 μƒνƒœλ₯Ό 체크할 수 μžˆμŠ΅λ‹ˆλ‹€.

prometheus/

targets/flask.json: μŠ€μΌ€μΌλ§λœ λ°±μ—”λ“œ 풀을 κ΄€λ¦¬ν•˜λŠ” νŒŒμΌμž…λ‹ˆλ‹€.

prometheus.yml: Prometheusκ°€ λ©”νŠΈλ¦­μ„ μˆ˜μ§‘ν•  λŒ€μƒ(autoscaler, backend, loadbalancer λ“±)을 μ •μ˜ν•˜λŠ” μ„€μ • νŒŒμΌμž…λ‹ˆλ‹€.

grafana/

Grafana dashboard 좜λ ₯을 μœ„ν•œ κΈ°λ³Έ μ„€μ • νŒŒμΌλ“€μž…λ‹ˆλ‹€.

fe/

localhost:3000으둜 μ ‘μ†μ‹œ ν‘œν˜„λ˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ 화면을 κ΅¬μ„±ν•˜λŠ” νŒŒμΌλ“€μž…λ‹ˆλ‹€.

docker-compose.yml

Prometheus, Grafana, Loadbalancer, Backend, Autoscalerλ₯Ό ν•˜λ‚˜μ˜ λ„€νŠΈμ›Œν¬λ‘œ λ¬Άμ–΄ λ™μ‹œμ— 기동할 수 μžˆλ„λ‘ μ •μ˜λœ Compose νŒŒμΌμž…λ‹ˆλ‹€.

μ„œλΉ„μŠ€λ³„λ‘œ ν•„μš”ν•œ ν™˜κ²½ λ³€μˆ˜, λ³Όλ₯¨, 포트 λ§€ν•‘ 등을 λͺ¨λ‘ κΈ°μˆ ν•΄ 두어, 둜컬 ν˜Ήμ€ ν΄λΌμš°λ“œ VMμ—μ„œ λ‹¨λ²ˆμ— 전체 μŠ€νƒμ„ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.



πŸ’‘ ν”„λ‘œμ νŠΈ μ‚¬μš©λ²•

Prerequisites

Docker Engine β‰₯ 20.x
Docker Compose β‰₯ 1.29.x

Installation

$ git clone https://github.com/JAEIL1999/PNU_cloud_computing.git
$ cd PNU_cloud_computing

How to start

# 1) Docker Compose둜 전체 μŠ€νƒ 기동
$ docker-compose up -d

# (선택) λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆκ°€ 정상 μƒνƒœμΈμ§€ 확인
$ docker ps

# 2) μ‹€μ‹œκ°„ CPU μ‚¬μš©λŸ‰ 확인
$ docker-compose logs -f autoscaler

μœ„ λ‚΄μš©λ“€μ΄ 확인 λ˜μ—ˆλ‹€λ©΄ μ•„λž˜ μ£Όμ†Œλ₯Ό ν†΅ν•΄μ„œ λ©”νŠΈλ¦­ μˆ˜μ§‘ λ‚΄μš©λ“€μ„ μ‹œκ°μ μœΌλ‘œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ˜ν•œ ν„°λ―Έλ„μ˜ 둜그λ₯Ό ν†΅ν•΄μ„œλŠ” μ‹€μ‹œκ°„μœΌλ‘œ CPU μ‚¬μš©λŸ‰μ„ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

http://localhost:3000



πŸ’‘ ν”„λ‘œμ νŠΈ ν™œμš©λ°©μ•ˆ

ν•™μŠ΅μš© 데λͺ¨ ν™˜κ²½

μ˜€ν† μŠ€μΌ€μΌλ§κ³Ό λ‘œλ“œλ°ΈλŸ°μ‹±μ˜ κΈ°λ³Έ κ°œλ…μ„ μ΄ν•΄ν•˜κ³  μ‹€μŠ΅ν•˜κΈ° μœ„ν•œ ν•™μŠ΅μš© ν™˜κ²½μœΌλ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Prometheus와 Grafanaλ₯Ό ν•¨κ»˜ κ΅¬μ„±ν•¨μœΌλ‘œμ¨, λͺ¨λ‹ˆν„°λ§ λŒ€μ‹œλ³΄λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” 과정을 직접 μ‹€μŠ΅ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

μ†Œκ·œλͺ¨ μ›Ή μ„œλΉ„μŠ€ ν˜ΈμŠ€νŒ…

VPS(가상 사섀 μ„œλ²„)λ‚˜ μ˜¨ν”„λ ˆλ―ΈμŠ€ ν™˜κ²½μ—μ„œλ„ Dockerλ₯Ό μ§€μ›ν•œλ‹€λ©΄, ν•΄λ‹Ή μ†”λ£¨μ…˜μ„ κ·ΈλŒ€λ‘œ λ°°ν¬ν•˜μ—¬ μ†Œκ·œλͺ¨ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ•ˆμ •μ μœΌλ‘œ μš΄μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΈλž˜ν”½ νŒ¨ν„΄μ΄ μœ λ™μ μΈ μ„œλΉ„μŠ€(예: 개인 λΈ”λ‘œκ·Έ, 포트폴리였 μ‚¬μ΄νŠΈ)μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό 효과적으둜 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ»€μŠ€ν…€ ν™•μž₯ κΈ°λŠ₯ 개발

ν”„λ‘œμ νŠΈμ˜ 핡심 둜직(예: μ˜€ν† μŠ€μΌ€μΌλŸ¬ μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜, ν—¬μŠ€μ²΄ν¬ κΈ°μ€€)을 자유둭게 μˆ˜μ •ν•˜μ—¬, νŠΉμ • μ„œλΉ„μŠ€ μš”κ΅¬μ‚¬ν•­μ— λ§žλŠ” νŠΉν™”λœ ν™•μž₯ 정책을 μ‹€ν—˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, CPU 외에도 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰, λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­, μš”μ²­ 처리 λŒ€κΈ° μ‹œκ°„ 등을 κΈ°μ€€μœΌλ‘œ ν™•μž₯ 정책을 닀쀑 μ§€ν‘œ(Multi-criteria) 기반으둜 ν™•μž₯ν•˜λ„λ‘ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •