[MSA] 6. MSA์ ํธ๋์ญ์ ์ด์ผ๊ธฐ 2 - Two-Phase commit๊ณผ Saga
์ด์ ๊ธ์ ์ด์ด์ MSA ๋ด์์ ํธ๋์ญ์ ์ ์ํํ ํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง๋ฅผ ์๊ฐํด๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ถ์ด ๋ชจ๋๋ฆฌํฑ ์ํคํ ์ฒ๋ฅผ ๋์ ํ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ DB ์๋ฒ์์ ์ ๊ณตํ๋ Commit๊ณผ Rollback์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ์ ์ดํ ์ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ MSA์์๋ ๊ฐ ์๋น์ค๋ณ๋ก DB ์ธ์คํด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ถ๋ฆฌ๋จ์ ๋ฐ๋ผ ๊ด๊ณํ์ผ๋ก ๋งบ์ด์ง Entity๋ค์ ์๋ก๊ฐ ๋ค๋ฅธ ์ธ์คํด์ค๋ก ์ด์๋๊ณ , ๊ทธ๋ค ๋ฆฌ์์ค๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ๋ฌด๋์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ๋ถ์ฐ ํธ๋์ญ์ ๊ธฐ์ ์ ์ด์ฉํ์ฌ ์ด๋ค ์ผ๊ด์ฑ์ ์งํฌ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. Two-Phase Commit
Two-Phase Commit์ด๋, 2๋จ๊ณ์ ๊ฑฐ์ณ์ ์์ํ๋ ์์ ์ ๋งํฉ๋๋ค. ์ด๋ ๊ฒ ๋งํ๋ฉด ์๋ง JPA์ ์๋ ์์์ฑ ์ปจํ ์คํธ์ ํผ๋์ด ๋์ค ์๋ ์์ ๊ฒ ๊ฐ์๋ฐ์. Two-Phase Commit์ ์์์ฑ ์ปจํ ์คํธ์๋ ์กฐ๊ธ ๋ค๋ฆ ๋๋ค.
๋ถ์ฐ DB ํ๊ฒฝ์์๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฃผ DB์ ๋ณด์กฐ DB๋ก ๋๋๋๋ฐ์. ๊ทธ๋ฌ๋ ์ค์ ๋ชจ๋๋ฆฌํฑ์์ ์ฐ๊ฒฐ๋ ๋ฉ์ธ DB๋ Primary DB์ธ๋ฐ, ์ด๋ค์ด ์ด์คํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํํ๋ฅผ ๊ฐ์ง๋ ค๋ฉด ๊ทธ๋ค์ด ๋๊ธฐํ ํํ๋ก ๋์ด์ผ ํฉ๋๋ค. Two-Phase Commit์ ์ด๋ฌํ ์ฃผ DB์ ๋ณด์กฐ DB ์ฌ์ด์ ํธ๋์ญ์ ์ ์กฐ์จํ๋ ์กฐ์ ์ (Coordinator)๊ฐ ์กด์ฌํ๋ฉฐ ์ด์ ์ญํ ์ ํธ๋์ญ์ ์์ฒญ์ด ๋ค์ด์์ ๋, ์๋์ ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ํธ๋์ญ์ ๋ด๋น์ ์งํํฉ๋๋ค.
- Prepare
- Commit
์ฌ๊ธฐ์ Prepare๋ผ๋ ์์ ์ด ๋ชจ๋๋ฆฌํฑ๊ณผ์ ์ฐจ์ด์ ์ธ๋ฐ, ์ด ๋ถ๋ถ์ด ์ค์ํฉ๋๋ค. ๋ชจ๋๋ฆฌํฑ์ ๊ฐ์ง ํํ๋ ๊ทธ๋ค์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ ์ ์ฉํ๋ ค๋ DB๊ฐ ํธ๋์ญ์ ์ด ๊ฐ๋ฅํ ์ํ์ธ์ง๋ฅผ ์์์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ์คํด์ค๊ฐ ๋ถ๋ฆฌ๋ MSA์์๋ ๋์ DB๊ฐ ํธ๋์ญ์ ์ด ๊ฐ๋ฅํ ์ํ์ธ์ง ๋ฏธ๋ฆฌ ํ์ธ๋์ด์ผ ํฉ๋๋ค.
์ ๊ทธ๋ฆผ์ ์ผํ๋ชฐ์์ ์ํ์ ์ฃผ๋ฌธํ์ ๋, ๋ฐ์ํ๋ MSA ๋ด์ ๋ฐ์ดํฐ ๋ณํ๋ฅผ ๋์ํ ๊ฒ์ ๋๋ค. ๋จผ์ ์ฃผ๋ฌธ์ ํ๊ฒ ๋๋ฉด ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ผ ํ๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ๊ฒฐ์ ๊ฐ ์ด๋ค์ง๋ฉด ๋ฐฐ์ก ๊ธฐ๋ก์ด ๋จ์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฃผ๋ฌธ์ด ๋ฐ์ํ๋ฉด ์ํ๊ณผ, ๋ฐฐ์ก ์ ๋ณด, ์ฌ์ฉ์ ์ ๋ณด ๋ฑ์์ DB์ ํธ๋์ญ์ ์ด ๋ฐ์ํด์ผ ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉ์์ ๋ฐฐ์ก ์ ๋ณด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ธ์ต๋๋ค.
์ฃผ๋ฌธ์ด ๋ฐ์ํ๋ฉด Order API๋ก๋ถํฐ ์์ฒญ ๋ฐ์ DB๋ Commit ์์ ์ ์ํ ์ค๋น๋ฅผ ์งํํฉ๋๋ค. ์ดํ ์ด์ ์ฐ๊ฒฐ๋์ด ์๋ DB์ ์์ ์ฌ๋ถ๊ฐ ํ์ธ๋๋ฉด ์กฐ์ ์์๊ฒ ์ค๋น๊ฐ ์๋ฃ๋์์์ ์๋ฆฌ๊ณ , ์์ ๊ฐ์ด Commit์ ์งํํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋๋ก ๊ด๋ จ๋ DB ์ค ํ๋์ ์ธ์คํด์ค๋ผ๋ ํธ๋์ญ์ ์ ์ค๋น๊ฐ ์๋ ์ํ๋ผ๋ฉด ๋ฐ๋ก Rollback์ ์คํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๊ด๋ DB์ ๊ฐ์ด ํธ๋์ญ์ ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ ๋ฒ์๋ ์ฒ๋ฆฌํ๋ ค๋ DB์ ์ฐ๊ด๋ DB๊ฐ ์ ์ฒด๋ก ์งํ๋ฉ๋๋ค.
์ด ์์๋ฅผ ๊ฐ๋ตํ๊ฒ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์กฐ์ ์๊ฐ ์ฐ๊ด๋ DB๋ก ์ ๋ฌํ ๋ฉ์์ง์ ๋ํด ์๋ต์ ๊ธฐ๋ค๋ฆฐ๋ค.
- ๋ชจ๋ ๋ฉ์์ง๊ฐ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ๊ฒฝ์ฐ commit์ ์งํํ๋ค.
- commit ๋จ๊ณ์์ ์กฐ์ ์๋ ์ฐ๊ด๋ DB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ผ๋ ๋ช ๋ น ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
- ๊ด๋ จ DB๋ค์ ๋ฐ์ดํฐ๋ฅผ ์์ํ ํ๋ค.
Two-Phase Commit์ ๋จ์
Two-Phase Commit์ ์ค๊ณ๋ฅผ ๋ณด๋ฉด ๋ถ์ฐ ํธ๋์ญ์ ํํ๋ฅผ ์ง๋๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ถ์ฐ ํธ๋์ญ์ ์ ์ฌ์ฉํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ฉด ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ง ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ต๊ทผ์๋ NoSQL์ด ์์ฃผ ์ฌ์ฉ๋๊ณ ์๋๋ฐ, ๊ณต๊ต๋กญ๊ฒ๋ NoSQL์์๋ ๋ถ์ฐ ํธ๋์ญ์ ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํจ๊ผ ์ฌ์ฉํ๋ DB๊ฐ ๋์ผํ ๋ฏธ๋ค์จ์ด์ด์ด์ผ ํ๋ฏ๋ก DBMS polyglot ๊ตฌ์ฑ์ ์ด๋ ต์ต๋๋ค.
๋ํ DB ์ด์คํ ๊ตฌ์กฐ์ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ํ๋์ API ์๋ฒ์์ ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋ด๋ถ์ ์ผ๋ก DB๊ฐ ๋ถ์ฐ๋์ด ์์ ๋ ์ฌ์ฉํ๋ ํํ๋ก ๋์ด ์์ด, MSA์ ๊ฐ์ด API๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ณ , ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง DB๋ฅผ ๋ถ๋ฆฌํ MSA์์๋ ๊ตฌํ์ด ์ฝ์ง ์๋ค๋ ๊ฒ๋ ์ด์ ํฌํจ๋ ์ ์์ต๋๋ค.
2. Saga Pattern
์ฒ์ Saga ํจํด์ด๋ผ๋ ๊ฑธ ๋ค์์ ๋๋ Redux์ Saga๋ฅผ ๋ ์ฌ๋ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ Saga๋ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉ๋๋๋ฐ, Saga๋ ๋ถ์ฐ ์ปดํจํ ์ํคํ ์ฒ์ธ Eventual Consistency๋ฅผ ๋ฐํ์ผ๋ก ๋ ๋ก์ปฌ ํธ๋์ญ์ ์ ์ฐ์์ ์ผ๋ก ์ ๋ฐ์ดํธ ์ํํ๋ ํจํด์ ๋๋ค.
ํธ๋์ญ์ ์ ๊ด๋ฆฌ ์ฃผ์ฒด๊ฐ DB ์๋ฒ ์์ ๋ค์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ถ์ฐ๋์์ ๋ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ํ์์ ์กด์ฌํ๋ DB๋ ์์ ์ ํธ๋์ญ์ ๋ง ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ์ ๋๋ค.
Two-Phase Commit๊ณผ ๋ค๋ฅด๊ฒ ๋ณธ์ธ๋ค์ ํธ๋์ญ์ ๋ง์ ์ฒ๋ฆฌํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ํธ๋์ญ์ ๋ก์ง์ ๊ตฌํํด์ผ ํ๋ ํํ์ ๋๋ค.
Saga ํจํด์๋ ์๋์ 2๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ต๋๋ค.
- Choreography-Based Saga
- Orchestration-Based Saga
Saga ์ธ์คํด์ค๋ฅผ ๋ณ๋๋ก ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋๋ ๊ทธ๋ ์ง ์๋๋์ ์ฐจ์ด์ธ๋ฐ, ๋จผ์ Choreography-Based Saga๋ถํฐ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1) Choreograpgy-Based Saga
Choreography-Based Saga ํจํด์ ์์ ์ด ๋ณด์ ํ ์๋น์ค ๋ด DB๋ง์ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๋ฉฐ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋ฉด ์๋ฃ ์ด๋ฒคํธ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด์ด ์ํํด์ผ ํ ํธ๋์ญ์ ์ด ์๋ค๋ฉด ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์๋ฃ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ , ํด๋น ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ณ์ ํธ๋์ญ์ ์ ์ด์ด ์ํํฉ๋๋ค. ๋ง์ง๋ง์ ๋๋ฌํ๋ฉด ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ์ฌ ์ต์ข ์ ์ผ๋ก DB์ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๋ฒคํธ ๋ฐํ๊ณผ ๊ตฌ๋ ์ ์ํด RabbitMQ, Kafka์ ๊ฐ์ ๋ฉ์์ง ํ ๋ฏธ๋ค์จ์ด๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ๋ฐฉ์ ํน์ ๋ถ์ฐ ์ฒ๋ฆฌ ํํ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
Rollback์ ๊ฒฝ์ฐ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๋ ๋ก์ง์ ๊ตฌํํ์ฌ ์ค๊ฐ์ ํธ๋์ญ์ ์ด ์คํจํ๋ฉด ํด๋น ํธ๋์ญ์ ์ทจ์ ์ฒ๋ฆฌ๋ฅผ ์คํจํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ณด์ Event๋ฅผ ๋ฐํํ์ฌ Rollback ์ฒ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
์ ๊ตฌ์ฑ์ด ๋ชจ๋๋ฆฌํฑ์์ ๋์ด์์ ๋๋ ๊ฝค ๋ฒ๊ฑฐ๋ก์ด ์์ ๊ฐ์ด ๋ณด์ด์ง๋ง ์ค์ ๋ก MSA์์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๊ธฐ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค. RabbitMQ์ RPC๋ Publish-Subscribed ํจํด๋ง ์ ์ด์ฉํด๋ณธ๋ค๋ฉด ์ฝ๊ฒ ๊ตฌํํด๋ณผ ์ ์์ต๋๋ค.
2) Orchestration-Based Saga
Orchestration-Based Saga๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ธ์คํด์ค๊ฐ ๋ณ๋๋ก ์กด์ฌํ๋ฉฐ ์ด๋ฅผ ์ฐ๋ฆฌ๋ Manager๋ผ ๋ถ๋ฆ ๋๋ค. ์ค๊ณ์ ์ธ ์ญํ ์ ํ์ง๋ง ํด๋ผ์ด์ธํธ์์์ ์์ฒญ์ ํ API์์ ํ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด ์ธ์คํด์ค๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค ์ธ์คํด์ค๋ก๋ ์์ง์ผ ์ ์์ต๋๋ค. ์์ ๊ทธ๋ฆผ์ด ๋ฐ๋ก ๊ทธ๋ฐ ํํ์ ๋๋ค.
ํธ๋์ญ์ ์ ์ํํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Saga ์ธ์คํด์ค ๋งค๋์ ์ ์ํ์ฌ ์ ์ง์ ์ผ๋ก ํธ๋์ญ์ ์ ์ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ Manager์๊ฒ ์ ๋ฌํ๋ ํํ์ ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ๋ง์ง๋ง ํธ๋์ญ์ ์ด ๋๋๋ฉด Saga ์ธ์คํด์ค๋ ์ ์ฒด ํธ๋์ญ์ ์ด ์ข ๋ฃํ ๋ค, ์ธ์คํด์ค๋ ์๋ฉธ๋ฉ๋๋ค.
๋ง์ฝ ์ค๊ฐ์ ์คํจํ๊ฒ ๋๋ฉด, Manager๊ฐ ๋ณด์ ํธ๋์ญ์ ์ ์คํํ์ฌ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ํด์ค๋๋ค. ๋ชจ๋ ๊ด๋ฆฌ๋ฅผ ์ค์์ ๋งค๋์ ๊ฐ ๋ชจ๋ ์์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ MSA์์๋ ํธ๋์ญ์ ์ ์ค์์์ ํด์ฃผ๋ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง๋๋ค. ๊ฐ์ฅ ์์ ์ ์ด๊ณ ๊ด๋ฆฌ๊ฐ ํธํ๋ฉฐ ๋ชจ๋๋ฆฌํฑํ ํํ๋ฅผ ๊ทธ๋๋ก ๊ตฌํํด์ค ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค๊ฐ์ ๋งค๋์ ๋ ์ธ์คํด์ค ํํ์ด๊ธฐ ๋๋ฌธ์ ์ธํ๋ผ ์์ง๋์ด๋ง ์ ์ฅ์์๋ ๋ฒ๊ฑฐ๋ก์์ด ๋ง์ต๋๋ค. ๋ง์น ์๋น์ค ๊ตฌ์กฐ๋ฅผ ํ๋ ๋ง๋๋๋ฐ, ์์ด ๊ด๋ฆฌํด์ผ ํ ๋ฏธ๋ค์จ์ด ๋ด์ง ์ํํธ์จ์ด๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด์ฃ .
Spring Framework์์ ๋ํ์ ์ผ๋ก Orchestration-Based Saga๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก Axon Framework๊ฐ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋ณ๋์ ์นดํ ๊ณ ๋ฆฌ์์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง MSA์ ํธ๋์ญ์ ์ ๋ํด์ ์ด์ผ๊ธฐ ํด๋ดค์ต๋๋ค. MSA์ ํ ๋ฒ ์ฏค ๋์ ํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ํธ๋์ญ์ ์ ๋ํด ๊ณ ๋ฏผํ์์ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ ๋ฏธ๋ค์จ์ด์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ด ์๋ ๋ณ๋์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ค์ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ๊ณ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ฐ์ํ๋ ๊ตฌ์กฐ์ธ ๋งํผ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ณ ๋ฏผํ์์ ๊ฒ์ด๋ผ ์๊ฐ๋ฉ๋๋ค.
์ ๋ํ ์ต๊ทผ์ ์ง์ฅ์ ๋ค๋๋ฉด์ Choreography-Based Saga ํจํด์ ์ฌ์ฉํด MSA ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ๋ง์ ๊ฐ์์๋ Saga ์ธ์คํด์ค ๋งค๋์ ๋ฅผ ๋ณ๋๋ก ๋๊ณ ํ๋ ๊ฒ์ ์ํ์ง๋ง ์์ง๊น์ง Python ์ง์์์ ์ด๋ฅผ ํด์ํ ๋งํ ์ ์ ํ ์๋ฃจ์ ์ ์ฐพ์ง ๋ชปํ๊ฑฐ๋, ์๋ฃจ์ ์ด ์๋๋ผ๋ ์ด๋ฅผ ๊ตฌํํ ์ ์๋ค๋ฉด ์ข์ํ ๋ฐ, ๊ทธ๋ด ๋ฅ๋ ฅ๊น์ง ๋ชป๋๋ค๋ ๊ฒ์ด ์์ฌ์ธ ๋ฟ์ด๋ค์. ใ ใ
์์ง๊น์ง๋ ๋ฉ์์ง ํ์ ์์กดํ์ฌ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ๋จํ ํธ๋์ญ์ ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ์์ํ์ฌ ์ฐจ์ธฐ ๋์ ํด๋ณผ ์ ์๋ค๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ฉฐ ์ด ๊ธ์ ๋ง์น๋๋ก ํ๊ฒ ์ต๋๋ค.