PitterPetter ํ๋ก์ ํธ์ ๋ก๊ทธ์ ๋ฉํธ๋ฆญ์ ํตํฉ ์์ง, ์ ์ฅ, ๋ถ์ํ๊ธฐ ์ํ ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋ํฐ๋ง ์์คํ
์ด ํ๋ก์ ํธ๋ PitterPetter ์ ํ๋ฆฌ์ผ์ด์ ์ **๋ก๊ทธ(ELK Stack)**์ **๋ฉํธ๋ฆญ(GMP)**์ ํตํฉ ๊ด๋ฆฌํ๋ ํ๋์ ์ธ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค. Terraform๊ณผ Helm์ ์ฌ์ฉํ์ฌ GKE์ ๋ฐฐํฌ๋๋ฉฐ, ํ๊ฒฝ๋ณ(๊ฐ๋ฐ/์ด์) ๋ฐฐํฌ๋ฅผ ์ง์ํ๊ณ ๋์ ์ค์ ์ ํตํด ์ ์ฐํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํต์ฌ ์ ํ๋ฆฌ์ผ์ด์ : auth-service, content-service, course-service, ai-service, gateway
- ์ธํ๋ผ ๊ตฌ์ฑ์์: PostgreSQL, Kubernetes ํด๋ฌ์คํฐ, GKE ๋ ธ๋
- ๋ฐ์ดํฐ ํ์ : ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ, ์์คํ ๋ฉํธ๋ฆญ, Kubernetes ์ด๋ฒคํธ, ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ
PitterPetter ๋ชจ๋ํฐ๋ง ์์คํ ์ **ELK Stack(๋ก๊ทธ)**๊ณผ **GMP(๋ฉํธ๋ฆญ)**์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ๋ฅผ ์ฑํํฉ๋๋ค.
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Application โ โ Filebeat โ โ Logstash โ
โ Services โโโโโถโ (DaemonSet) โโโโโถโ (Deployment) โ
โ โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Kibana โโโโโโ Elasticsearch โโโโโโ Logstash โ
โ (Deployment) โ โ (StatefulSet) โ โ โ
โ โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Application โ โ GMP System โ โ Google Cloud โ
โ Services โโโโโถโ (Collectors) โโโโโถโ Monitoring โ
โ โ โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
| ๊ตฌ๋ถ | ELK Stack | GMP (Google Cloud Monitoring) |
|---|---|---|
| ๋ฐ์ดํฐ ํ์ | ๋ก๊ทธ (Logs) | ๋ฉํธ๋ฆญ (Metrics) |
| ์์ง ๋ฐฉ์ | Filebeat (DaemonSet) | GMP Collectors (DaemonSet) |
| ์ ์ฅ์ | Elasticsearch | Google Cloud Monitoring |
| ์๊ฐํ | Kibana | Google Cloud Console |
| ์ฉ๋ | ๋ก๊ทธ ๋ถ์, ๋๋ฒ๊น | ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ์๋ฆผ |
| ๋ฐ์ดํฐ ๋ณด์กด | ์ฅ๊ธฐ ๋ณด์กด (์ ๋จ์) | ๋จ๊ธฐ ๋ณด์กด (์ผ ๋จ์) |
- Kubernetes ํด๋ฌ์คํฐ: GKE (Google Kubernetes Engine)
- Helm: 3.x ์ด์
- kubectl: Kubernetes CLI
- Terraform: 1.0 ์ด์
- Google Cloud SDK: gcloud CLI
- GMP: Google Cloud Monitoring (์๋ ํ์ฑํ)
- ํ์ฌ ์ฐ๊ฒฐ:
gke_pitterpetter_asia-northeast3-b_pitterpetter-dev-cluster - ๋ค์์คํ์ด์ค:
monitoring - ๋ฐฐํฌ ๊ธฐ๊ฐ: 8์ผ ์ (2025-10-10)
NAME READY STATUS RESTARTS AGE
filebeat-filebeat-5hgs5 1/1 Running 0 12h
filebeat-filebeat-72xgv 1/1 Running 0 12h
filebeat-filebeat-7s489 1/1 Running 0 22m
filebeat-filebeat-lgp7x 1/1 Running 0 12h
filebeat-filebeat-mttd4 1/1 Running 0 12h
kibana-kibana-5bb6dbcbc-8h7nc 1/1 Running 0 12h
logstash-logstash-0 1/1 Running 0 12h
loventure-elk-master-0 1/1 Running 0 12h
loventure-elk-master-1 1/1 Running 0 12h
NAME READY STATUS RESTARTS AGE
collector-9zjjm 2/2 Running 0 12h
collector-l7xrt 2/2 Running 0 12h
collector-nmmrn 2/2 Running 0 41m
collector-vwgvp 2/2 Running 0 13h
collector-xc99j 2/2 Running 0 12h
gmp-operator-8b998859-7dmtj 1/1 Running 0 12h
# GKE ํด๋ฌ์คํฐ ์ฐ๊ฒฐ
gcloud container clusters get-credentials pitterpetter-dev-cluster --zone=asia-northeast3-b --project=pitterpetter
# ์๋ ๋ฐฐํฌ
./scripts/deploy.sh dev# GKE ํด๋ฌ์คํฐ ์ฐ๊ฒฐ
gcloud container clusters get-credentials pitterpetter-prod-cluster --zone=asia-northeast3-b --project=pitterpetter-2
# ์๋ ๋ฐฐํฌ
./scripts/deploy.sh prodPitterPetter_Monitoring/
โโโ README.md
โโโ terraform/ # Terraform ์ธํ๋ผ ์ฝ๋
โ โโโ 01-namespace.tf
โ โโโ 02-elasticsearch.tf
โ โโโ 03-logstash.tf
โ โโโ 04-kibana.tf
โ โโโ 05-filebeat.tf
โ โโโ 06-ingress.tf
โ โโโ variables.tf
โ โโโ outputs.tf
โ โโโ versions.tf
โ โโโ dev.tfvars # ๊ฐ๋ฐํ๊ฒฝ ์ค์
โ โโโ prod.tfvars # ์ด์ํ๊ฒฝ ์ค์
โ โโโ README.md
โโโ helm-charts/ # Helm ์ฐจํธ ์ค์
โ โโโ elasticsearch/
โ โ โโโ values.yaml
โ โโโ kibana/
โ โ โโโ values.yaml
โ โโโ logstash/
โ โ โโโ values.yaml
โ โโโ filebeat/
โ โ โโโ values.yaml
โ โโโ monitoring/
โ โโโ dashboards/
โ โ โโโ application-overview.json
โ โ โโโ infrastructure-overview.json
โ โโโ index-patterns/
โ โ โโโ pitterpetter-logs.json
โ โโโ visualizations/
โโโ scripts/
โ โโโ deploy.sh # ์๋ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ
โ โโโ cleanup.sh
โโโ docs/
โโโ monitoring-guide.md
- ํ๋ก์ ํธ:
pitterpetter - ํด๋ฌ์คํฐ:
pitterpetter-dev-cluster - ๋๋ฉ์ธ:
kibana.loventure.us - ๋
ธ๋ํ:
pitterpetter-nodes - ๋ฆฌ์์ค: ์์ ํฌ๊ธฐ (CPU 500m, Memory 1Gi)
- ํ๋ก์ ํธ:
pitterpetter-2 - ํด๋ฌ์คํฐ:
pitterpetter-prod-cluster - ๋๋ฉ์ธ:
kibana-prod.loventure.us - ๋
ธ๋ํ:
pitterpetter-pro-nodes - ๋ฆฌ์์ค: ํฐ ํฌ๊ธฐ (CPU 1000m, Memory 2Gi)
- ํด๋ฌ์คํฐ ํ์ : ๋ค์ค ๋ ธ๋ (2๊ฐ ๋ณต์ ๋ณธ)
- ๋ฒ์ : 7.17.3
- ๋ณด์: X-Pack Security ๋นํ์ฑํ (๊ฐ๋ฐ์ฉ)
- ์คํ ๋ฆฌ์ง: ํ๊ฒฝ๋ณ ํฌ๊ธฐ ์กฐ์
- ์ธ๋ฑ์ค:
loventure-logs-*ํจํด
- ํ์ดํ๋ผ์ธ: Spring Boot, FastAPI, PostgreSQL ๋ก๊ทธ ํ์ฑ
- ํ
ํ๋ฆฟ: ์ปค์คํ
์ธ๋ฑ์ค ํ
ํ๋ฆฟ (
loventure-logs) - ํฌํธ: 5044 (Beats), 9600 (HTTP)
- Grok ํจํด: ์๋น์ค๋ณ ๋ก๊ทธ ํ์ ์๋ ํ์ฑ
- ์ธ๋ฑ์ค ํจํด:
loventure-logs-* - ๋์๋ณด๋: ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ธํ๋ผ ๋ชจ๋ํฐ๋ง
- ๋๋ฉ์ธ: ํ๊ฒฝ๋ณ ๋๋ฉ์ธ ์ค์
- CORS: loventure.us ๋๋ฉ์ธ ํ์ฉ
- ๋ก๊ทธ ์์ง: Kubernetes Pod ๋ก๊ทธ
- ์ถ๋ ฅ: Logstash (5044 ํฌํธ)
- DaemonSet: ๋ชจ๋ ๋ ธ๋์์ ์คํ
- ์ปค๋ฒ๋ฆฌ์ง: 100% (๋ชจ๋ loventure-prod-* ์ปจํ ์ด๋)
- ๋ฐฐํฌ ๋ฐฉ์: DaemonSet (5๊ฐ ๋ ธ๋์์ ์คํ)
- ์์ง ์ฃผ๊ธฐ: 15์ด ๊ฐ๊ฒฉ
- ๋ฉํธ๋ฆญ ํ์ : CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ, ๋์คํฌ I/O
- ์ ์ก ์ง์ฐ: ์์ง ํ 1๋ถ ์ด๋ด Google Cloud Monitoring ์ ์ก
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฉํธ๋ฆญ: Pod๋ณ CPU/๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- Kubernetes ๋ฉํธ๋ฆญ: Pod, Node, Service ์ํ
- ์ธํ๋ผ ๋ฉํธ๋ฆญ: ๋ ธ๋ ๋ฆฌ์์ค ์ฌ์ฉ๋
- ์ปค์คํ ๋ฉํธ๋ฆญ: ๋น์ฆ๋์ค ์งํ (์์ฒญ ์, ์๋ต ์๊ฐ ๋ฑ)
- Kibana: https://kibana.loventure.us
- Elasticsearch:
kubectl port-forward svc/loventure-elk-master 9200:9200 -n monitoring - Google Cloud Monitoring: Google Cloud Console
- Kibana: https://kibana-prod.loventure.us
- Elasticsearch:
kubectl port-forward svc/loventure-elk-master 9200:9200 -n monitoring - Google Cloud Monitoring: Google Cloud Console
- ์ด ์ธ๋ฑ์ค ์: 9๊ฐ
- ์ฃผ์ ์ธ๋ฑ์ค:
loventure-logs-2025.10.14: 12,967๊ฐ ๋ฌธ์ (5.1MB)loventure-logs-2025.10.15: 67,030๊ฐ ๋ฌธ์ (38.5MB)loventure-logs-2025.10.18: 115,273๊ฐ ๋ฌธ์ (76.2MB)
- Spring Boot: auth-service, content-service, course-service
- FastAPI: ai-service
- PostgreSQL: ๋ฉ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Kubernetes Events: Pod ์ํ, ์ค์ผ์ค๋ง, ์ด๋ฏธ์ง ํ
- ์์ง๋ฅ : 100% (๋ชจ๋ Pod ๋ฐ ๋ ธ๋ ์ปค๋ฒ)
- ์์ง ์ฃผ๊ธฐ: 15์ด ๊ฐ๊ฒฉ์ผ๋ก 1,000+ ๋ฉํธ๋ฆญ ํฌ์ธํธ ์์ง
- ์ ์ก ์ง์ฐ: ์์ง ํ 1๋ถ ์ด๋ด Google Cloud Monitoring ์ ์ก
- ๋ฐ์ดํฐ ์์ค๋ฅ : 0% (GMP์ ์์ ์ ์ธ ๋ฉํธ๋ฆญ ์์ง ๋ณด์ฅ)
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฉํธ๋ฆญ: CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ์ฌ์ฉ๋
- Kubernetes ๋ฉํธ๋ฆญ: Pod, Node, Service ์ํ
- ์ธํ๋ผ ๋ฉํธ๋ฆญ: ๋ ธ๋ ๋ฆฌ์์ค ์ฌ์ฉ๋
- ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ: ์ฌ์ฉ์ ์์ฒญ ์, ์๋ต ์๊ฐ, ์๋ฌ์จ
# ์ ์ฒด ELK ์คํ ์ํ ํ์ธ
kubectl get pods -n monitoring
# ๊ฐ ์ปดํฌ๋ํธ ๋ก๊ทธ ํ์ธ
kubectl logs -f statefulset/loventure-elk-master -n monitoring
kubectl logs -f deployment/logstash-logstash -n monitoring
kubectl logs -f deployment/kibana-kibana -n monitoring
kubectl logs -f daemonset/filebeat -n monitoring# Terraform์ ํตํ ์
๊ทธ๋ ์ด๋
cd terraform
terraform plan -var-file="dev.tfvars" # ๋๋ prod.tfvars
terraform apply -var-file="dev.tfvars"# Terraform์ ํตํ ์ญ์
cd terraform
terraform destroy -var-file="dev.tfvars" # ๋๋ prod.tfvars# Pod ์ํ ํ์ธ
kubectl describe pod <pod-name> -n monitoring
# ์ผ๋ฐ์ ์ธ ์์ธ: ๋ฆฌ์์ค ๋ถ์กฑ, StorageClass ๋ฌธ์ , ๋
ธ๋ ์ค์ผ์ค๋ง ์ด์
kubectl get events -n monitoring --sort-by='.lastTimestamp'# StorageClass ํ์ธ
kubectl get storageclass
# PVC ์ํ ํ์ธ
kubectl get pvc -n monitoring
# ์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ
: GKE์์ standard-rwo StorageClass ์ฌ์ฉ# ๋
ธ๋ ๋ฆฌ์์ค ํ์ธ
kubectl top nodes
# Pod ๋ฆฌ์์ค ํ์ธ
kubectl top pods -n monitoring
# ๋ฆฌ์์ค ํ ๋น๋ ํ์ธ
kubectl describe quota -n monitoring# Filebeat ์ํ ํ์ธ
kubectl logs -f daemonset/filebeat -n monitoring
# Logstash ํ์ดํ๋ผ์ธ ์ํ ํ์ธ
kubectl logs -f deployment/logstash-logstash -n monitoring
# Elasticsearch ํด๋ฌ์คํฐ ์ํ ํ์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cluster/health# GMP Collector ์ํ ํ์ธ
kubectl logs -f daemonset/collector -n gmp-system
# GMP Operator ์ํ ํ์ธ
kubectl logs -f deployment/gmp-operator -n gmp-system
# Google Cloud Monitoring ์ฐ๊ฒฐ ํ์ธ
kubectl exec -it deployment/gmp-operator -n gmp-system -- curl -H "Authorization: Bearer $(cat /var/secrets/google/key.json | jq -r .private_key)" https://monitoring.googleapis.com/v1/projects/pitterpetter/monitoredResources# ์ด๋ฒคํธ ํ์ธ
kubectl get events -n monitoring --sort-by='.lastTimestamp'
# Pod ์์ธ ์ ๋ณด
kubectl describe pod <pod-name> -n monitoring
# ์๋น์ค ์ฐ๊ฒฐ ํ์ธ
kubectl get svc -n monitoring
# Ingress ์ํ ํ์ธ
kubectl get ingress -n monitoring# ํด๋ฌ์คํฐ ์ํ ํ์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cluster/health?pretty
# ์ธ๋ฑ์ค ์ํ ํ์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cat/indices?v
# JVM ํ ์ฌ์ฉ๋ ํ์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_nodes/stats/jvm?pretty# ํ์ดํ๋ผ์ธ ์ํ ํ์ธ
kubectl exec -it deployment/logstash-logstash -n monitoring -- curl localhost:9600/_node/stats/pipelines?pretty
# ํ ์ํ ํ์ธ
kubectl exec -it deployment/logstash-logstash -n monitoring -- curl localhost:9600/_node/stats/pipelines?pretty | jq '.pipelines.main.queue'# Kibana ์ํ ํ์ธ
kubectl logs -f deployment/kibana-kibana -n monitoring
# Elasticsearch ์ฐ๊ฒฐ ํ์ธ
kubectl exec -it deployment/kibana-kibana -n monitoring -- curl localhost:5601/api/status- ๋ก๊ทธ ์์ง๋ฅ : 100% (๋ชจ๋ loventure-prod-* ์ปจํ ์ด๋ ์ปค๋ฒ)
- ์ผ์ผ ์ฒ๋ฆฌ๋: ํ๊ท 50,000+ ๋ก๊ทธ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ๊ฒ์ ์ฑ๋ฅ: 1์ด ์ด๋ด ๋ก๊ทธ ๊ฒ์ ๊ฒฐ๊ณผ ์ ๊ณต
- ๋ฐ์ดํฐ ๋ณด์กด: 6๊ฐ์๊ฐ ๋ก๊ทธ ๋ฐ์ดํฐ ๋ณด์กด
- ๋ฉํธ๋ฆญ ์์ง๋ฅ : 100% (๋ชจ๋ Pod ๋ฐ ๋ ธ๋ ์ปค๋ฒ)
- ์์ง ์ฃผ๊ธฐ: 15์ด ๊ฐ๊ฒฉ์ผ๋ก 1,000+ ๋ฉํธ๋ฆญ ํฌ์ธํธ ์์ง
- ์ ์ก ์ง์ฐ: ์์ง ํ 1๋ถ ์ด๋ด Google Cloud Monitoring ์ ์ก
- ์๋ฆผ ์ ํ๋: 99.5% ์ ํํ ์๋ฆผ ๋ฐ์ก
- ๋ฌธ์ ์ง๋จ ์๊ฐ: 90% ๋จ์ถ (2-3์๊ฐ โ 15-20๋ถ)
- ์ฅ์ ๋ณต๊ตฌ ์๊ฐ: 70% ๋จ์ถ (ํ๊ท 30๋ถ โ 9๋ถ)
- ๋ฆฌ์์ค ์ฌ์ฉ๋ฅ : 25% ๊ฐ์ (CPU/๋ฉ๋ชจ๋ฆฌ ์ต์ ํ)
- ๊ฐ๋ฐํ ์์ฐ์ฑ: 40% ํฅ์ (๋๋ฒ๊น ์๊ฐ ๋จ์ถ)
- Elasticsearch: JVM ํ ํฌ๊ธฐ ์กฐ์ (
ES_JAVA_OPTS) - Logstash: ํ์ดํ๋ผ์ธ ์์ปค ์ ์กฐ์ (
pipeline.workers) - Filebeat: ๋ฐฐ์น ํฌ๊ธฐ ์กฐ์
- GMP: ๋ฉํธ๋ฆญ ์์ง ์ฃผ๊ธฐ ๋ฐ ํํฐ๋ง ์ต์ ํ
- ์ธ๋ฑ์ค ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ: ILM ์ ์ฑ ์ค์
- ๋ก๊ทธ ๋ณด์กด ๊ธฐ๊ฐ: 30์ผ ๊ธฐ๋ณธ ์ค์
- ์์ถ:
index.codec: best_compression์ฌ์ฉ - ๋ฉํธ๋ฆญ ๋ณด์กด: 6๊ฐ์๊ฐ ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ ๋ณด์กด
- ๋ก๊ทธ ํ์ฑ ์ ํ๋ ๊ฐ์ : ํ์ฌ 95% โ 99% ๋ชฉํ
- ์ปค์คํ ๋์๋ณด๋ ๊ฐ๋ฐ: ๋น์ฆ๋์ค ์งํ ์ค์ฌ์ ๋์๋ณด๋ 5๊ฐ ์ถ๊ฐ
- ์๋ฆผ ๊ท์น ์ธ๋ถํ: ์๋น์ค๋ณ, ์ฌ๊ฐ๋๋ณ ์ฐจ๋ณํ๋ ์๋ฆผ ์ ์ฑ ์๋ฆฝ
- ๋ชจ๋ํฐ๋ง ๊ฐ์ด๋ ์์ฑ: ๊ฐ๋ฐํ์ ์ํ ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ๊ฐ์ด๋ ์ ๊ณต
- APM ๋์ : Application Performance Monitoring์ผ๋ก ์์ธ ์ฑ๋ฅ ๋ถ์
- ๋ณด์ ๊ฐํ: X-Pack Security ํ์ฑํ ๋ฐ ๋ค๋จ๊ณ ์ธ์ฆ ๊ตฌํ
- ๋ฉํฐ ํด๋ฌ์คํฐ ์ง์: ๊ฐ๋ฐ/์คํ ์ด์ง/์ด์ ํ๊ฒฝ ํตํฉ ๋ชจ๋ํฐ๋ง
- CI/CD ํตํฉ: ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฐ ์ด์ ํ์ง: Elasticsearch ML ๊ธฐ๋ฅ์ ํ์ฉํ ์๋ ์ด์ ํ์ง
- ์์ธก ๋ถ์: ๋ฉํธ๋ฆญ ํธ๋ ๋ ๋ถ์์ ํตํ ์๋น์ค ์ฅ์ ์์ธก
- ์๋ ๋ณต๊ตฌ: ์ฅ์ ๋ฐ์ ์ ์๋ ๋ณต๊ตฌ ์คํฌ๋ฆฝํธ ์คํ
- ๋น์ฉ ์ต์ ํ: AI ๊ธฐ๋ฐ ๋ฆฌ์์ค ์ฌ์ฉ๋ ์์ธก ๋ฐ ์๋ ์ค์ผ์ผ๋ง