Skip to content

Lee-WonJun/JDD-Description

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 

Repository files navigation

JDD (Ju-Dung-A-Li Driven Development/์ฃผ๋‘ฅ์•„๋ฆฌ ์ฃผ๋„ ๊ฐœ๋ฐœ)

JDD_Logo

JDD ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ๋ณด๋‹ค ๋ณ€๋ช…๊ฑฐ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ๊ฐํ•˜์—ฌ ์ˆ˜๋งŽ์€ ๋ฒ„๊ทธ๋ฅผ ์–‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

JDD ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ค‘์š” ๊ฐ€์น˜๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

์šฐ๋ฆฌ๋Š”

- ๋‚จ์ด ์“ฐ๋Š” ๊ธฐ์ˆ ๋ณด๋‹ค๋Š” ๋‚ด ๊ฒƒ์„

- Clean ํ•œ ์ฝ”๋“œ๋ณด๋‹ค๋Š” Tricky ํ•œ ๊ฒƒ์„

- ๋ฒ„๊ทธ Fix ๋ณด๋‹ค๋Š” ๋ณ€๋ช…์„

- ๊ท€์ฐฎ์Œ๋ณด๋‹ค๋Š” ํŽธํ•จ์„

๊ฐ€์น˜ ์žˆ๊ฒŒ ์—ฌ๊ธด๋‹ค. ์ด ๋ง์€, ์™ผ์ชฝ์— ์žˆ๋Š” ๊ฒƒ๋“ค์€ ๊ท€์ฐฎ๊ณ  ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฒƒ๋“ค์€ ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋†’์€ ๊ฐ€์น˜๋ฅผ ๋‘”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

JDD ๋ฅผ ์‹ค์ฒœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‰ฌ์ง€ ์•Š๊ณ  ํ—˜๋‚œํ•œ ๊ธธ์ด์ง€๋งŒ ๊พธ์ค€ํ•˜๊ฒŒ ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ด€๋ จ๋œ ํž™ํ•œ ์šฉ์–ด๋ฅผ ๋“ค๋จน์ด๋ฉด์„œ ์‹ค์ œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊พธ์ค€ํ•œ ์—ฐ์Šต์ด ํ•„์š”ํ•˜๋‹ค.

JDD ๋ฅผ ์œ„ํ•œ ์ง€์นจ์„œ

JDD ๋ฅผ ์œ„ํ•œ ์†Œ์–‘

JDD ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ์†Œ์–‘์„ ํ•ญ์ƒ ๋ช…์‹ฌํ•˜์ž.

์ฐธ๋œ ๋ฆฌ๋”

์ž ๋“ .. ์•„๋‹ˆ ์ฐธ๋œ ๋ฆฌ๋”๋Š” ๋ถ€ํ•˜์ง์›์„ ๊ดด๋กญํžˆ์ง€ ์•Š๋Š”๋‹ค.

- ๋ˆ„๊ตฐ๊ฐ€ PR ์„ ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๊ฐ€ ๋ณด๊ธฐ ์ข‹์€ ์ผ์ด๋‹ค. LGTM(Looks Good To Me).

- ๋ˆ„๊ตฐ๊ฐ€ PR ์„ ๋‚ ๋ฆฌ๋ฉด ์ž๋™์œผ๋กœ LGTM ๋ฅผ ๋‚ ๋ฆฌ๋Š” CI/CD ๋ฅผ ํ™œ์šฉํ•ด๋ผ

- ๋™๋ฃŒ์—๊ฒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ค‘์š”ํ•จ์„, ๊ธฐํš์ž์—๊ฒ ๊ฐœ๋ฐœ์˜ ์–ด๋ ค์›€์„ ์—ญ์„คํ•˜๋ผ.
๊ทธ ์‚ฌ์ด์—์„œ man/month๋งŒ ์ถ•๋‚ด๋„๋กํ•œ๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด 'ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ'๋ผ๊ณ  ํ•ด๋ผ

- ์˜›๋‚  ๋ฐฉ์‹์„ ๊ณ ์ˆ˜ํ•œ๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ ํ•˜๋ฉด '๋น„์ฆˆ๋‹ˆ์Šค ์ค‘์‹ฌ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•ด๋ผ

- ์œ ์ง€๋ณด์ˆ˜์„ฑ์€ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ ํ•˜๋ฉด 'MVP(Minimum Viable Product)'๋ผ๊ณ  ํ•ด๋ผ

๋ฐฉ์–ด์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ฐฉ์–ด์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ฐœ๋ฐœ์ž์˜ ๊ธฐ๋ณธ ์†Œ์–‘์ด๋‹ค.

- ๋ฐฉ์–ด์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ผ ์ฝ”๋“œ๋กœ ๋ฐฉ์–ดํ•˜์ง€ ๋ง๊ณ  ๋„ˆ์—๊ฒŒ ๋“ค์–ด์˜ค๋Š” ์ผ๊ฐ์„ ๋ฐฉ์–ดํ•ด๋ผ

- ์ž‘์—…๋Ÿ‰์ด ๋งŽ์€๊ฐ€? ๊ทธ๋ƒฅ ํŠน์ • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ๋งŒ ๋Œ์•„๊ฐ€๊ฒŒ ์งœ๊ณ  ๋‚˜๋จธ์ง€๋Š” "๊ณ ๋„ํ™”" ์ž‘์—…์—์„œ ํ•œ๋‹ค๊ณ  ํ•ด๋ผ. "๊ณ ๋„ํ™”" ์ž‘์—… ์ „์— ์ด์งํ•˜์ž.

