์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ํŠน์ง•
2.1. ์žฅ์ 2.2. ๋‹จ์ 
3. ์—ฌ๋‹ด4. Rails๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•œ๊ตญ ๋‚ด ์„œ๋น„์Šค ํ˜„ํ™ฉ5. ๊ด€๋ จ ๋ฌธ์„œ

1. ๊ฐœ์š”[ํŽธ์ง‘]



Ruby on Rails๋Š” Ruby๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ด๋งˆํฌ์˜ David Heinemeier Hansson์ด ์˜คํ”ˆ ์†Œ์Šค๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ์ค„์—ฌ์„œ Rails๋‚˜ RoR์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ํ’€ ์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๊ณ , non full-stack ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Sinatra ๋“ฑ์ด ์žˆ๋‹ค.

๋ฃจ๋น„์˜จ ๋ ˆ์ผ์ฆˆ์˜ ์ดํ›„ ๋“ฑ์žฅํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ํ’€์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Rails์˜ ๋””์ž์ธ์— ์˜ํ–ฅ์„ ๋ฐ›์•˜๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ ์ •๋„์ด๋‹คโ€‹. Python์˜ Django๋‚˜ PHP์˜ Laravel์ด ๊ทธ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์„ค๊ณ„๋˜์—ˆ๋‹ค. MVC ๋ชจ๋ธ ํŒจํ„ด์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๊ฐ€ Ruby์ธ์ง€๋ผ ๊ณ ๊ธ‰์ง€๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ์• ์ž์ผ ํ”„๋กœ์„ธ์Šค์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ์Šคํƒ€ํŠธ์—… ๊ธฐ์—…๋“ค์ด ๋งŽ์ด ์ฑ„ํƒํ•˜์˜€๋‹ค.

๋‹ค๋งŒ 2016๋…„ ๋ถ€ํ„ฐ Node.js๋ผ๋Š” ์‹ ํฅ ๊ฐ•ํ˜ธ๊ฐ€ ๊ฐ‘ํˆญํŠ€ํ•ด ์ ์œ ์œจ์ด ๋ฐ”์ง ์ซ“๊ธฐ๋Š” ์ƒํ™ฉ์ด๋‹ค. 2020๋…„ ์ดํ›„๋กœ๋Š” ์ „์„ธ๊ณ„์ ์œผ๋กœ Node.js๋ฅผ ๋” ๋งŽ์ด ์“ด๋‹ค.

2. ํŠน์ง•[ํŽธ์ง‘]

2.1. ์žฅ์ [ํŽธ์ง‘]

  • ์–ธ์–ด์˜ ํŠน์„ฑ์ด ์• ์ž์ผ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์‚ฐ์„ฑ์ด ๋†’๋‹ค.
  • ํ™•์žฅ์„ฑ๊ณผ ์ด์‹์„ฑ์ด ๋†’๋‹ค.[1]
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…ํ•  ๋•Œ ์—‘ํ‹ฐ๋ธŒ๋ ˆ์ฝ”๋“œ ํŒจํ„ด์„ ์ ์šฉํ•œ ORM์„ ๋„์ž…ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๋‹ค.
  • ์„ธ๋ถ€์ ์ธ ์„ค์ •์ด ์ ์€ํŽธ์ด๋‹ค.

2.2. ๋‹จ์ [ํŽธ์ง‘]

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ๊ตญ๋‚ด์˜ ์–˜๊ธฐ.
  • ํŒŒ์ด์ฌ์˜ ์žฅ๊ณ ๋งŒํผ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.
  • ์•”์‹œ์  ๊ทœ์•ฝ์ด ๋งŽ๋‹ค. [2]

3. ์—ฌ๋‹ด[ํŽธ์ง‘]

  • Ruby๋ฅผ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋„ ๊ฐ•์ขŒ ๋ช‡ ๊ฐœ๋ฅผ ๋ณด๋ฉด ์“ธ๋งŒํ•œ ๋ธ”๋กœ๊ทธ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น ๋ฅด๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ์Šคํƒ€ํŠธ์—… ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ๊ตญ์—์„œ๋Š” Ruby๋ผ๋Š” ์–ธ์–ด ์ž์ฒด๊ฐ€ ๊ต‰์žฅํžˆ ๋งˆ์ด๋„ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜์—๋Š” PHP์˜ ๋ผ๋ผ๋ฒจ์„ ์“ฐ๊ฑฐ๋‚˜, Python ์žฅ๊ณ , JavaScript ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.
  • ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ํŒŒ์ด์ฌ๋ณด๋‹ค๋Š” ๋А๋ฆฌ์ง€๋งŒ ๊นƒํ—ˆ๋ธŒ, ๊ทธ๋ฃจํฐ, ํŠธ์œ„ํ„ฐ[3],๋ฃจ๋น„๊ฐ€ ์ผ๋ณธ์ธ์ด ๊ฐœ๋ฐœํ•œ ์–ธ์–ด๋ผ ์ผ๋ณธ์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๋„ ๋งŽ๊ณ  ๋Œ€ํ˜•ํšŒ์‚ฌ๋“ค๋„ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์‹ค ํ•˜๋“œ์›จ์–ด ์ž์›์„ ๋นก์„ธ๊ฒŒ ํ™œ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(๊ฒŒ์ž„ ๋“ฑ)์ด ์•„๋‹Œ ์ด์ƒ, ์„ฑ๋Šฅ์€ ์–ธ์–ด์˜ ์†๋„๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค๋А๋ƒ ๋“ฑ ์™ธ๋ถ€์  ์š”์†Œ์— ์˜ํ–ฅ์„ ๋” ํฌ๊ฒŒ ๋ฐ›๋Š”๋‹ค.
  • Python์˜ Flask์— ํ•ด๋‹นํ•˜๋Š” Ruby์˜ ๋งˆ์ดํฌ๋กœ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Sinatra์ด๋‹ค.

