CI/CD ํ์ดํ๋ผ์ธ ์ค์ ํ๊ธฐ
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
๋ง์ ๊ฐ๋ฐ์๊ฐ ์ง์์ ํตํฉ, ๋ฐฐํฌ ๋ฐ ๋ฐฐํฌ์๋ฒ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํฉ๋๋ค. ๋ณ๊ฒฝํ ๋๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ํ ์คํธํ๊ณ ๊ฒ์ํฉ๋๋ค. ์ด๋ git๊ณผ ๊ฐ์ ๊ณต์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ฌ๋์ด ๋์์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์ ํ๋ ๋๊ท๋ชจ ์ฑ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๋ฉฐ ์ ์ฉํฉ๋๋ค.
์ด ๊ฐ์ด๋์์๋ ๋๋ถ๋ถ์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ๋์ ์์ค์ ๋จ๊ณ๋ฅผ ๋ค๋ฃจ๋ฉฐ, ๊ฐ ๋จ๊ณ์์ ์ํํ ์ ์๋ ์์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ๋ํ Atlas App Services ์ฑ์ ๊ตฌ์ฑํ๊ณ ํ ์คํธํ๊ธฐ ์ํด ํ์ดํ๋ผ์ธ ๋ด์์ ์ํํ ์ ์๋ ์ผ๋ฐ์ ์ธ ์์ ๋ฐ ์กฐ์น ๋ชฉ๋ก์ด ํฌํจ๋์ด ์์ต๋๋ค.
ํ
GitHub ์์ ์ ์ฌ์ฉํ ์ค์ ์์ ๋ณด๊ธฐ
์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธ, ๋ฐฐํฌ ๋ฐ ๊ธฐํ ์์ ์ ๊ด๋ฆฌํ๋ CI/CD ํ์ดํ๋ผ์ธ์ ์์๋ฅผ ๋ณด๋ ค๋ฉด MongoDB ๊ฐ๋ฐ์ ํ๋ธ์์ GitHub ์์ ์ ์ฌ์ฉํ์ฌ App Services ์ฑ์ ์ํ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ดํ๋ผ์ธ ๋จ๊ณ
๋์ ์์ค์์ ๋๋ถ๋ถ์ ํ์ดํ๋ผ์ธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋จ๊ณ๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ฑฐ์น๋ ๊ณตํต ํจํด์ ๊ณต์ ํฉ๋๋ค.
๊ฐ๋ฐ
๊ฐ๋ฐ ๋จ๊ณ๋ ์ฑ์์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋๋ค. ๊ฐ๋ฐ ๋จ๊ณ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ํ์ผ๊ณผ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ตฌํํฉ๋๋ค.
๊ธฐ์กด ์ฑ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค:
๋ฉ์ธ ์ฑ์ ๋ถํ ํ๊ณ ์ ๊ฐ๋ฐ ์ฌ๋ณธ์ ๋ฐฐํฌํฉ๋๋ค. ์ด ์ธ์คํด์ค์๋ ํ๋ก๋์ ์ฑ๊ณผ ๋ค๋ฅธ ์ฑ ID๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. ํ๊ฒฝ ๊ฐ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํ๋ก๋์ ์ ์ฐ๊ฒฐ๋์ง ์์ ๊ฐ๋ฐ ๋ฐ์ดํฐ ์์ค ๋ฐ ๊ธฐํ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํด๋ผ์ด์ธํธ ์ฑ ํ๋ฉด ์ ๋ฐ์ดํธ ๋๋ ์ถ๊ฐ, ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋ฆฌ๊ฑฐ ์ถ๊ฐ ๋๋ ๊ธฐํ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ ์ถ๊ฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ๋๊ธฐํ๋ Realm ๊ฐ์ฒด ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ก์ปฌ์์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ฝ๋๊ฐ ์๋ก์ด ์ค๋ฅ๋ฅผ ์ผ์ผํค์ง ์๋์ง ํ์ธํฉ๋๋ค. ๋ก์ปฌ์์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค๊ณ ํด์ ์ฑ์ ํตํฉ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ๋ณด์ฅํ ์๋ ์์ง๋ง, ๋ณ๊ฒฝ ์ฌํญ์ ํ๊ท๋ ์๋ํ์ง ์์ ๋์์ด ํฌํจ๋์ง ์์ ๊ฒ์ ํ์คํ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
์คํ ์ด์ง
QA(ํ์ง ๋ณด์ฆ), ํ ์คํธ ๋๋ ์ฌ์ ํ๋ก๋์ ์ด๋ผ๊ณ ๋ ํ๋ ์คํ ์ด์ง ๋จ๊ณ๋ ๊ฐ๋ฅํ ํ ํ๋ก๋์ ๊ณผ ์ ์ฌํ ํ๊ฒฝ์์ ๊ฐ๋ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋จ๊ณ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ์ ๊ฒํ ํ ์ ์์ผ๋ฉฐ, ํ๋ก๋์ ๋ฐ์ดํฐ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ผ์ด๋ธ ์๋น์ค์์ ํตํฉ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
์คํ ์ด์ง ๋ฐฐํฌ์ ์ธ๋ถ ์ฌํญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋์ ์์ค์ ์ ์ฐจ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ ์ ์์ต๋๋ค.
์คํ ์ด์ง ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ๊ณผ ์ต๋ํ ๋น์ทํ ๊ตฌ์ฑ์ผ๋ก ๋ณ๋์ ๋นํ๋ก๋์ ์๋น์ค ๋ฐ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด,
production
ํด๋ฌ์คํฐ์ ๋์ผํ ๊ตฌ์ฑ์ ๊ฐ์งstaging
Atlas ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ ์ฌ๋ก์ ๋ฐ๋ผ ๋ชจ๋ ์คํ ์ด์ง ๋น๋์ ์ฌ์ฌ์ฉํ๋ ์ผ๊ด๋ ์ฑ์ด ์๊ฑฐ๋ ๊ฐ ์คํ ์ด์ง ๋น๋์ ๋ํด ์ ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.์คํ ์ด์ง ๋น๋๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ์คํ ์ด์ง ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ pull ์์ฒญ์ ์์ฑํ ๋์ ๊ฐ์ด CI/CD ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์คํ ์ด์ง ๋น๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๊ฐ ์คํ ์ด์ง ๋น๋์ ๋ํด ์ ์ฑ์ ์ฌ์ฉํ๊ฑฐ๋ ๋น๋ ๊ฐ์ ๊ณต์ ํ๋ ์ฌ์ ๋น๋๋ ํ๊ฒฝ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฑ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์คํ ์ด์ง ํ๊ฒฝ์ ๋ํด ์๋ํ๋ ํ ์คํธ ๋ชจ์์ ์คํํ๊ฑฐ๋, ๋์์ ์๋์ผ๋ก ํ์ธํ๊ฑฐ๋, ์ฌ์ฉ์ ์น์ธ ํ ์คํธ๋ฅผ ํตํด ์น์ธ์ ๋ฐ๋ ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
ํ๋ก๋์
ํ๋ก๋์ ๋จ๊ณ๋ ์์ ํ ์ฑ์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ์ต์ข ๋ฐฐํฌ ๋จ๊ณ์ ๋๋ค. ํ๋ก๋์ ๋จ๊ณ์์๋ ๋ก์ปฌ ๋ฐ ์คํ ์ด์ง ๋จ๊ณ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ ํ ์คํธํ์ฌ ๋ฐฐํฌํด๋ ์์ ํ์ง ํ์ธ์ด ์ด๋ฏธ ์๋ฃ๋ ๊ฒ์ด ์ด์์ ์ ๋๋ค. ํ๋ก๋์ ์ฑ์ ์ ๋ฐ์ดํธํ์ฌ ์๋์ผ๋ก ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ฑฐ๋ CI/CD ์ํฌํ๋ก์ ์ผ๋ถ๋ก ์๋์ผ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๋น๋ ์์
์ด ์น์ ์์๋ CI/CD ํ์ดํ๋ผ์ธ์์ ์ํํ ์ผ๋ฐ์ ์ธ ์์ ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค. ์ฌ์ฉ ์ฌ๋ก์ ํ์ดํ๋ผ์ธ ๋จ๊ณ์ ๋ฐ๋ผ ์ด๋ฌํ ์์ ์ ๋ชจ๋ ์ํํ์ง ์์ ์๋ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ํ์ดํ๋ผ์ธ์ ์ด ๋ชจ๋ ์์ ์ ์ ์ด๋ ํ ๋ฒ์ ์ํํฉ๋๋ค.
ํ๊ฒฝ ๊ตฌ์ฑ
์ฑ์ ๊ตฌ์ฑ๊ณผ ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ ๋จ๊ณ ๊ฐ์ ์ ์ฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ํน์ ๊ตฌ์ฑ ์ต์ ์ ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์๋ ์์ต๋๋ค.
๋น๋ํ ๋จ๊ณ๋ฅผ ๊ฒฐ์ ํ๊ณ ์ ์ ํ ๊ตฌ์ฑ ๊ฐ์ ์ค์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ ๋จ๊ณ์์ ์ ์ฑ์ ์ฑ ID๋ก ์ฑ์ ๊ตฌ์ฑํ๊ฑฐ๋ ํ๋ก๋์ ๋จ๊ณ์์ ํ๋ก๋์ ์ฑ ID๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# Use the production App ID for the main branch export REALM_APP_ID="myapp-abcde" # Use a staging App ID for the QA branch export REALM_APP_ID="myapp-staging-fghij" # Use a new App ID for development branches - you'll need to create the app first! export REALM_APP_ID="myapp-dev-zyxwv"
ํ
์ฑ ID ์ฐพ๊ธฐ
์ฑID๋ฅผ ํญ์ ํ๋์ฝ๋ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. App Services CLI๋ก ํน์ ์ฑ ID๋ฅผ ์กฐํํ ์ ์์ต๋๋ค. ์์๋ ์ฑ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
App Services CLI ์ค์
App Services CLI๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก Atlas ์ฑ์ ์์ฑ, ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐฐํฌ ์คํฌ๋ฆฝํธ์์ ์ต์ ๋ฒ์ ์ ์ค์นํ๊ณ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
App Services CLI๋ npm
์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์คํ
์ ๋ฅผ ์ค์นํ๋ ค๋ฉด Node.js ๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. ์ค์นํ ๋ค์ CLI ์์ ๋ค์ ๋ช
๋ น์ shell ์คํํฉ๋๋ค.
npm install -g atlas-app-services-cli
๋ํ CLI๋ฅผ ์ธ์ฆํ๊ณ ์ฌ์ฉํ๋ ค๋ฉด MongoDB Atlas ๊ณต๊ฐ/๋น๊ณต๊ฐ API ํค ์์ด ํ์ํฉ๋๋ค. API ํค๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ๋จ๊ณ๋ณ ์๋ด๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ API ํค๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ก๊ทธ์ธํ๋ ค๋ฉด ์๋ก ๋ช ๋ช ๋ ํ๋กํ ๊ตฌ์ฑ์ API ํค๋ฅผ ์ ์ฅํ ๋ค์ ํด๋น ํ๋กํ๋ก ๋ก๊ทธ์ธํ์ธ์.
<Profile Name>: public_api_key: "<MongoDB Atlas Public API Key>" private_api_key: "<MongoDB Atlas Private API Key>" atlas_base_url: "https://cloud.mongodb.com" realm_base_url: "https://services.cloud.mongodb.com" telemetry_mode: ""
appservices login --profile="<Profile Name>"
ํ
๋ชจ๋ ๋ช
๋ น์ --profile
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด App Services CLI๊ฐ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๊ฒ์ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
์ฑ ๋ง๋ค๊ธฐ
App Services CLI๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ์ ์ฌ์ฉํ ์ ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค. ํ์ดํ๋ผ์ธ์ด ๊ฐ๋ฐ ๋๋ ์คํ ์ด์ง ๋จ๊ณ์ ์๋ ๊ฒฝ์ฐ ๋ผ์ด๋ธ ํ๋ก๋์ ์ฑ์ด ์๋ ์ฑ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํ๊ณ ํ ์คํธํด์ผ ํฉ๋๋ค.
๊ฐ๋ฐ ๋๋ ์คํ ์ด์ง ๋ฒ์ ์ ์ ์ฑ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ๋ฐ๋ฆ ๋๋ค:
์ ์ฑ ๋ง๋ค๊ธฐ
์ฑ ๊ตฌ์ฑ ํ์ผ์ ๋ฒ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฑ์ ํธ์ํฉ๋๋ค.
cd path/to/realmApp appservices push -y --project="<MongoDB Atlas Project ID>" # e.g. --project="609ea544934fe445460219a2" ์ฑ ID ์ ์ฅ
์ ์ฑ์๋ ๋์ค์ ํ์ดํ๋ผ์ธ๊ณผ ํด๋ผ์ด์ธํธ ์ฑ์์ ์๋ณํด์ผ ํ๋ ๊ณ ์ ํ ์ฑ ID ๊ฐ์ด ์์ต๋๋ค. ํ๊ฒฝ ๋ณ์, ํ์ผ ๋๋ ๊ธฐํ ์์น์ ํด๋น ๊ฐ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
# Save to an environment variable output=$(appservices app describe) app_id=$(echo $output | sed 's/^.*client_app_id": "\([^"]*\).*/\1/') export REALM_APP_ID=app_id # Save to a file echo $REALM_APP_ID > ./clients/ios/realm-app-id.txt
์ฑ ์ ๋ฐ์ดํธ
App Services CLI๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ์คํ ์ด์ง ์ฑ ๋๋ ํ๋ก๋์ ๋ฐฐํฌ์ ๊ฐ์ ๊ธฐ์กด ์ฑ์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ฑ์ด ์ด๋ฏธ ์กด์ฌํ๋ฏ๋ก ์ฑ ID๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
๊ธฐ์กด ์ฑ์ ์
๋ฐ์ดํธํ๋ ค๋ฉด --remote
ํ๋๊ทธ์ ์ฑ ID๋ฅผ ์ง์ ํฉ๋๋ค.
appservices push --remote=$REALM_APP_ID -y
์ฑ์ ๋ํ ํ ์คํธ ์คํ
์ฑ์๋ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํํ ์ ์๋ ์๋ํ๋ ๋จ์ ๋ฐ ํตํฉ ํ ์คํธ ๋๊ตฌ ๋ชจ์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ํ ์คํธ ์ค์ ์ ์ธ๋ถ ์ฌํญ์ ์ฑ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ๋ค์ํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ๋ซํผ์์ ํ ์คํธ๋ฅผ ์คํํด์ผ ํ ์ ์์ต๋๋ค.
ํตํฉ ํ ์คํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ฒดํฌ์์ํ๊ณ ์ฑ์ ํ์ฌ ๋ฒ์ ์ ๋ํด ํตํฉ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
์์ ์ ๋ฆฌ
CI/CD ๋จ๊ณ ๋๋ ํ์ดํ๋ผ์ธ์ด ์๋ฃ๋๋ฉด ํด๋น ํ ์คํธ๋ฅผ ์ํด ํน๋ณํ ์์ฑํ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ๊ฐ๋ฐ ๋๋ ์คํ ์ด์ง ์ฑ์ ์์ฑํ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ณํฉ๋ ํ ์ฑ ๋ฐ ์ด์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ๋๋ ํ๋ก๋์ ์ฑ์ด๋ ์๊ตฌ ์คํ ์ด์ง ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ญ์ ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ญ์ ํ๊ธฐ ์ ์ ๋์ค์ ์ด๋ค ๋ฆฌ์์ค๊ฐ ์ ์ฉํ ์ ์๋์ง ์๊ฐํด ๋ด ๋๋ค. ์๋ฅผ ๋ค์ด ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ ์ฑ๊ณผ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ ๋ฅผ ๊ฑด๋๋ฐ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ์กฐ์ฌํ๊ณ ์ค๋ฅ๋ฅผ ์ผ์ผํจ ์ฑ ์ค์ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.