- ๊ตฌํ˜„์˜ ๊ฐ€๋Šฅ์„ฑ์€ ๋‚จ์ด ์•„๋‹Œ ๊ฒฐ๊ตญ ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๋‚ด๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ง˜ ํŽธํ•˜๊ฒŒ ๊ธฐํš์ž์—๊ฒŒ ๊ทธ๊ฑด ๊ตฌํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋งํ•˜์ž.

์„ฑ๊ณผ ์œ„์ฃผ ํšŒํ”ผ

์ผ ์ž˜ํ•˜๋Š” ์ฒ™ ํŽธ์•ˆํ•œ ์ƒํ™œ์„ ์œ„ํ•ด ์„ฑ๊ณผ ์œ„์ฃผ๋กœ ํ–‰๋™ํ•ด์•ผ ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ

๋™์‹œ์„ฑ์€ ์–ด๋ ต๊ณ , ์„ฑ๊ณผ๊ฐ€ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š”๋‹ค.

- ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋Š” ๊ฐ€๋” ๋ฐœ์ƒํ•œ๋‹ค.
๊ฐ€๋” ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฑฐ์— ๋น„ํ•˜์—ฌ ์‚ฌ์šฉ์€ ๋„ˆ๋ฌด ํŽธํ•˜๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๊ทธ๋Ÿด ์ผ ์—†๋‹ค๊ณ  ํ•˜๋ฉด ๊ทธ๋งŒ์ด๋‹ค.

- ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ์—…๋ฌด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์–ธ์–ด๋ฅผ ์š•ํ•˜๋ฉด์„œ ์ด ์ž‘์—…์ด ์™œ ์–ด๋ ค์šด์ง€ ์„ค๋ช…ํ•ด๋ผ,
์•„ ์ด ์–ธ์–ด๋Š” Actor ๋ชจ๋ธ์ด ๋นˆ์•ฝํ•ด์„œ์š”, CSP(Communicating Sequential Processes) ๊ตฌํ˜„์ฒด๊ฐ€ ์—†์–ด์„œ์š”, STM(Software Transactional Memory) ์ด ์ง€์› ์•ˆ ๋ผ์„œ์š”.
์š•์„ ํ• ์ˆ˜๋ก ์ž‘์—… ๊ธฐํ•œ์ด ๋Š˜์–ด๋‚œ๋‹ค.

- ๋น„๋™๊ธฐ ํ๋ฆ„ ๋‚ด์—์„œ ๋™๊ธฐํ•จ์ˆ˜๋ฅผ ๋ชฐ๋ž˜ ์จ๋„ ๋œ๋‹ค. ๋‚˜์ค‘์— ๋ณ‘๋ชฉ ์ฐพ๋Š” ์ž‘์—… + ๋น„๋™๊ธฐ๋กœ ๊ฐœ์„ ํ•˜๋Š” ์ถ”๊ฐ€ ์ž‘์—… ๊ธฐํ•œ๊นŒ์ง€ ํ•จ๊ป˜ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์„œํ™”

์šฐ๋ฆฌ์˜ ๋ณธ๋ถ„์„ ์žŠ์ง€ ๋ง์ž.

- ์ฃผ์„์€ ์ ˆ๋Œ€ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ๋“ค๋จน์ด์ž. ๋ฌผ๋ก  ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋ฆฌ๋”๋ธ”ํ•˜์ง€๋Š” ์•Š๋‹ค.

- ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๋‹ค, ์–ด๋– ํ•œ ์ด์œ ์—์„œ๋“ ์ง€ ๋ฌธ์„œ ์ž‘์„ฑ์€ ๊ธˆ๋ฌผ. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด "์ฝ”๋“œ๊ฐ€ ๊ณง ๋ฌธ์„œ".

- ํžˆ์Šคํ† ๋ฆฌ๋Š” ํ•„์š” ์—†๋‹ค. ๊ณผ๊ฑฐ์— ์—ฐ์—ฐํ•˜์ง€ ๋ง์ž

- ์ธ์ˆ˜์ธ๊ณ„ ๋ฌธ์„œ๋Š” ํ•„์š” ์—†๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋‚ด ์ฝ”๋“œ๋Š” ๋ณด๋ฉด ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๊ฐ„๋‹ค๊ณ  ํ•˜์ž. ๋ฏธ๋ จ ์—†์ด ๋– ๋‚˜์ž.

- GPT์˜ ๋ฐœ์ „ ์†๋„๋Š” ์–ด๋งˆ๋ฌด์‹œํ•˜๋‹ค. ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ๊ณง ์ธ๊ณต์ง€๋Šฅ์ด ์•Œ์•„์„œ ๋งŒ๋“ค์–ด ์ค„ ๊ฒƒ ์ด๋ผ๊ณ  ๋งํ•˜์ž.

- AI ์‹œ๋Œ€, ChatGPT๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์ž. ๋ฌธ์„œํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉด ChatGPT์—๊ฒŒ ์งˆ๋ฌธํ•˜์—ฌ ๋ฌธ์„œ ๋‚ด์šฉ์„ ์ƒ์„ฑํ•˜๊ฒŒ ํ•˜์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด, "์ธ๊ณต์ง€๋Šฅ์ด ๋” ์ •ํ™•ํ•˜๋‹ค"๊ณ  ํ•˜์ž

ํ˜‘์—…

๋‹จ์–ด๋ถ€ํ„ฐ ํ˜„๊ธฐ์ฆ์ด ์˜จ๋‹ค.

- Disagree and Never Commit