4. Rails๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•œ๊ตญ ๋‚ด ์„œ๋น„์Šค ํ˜„ํ™ฉ[ํŽธ์ง‘]

๊ตฌ๊ธ€์— inurl:users/sign_in ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ๋ ˆ์ผ์ฆˆ๋ฅผ ์‚ฌ์šฉ์ค‘์ธ ์‚ฌ์ดํŠธ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋ฃจ๋ฏธ
  • ๋”๋ˆ„๋ณด(http://the-nuvo.com)
  • ๋ฆฌ๋…ธํŠธ
  • ๋งˆ์ด๋ฆฌ์–ผํŠธ๋ฆฝ
  • ๋ง๊ณ ํ”Œ๋ ˆ์ดํŠธ
  • ๋ชจ์•„ํผ
  • ๋ฐธ๋ฅ˜์˜ต์…˜
  • ๋ฐฐํ‹€์ฝ”๋ฏน์Šค
  • ๋ณผ๋ง๊ณ 
  • ์‚ฐํƒ€ ํฌ ํ† ์ต!
  • ์ƒค์ƒค๊ฑด๊ฑด
  • ์„ผํŠธ๋น„
  • ์Šค๋ƒ…์ƒต
  • ์Šคํƒฌํ”„ํŒก
  • ์ŠคํŠธ๋ผ์ž…์Šค
  • ์•„์ด๋…ธ์•Œ๋ฐ”
  • ์•„์ด์— ์Šค์ฟจ
  • ์•„์ž„8
  • ์—ฐ๋‘
  • ์—์ดํŠธํฌ๋ฃจ์ฆˆ
  • ์˜ค๋Š˜์˜์ง‘
  • ์™“์ฑ 
  • ์œ ์—ํ”„์˜คํŒฉํ† ๋ฆฌ
  • ์œ ์ €ํ•ด๋น—
  • ์‘๋‹ตํ•˜๋ผ ๊ตญํšŒ์˜์›
  • ์ด์Œ
  • ์ž์†Œ์„ค
  • ์žกํ”Œ๋ž˜๋‹›
  • ์ฆ๊ถŒํ”Œ๋Ÿฌ์Šค ์ธ์‚ฌ์ดํŠธ
  • ์ฑ„ํŒ…์บฃ
  • ์นด์นด์˜ค
  • ์ปคํ”ผํ•œ์ž” (https://withcoffee.app)
  • ์บ์‹œ์Šฌ๋ผ์ด๋“œ
  • ์ฝ”๋“œ๋ผ์ด์–ธ
  • ์ฝ”๋“œ์Šคํ„ฐ๋””
  • ์ฝ”๋“œ์ž‡
  • ํฌ๋ฆฌ๋งˆ(https://www.cre.ma)
  • ํด๋ ˆ๋น„
  • ํด๋ž˜์ŠคํŒ…
  • ํ…€๋ธ”๋ฒ…
  • ํ† ์Šค
  • ํŠธ๋ผ์ด์บฃ์น˜
  • ํŒŒ์ด๋ธŒ ๋ฝ์Šค
  • ํŒŒํฌ ํžˆ์–ด
  • ๋‹น๊ทผ๋งˆ์ผ“
  • ํ•ด๋จน๋‚จ๋…€
  • ํ˜ธํ…”๋ฐ•์‚ฌ
  • ํ•„๋””

5. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]

[1] ํ”„๋ ˆ์ž„์›Œํฌ์˜ 'ํ™•์žฅ์„ฑ(Scalability)'์ด๋ž€ ์‹œ์Šคํ…œ์˜ ์ŠคํŽ™์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ๊ทธ์— ๋งž์ถ”์–ด ๊ธฐ๋Šฅ์ด ๊ณ„์† ๋™์ž‘ํ•˜๊ฒŒ๋” ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์‹œ์Šคํ…œ์—์„œ 'ํ™•์žฅ์„ฑ'์€ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ํŠน์ •ํ•œ (์„œ๋ฒ„) ํ•˜๋“œ์›จ์–ด์˜ CPU๋‚˜ RAM์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์„ ์ˆ˜์ง์  ํ™•์žฅ์„ฑ์ด๋ผ๊ณ  ํ•˜๊ณ , ์•„ํ‚คํ…์ฒ˜ ์ž์ฒด๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ(ex. ๋‹จ์ผ ์„œ๋ฒ„ โ†’ ์„œ๋ฒ„/๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ/DB ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„ํ• )์„ ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. '์ด์‹์„ฑ'์€ ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€์ด๋‹ค.
[2] ํ”„๋กœ์ ํŠธ ์ดˆ๋ฐ˜์—๋Š” ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ด ์žฅ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ดˆ๋ฐ˜์„ ์ง€๋‚˜๋ฉด ์‚ฌ์ดํŠธ์ดํŽ™ํŠธ๋ฅผ ๋งŒ๋“ค ๊ฐ€๋Šฅ์„ฑ์ด ๊ธ‰๊ฒฉํžˆ ์ปค์ง„๋‹ค
[3] Java๋กœ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.