๐ค ์ด ๊ธ์๋ ์์ค์ด ์์ต๋๋ค. ๋๊ตฌ๋ ์ฝ์ ์ ์๋ ์์ ํ ๊ธ์ ๋๋ค.
์๋ฌด๋ ์ ๊ฐ๋ฅด์ณ ์ฃผ๋ ๋ด์ฉ์ ์ ์ด ๋ดค๋ค. ํ์์ผ ๋๋ ์ ํ ๋ชฐ๋์ง๋ง ์ง์ ์ ๊ฐ๊ณ ์ผ์ ์์ํ๋ ์ ๋ง ์ค์ํ๋ ๊ฒ๋ค์ด๋ค. ๊ทธ๋ฌ๋ ์๋ฌด๋ ๊ฐ๋ฅด์ณ ์ฃผ์ง ์์๊ณ ๋น์ฐํ๋ฏ์ด ์ด๋ฐ๊ฒ ์๋๋ฏ ํ๋ํ๋ ํ์ฌ์์ ์ ์ํ๊ธฐ ์ํด ์ ๋ฅผ ๋ง์ด ์จ์ผ ํ๋ค.
ํ์ ๋ ์์๋ค๋ฉด ์ฌ๋ฌด์ค ์ ์์ด ํจ์ฌ ๋ ํธํ์ ๊ฒ ๊ฐ์ ์ฃผ์ ๋ค, ๋ด๊ฒ ์๋ฌด๋ ์๋ ค์ฃผ์ง ์์์ ๋ฐฐ์ ๊ฐ ๋๊ผ๋ ์ฃผ์ ๋ค์ ์ฌ๋ฌ๊ฐ์ง ๋ฝ์ ๋ดค๋ค.
์ค๋ น ๊ฐ๋จํ๊ฒ ์ฅ๋๊ฐ์ ๋ง๋ค์ด ํ ์คํธ๋ฅผ ํด ๋ณด๋๋ผ๋ logging์ ํ๋ ๊ฒ์ ์ถ์ฒํ๋ค. ๋ก๊ทธ๋ ๋์ค์ ์ค์ ์๋น์ค๋ฅผ ์์ ํ์ ๋ ๋ด ํ๋ก๊ทธ๋จ์ ์ผ๋ง๋ ๋ง์ ์ฌ๋์ด ์ด์ฉํ๋์ง ๋ถ์ํ๋๋ฐ ํฐ ๋์์ด ๋๋ค.
ํ์ง๋ง ๊ทธ ๋ฌด์๋ณด๋ค Exception์ด ๋ฐ์ ํ์ ๋ error log๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ญ๊ฐ ์ผ์ด ํฐ์ก๋๋ฐ ์ด์ฉ๋ค ์ด๋ ๊ฒ error๊ฐ ๋ฌ์๋์ง ๊ธฐ๋ก์ผ๋ก ๋จ์์ผ ํ๋ค. ๊ทธ๋์ผ ๋์ค์๋ผ๋ ๋ด๊ฐ ๋ฌด์์ ์๋ชป ํ ๊ฑด์ง ๋ถ์์ ํด ๋ณผํ ๋ ๋ง์ด๋ค. ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์๋ํ์ง ์๊ณ ๊ฐ์๊ธฐ ๊ฝฅ ์ฃฝ์ด ๋ฒ๋ ธ๋๋ฐ error log๋ ๋จ์ ์์ง ์๋ค๋ฉด ์ฐธ์ผ๋ก ๋๊ฐํด์ง๋ค. ๋๊ฐ ๋์ฐ์ฌ ํด ๋ฒ๋ ธ๋๋ฐ ๋ถ๊ฒ ํ ์์ฌ๋ ์๋ ์ํฉ์ธ ๊ฒ์ด๋ค.
ํนํ Java์์ try catch ๊ตฌ๋ฌธ์ ์ธ ๋ catch ๋ด๋ถ๋ ์๋์ ๊ฐ์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ์ ๋ง ๋ง์๋ค. ๊ทธ๋ฅ Exception์ catchํ๊ธฐ๋ง ํ๊ณ ์๋ฌด๋ฐ ์ฒ๋ฆฌ๋ ํ์ง ์๋ ๊ฒฝ์ฐ๋ ๋ง์๋ค. ๊ทธ๋ ๊ฒ ๋ ๊ฒฝ์ฐ try๋ฅผ ์ด ์ด์ ๊ฐ ๊ฑฐ์ ์๋ค. ์๋ ์ฝ๋ ์ฒ๋ผ ๋ง์ด๋ค.
try {
doSomething();
} catch(IOException e) {
e.printStackTrace(); // default.
}
๋ณดํต ์ด๋ฐ ์ฝ๋๋ IDE์์ ์๋ ์์ฑ ํด ์ฃผ๋ ๊ธฐ๋ฅ์ ์ํฐ๋ง ํ๊ฐ๊ฒจ์ ๋จ์ ๊ฒฝ์ฐ๋ค์ด ๋ง๋ค. ํ์ ๋๋ ๋ญ ์ด์ฐจํผ ๋ ํผ์ ์ฐ๋ ์ฝ๋๋๊น ์๋ฌด ์๊ฐ ์์ด IDE๊ฐ ์ถ์ฒ ํ๋๋๋ก ์ฝ๋ฉ ํ์ง๋ง ํ์ฌ์์๋ ์ด๋ฌ์ง ๋ง์. ๋ฌผ๋ก ํ์ฌ์์๋ ์ด๋ฐ ์ฝ๋๋ ๋ง์ด ๋ฐ๊ฒฌ ๋๋ค. ์๋ฌดํผ ๋๋ ๊ทธ๋ ๊ฒ ํ์ง๋ง์. ์ด์ ๋ ์๋ ์ฒ๋ผ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋๋ก ํ์.
try {
doSomething();
} catch(IOException e) {
log.error(e);
}
๋ฌผ๋ก ์ด๋ฐ์์ผ๋ก ๋ก๊ทธ๋ง ํญ ์ธ๊ณ ๋๋๋ ๊ฒ ๋ณด๋ค๋ Exception์ ์ฒ๋ฆฌ ํ ์ ์์ผ๋ฉด ๋์ฑ ์ข๋ค. ๋ง์ฝ ์ด Exception์ด ์ผ์ด ๋ฌ์ ๋ ๋ณต๊ตฌ๋ฅผ ํ ์ ์๋ค๋ฉด ๊ทธ๋ฐ ์ฒ๋ฆฌ๋ฅผ ํด ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
try {
doSomething();
} catch(IOException e) {
log.error(e);
goto RETRY;
}
logging ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์จ์ ๋ก๊ทธ๋ฅผ ์ ๋จ๊ฒผ๋ค. ๊ทผ๋ฐ ์ด๋ฐ๋ค๊ณ ๋์ด ์๋๋ค. ๋ง์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ์์ ์คํํ๊ณ ์๋น์ค๋ฅผ ํ๊ธฐ ์์ํ๋ฉด ๋ ์ด ๊ฐ ์๋ก ๋ก๊ทธ๊ฐ ์์ฌ๊ฐ๊ธฐ ์์ํ๋ค. 1๋ ๋์ ์๋น์ค๋ฅผ ํ๋ค๋ฉด 365๊ฐ์ ํ์ผ์ด ์๊ธฐ๋ ๊ฒ์ด๋ค.
log๋ ํ ์คํธ ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ง๋ง ์ด๊ฒ ์๊ทผํ ์ฉ๋์ ๋ง์ด ์ฐจ์งํ๋ค. ์ธ๊ธฐ ์๋น์ค๋ผ๋ฉด ํ๋ฃจ์ ์์ฒ๋ง ๊ฐ์ ๋ก๊ทธ๊ฐ ์์ด๊ณ ์ฌ์ฉ์๊น์ง ๋ง๋ค๋ฉด ์ต๋๋ก ์์ด๋ ๊ฒฝ์ฐ๋ ๋ดค๋ค. ๋ก๊ทธ๋ฅผ ์์ธํ ๋จ๊ธด๋ค๋ฉด ํ๋ฃจ์น ๋ก๊ทธ๊ฐ 100GB๋ฅผ ๋๋ ๊ฒ์ ์ผ๋ ์๋๋ค. ๋ํ ํฌํธ์์ ์ผํ๊ฒ ๋๋ค๋ฉด ๋ฐ๋์ ๊ทธ๋ด ๊ฒ์ด๋ค.
๋๋ ์ฒ์์ text๋ก๋ง ์ด๋ค์ง log file์ ๋ง๋งํ๊ฒ ์๊ฐํ์๋ค. ํ ๋ฒ ํฐ ์ฝ ๋ค์น ์ ์ด ์์๋ค. ์ํ๊ด์์ ํผ์ ์ฆ๊ฒ๊ฒ ๊ฐ์์ ํ๊ณ ์๋๋ฐ ๊ฐ์๊ธฐ ๊ฒฝ๊ณ ์๋์ด ๋ ์ ์๋ค.
โ ๏ธ [WARNING]
๋์คํฌ ์ฌ์ฉ๋ฅ ์ด 80%๋ฅผ ๋์์ต๋๋ค!
๋์คํฌ ์ฉ๋์ด 500GB์ ์ก๋ฐํ๋ ์๋ฒ์๋๋ฐ ๋ก๊ทธ ํ์ผ์ด ๋๋ฌด ๋ง์ด ์์ฌ์ ๊ณต๊ฐ์ด ๋ถ์กฑ ํด ์ ธ ๊ฐ๊ณ ์๋ ๊ฒ์ด๋ค. ๋๊ณ ๋๊ฐ๊ธด ์๊น์์ ๋ฌด์ํ๊ณ ์์๋๋ฐ 85%โฆ 90%โฆ ๋ชป๋ณธ์ฒ ํ๋ ค๋ค๊ฐ '95%' ์๋์ด ์ค๋๊ฑธ ๋ณด๊ณ ์ ๋ ฅ์ง์ฃผ๋ก ์ง์ ๋ฌ๋ ค๊ฐ๋ค.
๊ฒฐ๊ตญ ํ๋ก๊ทธ๋๋ฐ์ ํด๋ ๋๋๊ฒ ์๋ ๊ฒ์ด๋ค. ์ฝ๋๋ฅผ ์ ์จ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ํด๋ ๋ก๊ทธ๋ฅผ ์ ๋จ๊ฒจ์ผ ํ๊ณ , ๋ก๊ทธ๋ฅผ ์ ๋จ๊ธฐ๋ฉด ๋ก๊ทธ๊ฐ ๊ฝ ์ฐจ์ง ์๋๋ก ๊ณผ๊ณ ๋ก๊ทธ๋ฅผ ์ง์์ค์ผ ํ๋ค. ์ด๊ฒ์ log rotation์ด๋ผ๊ณ ํ๋๋ฐ ์ฐธ ๋ฌด์ํ๋ ๊ฐ๋จํ๊ฒ ์๊ณ ํ ๊ฒ ๋๋ฌด ๋ง๋ค.
์๋์์ ์๊ฐํ๋ ๊ฒ ์ธ์๋ nginx log rotate, go log rotate ๋ฑ์ผ๋ก ๊ฒ์ํ๋ฉด ๊ฐ ์ง์๋ณ ํด์ ๋ง๋ ์ ์๋ค.
pm2์์๋ log-rotate๋ผ๋ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํ๊ณ ์์ด ์์์ ๋ด๊ฐ ๊ฒช์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐ ํ ์ ์๋ค.
๋ ์ด ๋ชจ๋ ๊ฒ ๋ค ์ซ๊ณ ๊ท์ฐฎ๋ค? sentry๋ฅผ ์ถ์ฒํ๋ค. Exception์ด ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ์ด๋ฉ์ผ๋ก ์๋ ค์ฃผ๊ณ ์คํ ํธ๋ ์ด์ค ์ ๋ณด๋ฅผ ์ด์๋ก ๋ฑ๋ก ํด ์ค์ ๋์ค์ ์ ๊ฒฝ์ ์จ ์ฃผ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๋ค. ์ฅ๋๊ฐ ํ๋ก์ ํธ๋ค์ ๋ ๋ฐ๊ณ ํ๋ ํ์ฌ ์ผ๋ ์๋๋ผ์ ๊ฐ๋ฐ ํด ๋๊ณ ์ ๊ฒฝ์ ์ฐ๊ธฐ๊ฐ ๋ฌด์ฒ ์ด๋ ต๋ค. ํนํ Exception๋ค์ log๋ฅผ ๋ค์ ธ ์ฐพ์ ๋ด๋ ๊ฒ๋ ๊ท์ฐฎ๊ณ ๋ฐ๋ก ๋ฉ๋ชจ๋ฅผ ํด ๋์๋ ๊ทธ๊ฑด ๋ ๊ท์ฐฎ๋ค. ๊ทธ๋์ ๋ ํผ์ ๊ฐ๋ฐ ํ ๋ ์ด ํ๋ซํผ์ ์จ ์๋๋ฐ ์ต๊ทผ ๋ค์ด์๋ Sentry๋ฅผ ๋์ ํ๋ ํ์ฌ๊ฐ ๋์ด๊ฐ๋ ๊ฒ ๊ฐ๋ค.
๋ฆฌ๋ ์ค๋ฅผ ์ ๋ค๋ฃจ๋ฉด ์ข๋ค๋ ์ ์ ์๋ฌด๋ฆฌ ๋ง ํด๋ ์ง๋์น์ง ์์ ๊ฒ์ด๋ค. environment๋ node๋ฅผ ๋ค๋ฃฐ ๋ ๋ง์ด ์ ํ๊ฒ ๋๋ค. OS ํ๊ฒฝ๋ณ์ ์ค์ ์ผ๋ก development ํ๊ฒฝ์ด๋, production ํ๊ฒฝ์ ๊ตฌ๋ถํด์ logging์ ํ๋๋ก ํ๋ฉด print๋ก ์ฝ๋๊ฐ ์ง์ ๋ถ ํด์ง๋ ๊ฒ์ ์ ๋ง์ ์ ์๋ค. ENV๋ ์๋์์ ์ค๋ช ํ config์ ๊ด๋ จ์ด ๊น๋ค.
๋๋ ๊ฐ๋ฐ์ด๋๊ฑธ ํ๋ฉด ๋ง๋ฅ ์๋ฒ ํ๋๋ง ์์ผ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ํ์ฌ์ ๊ฐ ๋ณด๋ฉด ๊ฐ๋ฐ์ฉ ์๋ฒ์ธ dev์ ์ง์ง ์๋น์ค์ฉ์ธ prod๊ฐ ์์ ๊ฒ์ด๋ค. stage๋ผ๋ ์๋ฒ๋ ๋ฐ๋ก ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ์๋น์ค๊ฐ ๋ ๋ณต์กํ๋ฉด stage1, stage2.. .๊น์ง ํ๊ฒฝ์ ๊ตฌ์ฑ ํด ๋๋ค. ๋ฐ๋ผ์ ์๋ฒ์ ํ๊ฒฝ์ ๋๋ต ์๋์ ๊ฐ๋ค.
local --- dev --- stage1 --- stage2 --- prod
๋์ฒด ์ ์ด๋ ๊ฒ ๋ง์ด ์๋ฒ๋ฅผ ๋๋ ๊ฑธ๊น? ํ์ฌ์์ ์ผ์ ํด ๋ณธ ์ง๊ธ์ ๋น์ฐํ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋ํ์ ๋๋ ๋์ ํ ์ดํด ํ ์๋ ์์๊ณ ์ค๋ช ์ ๋ค์ด๋ ์๋ฟ์ง๋ ์์๋ค. ์ผ๋จ์ ์ข์ ๊ตฌ์ ์ด ์์ด์ ์๋ ํ ๋ฌธ๋จ์ ์ธ์ฉ ํ์๋ค.
ํ๊ฒฝ์ด ๋ง์์ง๋ฉด ์กฐ๊ธ ๋ ๋ค์ํ ํํ์ ๊ฒ์ฆ๊ณผ ๊ฐ stakeholder (ํ ์คํฐ, ๊ฐ๋ฐ์, ์ฌ์ฉ์ ๋ฑ)๋ณ๋ก ํ ์คํธ๊ฐ ์ฝ์ง๋ง ๋ฐ๋๋ก, ๊ฐ ํ๊ฒฝ์ ์ ์ง ํ๋๋ฐ, ํ์ํ ์๋ฒ๋ค๊ณผ, ์ด์ ์ธ๋ ฅ์ด ๋ง์ด ์์๋๋ ๋จ์ ์ด ์๋ค.
๐ https://bcho.tistory.com/759
์ค์ ๋ค์ ์ด๋ป๊ฒ ๊ด๋ฆฌ ํ ๊ฒ์ธ๊ฐ? ํผ์ ๊ฐ๋ฐํ๋ฉด์๋ ๋ฑํ ์ ๊ฒฝ์ด ๊ฐ์ง ์์ ๋ํ์ ๋๋ ์ ๋๋ผ์ง ๋ชปํด์ ๊ฒฝํ์ด ์๋ ์ฑ๋ก ์กธ์ ํ๊ฒ ๋๋ค. ์๋ฅผ๋ค์ด ์ด๋ค ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ํ๋ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
redis.Redis(host='redis-us-east', charset='utf-8', password='WCaZYz7Kn14vdvw')
์ด๋ ๊ฒ ํ๋ฉด ๋น์ฐํ๊ฒ๋ host๋ password๊ฐ ์ฝ๋ ๋ด์ ์ฌ์คํ ๋๋ฌ๋๊ฒ ๋์ด ์ฉ ์ฐ์ํ์ง ์์ ๋ณด์ธ๋ค. ๋๋ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ๋ฌด์ธ๊ฐ ์ ๋ฌธ์ ์ด๊ฒ(?) ๋ณด์ด์ง ์๋๋ค๋ ๋๋์ ๋ฐ์์ง๋ง ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์ด ๋ฌธ์ ์ธ์ง ์ง์ด๋ด์ง ๋ชปํ๋ค. ๊ฐ์ฅ ํํ ๋ค์ด ์จ ๊ฒ์ด host๊ฐ ๋ฐ๋๊ฑฐ๋ ํ ๊ฒฝ์ฐ ๊ณณ๊ณณ์ ์ฐ์ฌํ host ์ฃผ์๋ฅผ ๋ฐ๊พธ๊ธฐ๊ฐ ๊ท์ฐฎ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด์ฐจํผ ํผ์ ๊ฐ๋ฐํ๋ฉด์ ์ด๋ฐ ์ฝ๋๋ ๊ฑฐ์ ํ ๋ฒ๋ง ์ฐ์ด๊ฒ ๋๊ธฐ์ ๊ณ ๊ฐ๋ฅผ ๋๋์ด๊ธฐ๊ฐ ์ด๋ ค์ ๋ค.
๊ทธ๋ฌ๋ ๊ฐ๋ฐ ๊ฒฝํ์ด ์์ธ ์ด์ ๋ ํ์คํ ๋จ์ ๋ช๊ฐ์ง๋ฅผ ๋ง ํ ์ ์๊ฒ ๋์๋ค.
๊ทธ๋์ config์ ๊ด๋ฆฌ๊ฐ ์ค์ํ๋ค. ์ฝ๋๋ฅผ ์คํ ํ์ ๋ ์ด๊ฒ์ด ๋ด local์์ ์คํ ๋ ๊ฒ์ธ์ง ์๋๋ฉด dev์ฉ ์๋ฒ์ ๋ฐฐํฌ๋์ด ํ ์คํธ ํ ๊ฑด์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ์คํ ํ ๋ ๋ง๋ค ์ฝ๋๋ฅผ ๊ณ ์น ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. dev์๋ฒ์ ์ฃผ์๋ฅผ ๋ฃ์๋ค๊ฐ ๊ทธ๋๋ก prod์ ๋ฐฐํฌ ํด ๋ฒ๋ฆฌ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง์ง๋ ๋ถ๋ณด๋ฏ ๋ปํ๋ค.
์๋ง์ ๊ธ๋ค์ด TDD๋ฅผ ์ฃผ์ฐฝํ๊ณ TDD๋ฅผ ์ค๋ช ํ๊ณ ์๋ค. test๊ฐ ์ ํ ๋ญ์ง ๋ชฐ๋ผ๋ ๋ฐฐ์ธ ์ ์๋ ์ข์ ํฌ์คํ ์ด ๋ง๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๊ฐ์ฅ ์ซ์ดํ๋ ๊ฒ์ด test๋ค. ๋๋ ํ์ฐฝ ์์ ์ํ์ ์ณค๋คํ๋ฉด ๋ ๊ผด์ง์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ 'ํ ์คํธ'๋ผ๋ ๋จ์ด ์์ฒด์์ ๋ถํฐ ์ค๋ ๊ฑฐ๋ถ๊ฐ์ด ์๋นํ๋ค. ๐.
ํ ์คํธ๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋๊ฐ ๋ด๊ฐ ์๋ํ๋๋ก ์ ์๋ํ๋์ง ๊ฒ์ฌ ํด ์ฃผ๋ ์ฝ๋ ๋๋ ๊ณผ์ ์ ๋งํ๋ค. ๋๋ ์ฒ์ ์ด ๋ง์ ๋ฃ๊ณ ์ ์ดํดํ์ง ๋ชปํ๋ค.
์๋ ์ฒ์๋ถํฐ ์ง์ค ํด์ ์ํ๋ฉด ๋์ง ๋ด๊ฐ ์ ์งฐ๋์ง ๊ฒ์ฆ ํ๋ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋๋ค๊ณ ? ๊ทธ๋ผ ๋ด๊ฐ ์ ์งฐ๋์ง ๊ฒ์ฆํ๋ ์ฝ๋๋ฅผ ์ ์์ฑํ๋์ง ๊ฒ์ฆํ๋ ์ฝ๋๋ ์ ํ์ ํ ๋ชจ์์ด์ง?
๋ด๊ฐ ๋ง์ฝ์ ์ด๋ค ํจ์๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํ์. ์ด ํจ์๊ฐ ํ๋ ์ผ์ ๊ฒ์ํ์ ๊ธ์ ์ฐ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ํ ์คํธ ์ฝ๋๋ฅผ ๋์ถฉ ์๋์ ๊ฐ์ ์ ๋๋ก ์จ ๋ณผ ์ ์๋ค.
Test() {
// ์ผ๋จ ๊ธ์ ์ด๋ค.
Post("์ผ์์ ์ด๊ฑด ๋ด ๊ธ ์ ๋ชฉ", "๊ธ ๋ด์ฉ")
// ์ด์ ๋ฆฌ์คํธ์ ๋ด๊ฐ ์ด ๊ธ์ด ์๋์ง ํ์ธ ํด ๋ณธ๋ค.
var list = PostList()
if (list.contain("์ผ์์ ์ด๊ฑด ๋ด ๊ธ ์ ๋ชฉ")) {
return true // ์์ ํ
์คํธ ์ฑ๊ณต
} else {
return false // ??? ๋ด๊ฐ ์ด ๊ธ ์ด๋๊ฐ?
}
}
๋ด๊ฐ ์ด ํจ์๋ฅผ ๋ด๊ฐ ํธ์ถํด์ ํ์ธ ํด ๋ณด๋ ๊ณผ์ ์ด๋ค. ๋ ์ฐ๋ฆฌ๊ฐ ์ฝ๋ ์ค๊ฐ์ print ๋ฃ์ด์ ๋๋ฒ๊น (?)ํ๋ ๊ณผ์ ์ ์ฝ๋๋ก ์จ ๋ ๊ฒ์ด๋ผ๊ณ ํํํ ์๋ ์๋ค. ๊ทธ๋ ๋ด ์ด Test ํจ์๋ ์ด๋์ ํธ์ถ ํ๋๋ฐ? ๊ทธ๊ฒ์ด ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ค์ด ์กด์ฌํ๋ ์ด์ ๋ค.
npm test
javascript์์๋ ์ด ๋ชจ๋ ํ ์คํธ ๊ณผ์ ์ ์ฒด๊ณ์ ์ผ๋ก ๋์์ฃผ๋ ๊ฒ์ด ๐ Jest๋ Mocha์ ๊ฐ์ ํ ์คํธ ๋๊ตฌ๋ค์ด ์๋ค. JAVA์๋ ๐ JUnit์ด ์๊ณ ์ด๊ฑด ์๋ง ํ ์คํธ๊ฐ ๋ญ์ง ๋ชฐ๋ผ๋ ํ ๋ฒ์ฏค ๋ค์ด ๋ดค์ ์ ๋๋ก ์ ๋ช ํ ํด์ด๋ค. ๋ฒ์จ ํ ์คํธ์ ๊ด์ฌ์ด ์๊ฒผ๋ค๋ฉด ํ ๋ฒ ์ฌ๋ฌ๋ถ์ด ์ฐ๋ ์ธ์ด์๋ ์ด๋ค ํ ์คํธ ๋๊ตฌ๋ค์ด ์๋์ง ๊ฒ์ ํด ๋ณด์.
๋๋ ๊ทธ ์ ๋ช ํ ์ผํธ ๋ฒก์ ๐ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ด๋ผ๋ ์ฑ ์ ์ฝ์ด ๋ณธ ์ ์ด ์๋ค. TDD๋ผ๊ณ ๋ถ๋ฅด๋ ์ด๊ฒ์๋ ์์ฃผ ๋ง์ ๋ ผ์์ด ์๋ค. ์๋ ๊ทธ๋ฅ ์ฝ๋ ์ฐ๊ธฐ๋ ๋ฐ์๋ฐ ํ ์คํธ ์ฝ๋๋ฅผ ์ธ ์๊ฐ์ '์ง์ง' ์ฝ๋๋ฅผ ์ฐ๋๊ฒ ํจ ๋ซ๋ค๋ ์ฃผ์ฅ๊ณผ, ์ด๊ธฐ์ ์๊ฐ์ด ๋ ๋ค๋๋ผ๋ ์คํ๋ ค ๋์ค์๋ ํ ์คํธ ์ฝ๋ ๋๋ถ์ ๋ฒ๊ทธ๋ ๋ ์๊ธฐ๊ณ ๋ ํํํ SW๋ฅผ ๋ง๋ค๊ฒ ๋๋ค๋ ์ฃผ์ฅ์ด ์๋ค.
์ ๋ง์ ๋ ผ์์ด ์์ง๋ง ์๋ฌดํผ TDD๋ ๋ถ๋ช ํ ์ ๊ณ์์ ์ ์ฉ๋๊ณ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ณณ๋ ์๋ '๋ฐฉ๋ฒ๋ก '์ด๋ค.
๋๋ ๋ฏธ์น๋์ด๋ผ "TDD๋ ๋ณ๋ก์์" ๋๋ "TDD๋ ๋ฌด์กฐ๊ฑด ํด์ผํ๋๋ฐ์?"๋ผ๊ณ ์ด๋ ์ชฝ๋ ์ ์ฅ์ ์ ์ ํ๋ค. ๊ทธ๋ฅ ํ์ด ํ์๊ณ ํ๋ฉด ๋ฐ๋ผ์ ํ๊ณ ์ ํ๋ฉด ๋ด๊ฐ ํ์๊ณ ํ๋ ์ฒญ๊ฐ๊ตฌ๋ฆฌ ๊ฐ์ ๋์ด์๋ค. ๐คช. ๊ทธ๋๋ ์ด ๋ง์ ํ๊ณ ์ถ๋ค.
REST API ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค๊ณ ์น์, ์ต์ํ request์ ๋ํด 200 OK status๊ฐ ์ค๋์ง ํ์ธ ํ๋ ์ฝ๋ ํ ์ค์ด๋ผ๋ ์๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋ค.
์ต์ํ์ ํ ์คํธ ์ฝ๋๋ผ๋ ์์ฑ ํด ๋๋ฉด git push๋ฅผ ํ ๋, deploy๋ฅผ ํ ๋ ๋ง์ค์์ด ์๊ฒ ๋๋ค. ํ์ํ ์ฝ๋๋ฅผ ์ธ ๋๋ ๋ถ๋ด์ด ๋ ํ๋ค. ๋ง์ฝ ๋ด๊ฐ ๋ญ๊ฐ ์๋ชป ํ๋ค๋ฉด ํ ์คํธ ์ฝ๋๊ฐ ๊ฒ์ฆ์ ํด ๋ผ ํ ๋๊น.
๐ถ ๋น์ฐํ ์ด ๋ชจ๋ ๊ฑด test code๋ฅผ ์ ์์ฑ ํ์ ๋์ ์ด์ผ๊ธฐ๋ค. test code๊ฐ ๊ฐํ์ธ๋ฐ test๊ฐ ์ ๋ ๋ฆฌ๊ฐ ์๋ค. test code๋ ์ฌ๋์ด ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ์๋ฌ๊ฐ ์์ ์ ์๊ณ test๋ฅผ ํต๊ณผ ํ๋ค๊ณ ํด์ quality๋ฅผ ํ์คํ ์ถฉ์กฑ ํ๋ค๊ณ ๋ณผ ์๋ ์๋ค.
์ด๊ฑด ์์ฆ ํ์๋ค๋ ๋ง์ด ์๊ณ ๋ง์ด ๋ฐฐ์ฐ๊ณ ๋๋ณด๋ค ๋ ์ ์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ์ง์ก๋์์๋ ๊ต์๊ฐ git์ ์์ ์ ์๋ํ ์๋๋ ๋ชป๋ด์ด ์ด๋ ดํ์ด ๋ค์ด๋ณธ ํ์๋ ์์ ๊ฒ์ด๋ค.
์ผ๋ง์ ์๋ github์ git์ด ๊ฐ์ ๊ฒ์ธ์ค ์๋ ๊ฐ๋ฐ์๋ฅผ ๋ณธ ์ ๋ ์๋ค. git์ ๋ฒ์ ๊ด๋ฆฌ ์ํํธ์จ์ด์ด๊ณ github๋ git์ ์ฌ์ฉํ์ฌ ์๋น์คํ๋ ๊ฒ์์ ๋ชจ๋ฅด๊ณ ์๋ ๊ฒ์ด๋ค. ์์ฆ ๊ณต๋ถํ๋ 10, 20๋ ํ์๋ค์ ์ด ์ ๋๋ ์๋๋ค.
git์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ตํ ๋๋ ๊ฒ์ด ๋ญ ํ๋ก์ ํธ๋ฅผ ํ๋๊ฐ์ ํธํ๋ค. ๋ง์ฝ git์ ๋ชจ๋ฅธ๋ค๋ฉด ์ง๊ธ ๋ถํฐ ์์๋ผ. ๋ ๋ฐ๋์ git์ ์ฌ์ฉํด์ ์น๊ตฌ๋ผ๋ฆฌ ํ๋์ ํด ๋ณด์์ผ ํ๋ค. git์ rebase ๊ฐ์ ์ปค๋งจ๋๋ ์ง์ ํ์ ์ ํด ๋ณด์ง ์์ผ๋ฉด ์ฝ๊ฒ ์๋ฟ์ง ์๋ ๊ฒ๋ค์ด ๋ง๋ค.
๋ git commit์ ํ ๋ commit message๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋ ๊ฒ์ด ์ข์์ง ํ๊ณผ ํฉ์ ํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ๋ ์๋ค. ๐ Node ํ๋ก๋ํธ ํ๋ฆฌํฐ๋ฅผ ๋์ด๋ ํ์ ๋ฐฉ๋ฒ์ Commit message convention์ ์ฐธ๊ณ ํ๋ฉด ์ข๋ค.
์ฌ๋ฌ๋ช ์ด์ git์ ์ธ ๋ branch๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๊ณ ๊ฐ branch๋ ์ด๋ค ์ญํ ์ ํด์ผ ํ์ด ํ์ ํ ์ ์์๊น? ์ด ๋ฐฉ๋ฒ๋ค์ 'Branch ์ ๋ต'์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋๋ฐ ๊ทธ ์ค gif flow๋ผ๋ ๊ฒ์ด ์ ๋ช ํ๋ค. ์ด์ ๊ดํด์๋ ๊ณต๋ถ ํ ๊ฒ์ด ๋ง๋ค. ์ ์ค๋ช ๋ ๊ธ์ ์ฒจ๋ถํ๋ค.
๋ ๊ฐ์ด ๋ ์์ ์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ๊ทธ๋ฆผ์ผ๋ก ์ ๊ทธ๋ ค์ฃผ๋ฉด ์ดํด ๋ชปํ๋ ๋ฐ๋ณด๋ค์ ์ํด ๋ง๋ค์ด์ง ํด์ด๋ค. git์ flow๋ฅผ ์์ค ํธ๋ฆฌ ์ฒ๋ผ ์๊ฐํ ํด ์ฃผ์ด์ ์ข๋ค. Merge๋ Cherry Picking ๊ฐ์ ๊ฒ๋ ๋ง์ฐ์ค๋ก ๋ฑ๋ฑ ํด๋ฆญํด์ ์ฒ๋ฆฌ ํ ์ ์์ผ๋ ์ข๋ค. ๊ทธ๋ฌ๋ ๋งฅ๋ถ์์๋ ์ผฐ๋ค ํ๋ฉด ๊ผญ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๋ง์ด ์๋ชจํ๋ ์ฑ 1์๋ก ๋ฑ๊ทนํ๋ค. ์ฌ์ค commit, push๋ ๊ทธ๋ฅ cli๊ฐ ํจ์ฌ ๋น ๋ฅด๊ณ ํฌ๋ผ์ผ์ ๊ทธ๋ฅ ๋์ผ๋ก ํ์ธํ๊ฑฐ๋ rebaseํ๋ ์ฉ๋๋ก๋ง ์ฐ๊ณ ์๋ค.
โ ๏ธ git์ ๋ธ๋์น ์ ๋ต์ git์ ์ฌ์ฉ ํด ๋ณธ ์ฌ๋๋ ์ด๋ ต๊ณ git์ ๋ชจ๋ฅด๋ฉด ๋น์ฐํ ์ด๋ ต๋ค. ์ง๊ธ๋ถํฐ ๋น์ฅ ์ด๊ฒ๋ค ๋ชจ์กฐ๋ฆฌ ๊ณต๋ถ ํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. ์ ์ด๋ ์ด๋ฐ ๊ฒ์ด ์๋ค๋ ์ ์ ์๊ณ ๋ง ์์ด๋ ํ์ฌ ๊ฐ์ ๋ ๋๋ ค์์ ์๋ค์๋ค ๋ ๋ ์ผ์ ์๋ค. ๋ง์น ๊ต๊ณผ์ ์ฒ๋ผ git์ ๊ณต๋ถํ์ง ๋ง๊ณ ์์ ์ ๊ฐ์ธ ํ๋ก์ ํธ์ ์ง์ ์ ์ฉ ํด ๋ณด๋ฉด์ ๋์ ์์ด ์ต์ ํด ์ ธ ๊ฐ๋ ๊ฒ์ด ํจ์ฌ ๋ ํฐ ๊ณต๋ถ๊ฐ ๋๋ค.
git commit๊ณผ git push ํ ๋ฒ์ผ๋ก ์์์ ๋ง ํ ํ ์คํธ์ ๋ฐฐํฌ๋ฅผ ์๋์ผ๋ก ํ ์ ์๋ค. ์ด ์ฌ์ค์ ์์์ ๋ ์ผ๋ง๋ ์ถฉ๊ฒฉ์ด์๋์ง ๋ชจ๋ฅธ๋ค. ๋ด๊ฐ ํ์์ผ ๋๋ ์ด๋ฐ๊ฑธ ๊ฐ๋ฅด์ณ ์ค ์ฌ๋์ด ์์๋ค.
์์ฆ์๋ ์๋ ์ข์ PaaS์ ์๋น์ค๋ค์ด ๋ง์์ CI/CD๊ฐ ๋ญ์ง ์ ๋ชฐ๋ผ๋ ๋ฒํผ ๋ช๋ฒ์ด๋ฉด ๋ค ํด ๋ผ ์ ์๋ค.
์ ๋ง ๊ฐ๋จํ๊ฒ CI/CD๋ฅผ ํด๋ด๊ณ ์ถ์ผ๋ฉด Heroku๋ฅผ ๋ฌด๋ฃ ๋ฒ์ ์ผ๋ก ์จ๋ ์ข๋ค. Hroku์ github repository๋ฅผ ๋ฑ๋กํ๋ฉด ๋ด ๊นํ๋ธ์ push ํ ๋ ๋ง๋ค ์๋์ผ๋ก Deploy๋ฅผ ํด ์ฃผ๊ณ ์ฌ์ง์ด ํธ์คํ ๊น์ง ํด ์ค๋ค.
Gitlab๋ ์ข๋ค. gitrunner๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ํ ๋ฒ ์จ๋ณด๊ณ ์ถ๋ค.
์ ๋ฃ์ด๊ธด ํ์ง๋ง Digital Ocean๋ ์ข์๋ค. ํ์์ด๋ผ๋ฉด 50$๋ฅผ ๋ฌด๋ฃ ํฌ๋ ๋ง์ผ๋ก ์ ๊ณตํ๋ค. 1๋ ์ ๋๋ ์ธ ์ ์๋ ์ก์๋ค.
์ผ์ฃผ์ผ์ ๋ช๋ฒ Deployํ๋๋, ์ผ๋ง๋ ์์ฃผ deploy๋ฅผ ํ ์ ์๋๋๊ฐ App Quality์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค. ์ ๋ ์ ๋ถํฐ Facebook๊ณผ Twitter์ ๋ชจ๋ฐ์ผ ์ฑ์ Quality Improvement๋ผ๋ ์งค๋งํ ๋ด์ญ๊ณผ ํจ๊ป Regular update๋ฅผ ํ๊ธฐ ์์ํ๋ค. ์ฅ๋์ผ๋ก๋ผ๋ ๊ฐ๋ฐ์ ํ ๋๋ CD๊ฐ ๊ฐ์ถฐ์ง๋ฉด ๋งค์ฐ ํธํ๋ค. ์ด์จ๋ ์ด์ฌํ ์ฝ๋๋ง ๋ค๋ฌ์ผ๋ฉด ๋๋๊น.
์์ ์ด ๋ง๋ ํ๋ก๊ทธ๋จ์ ์ ๋ฐฐํฌ ํ๋ค๋ฉด ํ๋ก๊ทธ๋จ์ด ์ ๋์ํ๋์ง ํ์ธ ํ์ฌ์ผํ๋ค.
์ค์ ํ์ฌ์์ ์๋น์ค๋ฅผ ํ๋ ๋ฐ์นญํ๊ณ ๋๋ฉด์ ์ด ์ ๊ณ์์ ์ง๋ฆฌ๋๋ก ๋งํ๋ โ์ฑ์ฅโ์ ์ํด์ ์ฌ๋ฌ๊ฐ์ง ๋ถ์์ ํ๊ฒ ๋๋ค. ์ฌ์ฉ์ ์ฐ๋ น์ธต์ ์ด๋ ํ์ง ์ฑ๋ณ์ ์ด๋ค์ง ์ฌ์ฉ ์๊ฐ๊ณผ ์ด๋ค ๋ฉ๋ด๋ฅผ ์ผ๋ง๋งํผ ๋๋ฅด๋์ง ๋ฐ์ดํฐ๋ฅผ ํตํด ๋ ๋ค๋ฅธ ์ง๊ฐ์ ์ป์ด๋๊ฐ๋ค.
ํ์์ด์ผ ์ฌ๋ฏธ์๊ฒ ๋ง๋ค์ด์ ๋ฐฐํฌํ ๋ค์ ์ฌ๋ฌ๊ฐ์ง ๊ฐ์ ์ ์ ์ค์ค๋ก ์๊ฐํ๋ฉด๋๋ค. ๋ง์ฝ ๋ฐฐํฌํ ํ๋ก๊ทธ๋จ์ด ์ข์ ์ธ๊ธฐ๋ฅผ ์ป์ด ๋ช๋ช ์ฌ๋๋ค์ด ๋ฆฌ๋ทฐ๋ฅผ ํด ์ค๋ค๋ฉด ๋ ์ข์ ๊ฒ์ด๋ค. ๋ด ์ฑ์ ์ด๋ค ์ฌ๋๋ค์ด ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋๋ฐ์ด์ค๋ฅผ ์ฌ์ฉํด์ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ์๋์ง ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ถ์ ํด ๋๋ค๋ฉด ๋ ์ง๋ฆฌ๋๋ก ๋งํ๋ โ์ธ์ฌ์ดํธโ๋ฅผ ๊ธฐ๋ฅด๋๋ฐ ๋ง์ ๋์์ด ๋๋ค.
์ฒ์์ Log์์๋ ์ถ์ฒ ํ๋ Sentry์ด๋ค. ๋ชจ๋ํฐ๋ง์๋ ํด๋น ๋๋ ๊ฒ ๊ฐ์์ ๊ทธ๋ฅ ๊ฐ์ด ๋งํฌ ๊ฑธ์ด ๋์๋ค.
pm2์ ๊ฒฝ์ฐ ๋๋ฆ๋๋ก ๋ฉ์ง UI๋ฅผ ๊ฐ์ง moniotring ํ๋ซํผ์ ์ ๊ณตํ๊ณ ์๋ค.
iOS ๋๋ Android App์ ๊ฐ๋ฐํ๋ค๋ฉด firebase์ Analytics๋ฅผ ์ฌ์ฉ ํด ๋ณผ๋ฒ๋ ํ๋ค. Web์ด๋ผ๋ฉด Google Analytics๋ฅผ ์๊ฐ ํด ๋ณผ ์๋ ์๋ค. GA๋ก ๋ง์ด๋ค ์ธ๊ธํ๋ ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค๋ ๊ผญ ๊ฐ๋ฐ์๋ค๋ง์ด ์๊ณ ์๋ ๊ฒ์ ์๋๋ค. ๋ง์ผํ ์ ์ผ์ผ๋ ์ฌ๋๋ค ์ญ์ GA๋ฅผ ๊ณต๋ถํ๊ณค ํ๋ค.
๊ฐ์ฅ ์ ํด์ผ ํ๋ ๊ฒ์ด๊ณ ์ค์ํ ๋ถ๋ถ์ด ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ํ์ฐฝ ๊ฐ๋ฐ๋ง ๋ถ์ฌ์ก๋ค๊ฐ ์ด๋ ๋ ์คํ์ ์ถ์ ํ๊ฑฐ๋ ๋๋ฒ๊น ์ ํด์ผ ํ ์ํฉ์ด ์๊ฒผ์ ๋ ์ด๋ค ๋ฒํผ์ ๋๋ฌ์ผ ๋๋์ง ์กฐ์ฐจ ๋ชฐ๋๋ค. ์์ ์๊ฒ๋ ๋๋ฌด ๋ถ๋๋ฌ์ด ์๊ฐ์ด์๋ค. ๋๋ฒ๊น ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋์ ์์๋๋๋ก ํ์.
ํ๋กํ์ผ๋ง์ ํจ์์ ์คํ ์๊ฐ์ด๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋น๋ ๋ฑ์ ์ธก์ ํด ๋ด ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ๋์ด๊ณ ์ ํจ์ด๋ค. ์ฉ ๊ด์ฐฎ๊ฒ ๋ง๋ค์ด ๋จ๋ค๊ณ ์๊ฐํด๋ ๋ง์ ํ๋กํ์ผ๋ฌ๋ก ์คํ ์๊ฐ์ ๋ณด๋ฉด ๋ถ๋ช ํ ์ค์ํ๊ฑฐ๋ ์ด์ ์๋ ๋ชฐ๋๋ ์ง์ ๋๋ฌธ์ ํฌ๊ฒ ๋๋ ค์ง๋ ๊ตฌ๊ฐ์ด ํ๋ ์ฏค ๋ํ๋๋ค.
ํนํ ๊ตฌ๊ธ๋ง๊ณผ ๊ธฐํ ๋ธ๋ก๊ทธ์ ๋๋ฆฌ ํผ์ ธ ์๋ ์ฝ๋๋ค์ ๊ทธ๋๋ก ๋ฐ๋ผ์ ์ฐ๊ธฐ ์ ์ ํ๋กํ์ผ๋ฌ๋ก ๊ฒ์ฆ์ ํด ๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค. ์๋ฌด๋ฆฌ ์ ๋ช ํ๊ณ ๊ฐ๋จํ๊ณ ํ์คํด ๋ณด์ด๋ ์ฝ๋๋ผ๋ ๋ญ๊ฐ ์ด์ํ ์ ์ด ๋ค ํ๋์ฉ ์๋ค.
์ฝ์ ํ๋ฉด์ด ์๋ฌด๋ฆฌ ๋ฉ์๋ค์ง๋ง ์๊ฐํ ํด ์ค ์ ์๋๊ฒ ์ต๊ณ ๋ค. ์คํ ์๊ฐ์ด ๊ทธ๋ํ๋ก ๋์ ์๋ค๋ฉด ๋ง๋๊ธฐ ์ ์ผ ํฐ ๋์ด ์ ์ผ ๋๋ฆฐ ๋ ์๋๊ฐ? ๊ทธ ํจ์๋ง ์ฃฝ์ด๋ผ ๋น ๋ฅด๊ฒ ๋ง๋ค๋ฉด 100์ ๋ง์ ์ ์ต์ 80์ ์ ๋ฐ์ ์ ์๋ค. Spring์ผ๋ก ๊ฐ๋ฐ์ ํ ๋ ์์ฃผ ์ฌ์ฉํ์๊ณ ๋ณ๋ชฉ๊ตฌ๊ฐ์ ๋ง์ด ์ก์ ๋์๋ค. ์ ๋ง ์ข์ ํ๋ ํด์ธ๋ฐ ์ต๊ทผ์๋ ์ปค๋ฎค๋ํฐ๊ฐ ๋ฐ์ด์ด ๋๊ฑด์ง ์ด ํ๋ก์ ํธ๋ฅผ ์ด์ด ๋ฐ์์ ๊ณ์ ๊ฐ๋ฐํ ์ฌ๋์ ๊ตฌํ๋ค๋ ๋ฉ์ผ์ ๋ณด๋ด ์ค๋๋ผ. ๊ทธ๋๋ ์์ง์ ์ธ๋ง ํ๋ค๊ณ ์์ ํ๋ค.
๋ด๊ฐ ๋ง๋ ์น ํ์ด์ง๊ฐ ์น๊ณจ์ฐฌ PWA ํ์ด์ง์ธ์ง ๊ฒ์ฌ ํด์ฃผ๋ ํด์ด๋ค. PWA์ ๋ํด์ ์์์ ์์๋ณด์ ๋ฏธ์ํ๋ค.
Node๋ก ์๋ฒ๋ฅผ ๋ง๋ค์๋ค๋ฉด ์๋ฒ์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ์ถ์ ๊ฒ์ด๋ค. velog์ Artillery๋ฅผ ์ค๋ช ํด ์ฃผ์ ๋ถ์ด ์์ด ์ด ๊ธ์ ๋ณด๋ฉด ์ข๋ค. ๐ Nodeํ๊ฒฝ์์ Artillery๋ฅผ ํ์ฉํ ์คํธ๋ ์คํ ์คํธ
์ ๋ REST API ํ ์คํธ์ฝ๋ ๋ง๋ค๋ status code ํ์ธ๋ง ๋ฃ์๋๊ฐ ๋ง์๋ฐ, ์ด๊ฑฐ๋ ๊ฝค ๋์์ด ๋๋๋ผ๊ตฌ์ ใ ใ
ํ๋ถ์ ๋๋ถ๋ญ์ด์ง๋ง.. ํ๋ค๋ชปํด ํ ์ดํ๋ก์ ํธ ํ ๋ ์ ์ฉํด๋ณผ ์ ์๋ ์ข์ ๋ด์ฉ๋ค์ด๋ค์! ๊ฐ์ฌํฉ๋๋ค.
์ง์ง ๋ชจ๋ ๊ธ ์ ๋ ํด์ผ๊ฒ ๋ค ์ ์ฉํ๊ณ ๊น๋ํ ๊ธ ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค!
์๋ ๊ตฌ๋ ๊ธฐ๋ฅ์ด ์๋ค๋ ใ ใ ๊ธ ํ๋์ฉ ์ ์ฝ๊ณ ์์ต๋๋ค~
๊ธ ์ ์ฝ๊ณ ๊ฐ๋๋ค! ํฌ๋กค๋ง์ ๋ํ ๊ธ ๋ณด๊ณ ๋ค์ด์๋๋ฐ....๋ฌ๋ฌํ ๊ธ๋ค์ด ๋๋ฌด ๋ง๋ค์ ํฌ.....์ ์ฝ๊ณ ๊ฐ๋๋ค!
๋ณด์ ์ฝ๋ฉ์์๋ ๊ถ๊ณ ์ฌํญ์ผ๋ก ์คํํธ๋ ์ด์ค๋ ์ ๊ฑฐํ๋ผ๊ณ ํด์. ์์๋ถํฐ logging์ ์ฌ์ฉํ๋ ์ต๊ด๋ค์ด๋๊ฒ ์ข์์
ํ๋ด ๋ฐฐํฌ๋ด๋นํ๋ ์ ์ฅ์์ ๊ทนํ ๊ณต๊ฐํฉ๋๋ค.ใ ใ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ ๊ธ ๋๋ฌด ์ ์ฝ์์ต๋๋ค. ์ด๋ฐ ์๊ณ ๊ทธ๋ฐ ๊ธ์ ์ ๊ฐ์ ์ด๋ค์ ์ํด ์จ์ฃผ์๋ค๋ ์ง์ฌ์ผ๋ก ๊ฐ์ฌํฉ๋๋ค.
๋ณ์ ์ด๋ ์๊ธฐ์๊ฐ๋ถํฐ ์ทจํฅ์ ๊ฒฉ ๋นํด๋ฒ๋ ธ๋๋ฐ
๋ ํฌ์คํ
๋ณด๋ฉฐ ์กด๋ ๊ฐํํ๋ค
๋น์ ์๊ฐ ํ๋ฒ๋๋ณผ๋ ์กด๋๋ฉ์ง
์ฌ์ฝ์ ์ถ์๋ฌ๋ ๊ธ์๋ฌ์ผ.. RESPECT!!
์คํ๋ง์ผ๋ก log๋ง ์ฌ์ฉํด๋ดค๋๋ฐ ์ด๋ฐ ๋ฌธ์ ์ ์ด ์์๊ตฐ์.
ํ์ฌ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ๋์์ด ๋ง์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ฑ์ ๋ธ๋ก๊ทธ์์.
์ฌ๋ฐ๋ ๊ธ์ด๋ค์. TDD์ ๋ํ ๊ด์ ์ด ์ธ์๊น์ต๋๋ค. ์ ๋ํ TDD๋ฅผ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ์ฑํํ ํ์ฌ์์๋ ๊ทผ๋ฌดํด๋ณด๊ณ , (๋๋ถ๋ถ์) ๊ทธ๋ ์ง ์์ ๊ณณ์์๋ ์ผํด ๋ณด์๋๋ฐ ๊ฒฐ๋ก ์ ์ผ๋ก ์ง๊ธ์ ์ด๋์ ๋ ์๋ ํฌ์ง์ ์์ ์ ๊ทผํ๊ณ ์์ต๋๋ค. ํ ์คํธ์ ์ด๋ฅผ ๋ฐํ์ผ๋กํ CI/CD ๊ตฌํ์ ๋ฌผ๋ก ์์ผ๋ฉด ์๋ ๊ฒ ๋ณด๋ค๋ ๋ซ์ง๋ง, ํ ์คํธ์ ๋๋ฌด ์ง์ฐฉํ ๋๋จธ์ง ์ฃผ๊ฐ์ด ์ ๋๋๋ ์ํฉ์ ํผํ๋ ์ ์ ์ง์ผ ๊ฐ๋ฉด์ ์ ๋นํ ์ ํธ๋ผ์ด์ ์ด์ ์ ํ๋ ์ ๋๊ฐ ๋ฑ ์ ๋นํ ๊ฒ ๊ฐ์์. ๊ฐ์ธ์ ์ผ๋ก๋ ์ ์ ์ ์ฌ์ฉ Flow๋ฅผ ์๋ฎฌ๋ ์ด์ ๊น์ง ํด ๊ฐ๋ฉด์ ์์ฃผ ๊น๊ฒ ํ ์คํธํ๋๊ฑด ์กฐ๊ธ ๊ด๊ธฐ์ฒ๋ผ ๋๊ปด์ ธ์, ์บก์ํ๋ ๊ฐ๋ณ ์๋ํฌ์ธํธ ์ ๋์ ๋ ๋ฒจ์ด ๊ฐ๋ฐ์๊ฐ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ธฐ์ ๋ฑ ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ ์ด์์ ๊ฒ์๋ QAํ์ ์์ญ์ด์ฃ .
์ฌ์ค์ ์ด๋ค ์์ญ์์๋ ๋น์ทํ๊ฒ ์ ์ฉ๋ ์ ์๋ ์๊ธฐ ๊ฐ๊ธฐ๋ ํฉ๋๋ค. ๋ฒจ๋ก๊ทธ์์๋ ๊ทธ๋ ์ง๋ง ์ด๋ค๋ณด๋ฉด ๊ฐ๋์ ๋ฐฉ๋ฒ๋ก ์ ๋๋ฌด ์ฌ์ทจํ ๋๋จธ์ง ๋ณธ์ง์ ์ธ ๋ถ๋ถ์ ๋์น๊ณ ์๋ ์ฌ๋๋ค์ด ๋ณด์ด๊ฑฐ๋ ์.
๊ทธ๋ฆฌ๊ณ ์ฌ๋ด์ด์ง๋ง
[๊ทธ๋ฅ ํ์ด ํ์๊ณ ํ๋ฉด ๋ฐ๋ผ์ ํ๊ณ ์ ํ๋ฉด ๋ด๊ฐ ํ์๊ณ ํ๋ ์ฒญ๊ฐ๊ตฌ๋ฆฌ ๊ฐ์ ๋์ด์๋ค. ๐คช]
๊ฒฐ๊ตญ (๊น์ด์ ์ฐจ์ด๊ฐ ์๊ฒ ์ง๋ง) ์ด๋ ํ์์๋ TDD๋ ํ์ ๊ฑฐ๋ค์. TDD ํฌ๋ณด์ด ์ฒญ๊ฐ๊ตฌ๋ฆฌ์ธ๊ฐ์? ใ
ใ
ใ
์ทจ์ ์ด์ ์ฆ์ฐพํด๋๊ณ ๋ฌด์จ๋ง์ธ์ง ๋ชฐ๋ผ ๋์ถฉ๋ดค๋๋ฐ
3๊ฐ์๋ง์ ๋ค์๋ณด๋ ์ ์๊ฒ ๋คํ์ํ ๋ถ์กฑํ ๋ถ๋ถ๋ค์ด๋ค์
์ข์๊ธ ๋ง์ด ์จ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ใ
๊ธ์ ์ฝ์ด์ ์ ์ข์ ์ ๋ณด๋ค ํ๋ฉด ํญ์ ์ด๋ถ์ด์๋ค.. ์ ์ฝ์์ด์!
Read the article well! I came in after seeing an article about crawling....there are too many sweet articles.
https://mobisoftinfotech.com/services/cloud-development-services
Interesting piece of content thanks for sharing. https://clinicianapp.in/
์ ๊ณ ๋ค์ด์ค๋ฉด์ ๋ก๊ทธํ์ผ์ ์ค์์ฑ์ ์ ๋ง ๋ผ์ ๋ฆฌ๊ฒ ๋๊ผ์์ต๋๋ค.
๋ญ๊ฐ ์๋ฌ๊ฐ ๋์ ํ์ธ์ค์ด๋ผ๊ณ ์ฌ์์๊ฒ ๋งํ๋ฉด ์ฐ์ ๋์์ค๋ ๋ต๋ณ์ ๋ก๊ทธํ์ผ ํ์ธ ํ๋๋ ๊ฒ์ด์์ต๋๋ค.
๊ณต๊ฐ๊ฐ๋ ๊ธ ์ ์ฝ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.