- ์—ฌ๋Ÿฟ์ด์„œ ๋™์‹œ์— ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ๋“  ๋‚˜๋ˆ ์„œ ๋”ฐ๋กœ ์ž‘์—…ํ•œ ๋’ค ํ•ฉ์น˜์ž๊ณ  ํ•˜์ž. ์ƒ๋Œ€๋ฐฉ๋„ ํ•˜๋‚˜๋ฅผ ๋‘๊ณ  ๋ถ€๋Œ€๋ผ๋ฉฐ ์ž‘์—…ํ•  ์ƒ๊ฐ ๋”ฐ์œ„ ์—†๋‹ค.

- ๋ธŒ๋žœ์น˜ ๋จธ์ง€(Merge) ์ค‘ ์ถฉ๋Œ ๋‚  ๊ฒƒ ๊ฐ™์€ ์‹œ์ ์— ํœด๊ฐ€๋ฅผ ์“ฐ๋Š” ๊ฑด ํ•„์ˆ˜๋‹ค.

- ๋ธŒ๋žœ์น˜ ๋จธ์ง€(Merge) ์ค‘ ์ถฉ๋Œ์ด ๋‚˜๋ฉด ours๋ฅผ ๊ธฐ์–ตํ•ด๋ผ. ๋‚ด ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ์šฐ์„ ์ด๋‹ค. ์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์„ ๊ณ ๋ คํ•  ํ•„์š”๋Š” ์—†๋‹ค.

- ํŽ˜์–ด์ฝ”๋”ฉ์€ ์˜์™ธ๋กœ ๊ดœ์ฐฎ๋‹ค. ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋Š” ๋จธ๋ฆฌ๋ฅผ ์ข€ ๋น„์›Œ๋„ ๋˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋Š” ์˜คํƒ€ ์ •๋„๋งŒ ์žก์•„์ฃผ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค. ์ตœ๋Œ€ ์žฅ์ ์€ ์ž‘์„ฑ๋œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ฑ…์ž„์ด ์ค„์–ด๋“ ๋‹ค๋Š” ์ ์ด๋‹ค.

- ๋ฌด์Šจ ์ž‘์—…์ธ์ง€ ๋ณ„๋กœ ์•Œ๋ฆฌ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” `chore: trivial`์ด๋ผ๊ณ  ํ•˜์ž. ๋ณ€ํƒœ๊ฐ€ ์•„๋‹ˆ๊ณ ์„œ์•ผ ์ด๋Ÿฐ ์ปค๋ฐ‹์„ ์ฝ์–ด๋ณด๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค.

- PR ์„ ๋จธ์ง€(Merge)ํ•  ๋•Œ์—๋Š” Squash merge ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์„œ ์ค‘๊ฐ„์ค‘๊ฐ„์— ๋“ค์–ด๊ฐ„ ๋ป˜์ง“๋“ค์„ ์ˆจ๊ธด๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด '์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ'๋ผ๊ณ  ํ•˜์ž.

- ์ปค๋ฐ‹์€ ๋‚˜๋ˆŒ ๋•Œ๋Š” ์ž‘์—…์ด๋‚˜ ๊ธฐ๋Šฅ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ํ•œ ๋ฒˆ์— ๊ณ ์นœ ๋งŒํผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ์–ด์ฐจํ”ผ ๋จธ์ง€ ๋˜๋ฉด ๋‹ค Squash ๋ผ์„œ ์ž˜ ์•ˆ ๋ณด์ธ๋‹ค.

- PR Description ์€ ์ž‘์—… ๊ด€๋ฆฌ ํˆด์˜ task ๋งํฌ๋งŒ ํ‹ฐ์ผ“์œผ๋กœ ๋„ฃ์–ด ์ค€๋‹ค. ๋ฌผ๋ก  ๋งํฌ๋ฅผ ํƒ€๊ณ  ๊ฐ€๋„ ์„ค๋ช… ๊ฐ™์€ ๊ฑด ์—†๋‹ค.

- ํ˜‘์—…์—๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํ‚ฌ์ด ํ•„์ˆ˜๋‹ค. ํ’๋‘” ์ฃผ๋‘ฅ์•„๋ฆฌ์˜ ์ˆ ๋กœ ์ƒ๋Œ€๋ฐฉ์„ ํ˜„ํ˜น์‹œ์ผœ PR ์— ๋‚ด ๊ฒŒ์œผ๋ฆ„์ด ํ† ๋ก  ๋‚ด์—ญ์œผ๋กœ ๋‚จ๊ฒจ์ง€์ง€ ์•Š๋„๋ก ๋Œ€ํ™”๋ฅผ ์œ ๋„ํ•œ๋‹ค.

- ํ—ˆ๋ฝ๋ณด๋‹จ ์šฉ์„œ๊ฐ€ ์‰ฝ๋‹ค. ์–ด๋–ป๊ฒŒ๋“  ๋น ๋ฅด๊ฒŒ ๋จธ์ง€(Merge) ํ•ด์•ผ ํ•œ๋‹ค.

- ๋™๋ฃŒ์˜ ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜๋‚˜ ์˜คํƒ€, ๊ฐ„๋‹จํ•œ ์‹ค์ˆ˜(์ค‘๋ณต๋œ ๋ณ€์ˆ˜, ํŒ€ ์ฝ”๋“œ ๊ทœ์น™, Lint์™€ ๊ฐ™์€)๋ฅผ ์ฐพ๋”๋ผ๋„ ๊ณต์œ ํ•˜์ง€ ๋งˆ๋ผ. ๋™๋ฃŒ๊ฐ€ ๋‹น์‹ ์ด ์กฐํ™”๋กญ๊ฒŒ ์–ด์šธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์€์€ํ•˜๊ฒŒ ๋ˆˆ์น˜์ฑ„๊ฒŒ ํ•˜๋ผ. ๋™๋ฃŒ๋„ ๋‚ด ์‹ค์ˆ˜๋ฅผ ๋ˆˆ๊ฐ์•„ ์ค„ ๊ฒƒ์ด๋‹ค.

