-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add: ๐ฐ [Chapter 02] ์นดํ์นด ์ค์นํ๊ธฐ
- Loading branch information
1 parent
7225484
commit ee76e9e
Showing
2 changed files
with
294 additions
and
1 deletion.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
_posts/kafka/2024-11-17-chapter02.md โ _posts/kafka/2024-11-17-chapter02(1).md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,293 @@ | ||
--- | ||
title: Chapter 02(2). ์นดํ์นด ์ค์ ํ๊ธฐ | ||
date: 2024-11-23 19:00:00 +0900 | ||
categories: [์นดํ์นด ํต์ฌ๊ฐ์ด๋] | ||
tags: [์นดํ์นด ํต์ฌ๊ฐ์ด๋] | ||
--- | ||
|
||
## **1. ๋ธ๋ก์ปค ์ค์ ํ๊ธฐ โ๏ธ** | ||
|
||
### **1-1. broker.id** | ||
- ๋ธ๋ก์ปค๋ฅผ ์๋ณํ๋ ๊ณ ์ ์ ์ ๊ฐ | ||
- ํด๋ฌ์คํฐ ๋ด `broker.id`๋ **์ค๋ณต ๋ถ๊ฐ** | ||
|
||
### **1-2. listeners** | ||
- ๋ธ๋ก์ปค๊ฐ ํด๋ผ์ด์ธํธ์ ํต์ ํ๊ธฐ ์ํ ๋ฆฌ์ค๋ ์ค์ | ||
- **ํ๋กํ ์ฝ, ํธ์คํธ์ด๋ฆ, ํฌํธ**๋ฅผ ์ ์ | ||
- `listener.security.protocol.map`์ผ๋ก ๋ฆฌ์ค๋์ ํ๋กํ ์ฝ ๋งคํ ํ์. | ||
- ํ์: `listeners={ํ๋กํ ์ฝ}://{ํธ์คํธ ์ด๋ฆ}:{ํฌํธ}` | ||
|
||
``` | ||
# ๋จ์ผ ๋ฆฌ์ค๋ ์ค์ | ||
listeners=PLAINTEXT://localhost:9092 | ||
listener.security.protocol.map=PLAINTEXT:PLAINTEXT | ||
# ๋ค์ค ๋ฆฌ์ค๋ ์ค์ (์ผํ๋ก ๊ตฌ๋ถ) | ||
listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093 | ||
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL | ||
# ๋ชจ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์์ ์ฐ๊ฒฐ ํ์ฉ | ||
listeners=PLAINTEXT://0.0.0.0:9092 | ||
listener.security.protocol.map=PLAINTEXT:PLAINTEXT | ||
``` | ||
|
||
### **1-3. zookeeper.connect** | ||
- ๋ธ๋ก์ปค์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ **์ฃผํคํผ์ ์์น**๋ฅผ ์ ์ | ||
- ํ์: `zookeeper.connect={ํธ์คํธ}:{ํฌํธ}` | ||
|
||
``` | ||
# localhost์ 2181๋ฒ ํฌํธ์์ ์คํ ์ค์ธ ์ฃผํคํผ ์ฌ์ฉ | ||
zookeeper.connect=localhost:2181 | ||
# ์๊ฒฉ ์ฃผํคํผ ์๋ฒ ์ง์ | ||
zookeeper.connect=remote-zookeeper-host:2181 | ||
# ๋ค์ค ์ฃผํคํผ ํ๊ฒฝ์์ ์ผํ๋ก ์ฌ๋ฌ ์๋ฒ ์ง์ | ||
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181 | ||
``` | ||
|
||
### **1-4. log.dirs** | ||
- ๋ก๊ทธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ฅํ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ค์ | ||
|
||
``` | ||
# ๋จ์ผ ๋๋ ํ ๋ฆฌ ์ค์ | ||
log.dirs=/var/lib/kafka-logs | ||
# ๋ค์ค ๋๋ ํ ๋ฆฌ ์ค์ (์ผํ๋ก ๊ตฌ๋ถ) | ||
log.dirs=/var/lib/kafka-logs1,/var/lib/kafka-logs2 | ||
``` | ||
|
||
### **1-5. num.recovery.threads.per.data.dir** | ||
- ๋ก๊ทธ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ด๋ฆฌํ๋ ์ค๋ ๋ ์๋ฅผ ์ค์ | ||
- ์ค์ ๋ ๊ฐ์ **๋๋ ํ ๋ฆฌ๋น ์ค๋ ๋ ์**๋ฅผ ์๋ฏธ | ||
|
||
``` | ||
# ๋๋ ํ ๋ฆฌ๋น 4๊ฐ์ ์ค๋ ๋ ์ฌ์ฉ | ||
num.recovery.threads.per.data.dir=4 | ||
# Tip : ๋๋ ํ ๋ฆฌ๊ฐ 3๊ฐ๋ผ๋ฉด ์ด ์ค๋ ๋ ์๋ 4 x 3 = 12 | ||
``` | ||
|
||
### **1-6. auto.create.topics.enable** | ||
- ๋ธ๋ก์ปค๋ ๋ค์ ์ํฉ์์ ํ ํฝ์ ์๋ ์์ฑ (๊ธฐ๋ณธ๊ฐ `true`) | ||
- ํ๋ก๋์๊ฐ ํ ํฝ์ ๋ฉ์์ง๋ฅผ ์ฐ๊ธฐ ์์ํ ๋ | ||
- ์ปจ์๋จธ๊ฐ ํ ํฝ์ผ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ์ฝ๊ธฐ ์์ํ ๋ | ||
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ ํ ํฝ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ | ||
- ๋ช ์์ ์ผ๋ก ํ ํฝ์ ๊ด๋ฆฌํ๋ ค๋ฉด `false`๋ก ์ค์ | ||
|
||
``` | ||
# ํ ํฝ ์๋ ์์ฑ ํ์ฑํ (๊ธฐ๋ณธ๊ฐ) | ||
auto.create.topics.enable=true | ||
# ํ ํฝ ์๋ ์์ฑ ๋นํ์ฑํ | ||
auto.create.topics.enable=false | ||
``` | ||
|
||
### **1-7. delete.topic.enable** | ||
- ํ ํฝ ์ญ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ค์ | ||
- ์ญ์ ์์ฒญ ์ ๋ฐ์ดํฐ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ ๊ฑฐ๋จ | ||
|
||
``` | ||
# ํ ํฝ ์ญ์ ํ์ฉ | ||
delete.topic.enable=true | ||
# ํ ํฝ ์ญ์ ๊ธ์ง | ||
delete.topic.enable=false | ||
``` | ||
|
||
--- | ||
|
||
## **2. ํ ํฝ๋ณ ๊ธฐ๋ณธ๊ฐ โ๏ธ** | ||
|
||
### **2-1. num.partitions** | ||
- ์๋ก์ด ํ ํฝ ์์ฑ ์ **ํํฐ์ ์**๋ฅผ ๊ฒฐ์ | ||
- **๊ธฐ๋ณธ๊ฐ:** `1` | ||
|
||
``` | ||
# ํํฐ์ ์ ๊ธฐ๋ณธ๊ฐ ์ค์ | ||
num.partitions=1 | ||
# ํํฐ์ ์๋ฅผ 10์ผ๋ก ์ค์ | ||
num.partitions=10 | ||
``` | ||
- 10๊ฐ์ ํํฐ์ ์ด 10๊ฐ์ ๋ธ๋ก์ปค์ ๋ถ์ฐ๋๋ฉด ๊ฐ ๋ธ๋ก์ปค์ ํ๋์ ํํฐ์ ๋ฆฌ๋ ๋ฐฐ์น | ||
- ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ์ต์ ํ๋๊ณ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ | ||
|
||
|
||
### **2-2. default.replication.factor** | ||
- ์๋ ์์ฑ๋ ํ ํฝ์ **๋ณต์ ํฉํฐ(๋ ํ๋ฆฌ์นด ์)**๋ฅผ ๊ฒฐ์ | ||
- **๋ณต์ ํฉํฐ:** ํ ํฝ ๋ฐ์ดํฐ๊ฐ ๋ณต์ ๋๋ ๋ธ๋ก์ปค์ ๊ฐ์ | ||
|
||
``` | ||
# ๋ณต์ ํฉํฐ ๊ธฐ๋ณธ๊ฐ ์ค์ | ||
default.replication.factor=3 | ||
``` | ||
- ๋ณต์ ํฉํฐ๋ ํด๋ฌ์คํฐ์ ๋ธ๋ก์ปค ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ ํจ | ||
- **`min.insync.replicas`** ์ค์ ๊ฐ๋ณด๋ค **์ต์ 1 ์ด์** ํฌ๊ฒ ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅ | ||
|
||
|
||
### **2-3. log.retention.ms** | ||
- ๋ฉ์์ง์ **๋ณด์กด ๊ธฐ๊ฐ**์ ์ค์ | ||
- ๊ธฐ๋ณธ๊ฐ: `7์ผ(604,800,000ms)` | ||
|
||
``` | ||
# ๋ฉ์์ง ๋ณด์กด ๊ธฐ๊ฐ์ 7์ผ๋ก ์ค์ (๊ธฐ๋ณธ๊ฐ) | ||
log.retention.ms=604800000 | ||
# ๋ฉ์์ง ๋ณด์กด ๊ธฐ๊ฐ์ 3์ผ๋ก ์ค์ | ||
log.retention.ms=259200000 | ||
``` | ||
|
||
|
||
### **2-4. log.retention.bytes** | ||
- ๋ฉ์์ง ๋ณด์กด ๊ธฐ์ค์ **๋ฉ์์ง ํฌ๊ธฐ(๋ฐ์ดํธ)**๋ก ์ค์ | ||
- ์ค์ ๋ ์ฉ๋์ ์ด๊ณผํ๋ฉด ๊ฐ์ฅ ์ค๋๋ ๋ฉ์์ง๋ถํฐ ์ญ์ | ||
|
||
``` | ||
# ๋ฉ์์ง ๋ณด์กด ํฌ๊ธฐ๋ฅผ 1GB๋ก ์ค์ | ||
log.retention.bytes=1073741824 | ||
# ๋ฉ์์ง ๋ณด์กด ํฌ๊ธฐ๋ฅผ 500MB๋ก ์ค์ | ||
log.retention.bytes=524288000 | ||
``` | ||
|
||
|
||
### **2-5. log.segment.bytes** | ||
- **๋ก๊ทธ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ**๋ฅผ ์ค์ | ||
- ์ค์ ๋ ํฌ๊ธฐ์ ๋๋ฌํ๋ฉด ๊ธฐ์กด ์ธ๊ทธ๋จผํธ๋ฅผ ๋ซ๊ณ , ์๋ก์ด ์ธ๊ทธ๋จผํธ ํ์ผ์ ์์ฑ | ||
|
||
``` | ||
# ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ๋ฅผ 1GB๋ก ์ค์ | ||
log.segment.bytes=1073741824 | ||
``` | ||
|
||
|
||
### **2-6. log.roll.ms** | ||
- **๋ก๊ทธ ์ธ๊ทธ๋จผํธ ํ์ผ์ด ๋ซํ๋ ์๊ฐ ๊ธฐ์ค**์ ์ค์ | ||
|
||
``` | ||
# ๋ก๊ทธ ์ธ๊ทธ๋จผํธ๋ฅผ 1์๊ฐ(3600000ms)๋ง๋ค ๋ซ์ | ||
log.roll.ms=3600000 | ||
``` | ||
|
||
### **2-7. min.insync.replicas** | ||
- ์ต์ ๋๊ธฐํ ๋ ํ๋ฆฌ์นด ์ ์ค์ | ||
- ์ค์ ๋ ๊ฐ๋งํผ์ ๋ ํ๋ฆฌ์นด๊ฐ ์ต์ ์ํ์ฌ์ผ ์ฐ๊ธฐ ์์ ์ฑ๊ณต | ||
|
||
|
||
### **2-8. message.max.bytes** | ||
- **๋ฉ์์ง ํฌ๊ธฐ ์ํ**์ ์ค์ ํ์ฌ ๋ธ๋ก์ปค๊ฐ ํ์ฉํ๋ ์ต๋ ๋ฉ์์ง ํฌ๊ธฐ๋ฅผ ์ ์ | ||
- **๊ธฐ๋ณธ๊ฐ:** `1MB` | ||
- ๋ฉ์์ง ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ๋ธ๋ก์ปค๋ ๋ฉ์์ง๋ฅผ ๊ฑฐ๋ถํ๊ณ ์ค๋ฅ๋ฅผ ๋ฐํ | ||
- ํ๋ก๋์(`max.request.size`)์ ์ปจ์๋จธ(`fetch.message.max.bytes`) ์ค์ ๊ฐ๊ณผ ์ผ์นํด์ผ ํจ | ||
|
||
--- | ||
|
||
## **3. ํ๋์จ์ด ์ ํํ๊ธฐ (๊ธฐ์) ๐ช** | ||
|
||
### **3-1. ๋์คํฌ ์ฒ๋ฆฌ๋** | ||
- ๋ฉ์์ง๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ ๋ **๋์คํฌ ์ฒ๋ฆฌ๋**์ด ์ฐ๊ธฐ ์ง์ฐ์ ์ํฅ์ ๋ฏธ์นจ | ||
- ๊ณ ์ ๋์คํฌ ์ฌ์ฉ ๊ถ์ฅ | ||
|
||
|
||
### **3-2 ๋์คํฌ ์ฉ๋** | ||
- ๋ฉ์์ง ๋ณด์กด ๊ธฐ๊ฐ ๋๋ ๋ณด์กด ์ฉ๋์ ๋ฐ๋ผ ๋์คํฌ ํฌ๊ธฐ๋ฅผ ์ค์ ํด์ผ ํจ | ||
- ex. ํ๋ฃจ 1TB ํธ๋ํฝ, ์ผ์ฃผ์ผ ๋ณด์กด โ **7TB + 10% ์ฌ์ ๊ณต๊ฐ** | ||
|
||
|
||
### **3-3. ๋ฉ๋ชจ๋ฆฌ** | ||
- **ํ์ด์ง ์บ์ ํ์ฉ:** ์นดํ์นด ์ปจ์๋จธ๋ ์์คํ ํ์ด์ง ์บ์์์ ๋ฉ์์ง๋ฅผ ์ฝ๋ ๊ฒ์ด ํจ์จ์ | ||
- ์นดํ์นด์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ **๊ฐ์ ์์คํ ์์ ์ด์ํ์ง ์๋ ๊ฒ**์ ๊ถ์ฅ | ||
|
||
|
||
### **3-4. ๋คํธ์ํฌ** | ||
- ๋คํธ์ํฌ ๋์ญํญ์ด ์นดํ์นด ์ฒ๋ฆฌ๋ ์ํ์ ์ ๊ฒฐ์ ํจ | ||
- ๋คํธ์ํฌ๊ฐ ํฌํ ์ํ๊ฐ ๋๋ฉด ํด๋ฌ์คํฐ ๋ณต์ ์์ ์ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ | ||
- ์์ ํธ๋ํฝ๊ณผ ๋ณต์ ์์ ์ ๊ฐ์ํด ์ถฉ๋ถํ ๋คํธ์ํฌ ๋์ญํญ ํ๋ณด ํ์ | ||
|
||
|
||
### **3-5. CPU** | ||
- ์นดํ์นด๋ ๋ฉ์์ง ์์ถ, ์ฒดํฌ์ฌ ํ์ธ, ์คํ์ ๋ถ์ฌ ๋ฑ์ CPU๋ฅผ ์ฌ์ฉ | ||
- ๋์คํฌ๋ ๋ฉ๋ชจ๋ฆฌ๋งํผ ์ค์ํ์ง ์์ผ๋ฏ๋ก ์ ์ ์์ค์ ํ ๋น ๊ถ์ฅ | ||
|
||
--- | ||
|
||
## **4. ํด๋ฌ์คํฐ ์ค์ ํ๊ธฐ โ๏ธ** | ||
|
||
### **4-1. ๋ธ๋ก์ปค ๊ฐ์** | ||
- **ํด๋ฌ์คํฐ ํฌ๊ธฐ ๊ฒฐ์ ์์** | ||
- ๋์คํฌ ์ฉ๋ ๐ฟ | ||
- ๋ธ๋ก์ปค๋น ๋ ํ๋ฆฌ์นด ์ฉ๋ | ||
- CPU ์ฉ๋ | ||
- ๋คํธ์ํฌ ๋์ญํญ | ||
- **๋ธ๋ก์ปค ์ ์ค์ ์์** | ||
- 10TB ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด, ๋ธ๋ก์ปค๋น ์ ์ฅ ์ฉ๋์ด 2TB์ผ ๊ฒฝ์ฐ โ **์ต์ 5๊ฐ์ ๋ธ๋ก์ปค ํ์** | ||
- ๋ณต์ ํฉํฐ๋ฅผ `2`๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๊ฐ ๋ธ๋ก์ปค์ ๋ณต์ ๋์ด **10๊ฐ์ ๋ธ๋ก์ปค ํ์** | ||
|
||
|
||
### **4-2. ๋ธ๋ก์ปค ์ค์ ** | ||
- ์นดํ์นด ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ํ์ํ ์ฃผ์ ์ค์ | ||
- `zookeeper.connect`: ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ ์ฃผํคํผ์ ์ฃผ์ | ||
- `broker.id`: ๋ธ๋ก์ปค๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณ ์ ID | ||
|
||
|
||
### **4-3. ์ด์์ฒด์ ํ๋ํ๊ธฐ** | ||
|
||
**1. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ** | ||
- **ํ์ด์ง ์บ์ ํ์ฉ**: ๋์คํฌ I/O ์ฑ๋ฅ ํฅ์์ ์ํด ๋ํฐ ํ์ด์ง ๊ด๋ฆฌ ํ์ | ||
- **์ค์ ๋ฉ๋ชจ๋ฆฌ ์ต์ํ**: ์ค์ ๊ณต๊ฐ ๋์ ํ์ด์ง ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ์ ํ ๋น | ||
|
||
|
||
**2. ๋์คํฌ** | ||
- **ํ์ผ ์์คํ ์ถ์ฒ** | ||
- **Ext4** ๋๋ **XFS** ์ฌ์ฉ | ||
- **XFS**๋ ์ถ๊ฐ ํ๋ ์์ด๋ ์นดํ์นด ์ํฌ๋ก๋์ ์ ํฉ | ||
|
||
|
||
**3. ๋คํธ์ํน** | ||
- ์ก์ ๋ฐ ์์ ๋ฒํผ ํฌ๊ธฐ ์ค์ | ||
|
||
``` | ||
net.core.wmem_default=262144 | ||
net.core.rmem_default=262144 | ||
net.core.wmem_max=16777216 | ||
net.core.rmem_max=16777216 | ||
``` | ||
|
||
- ๋ธ๋ก์ปค ๋์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ์ ์ค์ | ||
|
||
``` | ||
net.ipv4.tcp_max_syn_backlog=128 | ||
``` | ||
|
||
--- | ||
|
||
## **5. ํ๋ก๋์ ํ๊ฒฝ์์์ ๊ณ ๋ ค ์ฌํญ ๐ค** | ||
|
||
### **5.1 GC(๊ฐ๋น์ง ์ฝ๋ ํฐ) ์ค์ ** | ||
- ์นดํ์นด๋ **G1GC**๋ฅผ ๊ธฐ๋ณธ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ | ||
- G1GC๋ ๋ค์ํ ์์ ๋ถํ๋ฅผ ์กฐ์ ํ๊ณ ์ผ์ ํ **GC ์ ์ง ์๊ฐ**์ ์ ์ง | ||
- **์ฃผ์ ์ต์ ** | ||
- **`MaxGCPauseMillis`** | ||
- GC์ ์ต๋ ์ ์ง ์๊ฐ ์ค์ | ||
- ์งง๊ฒ ์ค์ ํ๋ฉด ์๋ต์ฑ์ด ํฅ์๋์ง๋ง ์ฒ๋ฆฌ๋์ด ์ค์ด๋ค ์ ์์ | ||
- **`InitiatingHeapOccupancyPercent`** | ||
- GC๊ฐ ์์๋๋ ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋น์จ ์ค์ | ||
- ex. `45`๋ก ์ค์ ์ ํ์ 45%๋ฅผ ์ฌ์ฉํ๋ฉด GC ์์ | ||
- **๊ถ์ฅ ์ฌํญ** | ||
- ์นดํ์นด๋ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ GC ๋์ ๊ฐ์ฒด๋ฅผ ์ ๊ฒ ์์ฑ | ||
- ์ ์ค์ ๊ฐ์ ๋ฎ๊ฒ ์ก์๋ ์ฑ๋ฅ์ ํฐ ์ํฅ ์์ | ||
|
||
|
||
### **5.2 ๋ฐ์ดํฐ์ผํฐ ๋ ์ด์์** | ||
- ๋ธ๋ก์ปค ๊ฐ **๋ ์์น**๋ฅผ ๊ณ ๋ คํ์ฌ ์ฅ์ ๋ฐ์ ์ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅ | ||
- ๋์ผ ๋์ ๋ ํ๋ฆฌ์นด๊ฐ ๋ฐฐ์น๋์ง ์๋๋ก ๊ตฌ์ฑ | ||
- **์ค๊ณ ๊ฐ์ด๋** | ||
- ๊ฐ ๋ธ๋ก์ปค๋ฅผ ์๋ก ๋ค๋ฅธ ๋ ๋๋ ๋ฐ์ดํฐ์ผํฐ์ ๋ฐฐ์น | ||
- ๋จ์ผ ์ฅ์ ์ (์ ์, ๋คํธ์ํฌ ๋ฑ)์ด ๋ฐ์ํ์ง ์๋๋ก ๊ตฌ์ฑ | ||
|
||
|
||
### **5.3 ์ฃผํคํผ ๊ณต์ ํ๊ธฐ** | ||
- ์นดํ์นด๋ **์ฃผํคํผ**๋ฅผ ์ฌ์ฉํด ๋ธ๋ก์ปค, ํ ํฝ, ํํฐ์ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ | ||
- **์ฃผํคํผ ์๋ ๋ฐฉ์** | ||
- ์ปจ์๋จธ ๊ทธ๋ฃน ๋๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์์๋ง ์ฐ๊ธฐ ์์ ๋ฐ์ |