- ์ปค๋ฐ‹(Commit) ์ˆ˜๊ฐ€ ์ ์„์ˆ˜๋ก ์ฝ”๋“œ์—๋Š” ์ฒœ์žฌ์„ฑ์ด ๋“œ๋Ÿฌ๋‚œ๋‹ค. ์ปค๋ฐ‹ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๋™์•ˆ ์ƒ๊ฐ๋„ ์•ˆ ํ•ด๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค git reset ๋ช…๋ น์–ด๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ master ๋ธŒ๋žœ์น˜์— ๊ฐ•์ œ ํ‘ธ์‹œํ•œ๋‹ค. ์ปค๋ฐ‹ ์ด๋ ฅ์—๋Š” ๋‚˜๋งŒ ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์ฒœ์žฌ์„ฑ์„ ๋…์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ชจ๋ฅด๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋™๋ฃŒ๋“ค์ด ์ •๋ฆฌํ•œ ๋ฌธ์„œ๋งŒ ์“ฑ ์ฝ์–ด๋ณธ๋‹ค. ์ •์ž‘ ๊ธฐ์ˆ ์„ ์จ์•ผํ•  ๋•Œ๋Š” ๋™๋ฃŒ์˜ ์‹œ๊ฐ„์„ ๋นผ์•˜์•„ ํ•ด๋‹ฌ๋ผ๊ณ ํ•œ๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด 'ํŒ€์›Œํฌ'๋ผ๊ณ  ํ•ด๋ผ.

- ์ฝ”๋“œ๋ฆฌ๋ทฐ(Code Review)๋Š” ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‚ด ์ฝ”๋“œ๊ฐ€ ๋ฌด์กฐ๊ฑด ์ •๋‹ต์ด๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์‹ค์ˆ˜์ธ ์ฒ™ ๋จธ์ง€(Merge) ํ•ด์•ผ ํ•œ๋‹ค.

- ํ‘ธ์‹œ๋ฅผ ์ž˜๋ชปํ–ˆ์„๋• reset --hard๋ฅผ ์• ์šฉํ•˜์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผํ•˜๋ฉด revert๋Š” ์ปค๋ฐ‹ ๊ธฐ๋ก์ด ์ง€์ €๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜์ž.

Protection

- PR์€ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋ฐ”๋กœ master ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•œ๋‹ค.

- repository rule ์„ค์ •์€ ๊ฐœ๋ฐœ์„ ๋Š๋ฆฌ๊ฒŒ ํ•˜๋Š” ์ฃผ๋ฒ”์ด๋‹ค. ๋ชจ๋“  ๊ถŒํ•œ์„ ์—ด์–ด๋‘”๋‹ค.

- ์„œ๋ฒ„์˜ ๋ชจ๋“  ํฌํŠธ๋Š” ์—ด์–ด๋‘”๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ทจ์•ฝํ•˜๋‹ค๊ณ  ํ•˜๋ฉด IP ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ๋‹ตํ•œ๋‹ค.

- CICD๊ฐ€ ์‹คํŒจํ•ด๋„ ๋จธ์ง€ํ•œ๋‹ค.

- API key๋Š” public์— ์˜ฌ๋ ค๋„ ์ƒ๊ด€์—†๋‹ค. ์–ด์ฐจํ”ผ ์•„๋ฌด๋„ ๋ณด์ง€ ์•Š๋Š”๋‹ค.

๋ญ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์„ธ์ƒ์€ 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋ญ˜ ํ•˜๋“ ์ง€ ๋‚ด๊ฐ€ ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ ๊ฒƒ์ด๋‹ค.

๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ชจ๋˜์€ ํ˜„์žฌ์ด๋‹ค. ์ฆ‰ ์ง€๊ธˆ ๋‚ด๊ฐ€ ์“ฐ๋Š” ๊ธฐ์ˆ ์ด ๊ณง ๋ชจ๋˜ํ•œ ๊ธฐ์ˆ ์ด๋‹ค.

- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด Let it crash ์ „๋žต์ด๋ผ๊ณ  ํ•œ๋‹ค.

- ์–ธ์–ด์˜ Feature ๋ฅผ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ๋ˆ„๊ตฌ๋‚˜ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ์งœ๋‘” ๊ฑฐ๋ผ๊ณ  ํ•œ๋‹ค.

- ์–ธ์–ด์˜ Feature ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋œ๋‹ค.

- ์˜์กด์„ฑ์ด ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด, ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

- ์ฒด์ด๋‹(Chaining)์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด, Fluent API ์Šคํƒ€์ผ

- ์ฒด์ด๋‹์ด ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด, ๋””๋ฏธํ„ฐ ๋ฒ•์น™

- ํ•จ์ˆ˜๋“ค๋งŒ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด, ๋ฏธ๋‹ˆ ์–ธ์–ด๋กœ DSL ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค๊ณ  ํ•ด๋ผ

- ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด, Data-Driven Programming ์ด๋ผ๊ณ  ํ•ด๋ผ

- ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์กŒ๋‹ค? ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋ณด๋‹ค "์ˆœ์ˆ˜"ํ•˜๊ฒŒ ์ง  ๊ฑฐ๋ผ๊ณ  ํ•ด๋ผ

- ๋žŒ๋‹ค ํ•จ์ˆ˜๋กœ๋งŒ ๊ตฌ์„ฑํ•œ๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๊ณ ์ฐจํ•จ์ˆ˜ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค.

- ํŒจํ„ด์„ ์ „ํ˜€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋‹จ์ˆœ์„ฑ์˜ ์›์น™์ด๋ผ๊ณ  ํ•œ๋‹ค.

- Map-Reduce-Filter ๊ฐ™์€ ๊ณ ์ฐจํ•จ์ˆ˜๋Š” ์ผ์ ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์ด ์—ญ์‹œ ๋‹จ์ˆœ์„ฑ์˜ ์›์น™์ด๋ผ๊ณ  ํ•œ๋‹ค. Keep it simple, Stupid!

- ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ญ ๊ฐœ๋Š” ๋‹ฌ์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

- OOP(Object-Oriented Programming)๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์—์„œ FP ํŒจํ„ด(Functional Programming)์„ ์ ๊ทน ํ™œ์šฉํ•˜์ž.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ์“ฐ๋ฉด ๋” ์ข‹๋‹ค. Maybe ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑด ๊ธฐ๋ณธ ์ค‘์˜ ๊ธฐ๋ณธ. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด "์ด๊ฒŒ ์š”์ฆ˜ ์Šคํƒ€์ผ์ด์—์š”"

- FP ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์—์„œ OOP ํŒจํ„ด๊ณผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด, "FP๋Š” ์‹ค์šฉ์ ์ด์ง€ ์•Š๋‹ค"

- ๋‚ด ์ฝ”๋“œ ๋ณด๋‹ค ๊ธธ๋ฉด ์žฅํ™ฉ(verbose), ๋‚ด ์ฝ”๋“œ๋ณด๋‹ค ์งง์œผ๋ฉด ๋‚œํ•ด(esoteric)

- ์ฝœ๋ฐฑ ํ—ฌ์„ ๋ณด๊ณ  ๋ญ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋ฉด CPS(Continuation Passing Style) ๋ผ๊ณ  ๋‹ตํ•ด์ค˜๋ผ.

- ๋ชจ๋“  if ๋ฌธ์€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์จ๋ผ, ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด, "์•„ if ๋Š” ๋ฌธ์ด๊ณ  ์‚ผํ•ญ์€ ์‹์ด๋‹ˆ๊นŒ์š”"

- ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜, ์˜ต์…”๋„ ์ฒด์ด๋‹, ๋ฆฌ์—‘ํ‹ฐ๋ธŒ ๋“ฑ์„ ์“ฐ๊ณ  ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ๋งํ•ด๋ผ "๋ชจ๋‚˜๋”•ํ•˜๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ ",
๊ทธ๊ฒŒ ๋ญ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋ฉด "๋ชจ๋‚˜๋“œ์˜ ์ €์ฃผ๋กœ ์ธํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค" ๊นŒ์ง€ ๋งํ•˜๋Š” ๊ฑฐ๊นŒ์ง€ ํ•ด์•ผ ํ•œ๋‹ค.

- ๋‘ ๊ฐœ ์ด์ƒ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ์œผ๋ฉด MSA(Micro-Service Architecture) ๋‹ค.
ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ์Šคํฌ๋ฆฝํŠธ๋งŒ ๋”ฐ๋กœ ์žˆ์–ด๋„ MSA ๋‹ค.
๊ฑฐ๊ธฐ์— ์–ธ์–ด๊ฐ€ ๋‹ค๋ฅด๋ฉด ํด๋ฆฌ๊ธ€๋ž(polyglot)๊นŒ์ง€ ํ–ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ธ์–ด

๋‚ด ์–ธ์–ด๊ฐ€ ์šฐ์›”ํ•˜๋‹ค

- ์–ธ์–ด๋…ผ์Ÿ์—์„œ๋Š” ์„ ๋นต ํ•„์Šน์˜ ๋ฌธ์žฅ์ด ์žˆ๋‹ค "์–ธ์–ด๋Š” ๋„๊ตฌ๋‹ค"

- TypeScript, CoffeeScript, ClojureScript ๋“ฑ JS ์˜ ์Šˆํผ์…‹์€ ์ผ์ ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด JS๋Š” ์• ์ดˆ์— ๊ทธ๋ ‡๊ฒŒ ์„ค๊ณ„๋œ ์–ธ์–ด์ด๊ณ  ๊ทธ๊ฒƒ์ด ๊ณง ๊ทผ๋ณธ์ด๋ผ ํ•˜์ž.

- ๋ช‡๋ช‡ ์–ธ์–ด๋Š” ๊ตณ์ด ๋‚ด๊ฐ€ ๋ถˆํ‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. wtfjs / golang.sucks ๋“ฑ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ถˆํ‰์„ ์ธ์šฉํ•˜์ž.

์„ค๊ณ„

์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด๋„ ๋Œ์•„๋Š” ๊ฐ„๋‹ค.

- ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ด๋„˜, ๋งด๋ฒ„๋“ฑ ๊ตฌ์กฐ ์„ค๊ณ„์— ๋Œ€ํ•ด์„œ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด, ADT(Algebraic Data Type) ์—์„œ ํ•ฉํƒ€์ž…์ด ์–ด์ฉŒ๊ณ  ๊ณฑํƒ€์ž…์ด ์–ด์ฉŒ๊ณ 

- ํด๋ž˜์Šค์— ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ์ ์œผ๋ฉด, ์•„ ๊ทธ๊ฑด ๋ ˆ์ฝ”๋“œ๋กœ ์“ฐ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

- ์ƒ์†์ด ํ•ฉ์„ฑ๋ณด๋‹ค ํŽธํ•˜๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด OOP(Object-Oriented Programming) ์—์„œ๋Š” ๋‹น์—ฐํžˆ ์ƒ์†์„ ์จ์•ผ ํ•˜๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ํ•˜๋ฉด ๋œ๋‹ค.

- null ์€ 10์–ต ๋ถˆ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค. ๋ญ๋“  ์• ๋งคํ•˜๋ฉด null ์„ ๋ฆฌํ„ดํ•ด๋ผ

- Object ๋‚˜ Any ๋Š” ํด๋ฆฌ๋ชฐํ”ผ์ฆ˜์˜ ๊ทน์˜์ด๋‹ค. ๋ญ๋“  ์• ๋งคํ•˜๋ฉด Object ํƒ€์ž…์„ ๋ฆฌํ„ดํ•ด๋ผ,
Object ํƒ€์ž…์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์—์„œ null ์„ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•˜๋Š” ๊ฒŒ ๋ฒ ์ŠคํŠธ

ํ…Œ์ŠคํŠธ

์†”์งํžˆ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์งœ๋Š” ๊ฑด ์žฌ๋ฏธ์—†๋‹ค

- ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ „ํ˜€ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด repl ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚ฌ๋‹ค๊ณ  ํ•ด๋ผ.

- ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋–จ ๋•Œ๋Š” ์„ฑ๊ณตํ•˜๊ณ  ์–ด๋–จ ๋•Œ๋Š” ์‹คํŒจํ•˜๋ฉด, "์†์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ" ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด๋ผ

- ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์—†์–ด๋„, ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚ด๊ฐ€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด๋ผ. ๋ˆ„๊ฐ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด ๋‚ด ์ฝ”๋“œ๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•ด์„œ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•ด๋ผ

- ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด, ํ…Œ์ŠคํŠธ๋ฅผ ์‚ญ์ œํ•ด๋ผ

์„ฑ๋Šฅ์ตœ์ ํ™”

CPU ์„ฑ๋Šฅ์€ ๋‚ด ์‹ค๋ ฅ๊ณผ ๋‹ฌ๋ฆฌ ๋‚ ๋กœ ๋ฐœ์ „ํ•œ๋‹ค.

- DTO/VO ๋ณ€ํ™˜์€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ผ๊ณ  ํ•ด๋ผ

- DTO/VO ๋Š” ๋ฌผ๋ก  ์–ด๋–ค Model ๋„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋‘ Map (Dictionary) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด Data Oriented Programming ๋ผ๊ณ  ํ•ด๋ผ.
๋ฌผ๋ก  Validation ๊ฐ™์€ ๊ฑด ์•ˆ ํ•œ๋‹ค.

- DB ๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ผ. ์ •๊ทœํ™”๋‚˜ ๊ทœ์น™์€ ์ƒ๊ฐ์กฐ์ฐจ ํ•˜์ง€ ๋ง์•„๋ผ. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์ด ๋˜ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”

- ํŒจํ„ด์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜๋Š” ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ํด๋ž˜์Šค๋กœ๋„ ๋‚˜๋ˆ„์ง€ ๋งˆ๋ผ. N ์ค‘ ํฌ๋ฌธ๊ณผ if ๋ฌธ์œผ๋กœ ์ ˆ์ฐจ์ ์œผ๋กœ ์ž‘์„ฑํ•ด๋ผ,
๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์ด๊ฑด ์ง„์งœ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ผ๊ณ  ํ•ด๋ผ

- ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” ๊ทธ ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ๋„ ๊ธˆ๋ฌผ, ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ์š”์ฆ˜์€ "์ปดํŒŒ์ผ๋Ÿฌ" ํ•œํ…Œ ๋งก๊ธฐ๋Š” ๊ฒŒ ๋Œ€์„ธ๋ผ๊ณ  ํ•ด๋ผ

- ๊ฐœ"๋ฐœ์  ํ™”"ํ•ฉ์„ ์ถ”๊ตฌํ•œ๋‹ค.

ํœด๋จผ ์˜คํ† (Human Automation)

๋‚ด๊ฐ€ ํŽธํ•˜๊ธฐ ์œ„ํ•ด์„  ์ผ์„ ์ตœ๋Œ€ํ•œ ์˜คํ† ๋กœ ๋Œ๋ ค์•ผ ํ•œ๋‹ค.

์–ด์ฐจํ”ผ ๋ˆ„๊ตฐ๊ฐ€๋Š” ๊ทธ ์ผ์„ ๋งก์„ ๊ฒƒ์ด๋‹ค.

๊ทธ ๋ง์€ ์ฆ‰ ๋‚˜๋งŒ ์•„๋‹ˆ๋ฉด ์ž๋™ํ™”(Human Automation)๋ฅผ ์ด๋ค˜๋‹จ ๊ฒƒ์ด๋‹ค.

๋ฐฑ์—”๋“œ

๋ฐฑ์•ค๋“œ๋Š” ๋ชจ๋˜ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ํ•ต์‹ฌ์ด๋‹ค. ์—„ํ•œ๋ฐ ํž˜ ๋นผ์ง€ ๋ง์ž

- ๊ทธ๊ฑด ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์›๋ž˜ ๋ฐฑ์•ค๋“œ๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ๋ณด๋‹ค ๋ฐ”์˜๋‹ค๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด DBA ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด DevOps ์—”์ง€๋‹ˆ์–ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ๊ธฐํšํŒ€์—์„œ ๋จผ์ € ๊ธฐํšํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์šด์˜ํŒ€์—๊ฒŒ์„œ ๋จผ์ € ํ™•์ธ๋ฐ›์•„์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์ฑ—์ง€ํ”ผํ‹ฐ์—๊ฒŒ ๋จผ์ € ํ™•์ธ๋ฐ›์•„์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.

ํ”„๋ก ํŠธ์—”๋“œ

ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์œ ์ €๊ฐ€ ๋งˆ์ฃผํ•˜๋Š” ์ฒซ์ธ์ƒ์ด๋‹ค. ์—„ํ•œ๋ฐ ํž˜ ๋นผ์ง€ ๋ง์ž

- ๊ทธ๊ฑด ๋ฐฑ์—”๋“œ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์›๋ž˜ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ฐฑ์—”๋“œ๋ณด๋‹ค ๋ฐ”์˜๋‹ค๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ํผ๋ธ”๋ฆฌ์…”๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ๋””์ž์ด๋„ˆ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ์œ ์ €๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด์Šคํ„ฐ์—๊ทธ๋ผ๊ณ  ํ•ด๋ผ.
- ๊ทธ๊ฑด ๋””์ž์ธ์ด ์›๋ž˜ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด๋ผ.

QA

๋‚ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ฒ„๊ทธ๊ฐ€ ์—†๋‹ค

- ์ด ์ด์Šˆ๋Š” Known Issue ๋ผ๊ณ  ํ•ด๋ผ
- ์ด ์ด์Šˆ๋Š” Non Issue ๋ผ๊ณ  ํ•ด๋ผ
- ์ด ์ด์Šˆ๋Š” ์‚ฌ์šฉ์ž ๋ฌธ์ œ๋ผ๊ณ  ํ•ด๋ผ
- ์ด ์ด์Šˆ๋Š” ์ผ์ •์ƒ ๋ชป๊ณ ์นœ๋‹ค๊ณ  ํ•ด๋ผ
- ์ด ์ด์Šˆ๋Š” ์ธํ”„๋ผ ๋ฌธ์ œ๋ผ๊ณ  ํ•ด๋ผ
- ์ด ์ด์Šˆ๋Š” ์ผ์–ด๋‚ ์ผ ์—†๋‹ค๊ณ  ํ•ด๋ผ

DBA

DBMS ๊ฐœ๋ฐœ์ž๋ฅผ ๋ฏฟ์ž

- N+1 ๋ฌธ์ œ๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ์ด ์„ธ์ƒ์ด ์ด์ƒํ•œ ๊ฑฐ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง์ž.

- fetch join + paging ๋ฌธ์ œ๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ์ด ์„ธ์ƒ์ด ์ด์ƒํ•œ ๊ฑฐ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง์ž.

- slow query ๋ฌธ์ œ๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ์ด ์„ธ์ƒ์ด ์ด์ƒํ•œ ๊ฑฐ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง์ž.

- SQL / ORM ๋“ฑ์—์„œ ํž˜๊ฒน๊ฒŒ ์ฟผ๋งํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ๊ทธ๋ƒฅ ๋‹ค ๋ถˆ๋Ÿฌ์™€์„œ map/reduce/filter ์“ฐ๋Š” ๊ฒŒ ๋” ํŽธํ•˜๋‹ค.

- ์ •๊ทœํ™”๋Š” ํ•  ํ•„์š” ์—†์ด ํ…Œ์ด๋ธ” ํ•˜๋‚˜๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋ญ๋ผ ํ•˜๋ฉด join ๋น„์šฉ์˜ ์ ˆ๊ฐ์ด๋ผ๊ณ  ํ•˜์ž.

๋จธ์‹ ๋Ÿฌ๋‹

์š”์ฆ˜ ๊ธฐ๊ณ„๋Š” ๋Œ€์ถฉ ๊ฐ€๋ฅด์ณ๋„ ์•Œ์•„์„œ ์ž˜ ๋ฐฐ์šด๋‹ค.

- ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๊ฐ€ ์†Œ์ค‘ํ•œ ์‹œ์ ์— Validation set ์— ๋–ผ์ค„ ๋ฐ์ดํ„ฐ ๋”ฐ์œ„ ์—†๋‹ค. ์ฃ„๋‹ค ํ•™์Šต์— ๋„ฃ์–ด๋ฒ„๋ฆฌ์ž.

- ์˜ค๋ฒ„ํ”ผํŒ…์ด ์ผ์–ด๋‚˜๋ฉด ์˜คํžˆ๋ ค ์ข‹๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋”ด์ง€๋ฅผ ๊ฑธ๋ฉด "์‹คํ—˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์„ฑ๋Šฅ์ด ์ข‹์•˜๋Š”๋ฐ์š”."๋ผ๊ณ  ๋งํ•˜์ž.

- ์„ฑ๋Šฅ์ด ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•˜์ž.

- ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด ๋”ฅ๋Ÿฌ๋‹์ด ์›๋ž˜ ๊ทธ๋Ÿฐ ๊ฑฐ๋ผ๊ณ  ํ•˜์ž.

- ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ์ž‘๋‹ค๋ฉด ๋ชจ๋ธ ์ตœ์ ํ™”์˜ ๊ฒฐ๊ณผ๋ผ๊ณ  ํ•˜์ž. ์ตœ์ ํ™”์˜ ๋ถ€์ž‘์šฉ์œผ๋กœ ์„ฑ๋Šฅ์ด ์กฐ๊ธˆ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ๊ณ๋“ค์—ฌ์ฃผ๋ฉด ์ข‹๋‹ค.

- training ์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•˜๋ฉด, ๋” ์ข‹์€ GPU ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๋ฉด์„œ NVIDIA DGX B200 ๊ฐ™์€ ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์ž.

- inference ๊ฐ€ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•˜๋ฉด, ๋” ์ข‹์€ GPU ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๋ฉด์„œ NVIDIA H100 ๊ฐ™์€ ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์ž.

- Productization ์€ DevOps, MLOps ์—”์ง€๋‹ˆ์–ด์˜ ์—ญํ• ์ด๋‹ค. ๋ชจ๋ธ ๋ฆฌ์„œ์ฒ˜๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง์ž.

- Seed๊ฐ’ ๊ณ ์ •์„ ํ”ผํ•ด๋ผ. ์ด๋กœ์จ ์„ฑ๋Šฅ์ด ์ƒ๊ฐ๋ณด๋‹ค ์•ˆ ๋‚˜์™€๋„ Randomness ํƒ“์„ ํ•˜๋ฉฐ ์‹œ๊ฐ„์„ ๋ฒŒ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐํš

IT ์„œ๋น„์Šค ๊ธฐํš์ž๋Š” ์„œ๋น„์Šค์— ๊ณ„ํš ๋ฐ ๋กœ๋“œ๋งต ์ˆ˜๋ฆฝ + ํ˜‘์˜๋ฅผ ์ฃผ๋„ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๋ชจ๋‘ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งก๊ธฐ๋ฉด ๋œ๋‹ค.

- ๊ทธ๊ฑด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์„œ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ํ•ด๋ผ.

- ๊ทธ๊ฑด ๊ฐœ๋ฐœ์ž์˜ ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฑฐ๋ผ๊ณ  ํ•ด๋ผ.

- ์ž˜๋ชป๋œ ๊ธฐํš์„ ํ•ด๋„ ๊ทธ๊ฑฐ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์•Œ์•„์„œ ์ž˜ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค๊ณ  ํ•ด๋ผ.

- ๊ธฐํš์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ๊ทธ๊ฑฐ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์•Œ์•„์„œ ์ž˜ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค๊ณ  ํ•ด๋ผ.

- ๋‚ด ์ผ์ •์€ ์†Œ์ค‘ํ•˜์ง€๋งŒ ์ „์ฒด ์ผ์ •์€ ๊ด€์‹ฌ์ด ์—†๋‹ค ๋‚˜๋งŒ ์•ผ๊ทผ ์•ˆ ํ•˜๋ฉด ๋œ๋‹ค.

- ๊ทธ๋ƒฅ PPT ๋ฅผ ๋นจ๋ฆฌ ์ฐ์–ด์„œ ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ์—๊ฒŒ ์—…๋ฌด ์š”์ฒญ์„ ํ•˜๊ณ  ์„ค๋ช…ํ•ด์ฃผ๊ณ  ์† ํ„ธ๋ฉด ๋์ด๋‹ค. ์ดํ›„์— ์งˆ๋ฌธ๋“ค์€ ๋ฐ”์˜๋‹ค๊ณ  ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๋˜๊ฐ€ ํœด๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜์ž.

- ์œ„์—์„œ ์ด ๊ธฐํš์•ˆ์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ ๋งŒ ๋งํ•ด๋ผ.

- ์œ„์—์„œ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ฐ€์ง€๊ณ  ์ชผ๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์ด ํผํฌ๋จผ์Šค๊ฐ€ ์•ˆ ๋‚˜์˜จ๋‹ค๊ณ  ๋งํ•ด๋ผ.

๊ธฐํƒ€

์†”์งํžˆ ์ข€ ๋‡Œ์ ˆ์ธ๋“ฏ

- ๊ทธ๋‚  ๋ฐฐ์šด ๊ธฐ์ˆ ์€ ๊ทธ๋‚  ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ผ. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๊ทธ๋‚  ๋ฐฐ์šด ์ง€์‹์„ ์ž๋ž‘ํ•˜๋ฉด ๋œ๋‹ค

- ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ณต๋ถ€ํ•˜์ง€ ๋ง๊ณ , ํ•ด๋‹น ๊ธฐ์ˆ  ์Šคํƒ์˜ ๋‹จ์  ๋ฆฌ์ŠคํŠธ๋งŒ ๊ณต๋ถ€ํ•ด๋ผ. ๋ˆ„๊ฐ€ ํ•ด๋‹น ๊ธฐ์ˆ  ์Šคํƒ์„ ๋ฌผ์–ด๋ณด๋ฉด, ๋‹จ์ ์„ ๋“ค๋จน์ด์ž

- ๋„์ปค๊ฐ™์ด ๊ฐ€์ƒํ™”๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ๋“ค์–ด๊ฐ„ ๊ฑด ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„๋ผ. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ์˜ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•ด๋ผ

- ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ ์งœ๋†“๊ณ  ์—ด์‹ฌํžˆ ํ•˜๋Š” ์ฒ™ ๊ฒŒ์œผ๋ฆ„ ํ”ผ์šฐ์ž. ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋ฉด '๋ฆฐLean'ํ•˜๊ฒŒ

Reference

๋†€๋ž๊ฒŒ๋„ ๊ฝค ๋งŽ์ด ์ฐธ๊ณ ํ–ˆ๋‹ค

Contributing

๋” ์ข‹์€ ์ฃผ๋‘ฅ์•„๋ฆฌ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด PR ์„ ๋‚ ๋ ค์ฃผ์„ธ์š”.

License

JDD ๋Š” ์–ด๋– ํ•œ ์ œ์•ฝ์กฐ๊ฑด๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ ์ฑ…์ž„๋„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

About

Ju-Dung-A-Li Driven Development

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published