Skip to content

Instantly share code, notes, and snippets.

@coleea
Last active October 10, 2024 12:28
Show Gist options
  • Save coleea/fd8de3d2901780be9aefe90636e4df64 to your computer and use it in GitHub Desktop.
Save coleea/fd8de3d2901780be9aefe90636e4df64 to your computer and use it in GitHub Desktop.

https://www.youtube.com/watch?v=-cEn_83zRFw

Rails World 2024 Opening Keynote - David Heinemeier Hansson

[์Œ์•…]

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์ด ์ปจํผ๋Ÿฐ์Šค๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ์กฐ์งํ•ด์ค€ ์•„๋งŒ๋‹ค ํ”ผ๋…ธ์™€ ์ „์ฒด ํŒ€์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด๋ถ€์—์„œ ๋ณด๊ธฐ ์ „๊นŒ์ง€ ์ด ์ปจํผ๋Ÿฐ์Šค๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•œ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‡ผ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•œ์ง€ ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์•„๋งŒ๋‹ค๊ฐ€ Rails 8 ์ถœ์‹œ์™€ ํ•จ๊ป˜ ๋‚ ์”จ๊นŒ์ง€ ๋งž์ถ”๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ •๋ง ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค.

์•„๋งŒ๋‹ค์™€ ์ „์ฒด ํŒ€์—๊ฒŒ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์˜ค๋Š˜์˜ ์ฃผ์ œ๋Š” Rails 8์ž…๋‹ˆ๋‹ค.

Rails 8์— ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Rails 8์€ ์ œ ๊ธฐ์–ต์— ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด Rails ๋ฆด๋ฆฌ์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด Rails ๋ฆด๋ฆฌ์Šค์— ํฅ๋ถ„ํ•œ ๊ฒƒ์€ ์ ์–ด๋„ Rails 7 ์ดํ›„๋กœ ์ฒ˜์Œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Rails 7์ด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฐœ์ „ ๋ฐฉํ–ฅ๊ณผ ์„ธ์ƒ์„ ํ–ฅํ•œ ์ž์‹ ๊ฐ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ๋ถ„์œ„๊ธฐ๋ฅผ ์กฐ์„ฑํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— Rails 7์— ๋Œ€ํ•ด ์ž ์‹œ ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•œ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์„ธ์ƒ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•„ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์ด ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ณ  ํด๋ผ์šฐ๋“œ๊ฐ€ ์ด ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ณ  ๊ทธ๋ƒฅ ๋”ฐ๋ผ๊ฐ€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ๋Ÿฐ ๋”ฐ๋ผ๊ฐ€๋Š” ๋А๋‚Œ์— ๋Œ€ํ•ด ์ ์  ๋ถˆ์•ˆ๊ฐ์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ธธ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๋งŽ์€ ๋ถ€๋ถ„์ด ์ œ๊ฒŒ๋Š” ๋ง์ด ๋˜์ง€ ์•Š์•˜๊ณ , ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์•„์ง ์ œ๋Œ€๋กœ ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ช‡ ๋…„ ๋™์•ˆ ์šฐ๋ฆฌ๊ฐ€ ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ์ ์  ์ปค์กŒ์Šต๋‹ˆ๋‹ค.

Webpacker๋ฅผ ํ†ตํ•ฉํ–ˆ๋˜ Rails 5 ์ถœ์‹œ ๋•Œ์กฐ์ฐจ๋„ ์ €๋Š” ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ํฅ๋ถ„๋˜๋Š” ์ผ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Rails 7์€ ๊ทธ ํฅ๋ถ„์„ ๋˜์‚ด๋ ธ์Šต๋‹ˆ๋‹ค.

์˜ค๋žซ๋™์•ˆ ์ปค์ ธ ์™”๋˜ ๋น„์ „์„ ์‹คํ˜„ํ•˜๊ณ  ์•ž์œผ๋กœ ์ถœ์‹œ๋  Rails๊ฐ€ ๊ทธ์™€ ๋™์ผํ•œ ์ž์‹ ๊ฐ์„ ๋”ฐ๋ฅด๊ณ  ๊ทธ ์ž์‹ ๊ฐ์„ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ๋งต์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€ ๊ธฐํšŒ๊ฐ€ ๋งˆ์นจ๋‚ด ์ƒ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ ํฅ๋ถ„์„ ๋˜์‚ด๋ ธ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๊ทธ ํฅ๋ถ„์„ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด ์˜จ ๋ Œ์ฆˆ ์ค‘ ํ•˜๋‚˜๋Š” ํŒจํ„ด ์–ธ์–ด๋ผ๋Š” ์•„์ด๋””์–ด์˜€์Šต๋‹ˆ๋‹ค.

ํŒจํ„ด ์–ธ์–ด ํ…œํ”Œ๋ฆฟ์—๋Š” ๋ฌธ์ œ, ์ปจํ…์ŠคํŠธ, ์†”๋ฃจ์…˜, ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น์ด ๋‚˜์•„๊ฐ€๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์ œ๊ฐ€ ์ข‹์•„ํ•˜์ง€ ์•Š์•˜๋˜ ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด๋ณด๋‹ˆ, ์‹œ๋Œ€์— ๋’ค๋–จ์–ด์ง„ ํŒจํ„ด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ˆ˜์ง‘๋˜์ง€ ์•Š์€ ํŒจํ„ด, ๋” ์ด์ƒ ์šฐ๋ฆฌ๊ฐ€ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€๋ จ์„ฑ์ด ์—†๋Š” ํŒจํ„ด์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Rails 7์˜ ๊ฒฝ์šฐ, ์ €์—๊ฒŒ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€ํ™”๋Š” ์›น ๊ธฐ์ˆ ์˜ ๊ทผ๋ณธ์ ์ธ ๋ณ€ํ™”์˜€์Šต๋‹ˆ๋‹ค.

ES6 JavaScript๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง ์—†์ด ์‹ค์ œ๋กœ ์ž˜ ์ž‘๋™ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HTTP2 ๋•๋ถ„์— ํ•ญ๋ชฉ์„ ํฐ ๋‹จ์œ„๋กœ ๋ฌถ์„ ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๊ณ , Import Maps ๋•๋ถ„์— ๋ธŒ๋ผ์šฐ์ €์šฉ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ด๋กœ ์ธํ•ด ํŒจํ„ด์ด ๋ฌดํšจํ™”๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ์ œ๊ฒŒ๋Š” ๋งค์šฐ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ „์—๋Š” ๋ธŒ๋ผ์šฐ์ €์— 4๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋” ๋งŽ์€ ์—ฐ๊ฒฐ์„ ์—ด๋ ค๋ฉด ํ•˜๋‚˜์”ฉ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒƒ์„ ๋ฌถ์–ด์•ผ ํ•œ๋‹ค๋Š” ํŒจํ„ด์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๊ฐ€ JavaScript๋ฅผ ์ •๋ง ๋ชปํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋” ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•„์ด๋””์–ด๋ฅผ ๋” ๋‚˜์€ JavaScript๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ฐœ์ „์— ํž˜์„ ์‹ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ํŒจํ„ด๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌดํšจํ™”๋œ ์ปจํ…์ŠคํŠธ, ๊ทธ ์•„์ด๋””์–ด๋Š” ๋” ์ด์ƒ ๋ง์ด ๋˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ €๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ๊ฐ€ ์—ญ์‚ฌ์ ์œผ๋กœ ๋ชปํ•˜๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋Š” ์ด๋ฆ„ ์ง“๊ธฐ์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์บ์‹œ ๋ฌดํšจํ™”์ž…๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๊ฐ€์žฅ ์‹ ๊ฒฝ ์“ฐ๋Š” ๊ฒƒ์€ ์ •์‹  ๋ชจ๋ธ์˜ ์บ์‹œ ๋ฌดํšจํ™”์ž…๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ES6, HTTP2, Import Maps๊ฐ€ ์—†๋Š” ์ด ์ปจํ…์ŠคํŠธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ์ด์ ์„ ์™„์ „ํžˆ ํ™œ์šฉํ•˜๊ธฐ ๋ช‡ ๋…„ ์ „์— ๋ฐœ์ƒํ–ˆ๊ณ , ์‚ฌ๋žŒ๋“ค์ด ์›น์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธธ๊ณ  ๋ณต์žกํ•˜๋ฉฐ ํž˜๋“  ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ–๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ ์ง€ ๋ช‡ ๋…„ ํ›„์— ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ปจํ…์ŠคํŠธ๊ฐ€ ์žฌ๋ฐœ๊ฒฌ๋˜์—ˆ๊ณ , ๋” ์ด์ƒ ๋ง์ด ๋˜์ง€ ์•Š๋Š” ํŒจํ„ด์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

Rails 7์˜ ๊ฒฝ์šฐ, ๊ทธ ์ƒˆ๋กœ์šด ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์˜ ์ผ๋ถ€๋Š” Hotwire์˜€์Šต๋‹ˆ๋‹ค.

Hotwire๋Š” ๋ฐฑ์—”๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กญ๊ณ , ๋” ๊ฐ„๋‹จํ•˜๊ณ , ๊ฒธ์†ํ•œ JavaScript ์ž‘์„ฑ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Hotwire๋Š” ๊ทธ ์ƒˆ๋กœ์šด ์ปจํ…์ŠคํŠธ์—์„œ ์•„๋ฆ„๋‹ต๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ 2024๋…„์— ์ ํ•ฉํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

2012๋…„์— ์ ํ•ฉํ•œ ํŒจํ„ด์ด ์•„๋‹ˆ์—ˆ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๋” ๋‹จ์ˆœํ•œ ๊ณณ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€ ๋ณต์žก์„ฑ์˜ ์ •๊ธ€์„ ํ†ต๊ณผํ•˜๊ธฐ ์ „์—๋Š” ์ ํ•ฉํ•œ ํŒจํ„ด์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋žฌ๋“ฏ์ด Hotwire์— ๋Œ€ํ•œ ์ž‘์—…๊ณผ ์˜ค๋Š˜๋‚ ์˜ ํŒจํ„ด ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ด์ƒ ๊ด€๋ จ์„ฑ์ด ์—†๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ์ž‘์—…์€ ์ถ”์ถœ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

Rails ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์šฐ๋ฆฌ๋Š” ์ถ”์ธก์— ๊ทผ๊ฑฐํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“œ๋Š” ์‚ฌ์—…์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹ค์ œ ๊ณ ๊ฐ๊ณผ ํ•จ๊ป˜ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ์••๋ ฅ์„ ๋ฐ›์œผ๋ฉฐ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋œ ์†”๋ฃจ์…˜์„ ๊ฐ€์ ธ์™€์„œ ์„ ๋ฌผ๋กœ ์˜ˆ์˜๊ฒŒ ํฌ์žฅํ•œ ๋‹ค์Œ ๊ณต์œ ํ•˜๋Š” ์‚ฌ์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ณณ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

Hey์— ๋Œ€ํ•œ ์ž‘์—…์€ ๊ทธ ์ƒˆ๋กœ์šด ํŒจํ„ด์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋œ ๊ธธ์ด์—ˆ๊ณ , ์—…๊ณ„ ์ „์ฒด๊ฐ€ ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ฒŒ ๋œ ๊ธธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์น˜ "๋ชจ๋‘๊ฐ€ ํ‹€๋ ธ๋‚˜?"๋ผ๋Š” ๋ฐˆ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"์•„๋‹ˆ, ์•„๋‹ˆ์•ผ.

๋‚ด๊ฐ€ ํ‹€๋ ธ๋‚˜, ์•„๋‹ˆ๋ฉด ๋ชจ๋‘๊ฐ€ ํ‹€๋ ธ๋‚˜?" "์•„๋‹ˆ, ๋ชจ๋‘๊ฐ€ ํ‹€๋ ธ์„ ๊ฑฐ์•ผ." ๊ทธ๊ฒƒ์ด ๋ณธ์งˆ์ ์œผ๋กœ Rails 7์˜ ํ”„๋ก ํŠธ์—”๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ „์ œ์˜€์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘๊ฐ€ ํ‹€๋ ธ๊ณ , ๋ฌด๊ฑฐ์šด ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ฐ›์•„๋“ค์ผ ํ•„์š”๊ฐ€ ์—†๊ณ , ๋ฒˆ๋“ค๋ง์„ ๋ฐ›์•„๋“ค์ผ ํ•„์š”๊ฐ€ ์—†๊ณ , ํŠธ๋ฆฌ ์‰์ดํ‚น์„ ๋ฐ›์•„๋“ค์ผ ํ•„์š”๊ฐ€ ์—†๊ณ , ์ตœ์‹  ์›น ๊ตฌ์ถ•์˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ „์ œ๋ฅผ ์‚ฌ์‹ค๋กœ ๋ฐ›์•„๋“ค์ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ์ ์€ 2018๋…„์— Hey ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ๊ณ  ์ด๋Ÿฌํ•œ ํŠธ๋ Œ๋“œ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋‹ค๊ฐ€์˜ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ ์•„์ง ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2020๋…„์— Hey๋ฅผ ์ถœ์‹œํ–ˆ์„ ๋•Œ๋„ ์•„์ง ์™„์ „ํžˆ ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Hotwire๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์—…์„ ๊ตฌ์„ฑํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ Webpack์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด๋ฅผ ์™„์ „ํžˆ ์‹คํ˜„ํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚ค๊ธฐ๊นŒ์ง€๋Š” ์‚ฌ์‹ค 1๋…„ ์ •๋„ ๊ฑธ๋ ธ๊ณ , ์‹ค์ œ๋กœ ์–ด์ œ๊นŒ์ง€ Hey์˜ ๋ชจ๋“  ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋นŒ๋“œ ์—†์ด 100% ์™„์ „ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

JavaScript์—๋Š” ๋นŒ๋“œ ๋ผ์ธ์ด ์—†๊ณ , CSS์—๋Š” ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ž‘์„ฑ๋œ ๊ทธ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ”๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ €์—๊ฒŒ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์˜ ์ด์ ์€ ์ด๋Ÿฌํ•œ ํŒจํ„ด๊ณผ ์ƒˆ๋กœ์šด ์‚ฌ๊ณ  ๋ฐฉ์‹์„ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐœ์ธ์ ์ธ ๋งŒ์กฑ๊ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ์œ„ํ•œ ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์—†๋Š” ์•ต์ปค ํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์—๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ํ•˜๋ ค๋Š” ์ผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ , ์‹ค์ œ ์„ธ๊ณ„์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ , ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ , ์‹ค์ œ ๊ณ ๊ฐ์—๊ฒŒ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ , ๊ทธ๋“ค์€ ๊ทธ๋ƒฅ ์ฐธ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋์—†๋Š” ๋ถˆํ˜‘ํ™”์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ๋ฐ˜๋ฐ•ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋…ผ์Ÿ์„ ๋ฒŒ์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ผ๋‹จ ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ถœ์‹œํ•˜๋ฉด ์›€์ง์ผ ์ˆ˜ ์—†๋Š” ๋…ผ๊ฑฐ๋ฅผ ์œ„ํ•œ ๊ธฐ๋…๋น„๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

๋นŒ๋“œ ์—†์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” Toby์˜ ์—ฐ๋ก€ ํŠธ์œ—์„ ์ด ํ˜„์ƒ์˜ ์™„๋ฒฝํ•œ ๊ตฌํ˜„์ฒด๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

20๋…„ ๋™์•ˆ ์‚ฌ๋žŒ๋“ค์€ Rails๊ฐ€ ํ™•์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•ด ์™”์Šต๋‹ˆ๋‹ค.

์ž‘๋…„ 11์›”, Toby๋Š” ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ Rails ์•ฑ์—์„œ ์ดˆ๋‹น 100๋งŒ ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํŠธ์œ—ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ "์ž… ๋‹ค๋ฌผ์–ด!"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ธฐ๋…๋น„์ž…๋‹ˆ๋‹ค.

์ด ๋…ผ์Ÿ์€ ๋๋‚ฌ๊ณ , ๋‹ค์‹œ ์ด์•ผ๊ธฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ํŠธ์œ—์„ ๋ณด์„ธ์š”.

ํŠธ์œ—์ด ๊ธฐ๋…๋น„์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์‹ค์งˆ์ ์ธ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Hey์˜ JavaScript ๋กœ๋”ฉ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์†Œ์Šค ๋งต๋„ ์—†๊ณ  ๋ฒˆ๋“ค๋ง๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ž‘์„ฑ๋œ ๊ทธ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ”๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ €๋Š” ๊ทธ๊ฒƒ์„ ๋ณด๋ฉด์„œ ํ–ฅ์ˆ˜๋ฅผ ๋А๋‚๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์›น์„ ๋ฐฐ์šด ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ตœ์†Œํ™”์™€ ๊ฐ™์€ ์žฅ์น˜๋ฅผ ์ƒ๊ฐํ•ด๋‚ด๊ธฐ ์ „์— ์‚ฌ๋žŒ๋“ค์ด ์›น์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋ฉด์„œ ์›น์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ ์›น์— ๊ฐ€ํ•ด์ง„ ์ž”ํ˜น ํ–‰์œ„ ์ค‘ ํ•˜๋‚˜์ธ ์ตœ์†Œํ™”๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ 2%, 5%๋งŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ํ•™์Šต ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ ์›น์„ ํŒŒ๊ดดํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ์ „์ œ๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.

์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์˜คํ”ˆ ์›น์— ์—„์ฒญ๋‚œ ๊ฐ์‚ฌ๋ฅผ ๋นš์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ์˜คํ”ˆ ์›น์— ๊ฒฝ์˜๋ฅผ ํ‘œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ๋ณด๊ธฐ์—๋Š” ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ ์‰์ดํ‚น, ๋ฒˆ๋“ค๋ง ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ๋งตํ•‘ ๋“ฑ์œผ๋กœ ํŒจ์น˜ํ•˜๋ ค๊ณ  ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ณต์žก์„ฑ ์œ„์— ๋” ๋งŽ์€ ๋ณต์žก์„ฑ์„ ์Œ“๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ํƒ‘์€ ๋ฌด๋„ˆ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Rails 7์šฉ ๋นŒ๋“œ ์—†์ด ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋œ ์ดˆ๊ธฐ ๊ณ„๊ธฐ๋Š” ์ œ๊ฐ€ ๋„ˆ๋ฌด๋‚˜ ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์•ฝ 5๋ถ„ ๋™์•ˆ ๋ฐฉ์น˜ํ–ˆ๋˜ JavaScript ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์— ์งœ์ฆ์ด ๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋„๊ตฌ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ณ , ๋ชจ๋“  ๊ฒƒ์ด ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋„๋ก ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ–ˆ์„ ๋•Œ ๋ง ๊ทธ๋Œ€๋กœ ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹œ Webpacker์™€ ์”จ๋ฆ„ํ•˜๋А๋ผ ๋ฐ˜๋‚˜์ ˆ์„ ๋ณด๋ƒˆ๊ณ , ๋ง ๊ทธ๋Œ€๋กœ ํ…Œ์ด๋ธ”์„ ๋’ค์ง‘์—ˆ์Šต๋‹ˆ๋‹ค.

"์•„๋‹ˆ, Webpacker๋ฅผ Rails์— ํ†ตํ•ฉํ•œ ์‚ฌ๋žŒ์ด ๋ฐ”๋กœ ๋‚˜์ธ๋ฐ, ์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†์–ด.

์•„๋‹ˆ, ์•„๋‹ˆ์•ผ.

์ด ๋ชจ๋ธ์—๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์–ด."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋•Œ ์ €๋Š” ์ง„์‹ค์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์ง„์‹ค์€ ๋ธŒ๋ผ์šฐ์ €๋งŒ์ด ์˜์›ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋งŒ์ด ์šฐ๋ฆฌ๊ฐ€ 30๋…„ ์ „์— ๋งŒ๋“  ์ฝ”๋“œ, ๋งˆํฌ์—…, ์Šคํƒ€์ผ์„ ์ˆ˜์ • ์—†์ด ๋ถˆํ‰ ์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์˜ ์•„๋ฆ„๋‹ค์›€์ž…๋‹ˆ๋‹ค.

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณต์žก์„ฑ์˜ ๊ดด๋ฌผ์ด๋ฉฐ, ์˜ค๋Š˜๋‚  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ๊ฒƒ์€ ์ œ ๊ฐ€์žฅ ํฐ ์ ์—๊ฒŒ๋„ ๋ฐ”๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์›น ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ ‡๊ฒŒ ์ข‹์•„์ง€๊ณ  ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ํ—Œ์‹ ์œผ๋กœ ์ธํ•ด ์–ป๋Š” ์ด์ ์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

1995๋…„์— ๋””์ž์ธํ•œ ๊ฒƒ์ด ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๊ทธ๋Œ€๋กœ ๋ณด์ด๊ณ  ์—ฌ์ „ํžˆ ๊ฐ€์žฅ ํฐ ์›น์‚ฌ์ดํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ์•„์ด๋””์–ด๋Š” ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Craigslist์ž…๋‹ˆ๋‹ค.

1995๋…„์— ์ถœ์‹œ๋œ ๋””์ž์ธ์„ ์กฐ๊ธˆ๋„ ๋ฐ”๊พธ์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ž‘๋™ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ์ „ํžˆ ๋ฒˆ์ฐฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๊ทธ ์ •๋„์˜ ์ˆ˜๋ช…์€ ์šฐ๋ฆฌ๊ฐ€ ์—ด๋งํ•ด์•ผ ํ•  ๋ฌด์–ธ๊ฐ€์ž…๋‹ˆ๋‹ค.

์˜๊ฐ์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ์ „๋‹ฌ๋˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ๋ชจ๋“  ์ฝ”๋“œ์˜ ๋Ÿฐํƒ€์ž„์ด๋ผ๋Š” ์ง„์‹ค์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์™€ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์˜ ์ค‘๊ฐœ์ž๋ฅผ ์ œ๊ฑฐํ• ์ˆ˜๋ก ๋” ์ข‹๊ณ , 5๋ถ„ ํ›„์—๋„ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Rails Doctrine์—์„œ ๋ฐ”๋กœ ๊ฐ€์ ธ์˜จ ๋˜ ๋‹ค๋ฅธ ์›์น™์€ ์šฐ๋ฆฌ๊ฐ€ ํฐ ํ…ํŠธ๋ฅผ ๋ฐ€๊ณ  ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

Rails 7๋กœ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ผ์— ๋Œ€ํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ํฅ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

37signals์—์„œ ์ž‘์„ฑํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋Š” ๋นŒ๋“œ ์—†์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

Hey ์ดํ›„๋กœ ๋งŒ๋“  ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์–ด๋–ค ํ˜•ํƒœ์˜ JavaScript ์ปดํŒŒ์ผ๋„ ์—†์ด, ์–ด๋–ค ํ˜•ํƒœ์˜ CSS ํŒŒ์ดํ”„๋ผ์ด๋‹๋„ ์—†์ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ๋  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ถ”์ง„ํ•˜๋Š” ์•„์ด๋””์–ด๋Š” ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ง€์‹์ด ๊ฑฐ์˜ ์—†๋Š” ์‚ฌ๋žŒ์ด๋ผ๋„ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›ํผ์Šจ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋” ํฐ ์ž„๋ฌด์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ €๋งŒ์˜ ์ฆ๊ฑฐ์›€์„ ์œ„ํ•ด์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ ์ž„๋ฌด๋ฅผ ์œ„ํ•ด์„œ๋„ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋ช…๋ น์ด ์•„๋‹™๋‹ˆ๋‹ค.

Rails๊ฐ€ Hello World์—์„œ IPO๊นŒ์ง€ ๋ฒˆ์ฐฝํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์€ ์„ ํƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

React๋ถ€ํ„ฐ ๋ฌด์—‡์ด๋“  ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ, ๊ทธ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ์ผ์ด๊ณ , Rails 7๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒฝ๋กœ๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์—ฌ๊ธฐ์— ์žˆ๋Š” ์ด์œ , 20๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ๋„ ์ฒซ๋‚ ๋งŒํผ์ด๋‚˜ ์—ด์ •์„ ๋А๋‚„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ํฐ ์ž„๋ฌด๋ฅผ ํ–ฅํ•ด ๋‚˜์•„๊ฐ€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์›ํผ์Šจ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๋” ํฐ ์ž„๋ฌด, ์ปจํ…์ŠคํŠธ๊ฐ€ ๋” ์ด์ƒ ๊ด€๋ จ์„ฑ์ด ์—†๋Š” ํŒจํ„ด์„ ๋ฌดํšจํ™”ํ•˜๋Š” ๋” ํฐ ์ž„๋ฌด, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ œ๊ฐ€ ์—ด์ •์„ ๋А๋ผ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์–ผ๋งˆ ์ „์— ์ด ๋‹ค์Œ ๋‚ด์šฉ์„ ํŠธ์œ—ํ–ˆ๋Š”๋ฐ, Matt์ด RSW์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ๋…ํ•˜์—ฌ ํ•˜์ด์ฟ ๋กœ ๋‹ค์‹œ ์จ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

"๋ฐœ์ „์€ ์šฐ๋ฆฌ์˜ ๊ธธ, ๋ณต์žก์„ฑ์€ ๋‹ค๋ฆฌ๋ฅผ ๋†“๊ณ , ๋‹จ์ˆœํ•จ์€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค." ํ•˜์ด์ฟ  ํ˜•ํƒœ์ด๋“  ์•„๋‹ˆ๋“ , ์ด ๊ฐ์ •์—์„œ ์ œ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ณต์žก์„ฑ์ด ์‹ค์ œ๋กœ ๋ฐœ์ „์— ํ•„์š”ํ•œ ์š”์†Œ๋ผ๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋ฉˆ์ถ”๋Š” ๊ณณ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋๋‚œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๋๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ธ์ œ ๋ฉˆ์ถ”๊ณ  ์–ธ์ œ ํฅ๋ถ„ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋งค์šฐ ๋‹ค๋ฅธ ์ฒ ํ•™์ด๋ฉฐ, Rails๋ฅผ ํฌํ•จํ•˜์—ฌ ์•ž์œผ๋กœ ๋ชจ๋“  ์ผ์— ์ ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ์ฒ ํ•™์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฐฐ๋‹น๊ธˆ์ž…๋‹ˆ๋‹ค.

๋ณธ์งˆ์ ์œผ๋กœ Rails 7์˜ ์ •์‹ ์„ ์š”์•ฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์— ์˜์กดํ•˜์„ธ์š”.

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ์œผ๋ฉด ์ด ์ข‹์€ ๊ฒƒ๋“ค์˜ ํ’์š”๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ์ง€๋‚œ 3~4๋…„ ๋™์•ˆ ์ด๋ฃจ์–ด์ง„ ๋ชจ๋“  ๋ฐœ์ „ ๋•๋ถ„์— ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ข‹์•„์กŒ๊ณ , ๋ถˆํ•„์š”ํ•œ ๋„๊ตฌ ์—†์ด ํ›จ์”ฌ ๋” ์žฌ๋ฏธ์žˆ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” "์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์šฉ์ž…๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•จ์œผ๋กœ์จ ๊ทธ ๋ชจ๋“  ๊ฒƒ์„ ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋” ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ , ์˜ค๋Š˜๋‚  ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๋” ํฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ ์€ ๋‹จ์ˆœํžˆ ์ตœ๊ณ ์˜ ํŒจํ„ด์„ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ๋‹จ์ˆœํ•จ ์ž์ฒด๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ•จ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋น„๋ก ๋‹จ์ˆœํ•จ ์ž์ฒด๊ฐ€ ์„ ๋ฌผ์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ์š”.

๋ชฉ์ ์€ ์šฐ๋ฆฌ์˜ ์ œํ•œ๋œ ์›์ˆญ์ด ๋‘๋‡Œ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋‘๋‡Œ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๊ฒƒ์„ ๋‹ด์„ ์ˆ˜ ์—†๊ณ , ๋ณต์žกํ•œ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ณต์žกํ•œ ๋ถ€๋ถ„์„ ๋ฐฐ์šฐ๋Š” ๋ฐ ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฒƒ์„ ๋‹ด์„ ๊ณต๊ฐ„์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒƒ์€ ๋ฐ”๋กœ ๊ทธ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „์ฒด ๋ฌธ์ œ์™€ ์ „์ฒด ์†”๋ฃจ์…˜์„ ๋ณด๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ์˜ค๋žซ๋™์•ˆ ๋จธ๋ฆฟ์†์— ๋‹ด์•„๋‘˜ ์ˆ˜ ์žˆ๋Š” ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Shopify๊ฐ€ ์ฃผ์š” ๋ชจ๋†€๋ฆฌ์Šค์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” 500๋งŒ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋™์‹œ์— ๋จธ๋ฆฟ์†์— ๋‹ด์•„๋‘˜ ์ˆ˜ ์žˆ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Toby๊ฐ€ ์˜ค๋žซ๋™์•ˆ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋จธ๋ฆฟ์†์— ๋‹ด์•„๋‘˜ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๋…ผ์˜์—์„œ ์šฐํšŒํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ "์ฒ˜์Œ์—๋Š” ์ข‹์ง€๋งŒ, ํ•˜๋ฃจ์— ์ˆ˜์‹ญ์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ๋ฒŒ๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ๊ฑฐ์•ผ?"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€? ์–ด๋–ป๊ฒŒ ํ•  ๊ฑฐ๋ƒ๋‹ˆ? ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ํ•  ๊ฒ๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฑด ์ค‘์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋•Œ์ฏค์ด๋ฉด ์„ธ์ƒ์˜ ๋ชจ๋“  ๋ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ํ…๋ฐ, ๊ทธ๊ฒƒ์ด ์ตœ์ ํ™”ํ•ด์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ตœ์ ํ™”ํ•ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ˆ˜์‹ญ์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ๋ฒŒ ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๊ธธ์ž…๋‹ˆ๋‹ค.

"์•„, ์ผ๋‹จ ๋ˆ์„ ๋ฒŒ๋ฉด ์•ฝ๊ฐ„ ๋ถˆํŽธํ•ด์งˆ ๊ฑฐ์•ผ."๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €์—๊ฒŒ ๊ทธ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ตœ์‹  ์›น ๊ฐœ๋ฐœ ๊ฒฝํ—˜์˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ถ€๋ถ„์„ ์„œ๋กœ ์˜†์— ๋†“์„ ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ ์••์ถ•ํ•˜์—ฌ ์šฐ๋ฆฌ์˜ ๋‘๋‡Œ ์˜ˆ์‚ฐ์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์•ผ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ์ข‹์€ ๊ตํ›ˆ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

Vim์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, Vim์€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋‡Œ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋Š” ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘ ํ•˜๋‚˜์ด๊ณ , ๋‹ค๋ฅธ ๊ฒƒ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ์••์ถ•ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Jason์˜ ์ด๋ฆ„์„ ํฌํ•จํ•ด์„œ์š”.

์‚ฌ์‹ค Jason์€ ์ œ๊ฐ€ ์‚ฌ์—… ํŒŒํŠธ๋„ˆ์ธ๋ฐ Jarvis๋ผ๊ณ  ๋ถ€๋ฅด๋ฉด ์•ฝ๊ฐ„ ๊ธฐ๋ถ„ ๋‚˜๋น ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์ œํ•œ๋œ ๊ณต๊ฐ„์ด ์žˆ๊ณ , ๊ทธ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์•ผ ํ•˜๊ณ , ์—…๊ณ„๋ฅผ ์ž‘์€ ์ „๋ฌธ ๋ถ„์•ผ๋กœ ์„ธ๋ถ„ํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๊ณต๊ฐ„์— ์žˆ๋Š” ๊ฒƒ์„ ์••์ถ•ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๊ทœ๋ชจ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ 10์–ต ๋‹ฌ๋Ÿฌ์งœ๋ฆฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

0์—์„œ 1๊นŒ์ง€์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

0์—์„œ 1๊นŒ์ง€์˜ ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ์˜ ์ž„๋ฌด์ž…๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ์˜ ํ—ค๋“œ๋ผ์ธ์€ ๋ง ๊ทธ๋Œ€๋กœ "์ตœ์‹  ์›น ์•ฑ์˜ ๋ณต์žก์„ฑ์„ ์••์ถ•"ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ Hello World์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ฒ˜์Œ๋ถ€ํ„ฐ IPO๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์˜ค๋Š˜ ์ œ๊ฐ€ ์ด์•ผ๊ธฐํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

Hello World๋„ ์•„๋‹ˆ๊ณ  IPO๋„ ์•„๋‹Œ ๊ทธ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋‘ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

Rails 7์„ ํ†ตํ•ด Hello World๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋†€๋ผ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ๋ถ€์กฑํ•œ ๊ฒƒ์€ IPO๋กœ ๊ฐ€๋Š” ๋‹ค๋ฆฌ์ด๊ณ , ๊ทธ ๋‹ค๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋ฐฐํฌ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ€์ ธ์™€์„œ ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›”๋“œ ์™€์ด๋“œ ์›น์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ 10๋…„ ๋™์•ˆ ์ œ ๊ฒฝํ—˜์—์„œ ์ผ์–ด๋‚œ ์ผ์€ ๋ฐฐํฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ํ•™์Šต๋œ ๋ฌด๋ ฅ๊ฐ์ด๋ผ๋Š” ์ž‘์€ ๋ฐง์ค„์— ๋ฌถ์ธ ๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๊ณ„ ์ „์ฒด๊ฐ€ ์„œ๋ฒ„๋ฅผ ๋งŒ์ง€๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‘๋ ค์›€, ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง€๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‘๋ ค์›€์„ ํ‚ค์›Œ ์™”์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ Dr.

Evil ๋ชจ์ž๋ฅผ ์“ฐ๊ณ  ์žˆ์„ ๋•Œ๋Š” "๋†€๋ž๊ตฐ.

ํ•ด๋ƒˆ์–ด.

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ์ปดํ“จํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ์ง์ ‘ ๋งŒ์ง€๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ์„ค๋“ํ–ˆ์–ด.

๋ธŒ๋ผ๋ณด, ๋ธŒ๋ผ๋ณด.

๊ทธ๊ฑด ํ˜„๋Œ€ ๋งˆ์ผ€ํŒ…์˜ ์œ„์—…์ด์•ผ.

๊ทธ ์•ž์— ์ ˆ์„ ํ•ด์•ผ๊ฒ ์–ด."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋˜ ํ•œํŽธ์œผ๋กœ๋Š” ํ•œ์‹ฌํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋ผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋ฐง์ค„์ด ์–ผ๋งˆ๋‚˜ ์ž‘์€์ง€ ๋ณด์ด์‹œ๋‚˜์š”? ์ฝ”๋ผ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฌด๊ฑฐ์šด์ง€ ์•„์‹œ๋‚˜์š”? ๋ฐง์ค„์„ ์—†์• ๋ ค๋ฉด ๋ฐœ์„ ์–ผ๋งˆ๋‚˜ ์กฐ๊ธˆ๋งŒ ์›€์ง์—ฌ์•ผ ํ•˜๋Š”์ง€ ์•„์‹œ๋‚˜์š”? ์•„์ฃผ ์กฐ๊ธˆ๋งŒ ์›€์ง์ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋ฌธ์ œ๋Š” ๋ถ€๋ถ„์ ์œผ๋กœ...

์ด ๋‹ด๋ก ์ด ์–ผ๋งˆ๋‚˜ ๋ฐœ์ „ํ–ˆ๋Š”์ง€ ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๋†๋‹ด์„ ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š”...

์‚ฌ์‹ค ์ €๋Š” ๋ฐ˜๋Œ€๋กœ ํ•  ๊ฒ๋‹ˆ๋‹ค.

์•„์ง์€ ๊ทธ๋“ค์„ ๋†€๋ฆฌ์ง€ ์•Š์„ ๊ฒ๋‹ˆ๋‹ค.

AWS๋Š” ๋†€๋ž๊ณ , "์šฐ๋ฆฌ ์ธ๊ฐ„์€ ์ด๋Ÿฐ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์–ด.

์šฐ๋ฆฌ ์ธ๊ฐ„์€ ์„œ๋ฒ„ ์›์ˆญ์ด ๊ตฐ๋Œ€ ์ „์ฒด๋ฅผ API ๋’ค์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋“ค์€ ์ •๋ง ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌผ๊ฑด์„ ๋ž™์— ๋„ฃ์„ ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์ด ๋ณด๋Š” ๊ฒƒ์€ 200 OK๋ฟ์ด์•ผ."๋ผ๋Š” ์‹์œผ๋กœ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์•„๋งˆ์กด์ด ์‹ค์ œ๋กœ ์ž์ฒด์ ์œผ๋กœ ๋งค์šฐ ํ˜„์‹ค์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฉ‹์ง„ ์ผ์ž…๋‹ˆ๋‹ค.

์—ฐ์ค‘ ํŠน์ •์ผ์— ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ–ˆ๊ณ , ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ปดํ“จํ„ฐ๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋‚ ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์ข‹์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ ๋น„์ „์„ ์ „์ ์œผ๋กœ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์ด ๊ทธ๋Ÿฐ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ด์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„ ๋™์•ˆ API ๋’ค์— ์„œ๋ฒ„ ์›์ˆญ์ด๋ฅผ ๋Š์ž„์—†์ด ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ์„ ๋Œ€๋น„ํ•œ ๋ณดํ—˜ ์ •์ฑ…์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ง€๋ถˆํ•˜๋Š” ๋Œ€๊ฐ€๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๋†’์Šต๋‹ˆ๋‹ค.

๊ธˆ์ „์ ์œผ๋กœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณต์žก์„ฑ ์ธก๋ฉด์—์„œ๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ AWS๋Š” ์‚ฌ์—…์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์‚ฌ์—…์ด ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์‚ฌ์—…์—๋Š” ์ธ์„ผํ‹ฐ๋ธŒ๊ฐ€ ์žˆ๋‹ค๊ณ ๋„ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  AWS์˜ ์ธ์„ผํ‹ฐ๋ธŒ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์˜์›ํžˆ ๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ๋กœ ๋‚จ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜์›ํžˆ ์„œ๋ฒ„๋ฅผ ๋‘๋ ค์›Œํ•˜๊ณ , ์˜์›ํžˆ ์Šค์Šค๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์กฐ์ปค๊ฐ€ ์ด๊ธฐ๋„๋ก ๋‚ด๋ฒ„๋ ค ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์กฐ์ปค๊ฐ€ ์ด๊ธฐ๋„๋ก ๋‚ด๋ฒ„๋ ค ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ์„œ๋ฒ„๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ AWS์— 40%์˜ ๋งˆ์ง„์„ ์ง€๋ถˆํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์šฐ๋ฆฌ๋ฅผ ์„ค๋“ํ•˜๋„๋ก ๋‚ด๋ฒ„๋ ค ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” Dell์˜ ๋งˆ์ง„์€ 5%์ด๊ณ , AWS์˜ ๋งˆ์ง„์€ 40%์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์‹คํŒจํ•œ ์‹œ์žฅ์ด๊ณ , ๊ฒฝ์Ÿ ์••๋ ฅ์— ์˜ํ•ด ์ดˆ๊ณผ ์ด์œค์ด ๋„์ „๋ฐ›์ง€ ์•Š๋Š” ๋น„๊ฒฝ์Ÿ์ ์ธ ์‹œ์žฅ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๋ฅผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์ „์—...

Heroku๋Š” ์ œ๊ฐ€ 20๋…„ ๋™์•ˆ ๋ด ์˜จ ๊ฐœ๋ฐœ์ž ์ธ์ฒด ๊ณตํ•™ ๋ถ„์•ผ์—์„œ ๊ฐ€์žฅ ํฐ ํ˜์‹  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์ด๋Ÿฐ ์‹์œผ๋กœ ๋จธ์‹ ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๊ฐœ๋…์กฐ์ฐจ ๊ฐ–๊ธฐ ์ „์ธ 2007๋…„์— Heroku๊ฐ€ ๋‚˜์™”๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Heroku๊ฐ€ ๋ฐฐํฌ๋ฅผ git push๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด๋ฅผ ๋‹ค๋ฅธ ๋ˆ„๊ตฌ๋„ ๊นจ๋‹ซ๊ธฐ ์ „์— 10๋…„ ๋„˜๊ฒŒ ๊ทธ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

Heroku๋Š” ๊ทธ๋“ค์ด ์ด๋ฃฌ ์—…์ , Hello World์—์„œ LMA ์˜จ๋ผ์ธ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋„์šด Rails ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜์— ๋Œ€ํ•ด ๋์—†๋Š” ์ฐฌ์‚ฌ๋ฅผ ๋ฐ›์„ ๋งŒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋†€๋ผ์šด ์—…์ ์ด๋ฉฐ, 17๋…„ ์ „์˜ ์ผ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

17๋…„ ์ „์˜ ์ผ์ด๋ผ๋Š” ๊ฒƒ์ด ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์ด์ œ์„œ์•ผ ์šฐ๋ฆฌ๋Š” ๋”ฐ๋ผ์žก์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋ถ€๋ถ„์ ์œผ๋กœ 17๋…„ ๋™์•ˆ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Heroku ์„ฑ๋Šฅ ๋ฉ”๋‰ด์ž…๋‹ˆ๋‹ค.

ํ˜ธํ™”๋กœ์šด 1์ฝ”์–ด, 2, 3์Šค๋ ˆ๋“œ, 2.5GB RAM์„ ์›” 250๋‹ฌ๋Ÿฌ๋ผ๋Š” ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์— ๊ตฌ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2012๋…„์—๋Š” ๊ฝค ๊ดœ์ฐฎ์•˜์„ ๊ฒ๋‹ˆ๋‹ค.

์ข‹์€ ๊ฑฐ๋ž˜์˜€์„ ๊ฒ๋‹ˆ๋‹ค.

2024๋…„์—๋Š” ๋ง๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

ํ„ฐ๋ฌด๋‹ˆ์—†๊ณ  ๋ชจ์š•์ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ช‡ ์ฃผ ์ „์— Hetzner์—์„œ ๊ฐ€์ž…ํ•œ ํ˜ธํ”ผ ๋ฐ•์Šค์ž…๋‹ˆ๋‹ค.

Hetzner์—์„œ๋Š” ์›์‹œ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ตฌ์ž…ํ•˜๋ฉด 40์ฝ”์–ด, 96์Šค๋ ˆ๋“œ, 256GB RAM์„ ์›” 220๋‹ฌ๋Ÿฌ์— ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

Heroku๋Š” ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ €๋„ ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

2TB NVMe RAID ์Šคํ† ๋ฆฌ์ง€๊นŒ์ง€ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๊ฝค ์ข‹์€ ๊ฑฐ๋ž˜์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์กฐ์ปค์ž…๋‹ˆ๋‹ค.

์กฐ์ปค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ์งˆ ์ˆ˜ ์—†๋‹ค๊ณ  ์„ค๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด 100๋ฐฐ์˜ ์š”๊ธˆ์„ ์ฒญ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ๋ญ˜ ํ•  ์ˆ˜ ์žˆ๊ฒ ์–ด์š”? Linux๋ฅผ ๋งŒ์งˆ ์ˆ˜ ์žˆ๊ฒ ์–ด์š”? ๊ทธ๋Ÿฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์€ ๊ฐœ๋ฐœ์ž ๊ธฐ์ˆ ์˜ ๋งŽ์€ ๋ถ€๋ถ„์— ์Šค๋ฉฐ๋“ค์—ˆ๊ณ , ์ €๋Š” ๊ทธ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ ๋ฐˆ์ด ์•„๋‹ˆ์ง€๋งŒ, 100๋ฐฐ์˜ ์ด์œค์„ ๊นจ๋‹ซ๊ณ  ์ปดํ“จํ„ฐ๋ฅผ ์‚ด ํ•„์š”๋„ ์—†์ด ์•„๋งˆ์กด์—์„œ ๋นŒ๋ ค์„œ 100๋ฐฐ์˜ ๊ฐ€๊ฒฉ์— ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋นŒ๋ ค์ฃผ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง ์ข‹์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

์ •๋ง ์ข‹์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

VC๋“ค๋„ ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์„ฑ์žฅ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์˜ ๋ถˆ์•ˆ๊ฐ์€ ๋Œ€๋Ÿ‰ ์‹œ์žฅ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ํ™œ์šฉํ•ฉ์‹œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์Šค๋กœํ‹€์€ ๋ฐ”๋‹ฅ๊นŒ์ง€ ๋ฐ€๋ ธ๊ณ , ์ €๋Š” ๊ทธ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ธฐ์—…์ด ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ , ๊ทธ ์•„์ด๋””์–ด์— ํˆฌ์ž๊ฐ€ ํ˜๋Ÿฌ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ฐœ๋…์ด ๊ฐœ๋ฐœ๋˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ, ์–ด๋А ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๊ทธ ํ”„๋ฆฌ๋ฏธ์—„์„ ์˜์›ํžˆ ์ง€๋ถˆํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ €๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํŠนํ—ˆ๋ฅผ ๋„๋•์ ์œผ๋กœ ํ˜์˜คํ•ฉ๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ํŠนํ—ˆ๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ์–ด๋ฆฌ์„๊ณ  ๋ถ€์‹์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ ์ƒ๊ฐ์„ ์˜๋ฃŒ ํŠนํ—ˆ๋ฅผ ์ข‹์•„ํ•œ๋‹ค๋Š” ์ƒ๊ฐ๊ณผ ํ•จ๊ป˜ ๋จธ๋ฆฟ์†์— ๋‹ด์•„๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์‹œ์žฅ์— ๋‚ด๋†“๋Š” ์•ฝ์€ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์‹œํ—˜์„ ๊ฑฐ์ณ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ , ์•ฝ 10์–ต ๋‹ฌ๋Ÿฌ ์ •๋„ ๋“ค๋ฉฐ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ 10์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์šฐ๋ฆฌ๊ฐ€ ์ด์ œ ๋ด๋งˆํฌ ๊ฒฝ์ œ์˜ ์•ฝ 20%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์˜ค์ ฌํ”ฝ๊ณผ ๊ฐ™์€ ๋†€๋ผ์šด ์•ฝ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ด๋งˆํฌ ๋ณต์ง€ ๊ตญ๊ฐ€์— ์ž๊ธˆ์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ์•ฝ๊ฐ„ ๊ณผ์ฒด์ค‘์ธ ๋ฏธ๊ตญ์ธ๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ €๋Š” ์˜๋ฃŒ๊ณ„์—์„œ๋„ ๋งŒ๋ฃŒ ๋‚ ์งœ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜๋ฃŒ๊ณ„์—์„œ ๋งŒ๋ฃŒ ๋‚ ์งœ๋Š” 20๋…„์ž…๋‹ˆ๋‹ค.

20๋…„ ํ›„์—๋Š” ํŠนํ—ˆ๊ฐ€ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ œ๋„ค๋ฆญ...

์ €๋Š” ๊ทธ๊ฒƒ์„ ๋ณด๊ณ  "์‚ฌ์‹ค ๋‚˜์˜์ง€ ์•Š์€ ๋ชจ๋ธ์ด์•ผ.

๋งˆ์Œ์— ๋“ค์–ด."๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Heroku๊ฐ€ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ์ž ์ธ์ฒด ๊ณตํ•™ ๋ถ„์•ผ์˜ ์ดˆ๊ธฐ ์ง„์ถœ์„ ์ƒ์—…ํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ œ๋„ค๋ฆญ์ด ๋‚˜์˜ฌ ๋•Œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์น˜๋ฃŒ์ œ๊ฐ€ ํ˜•ํŽธ์—†๋Š” ์ปดํ“จํŒ… ์„ฑ๋Šฅ์— 250๋‹ฌ๋Ÿฌ๊ฐ€ ๋“ค์ง€ ์•Š๋Š” ์ œ๋„ค๋ฆญ์ด ๋‚˜์˜ฌ ๋•Œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ œ๋„ค๋ฆญ์„ ํ†ตํ•ด, ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ํ†ตํ•ด ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์—…๊ณ„๋ฅผ ์Šค์Šค๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์–ด๋А ์‹œ์ ์—์„œ ๊ธฐํšŒ๊ฐ€ ๋„ˆ๋ฌด๋‚˜ ํ„ฐ๋ฌด๋‹ˆ์—†๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚˜์„œ์„œ ๊ทธ ๊ธฐํšŒ๋ฅผ ์ด์šฉํ•˜๊ธฐ๋งŒ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ์‚ฌ๋žŒ์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๊ณ , ์—ฌ๋Ÿฌ๋ถ„์€ ๊ทธ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Š” DataPrizm์˜ ๊ฐ€๊ฒฉ์„ 100๋ฐฐ๊ฐ€ ์•„๋‹ˆ๋ผ 50๋ฐฐ๋กœ ์˜ฌ๋ ธ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

๊ทธ๊ฐ€ ์™œ ์—ฌ๊ธฐ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ž„๋ฌด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจ์Šค ์—†์Œ, ๋นŒ๋“œ ์—†์Œ, ํŒจ์Šค ์—†์Œ, ๋นŒ๋“œ ์—†์Œ, ํŒจ์Šค ์—†์Œ, ํ”Œ๋žซํผํ˜• ์„œ๋น„์Šค๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

Rails๋Š” ์ง€๊ธˆ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ž์œผ๋กœ๋„ ํ•ฉ๋ฆฌ์ ์ด๊ณ  ์ ‘๊ทผํ•˜๊ธฐ ์‰ฌ์šด ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๋•์…˜์— ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ƒ์šฉ ๊ณต๊ธ‰์—…์ฒด์— ๋น„์šฉ์„ ์ง€๋ถˆํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Rails์˜ ์ž„๋ฌด์ž…๋‹ˆ๋‹ค.

์„ธ์ƒ์˜ ํŒจ์Šค๊ฐ€ ์‚ฌ์†Œํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•œ ์„ ํƒ์  ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ๋˜๋Š” ๊ณณ๊นŒ์ง€ ์šฐ๋ฆฌ๋ฅผ ๋ฐ๋ ค๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฒฝ๋กœ๋Š” ํด๋ผ์šฐ๋“œ, ๋ฒ ์–ด ๋ฉ”ํƒˆ, ๊ฐœ์ธ ์ปดํ“จํ„ฐ, ์˜ท์žฅ ์†์˜ Pi ๋“ฑ ์–ด๋–ค ๊ตฌ์„ฑ์ด๋“ , ์–ด๋–ค ํ•˜๋“œ์›จ์–ด๋“  ์„ ํƒํ•œ ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ผ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋จผ์ € ํด๋ผ์šฐ๋“œ๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋„ˆ๋ฌด๋‚˜ ๊ต๋ฌ˜ํ•˜๊ฒŒ ๊ฐ์—ผ์‹œํ‚จ ์„œ๋ฒ„ ๊ณตํฌ์ฆ์ด๋ผ๋Š” ๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ์ง•๊ทธ๋Ÿฝ๊ณ  ๋งŒ์ง€๊ณ  ์‹ถ์ง€ ์•Š๊ณ , ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜ ๋Œ€์‹  ์ฑ…์ž„์ ธ์คฌ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ ์ „์ œ๋ฅผ ๋ฐ›์•„๋“ค์ด์ง€ ๋งˆ์„ธ์š”.

์™œ๋ƒํ•˜๋ฉด ์น˜๋ฃŒ๋ฒ•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๊ณตํฌ์ฆ์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ Linux์ž…๋‹ˆ๋‹ค.

Linux๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Linux๋Š” ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ์„œ๋ฒ„๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์›ํ•œ๋‹ค๋ฉด ์ปดํ“จํ„ฐ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ’€ํƒ€์ž„์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋“  ์•„๋‹ˆ๋“  ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ธ์ง€ ํ–‰๋™ ์น˜๋ฃŒ์ž…๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ์— ์กฐ๊ธˆ์”ฉ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ฐ”๋กœ ์‹คํ–‰ ์ค‘์ธ Framework 13์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์™€์„œ ๋งŒ์ ธ๋ณด์„ธ์š”.

Linux๋ฅผ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ๋ฌผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์‹ค ์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹œ๋„ํ•ด๋ณด๋Š” ์—ฐ์Šต์œผ๋กœ๋ผ๋„ ํ•ด๋ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋ชฉ์ ์œผ๋กœ ์ €๋Š” ์ œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” Linux ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Elmacoup๋Š” ๋ฌด์„œ์šด Linux ๋จธ์‹ ์„ ๊ฐ€์ ธ์™€์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ์•ˆํ•˜๊ณ  ์ƒ์‚ฐ์ ์ด๋ฉฐ ๋ฉ‹์ง€๊ฒŒ ๋ณด์ด๋Š” Linux ์„ค์ •์œผ๋กœ ๋ฐ”๊พธ๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ํ›Œ๋ฅญํ•œ Linux๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด์„œ ์ €์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ์ƒˆ๋กœ์šด ํŽธ์ง‘๊ธฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋“œ๋””์–ด Vim์ด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋”ฑ ๋งž๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์ปดํ“จํ„ฐ๋ฅผ ์ข‹์•„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๋ง ๊ทธ๋Œ€๋กœ 20๋…„ ๋™์•ˆ ์•ž๋ฉด์— ์ž‘์€ ์‚ฌ๊ณผ๊ฐ€ ์—†๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์‚ด ์ƒ๊ฐ์ด ์—†์—ˆ๋Š”๋ฐ, ๊ทธ ๋ชฝ๋กฑํ•จ์—์„œ ๋ฒ—์–ด๋‚˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋ฉ‹์ง„ ๊ฒƒ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์•Œ์•˜๊ฒ ์–ด์š”? ๊ทธ๋ฆฌ๊ณ  ์ €์—๊ฒŒ Framework๋Š” ๊ทธ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

Framework๋Š” ์‹ค์ œ๋กœ ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ Elmacoup์™€ ์•„๋ฆ„๋‹ต๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ดˆ๋Œ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์ด ๋ฌด์Šจ ์ƒ๊ฐ์„ ํ•˜๋Š”์ง€ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด์ปค๋Š” ์–ด๋–ป๊ฒŒ ํ•˜์ฃ ? ํ•ด์ปค๊ฐ€ ์ €๋ฅผ ๊ณต๊ฒฉํ•  ๊ฑฐ์˜ˆ์š”.

๊ทธ๊ฑด ๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ๊ฐ€ ํ•˜๋Š” ๋ง์ž…๋‹ˆ๋‹ค.

๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ์˜ ๋ง์„ ๋“ค์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ์—์„œ ๋ฒ—์–ด๋‚˜ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๋Š” ๊ฐœ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ๊ฐœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ๋  ๊ฐœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Linux๋ฅผ ์‹œ์ž‘ํ•œ ์ฒซ๋‚ ์˜ ์—ฌ๋Ÿฌ๋ถ„์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Linux๋ฅผ ์‹œ์ž‘ํ•œ ์ง€ 21์ผ์งธ์˜ ์ €์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜์›ํžˆ ์ง€์†๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๊ฒฐ๊ตญ์—๋Š” ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , ๊ฒฐ๊ตญ์—๋Š” ๋ ˆ๋ฒจ์—…ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์—ด๋งํ•˜๋Š” ๊ฒƒ์ด๊ณ , ํŠนํžˆ ๋ณด์•ˆ๊ณผ ๊ด€๋ จํ•ด์„œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ๊ฐ€ ์ •๋ง ์ขŒ์ ˆํ•˜๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์š”๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

SSH ํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋„ฃ๊ณ  SSH ํ‚ค๊ฐ€ ์„œ๋ฒ„์— ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด ๋˜๋„๋ก ํ•˜๊ณ  ๋ฐฉํ™”๋ฒฝ์˜ ๋ฉ‹์ง„ UI๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

์™„์ „ํžˆ ๋๋‚œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ 90%๋Š” ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋ณด์•ˆ์˜ 90%๋Š” ์ž ๊ทธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์„ ์—ด์–ด๋‘์ง€ ๋งˆ์„ธ์š”.

๋ฌธ์ด ์ž ๊ฒจ ์žˆ์œผ๋ฉด ํ•ด์ปค๊ฐ€ ์™€์„œ ์†์žก์ด๋ฅผ ํ”๋“ค ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋“ค์–ด์˜ค์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์€ ์œ ๋Šฅํ•œ ๊ฒƒ์ด ๋” ์žฌ๋ฏธ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์˜ ๊ตฌํ˜„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•„๋Š” ๊ฒƒ์ด ๋” ์žฌ๋ฏธ์žˆ๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ด๊ณ  ์žˆ๋Š” ๊ณณ์ด๊ธฐ ๋•Œ๋ฌธ์— Linux๋ฅผ ์•„๋Š” ๊ฒƒ์ด ๋” ์žฌ๋ฏธ์žˆ๊ณ , ์œ ๋Šฅํ•œ ๊ฒƒ์ด ๋” ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์ด ์šฐ๋””์ฒ˜๋Ÿผ ๋А๊ปด์งˆ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ฌดํ•œ๋Œ€๋กœ ๋‚˜์•„๊ฐˆ ๊ฒƒ์ด๊ณ , ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ œ๊ฐ€ 8์„ ์ •๋ง ์ข‹์•„ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

8์„ ์˜†์œผ๋กœ ๋Œ๋ฆฌ๋ฉด ๋ฌดํ•œ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜†์œผ๋กœ ๋Œ๋ฆฐ 8์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ Rails 8์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์ž„๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Rails 8์˜ ์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ ์ •๋ง ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ž ๊น๋งŒ์š”.

์ž ๊น๋งŒ์š”.

์ž ๊น๋งŒ์š”.

๋ฌด์—‡์ด ์˜ฌ์ง€ ๋ชจ๋ฅด์‹œ์ฃ ? ๋ชจ๋ฅด์‹œ์ฃ ? ๋จน๊ณ  ์‹ถ์ง€ ์•Š์€ ์•ฝ์ด์ง€๋งŒ ๋ชธ์— ์ข‹์€ ์•ฝ๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Rails 8์€ Devise์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ธ”๋ž™๋ฐ•์Šค์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ฐฐ์šฐ๋Š” ๊ธธ๋กœ ์•ˆ๋‚ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋ฐฉ๋ฒ•์€ ์ƒ์„ฑ์„ ํ†ตํ•œ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒƒ์ด ๋ถ„ํ™์ƒ‰ ์ฝ”๋ผ๋ฆฌ๊ฐ€ ๋  ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ˆ์„ ์ฃผ๊ณ  ํ•  ๋งŒํ•œ ๊ฐ€์น˜๋Š” ๋”๋”์šฑ ์—†์Šต๋‹ˆ๋‹ค.

์•ˆ์ „ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ณ  ๋ง ๊ทธ๋Œ€๋กœ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ƒ์„ฑํ•  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋“  ํŒŒ์ผ์ด๊ณ , 90% ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๊ณ , ํŒŒ์ผ์ด ์•„๋ฆ„๋‹ต์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์ œ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์„ ์œ„ํ•ด ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ๊ฐ€ ๋ชจ๋“  ๋ฌธ์ž์— ์„ธ์‹ฌํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ ๋งŒ๋“  ์žฅ์ธ ์ •์‹ ์ด ๋‹ด๊ธด ํ…œํ”Œ๋ฆฟ์ด๋ฏ€๋กœ ์ž‘์—…ํ•˜๊ธฐ ์ข‹์€ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ถ”์ถœ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ด ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์šฐ๋ฆฌ ์ž์‹ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋“  ๋ถˆํ•„์š”ํ•œ ๊ฒƒ ์—†์ด ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์€ ๊ทธ๊ฒƒ์„ ๋ฐฐ์šฐ๊ณ  ๋ ˆ๋ฒจ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

์ฒซ๋‚ ์—๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๊ฐœ์ž…๋‹ˆ๋‹ค.

๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์™€์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์˜์›ํžˆ ๊ทธ ๊ฐœ๋กœ ๋‚จ๋„๋ก ๋‚ด๋ฒ„๋ ค ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€๋ฅด์ณ ์ค„ ๊ฒƒ์ด๊ณ , Rails๋ฅผ ํ•œ๋™์•ˆ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋ฉด ๋” ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ธ์ฆ์ž…๋‹ˆ๋‹ค.

์ „์ฒด ์ฃผ์ œ์™€๋Š” ๋ณ„๋กœ ๊ด€๋ จ์ด ์—†์ง€๋งŒ ์ œ๊ฐ€ ์ •๋ง ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ Propshaft์ž…๋‹ˆ๋‹ค.

Propshaft๋Š” ๋‹จ์ˆœํ™”์˜ ๋ถ€์ˆ˜์ ์ธ ์ด์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Rails 7์—์„œ HTTP2, ๋ฒˆ๋“ค๋ง ์—†์Œ, ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง ์—†์Œ์ด๋ผ๋Š” ์ตœ์‹  ์Šคํƒ์„ ์ˆ˜์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์„ ๋•Œ, 2009๋…„๋ถ€ํ„ฐ ์กด์žฌํ–ˆ๋˜ ์• ์…‹ ํŒŒ์ดํ”„๋ผ์ธ(JavaScript ๋ฒˆ๋“ค๋ง์ด ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘๋˜๊ธฐ๋„ ์ „)์ด ์‹œ๋Œ€์— ๋’ค๋–จ์–ด์ง€๊ณ  ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

Propshaft๋Š” ๋นˆ ์ข…์ด์— ๋Œ€ํ•œ ์•„๋ฆ„๋‹ค์šด ์ˆœ๊ฐ„ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋‚˜๋จธ์ง€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ๋„ ์ด์–ด์ง€๋Š” ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

์ด์ „์˜ ์ง์„ ์งŠ์–ด์ง€์ง€ ์•Š๊ณ  ์˜ค๋Š˜๋‚ ์˜ ์ปจํ…์ŠคํŠธ์— ๋งž๊ฒŒ ์†”๋ฃจ์…˜์„ ์ œ์‹œํ•˜๋Š” ๋นˆ ์ข…์ด์ž…๋‹ˆ๋‹ค.

Propshaft๋Š” ์•„๋ฆ„๋‹ต๊ณ , ์ œ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์••๋‹ˆ๋‹ค.

์ •๋ง ๋ฉ‹์ง€๊ณ , ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ฝ์„ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ bundle open propshaft๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์žฅ๋‹ดํ•ฉ๋‹ˆ๋‹ค.

Sprockets์—์„œ๋„ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์ดํ•ดํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์žฅ๋‹ดํ•ฉ๋‹ˆ๋‹ค.

์ €๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Sprockets๊ฐ€ ์•„๋‹ˆ๋ผ Propshaft๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๊ฒƒ์ด ์ „๋ถ€์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์€ ๊ทธ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

์ƒ์ž ์•ˆ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ž๋Š” ๋งค์šฐ ์ž‘๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ฌธ์ œ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ๋น„์ „์˜ ์š”์ ์€ ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์ด์ „์—๋Š” ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ๋ฅผ ์‹คํ–‰ํ•  ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , ์บ์‹œ๋ฅผ ์ €์žฅํ•  ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , ์›น ์†Œ์ผ“ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ผ์šฐํŒ…ํ•  ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๊ทธ ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ ์–ด๋„ ์˜ค๋Š˜๋‚ ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋„ˆ๋ฌด ๋นจ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์— RAM์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ์šฐ๋ฆฌ๋Š” ๊ทธ ์ด์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Rails 8์—๋Š”...

Rails 8์—๋Š” Solid๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์› ์–ด๋Œ‘ํ„ฐ 3์ธ๋ฐฉ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์›น ์†Œ์ผ“ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” Solid Cable, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์บ์‹ฑ์„ ์ €์žฅํ•˜๋Š” Solid Cache, ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” Solid Queue๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜์˜ ๋ฐ˜์ง€, ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ, ํ•˜๋‚˜์˜ ํ•™์Šต ๋Œ€์ƒ, ํ•˜๋‚˜์˜ ์šด์˜ ๋Œ€์ƒ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ณด๋‹ค ๋” ์ข‹์€ ๊ฒƒ์€...

๋””์ž์ธ์— ํฌํ•จ๋˜์ง€๋„ ์•Š์•˜์ง€๋งŒ ๋„์ค‘์— ์ƒ๊ฒจ๋‚œ SQLite ๋•๋ถ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์‹œ์Šคํ…œ์„ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์šด์˜ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ณ , ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ๋ชจ์Œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

Hello World์—์„œ ์˜จ๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๋ ค๋Š” ์šฐ๋ฆฌ์˜ ์ž„๋ฌด์— ๋†€๋ผ์šด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด Rails 8 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ SQLite์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์ด 4๊ฐœ ์ƒ๊น๋‹ˆ๋‹ค.

๋ชจ๋“  ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ ํŒŒ์ผ 1๊ฐœ, ์บ์‹ฑ์šฉ ํŒŒ์ผ 1๊ฐœ, ํ์ž‰์šฉ ํŒŒ์ผ 1๊ฐœ, ์ผ€์ด๋ธ”์šฉ ํŒŒ์ผ 1๊ฐœ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜จ๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ด ํŒŒ์ผ์„ ์—ด ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค.

SQLite์˜ ๋†€๋ผ์šด ๊ธฐ๋Šฅ ๋•๋ถ„์— ์ด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ Solid Cable์ž…๋‹ˆ๋‹ค.

Solid Cable์€ ์•ฝ 2์ฃผ ์ „์— ์ด ๊ฐ•์—ฐ์„ ์ค€๋น„ํ•˜๋ฉด์„œ ์ƒ๊ฒจ๋‚œ ์ถ”์ถœ๋ฌผ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋ฐ๋ชจ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์•„์ง Redis๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๊ณ , "๊ฑฐ์˜ ๋‹ค ์™”์–ด.

Redis๋ฅผ ์„ ํƒ์  ๋ฒ„ํ‚ท์— ๋„ฃ๊ธฐ๊นŒ์ง€ ๊ฑฐ์˜ ๋‹ค ์™”์ง€๋งŒ ์•„์ง ์™„์ „ํžˆ ๋๋‚œ ๊ฑด ์•„๋‹ˆ์•ผ.

Action Cable์šฉ์œผ๋กœ ๋ญ”๊ฐ€ ํ•„์š”ํ•ด.

์–ด๋–ป๊ฒŒ ํ•˜์ง€?"๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋•Œ ๋‹คํ–‰ํžˆ๋„ Nick Desaulniers๊ฐ€ Action Cable์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ ์–ด๋Œ‘ํ„ฐ๋กœ Solid Cable์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ œ ๊ธฐ์กฐ ์—ฐ์„ค์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กฐ ์—ฐ์„ค ํ๋ฆ„์„ ๊ฐœ์„ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, Nick.

Solid Cable์—์„œ ์ œ๊ฐ€ ๋†€๋ž๋˜ ์ ์€ ํŠนํžˆ ๋™์ผํ•œ ์ปดํ“จํ„ฐ์—์„œ SQLite๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ์ง€, RAM์—์„œ ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋Š” Redis์™€ ์–ผ๋งˆ๋‚˜ ๊ฒฝ์Ÿ๋ ฅ์ด ์žˆ๋Š”์ง€ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด Solid Cable ์–ด๋Œ‘ํ„ฐ๋Š” ์ˆœ์ˆ˜ RAM Redis pub/sub ์…”ํ”Œ๋Ÿฌ์˜ ์„ฑ๋Šฅ์˜ 50% ์ด๋‚ด์— ๋„๋‹ฌํ•˜๋ฉฐ, ํŒŒ์ผ์— ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

2009๋…„์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ์„ "์•„ํ•˜!" ์ˆœ๊ฐ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

NVMe ๋“œ๋ผ์ด๋ธŒ๋Š” 2๋ฐฐ๋‚˜ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ด๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

์ด์ œ ์‹ค์ œ๋กœ ํ”„๋กœ๋•์…˜์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋Š” ๋‹ค๋ฅธ ์šฉ๋„๋กœ Redis๊ฐ€ ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ฒซ๋‚ ์— ์ž‘์€ ๊ฐ•์•„์ง€ ๋ฐœ๋กœ ํ‚ค๋ณด๋“œ๋ฅผ ๋‘๋“œ๋ฆฌ๋ฉด์„œ ๋ชจ๋“  ๊ฒƒ์„ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ์ง€์ ๊นŒ์ง€ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์— ๋„๋‹ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Solid 3์ธ๋ฐฉ์˜ ๋‘ ๋ฒˆ์งธ๋Š” Solid Cache์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ Basecamp์—์„œ์˜ ์„ค์ •์—์„œ ์ง์ ‘ ํ•„์š”์— ์˜ํ•ด ํƒ„์ƒํ•˜๊ณ  ์ถ”์ถœ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Redis์— ์บ์‹ฑ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒ๋‹นํžˆ ์ปธ์Šต๋‹ˆ๋‹ค.

2015๋…„ ์–ด๋А ์‹œ์ ์— ์ด ์ƒ์ž์— ๋„ฃ์„ RAM์˜ ๋งˆ์•ฝ ์••์ˆ˜ ์‚ฌ์ง„์„ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์œ„์— 1.5TB ์ •๋„ ํŽผ์ณ ๋†“์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

RAM์€ ์—ฌ์ „ํžˆ ๋น„์‹ธ๊ณ , RAM์€ ์—ฌ์ „ํžˆ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€...

์ด๊ฒƒ์€ ์˜ค๋Š˜๋‚  Basecamp์—์„œ ํ”„๋กœ๋•์…˜์—์„œ Solid Cache๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

60์ผ ๋™์•ˆ 10TB์˜ ์บ์‹ฑ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ 60์ผ ๋™์•ˆ ์บ์‹œ์— ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋žœ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์˜ˆ์ „์—๋Š” 17์‹œ๊ฐ„์ด์—ˆ๋Š”๋ฐ, ์บ์‹œ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ์‚ด์•„๋‚จ์œผ๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์บ์‹œ์˜ ์ ์ค‘๋ฅ ์€ 96%์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค.

Solid Cache๋ฅผ ๋„์ž…ํ•œ ์‹œ์ ์„ ์•Œ ์ˆ˜ ์žˆ์œผ์‹ ๊ฐ€์š”? ๋ฐ”๋กœ ์—ฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

p95์˜ 400๋ฐ€๋ฆฌ์ดˆ ์š”์ฒญ์ด ์ดํ›„ 200๋ฐ€๋ฆฌ์ดˆ ์ •๋„๋กœ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค.

์บ์‹œ๋ฅผ ํ›จ์”ฌ ์˜ค๋ž˜ ์œ ์ง€ํ•œ ์ง์ ‘์ ์ธ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ œ์•ฝ ์กฐ๊ฑด๋„ ์žˆ์—ˆ๊ณ , ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ œ๊ฐ€ ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์ผํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ œ๊ฐ€ ํ”„๋กœ๋•์…˜์—์„œ ์ผํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๋ฒค์น˜๋งˆํฌ ๊ฒŒ์ž„์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

Hey๋ฅผ ๋„์ž…ํ–ˆ์„ ๋•Œ ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์•„๋‚ด๊ฐ€ ๋ฒ ํƒ€ ๋ฒ„์ „์˜ Hey์— ๊ฐ€์ž…ํ•˜๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ์‹ค์ œ๋กœ ์ €์—๊ฒŒ ํ–ˆ๋˜ ์งˆ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

"์ง์›๋“ค์ด ๋‚ด ์ด๋ฉ”์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‚˜์š”?" ์ €๋Š” "์Œ...

์Œ...

๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์ฃ ."๋ผ๊ณ  ๋Œ€๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

Solid Cache๋Š” ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ActiveRecord ์œ„์— ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ActiveRecord ์•”ํ˜ธํ™”๋„ Hey๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์— ์šฐ๋ฆฌ์˜ ์บ์‹œ๋„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” 2์ฐจ ๋ฐฐ๋‹น๊ธˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Hey์— ๋Œ€ํ•œ ๋ณด์•ˆ ์•ฝ์†์„ ์ดํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์ •์ƒ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฏผ๊ฐํ•œ ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์šฐ๋ ค ์—†์ด Hey๋ฅผ ์ •ํ™•ํžˆ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ํฐ ๋„์•ฝ์ด๋ฉฐ, ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ์ฑ„ํƒํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ณด์กด๋„ ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Hey์— ๊ฐ€์ž…ํ•˜๊ณ  ํ•œ๋™์•ˆ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๊ณ„์ •์„ ์‚ญ์ œํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? Hey์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ณ„์ •์„ ์‚ญ์ œํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ํšŒ์‚ฌ์—์„œ๋Š” ์‚ญ์ œํ–ˆ๋‹ค๋Š” ์ž‘์€ ๋ถ€์šธ ๊ฐ’์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์‚ญ์ œ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๊ณ , ์—ฌ์ „ํžˆ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ๋Ÿฐ ๋ฐฉ์‹์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ญ์ œํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ์ ์–ด๋„ ์–ด๋А ์‹œ์ ์—๋Š” ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Hey์—์„œ๋Š” 60์ผ์ด๋ผ๋Š” ๊ตฌ์ฒด์ ์ธ ๊ธฐ๊ฐ„์„ ๋ณด์ฆํ•ฉ๋‹ˆ๋‹ค.

60์ผ ์ด๋‚ด์— ์‚ญ์ œํ•˜๋ฉด ๋กœ๊ทธ์—์„œ๋„, ๋ชจ๋“  ๊ฒƒ์—์„œ๋„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„, ์บ์‹œ์—์„œ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ธฐ๋Šฅ์œผ๋กœ ์ด๋ฅผ ๋’ท๋ฐ›์นจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

10TB์˜ ํฐ ๋””์Šคํฌ, ํฐ ์บ์‹œ๊ฐ€ ์žˆ์ง€๋งŒ ์ตœ๋Œ€ 60์ผ ๋™์•ˆ๋งŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๋ณด์กด ์ •์ฑ…์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ActiveRecord์˜ ์—„๊ฒฉํ•จ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ Solid Cache์—์„œ ์ œ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ ์€ ActiveRecord์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๊ฒฝ์šฐ 10TB ์ด์ƒ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ๋จธ์‹ ์— ์ œํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ Solid 3์ธ๋ฐฉ์˜ ์™•๊ด€ ๋ณด์„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฝ 18๊ฐœ์›” ์ „์— ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ ์ด๊ฒƒ์„ ๋ณด๊ณ  "์•„๋‹ˆ, ์•„๋‹ˆ, ์‹ซ์–ด.

์‹ซ์–ด.

์‹ซ์–ด.

์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด 7๊ฐœ์˜ gem์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•„."๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ค‘ 1, 2, 4๊ฐœ๋Š” ๋น„๊ณต๊ฐœ ํฌํฌ์ž…๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”? ์ด๊ฑด ๊ณ ์žฅ๋‚ฌ์Šต๋‹ˆ๋‹ค.

์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐฑ์ง€ ์ƒํƒœ์—์„œ ๋ฌด์—‡์„ ํ• ์ง€ ์ ์–ด์„œ ์ƒˆ๋กœ์šด Active Job ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ์ด์–ด์„œ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํ‘ธ์‹œํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , SQLite, PostgreSQL ๋˜๋Š” MySQL์„ ์‹คํ–‰ํ•˜๋“  ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก 3๊ฐ€์ง€ ์ฃผ์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋‘ ์ž‘๋™ํ•˜๋ฉฐ, ์„ค์น˜ ํ›„ 6๊ฐœ์˜ gem์„ ๋” ์›ํ•˜์ง€ ์•Š๋„๋ก ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌ์ถ•ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Sam Saffron์ด ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ๋ชฐ๋ผ๋„ ๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Solid Queue๊ฐ€ Puma์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๊ธฐ๋ณธ ์„ค์ •์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๋ณ„๋„์˜ ์ž‘์—… ํ˜ธ์ŠคํŠธ ์„ธํŠธ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋А ์ •๋„ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

bin/jobs๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ๋…์ž๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ์ž‘์—…์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ง ๋ฉ‹์ง„ ์‹œ์Šคํ…œ์ด๊ณ , ๊ณ ์† ํ™˜๊ฒฝ์—์„œ ์กฐ์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋‹ค์ด์–ผ์„ ๋งˆ๋ จํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ์ •๋ง ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ฌ์ง€์–ด ๋ฐ˜๋ณต ์ž‘์—…๋„ ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•  ๋•Œ ๊ฒช์—ˆ๋˜ ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

cron์œผ๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ํŒŒ์•…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ ์™„์ „ํžˆ ์‹คํ–‰๋˜๋Š” ๋” ๋‚˜์€ cron์ด๋ฉฐ, ๋ชจ๋“  ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ํ”„๋กœ๋•์…˜์—์„œ ์ •์˜ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์ ์–ด๋„ 3๋ถ„์˜ 2์ž…๋‹ˆ๋‹ค.

์„ค์ •ํ•œ ๋ชจ๋“  ๋‹ค์–‘ํ•œ ํ ์ž‘์—… ์ค‘์—์„œ, ์ด ์ „์ฒด ์‹œ์Šคํ…œ์€ Hey์—์„œ๋งŒ ํ•˜๋ฃจ์— 2์ฒœ๋งŒ ๊ฐœ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

Basecamp์™€ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•  8์ฒœ๋งŒ ๊ฐœ์˜ ์ž‘์—…์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ Solid Queue๋กœ ๊ฐ€์ ธ์™€์„œ ํ•˜๋ฃจ์— ์•ฝ 1์–ต ๊ฐœ์˜ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž˜ ์ž‘๋™ํ•˜๊ณ , ์ข‹๊ณ , ๋” ์‰ฝ๊ณ , 7๊ฐœ์˜ gem์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ Redis๋ฅผ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Rails 8์„ ํ†ตํ•ด ๋ชจ๋“  ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๋˜ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ์ธ๋ฑ์Šค, ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ํ”„๋ก์‹œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ธํ„ฐ๋„ท์— ๊ณต๊ฐœํ•˜๊ธฐ ์ „์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ž์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๋Š” ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๊ฒƒ๋“ค์„ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Rails 8์˜ ์ž„๋ฌด๋Š” ๊ธฐ๋ณธ ์„ค์ •์—์„œ ์ƒ์„ฑ๋˜๋Š” Rails 8 ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ธํ„ฐ๋„ท์— ์ง์ ‘ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅด๊ณ , ์•ˆ์ „ํ•˜๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•˜๊ณ , ์ „๋ฌธ ์ง€์‹์ด ํ•„์š” ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Thruster๋Š” ํ”„๋ก์‹œ์˜ ์ผ๋ถ€๋กœ ์ด ์ค‘ ์ ˆ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ •์  ํŒŒ์ผ ๊ฐ€์†ํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํฐ ํŒŒ์ผ์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ Puma ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

public์— ์„ค์ •ํ•œ ๋ชจ๋“  ๊ฒƒ ๋˜๋Š” ๊ธฐํƒ€ ์บ์‹œ ์ปจํŠธ๋กค ์บ์‹ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, Puma๊ฐ€ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  gzip ์••์ถ•์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๊ฒฐ๊ตญ์—๋Š” brotli๋„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ๊ธฐ๋ณธ Docker ์ด๋ฏธ์ง€์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธ์ถœ๋œ 80 ๋˜๋Š” ๋…ธ์ถœ๋œ 80 ๋ฐ”๋กœ ์•„๋ž˜์—์„œ puma ์•ž์—์„œ Thruster๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Thruster๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์™„์ „ํžˆ ๊ตฌ์„ฑ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

puma ์•ž์—์„œ ์‹คํ–‰ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ช…๋ น์ผ ๋ฟ์ด๊ณ , ๋ชจ๋“  ์ข‹์€ ๊ฒƒ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ •๋ง ๋ฉ‹์ง‘๋‹ˆ๋‹ค.

๋˜ํ•œ Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Go๋Š” ํ”„๋ก์‹œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ๋งค์šฐ ์ข‹์€ ์–ธ์–ด์ด๋ฉฐ, Rails ์Šคํƒ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Rails ์Šคํƒ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด Go๊ฐ€ ๊ทธ ๋ถ€๋ถ„์— ๋” ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•ฉ์‹œ๋‹ค.

Kevin์˜ ๊ฐœ์ธ ๋…ธํŠธ๋ถ์—์„œ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ ์ดˆ๋‹น 6๋งŒ ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ •๋„๋กœ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค.

Rust๋กœ ์ž‘์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋…ธํŠธ๋ถ ๊ตฌ์„์—์„œ Shopify ์ „์ฒด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

์ ์–ด๋„ ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ทธ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kamal 2๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ, ์ž์ฒด ํ•˜๋“œ์›จ์–ด, ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ, ์›ํ•˜๋Š” ๊ณณ ์–ด๋””๋“  ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ํŒจ์Šค์— ์–ฝ๋งค์ด์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

"์šฐ๋ฆฌ๋Š” ํด๋ผ์šฐ๋“œ๋ฅผ ๋– ๋‚  ๊ฒƒ์ด๋‹ค"๋ผ๋Š” ์„ ์–ธ์—์„œ ๋น ์ง„ ์š”์†Œ์˜€๊ณ , ๊ทธ๊ฒƒ์ด 1๋‹จ๊ณ„์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2๋‹จ๊ณ„๋Š” ๋ฌผ์Œํ‘œ, ๋ฌผ์Œํ‘œ, ๋ฌผ์Œํ‘œ์˜€์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ˆ˜์ต์„ ๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ๋น ์ง„ ๋ถ€๋ถ„์€ Kamal์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Kamal 2๋Š” ์ด๋ฅผ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ SSL์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ SSL ์ธ์ฆ์„œ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Let's Encrypt๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ™•์žฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ถ•์†Œ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ๋ชจ์Šต์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ์ •๋ง ๊ฐ„๋‹จํ•œ ์„ ์–ธ ์„ค์ •์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ „์ฒด ์„ค์ •์€ ๊ตฌ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋กœ ์š”์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Kamal 2์˜ ์ด์ „ ํ”„๋ก์‹œ์ธ Traefik์„ ๋Œ€์ฒดํ•˜์—ฌ ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ž๋™ SSL์„ ์ง€์›ํ•˜๊ณ  ๊ตฌ์„ฑ ์—†์ด ์—ฌ๋Ÿฌ ์•ฑ์„ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋ก์‹œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Kamal ์ „์ฒด์˜ ์ž„๋ฌด์˜€์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ๊ตฌ์„ฑ์ด ์ „ํ˜€ ํ•„์š” ์—†๋„๋ก ํ•˜์—ฌ ๊ฐœ๋…์„ ์ดํ•ดํ•  ํ•„์š”์กฐ์ฐจ ์—†๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ณด๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์งง์€ ๋ฐ๋ชจ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜ ๊นŠ๊ฒŒ ๋ณด์„ธ์š”.

5๋ถ„๋ฐ–์— ์•ˆ ๋˜๊ณ  ์ •๋ง ๋นจ๋ฆฌ ์ง€๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

์ „์ œ๋Š” ๋‘ ๊ฐœ์˜ ๋„๋ฉ”์ธ์„ ์„ค์ •ํ–ˆ๋Š”๋ฐ, ๋‘˜ ๋‹ค ๋‹จ์ผ ์„œ๋ฒ„๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ alpha์— ์žˆ์„ ๊ฒƒ์ด๊ณ , bravo์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  Docker Hub๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Docker Hub ๋˜๋Š” ๋‹ค๋ฅธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋’ค์— ๊นจ์–ด ๊ณ„์‹  ๋ถ„์ด ์žˆ์œผ๋ฉด ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ๊ณง main์œผ๋กœ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณง rails new๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋žฌ๋“ฏ์ด ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์ด ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ์Šค์บํด๋“œ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๊ฒฝ๋กœ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๋กœ ๋ฐ”๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ๊ฒฝ๋กœ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒฝ๋กœ์— ๋ฐ”๋กœ ์—ฐ๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์ง€๋„ค์š”.

20๋…„ ๋™์•ˆ ๋ด ์˜จ ์˜ค๋ž˜๋œ ์Šค์บํด๋“œ์ž…๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ ์€์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ํ”„๋กœ๋•์…˜์œผ๋กœ ๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๊ณ , deploy.yml ํŒŒ์ผ์„ ์—ด์–ด์„œ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€๋ฅผ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ ...

๊ทธ๊ฒƒ์„ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

dhh์ด๊ณ , ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฐํฌํ•  ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ ๋˜๋Š” DNS๋ฅผ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๊ฑฐ์˜ ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฉ€ํ‹ฐ ๋™์‹œ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผœ๊ณ , lck ๋ ˆ๋ฒจ ๋””๋ฒ„๊ทธ๋ฅผ ์ผœ์„œ ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•˜์ž๋งˆ์ž ๋ชจ๋“  ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ๋กœ๊ทธ์—์„œ ์•ฝ๊ฐ„์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ œ๊ฑฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ๋นจ๋ฆฌ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์ง€๋งŒ ๋ฐ๋ชจ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋จผ์ € Kamal์ด ์–ด๋–ค ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ๊ฒƒ์„ git์— ์ปค๋ฐ‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ kamal setup์„ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kamal setup์€ ๊ธฐ๋ณธ Dockerfile์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Thruster๋ฅผ ์•ž์— ๋ถ™์ด๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•˜๋Š” Docker ์ง„์ž…์ ์„ ์‹คํ–‰ํ•˜๊ณ  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

bravo๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฉ๊ธˆ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด Rails ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šค์บํด๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ  ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์„ค์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋น„์Šทํ•œ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŽ์ด ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ Rails ํ…œํ”Œ๋ฆฟ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

bravo๊ฐ€ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์œผ๋กœ ์ด๋™ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค, ๋ฐ”๋กœ...

์˜ค, ์ €๋Š” Tailwind๋กœ bravo๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

Tailwind๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ›จ์”ฌ ๋” ์˜ˆ์œ ๋ฒ„์ „์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์บํด๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์˜จ๋ผ์ธ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

alpha๋Š”...

alpha๋Š” ์‹ค์ œ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์ œ ์ทจ๋ฏธ Hetzner ์„œ๋ฒ„์˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์˜จ๋ผ์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์•„๊นŒ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฐ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์ „๋ถ€์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•  ํ•„์š”๋„, ์„ค์ •ํ•  ํ•„์š”๋„, ์„ค์น˜ํ•  ํ•„์š”๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Ubuntu ์ƒ์ž๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋‘ ๋ฒˆ์งธ ์„œ๋ฒ„์ธ bravo๋ฅผ ์„ค์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜‘๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ชจ๋“  ๊ฒƒ์„ ๋นŒ๋“œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ alpha์˜ ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด ๋ชจ๋“  ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์‹œ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ๊ฒƒ์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํฌ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ, ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ชจ๋“  ๊ฒƒ์ด ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์ •๋ง ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kamal 2์—๋Š” ๋ณ„์นญ์ด ์žˆ์–ด์„œ ๊ทธ๋ƒฅ command console์ด๋ผ๊ณ  ์“ฐ๋ฉด ๋ฐ”๋กœ ์„œ๋ฒ„์˜ ํ”„๋กœ๋•์…˜ ์ฝ˜์†”์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ชจ๋ธ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด ๋ฉ”์‹œ์ง€์˜ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์งœ์ž”! ํ† ๋ก ํ† ์—์„œ ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค! ์™€! ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ bravo๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

bravo๋„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์„ธ์š”.

bravo.exitsoftware.io์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋‘ ๋™์ผํ•œ ์„œ๋ฒ„์— ์ž๋™ SSL ์„ค์ •์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ผ€์ด๋ธ”, ๋ผ์ด๋ธŒ ์—…๋ฐ์ดํŠธ, ์บ์‹ฑ, ํ์ž‰๊นŒ์ง€ ๋ชจ๋‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์‚ฌ์ „ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋ชจ๋“  ์‹ค์ œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ SQLite๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์ด์ œ ์—ฌ๊ธฐ๋กœ ๋Œ์•„๊ฐ€์„œ ๋กœ๊ทธ์— supervisor๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ด์•„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—ฌ๊ธฐ๋กœ ๋Œ์•„๊ฐ€์„œ Solid Queue ์ž‘์—…์— ์‚ฝ์ž…๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ์ž‘์—…, ์„ค์ •๋œ ์ž‘์—…์ด ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Action Cable์„ ํ†ตํ•ด Action Cable ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, Solid Cable์„ ํ†ตํ•ด ํ๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋์ž…๋‹ˆ๋‹ค.

Kamal์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒ์ž๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋งŒ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ‹์ง„ 502์™€ ํ•จ๊ป˜ ๋ถˆ๋Ÿ‰ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚ด์žฅ ํ”„๋ก์‹œ์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ ...

๋์ž…๋‹ˆ๋‹ค.

์›๋ž˜ Rails ๋น„๋””์˜ค๋ฅผ ๋ณด๋ฉด 15๋ถ„ ๋™์•ˆ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ 2005๋…„์˜ ์ผ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” 5๋ถ„ ๋งŒ์— ๋‘ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€์ ธ์™”๊ณ , ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” Tailwind๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฝค ๋ฉ‹์ง€๊ฒŒ ๋ณด์ด๊ธฐ๊นŒ์ง€ ํ–ˆ์Šต๋‹ˆ๋‹ค.

6๋ฐฐ ์••์ถ•์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๋ณต์žก์„ฑ์„ 6๋ฐฐ๋‚˜ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ๋„ ์—ฌ์ „ํžˆ ์ต์ˆ™ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ ์›๋ž˜ ์Šค์บํด๋“œ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Rails 8์ž…๋‹ˆ๋‹ค.

์ธ์ฆ, ์ƒˆ๋กœ์šด ์• ์…‹ ํŒŒ์ดํ”„๋ผ์ธ, Solid 3์ธ๋ฐฉ, Thruster, Kamal 2๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ๋„ ํ•„์š” ์—†๊ณ , ํŒจ์Šค๋„ ํ•„์š” ์—†๊ณ , ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜ ์ฒซ ๋ฒˆ์งธ ๋ฒ ํƒ€ ๋ฒ„์ „์œผ๋กœ ๊ณง ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Raphael? ๋„ค, ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ฐ”๋กœ์š”.

[๋ฐ•์ˆ˜]

Rails 8์ด ์ถœ์‹œ๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Kamal 2๋„ ๊ณง ์ตœ์ข… ํ˜•ํƒœ๋กœ ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค.

Solid Queue๋„ ๊ณง ์ตœ์ข… 1.0 ๋ฒ„์ „์œผ๋กœ ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ ์ดํผ์›จ์–ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์˜ฌ ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ์šด์˜ ์ค‘์ด๊ณ , ๋ชจ๋“  ๊ฒƒ์ด ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ฐ”๋กœ ์ฒซ ๋ฒˆ์งธ Rails ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด์ œ 3๋ถ„ ๋Šฆ์—ˆ์ง€๋งŒ ์‚ด์ง ๋ง›๋ณด๊ธฐ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ง›๋ณด๊ธฐ๋ฅผ ๋ณด๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์ข‹์Šต๋‹ˆ๋‹ค.

Rails 8์— ๋„ฃ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์ด๋ฏธ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ€๋“ ์ฐจ์„œ ๋„ฃ์ง€ ๋ชปํ•œ ๊ฒƒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Action Notifier๋ฅผ ๋„ฃ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

Action Notifier๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š” ์—†๋„๋ก ์›น ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์‚ฌ๊ฐ€ ์•„๋‹Œ ์ปจํผ๋Ÿฐ์Šค ์ฑ„ํŒ…์ธ Campfire๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ๋‹ค๋ฉด, ์ดˆ๊ธฐ ๋ฒ„์ „์˜ Action Notifier๋ฅผ ํ†ตํ•ด ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Action Notifier๋Š” Campfire ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฝค ๊ฐ„๋‹จํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ ์›น...

์›น ์„œ๋น„์Šค ์›Œ์ปค๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์›Œ์ปค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋…์— ์—ฐ๊ฒฐํ•˜๊ณ , ๋ชจ๋“  ๊ฒƒ์„ ์ „์†กํ•˜๊ณ , ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ๋Š” ๋ชจ๋‘ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋†€๋ž์Šต๋‹ˆ๋‹ค.

ActiveRecord Search๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ ์šฐ๋ฆฌ์—๊ฒŒ ๋ถˆ์พŒ๊ฐ์„ ์ฃผ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ๋˜‘๊ฐ™์€ ์ „์ œ, ๋˜‘๊ฐ™์€ ์•„์ด๋””์–ด์—์„œ ์‹œ์ž‘ํ•œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

Elasticsearch์ž…๋‹ˆ๋‹ค.

Elasticsearch๋Š” ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๊ฐœ๋ฐœ์ž์™€ ์šด์˜์ž์—๊ฒŒ๋Š” ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ Elasticsearch์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ActiveRecord๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ActiveRecord Search๋Š” ๋ฐ”๋กœ ๊ทธ๊ฒƒ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋ณ€์ˆ˜ ๋˜๋Š” ์–ด๋–ค ์†์„ฑ์ด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ์ง€, ์–ด๋–ป๊ฒŒ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ์ง€ ์„ ์–ธํ•˜๊ณ , ์ด๋ ‡๊ฒŒ ๊ฒ€์ƒ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

post.search("๊ณต์ง€").

๊ทธ๊ฒƒ์ด ์ „๋ถ€๋ผ๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ์š”? ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ์š”? ๋„ค, ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ๋ชจ๋“  Solid์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ...

๋‹ค๋ฅธ ๋ชจ๋“  Solid๋ผ๊ณ  ๋งํ–ˆ์ง€๋งŒ, ์ด๊ฒƒ์€ Solid Search๋ผ๊ณ  ๋ถˆ๋ ธ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ "์ž ๊น๋งŒ, ๋ง์ด ์•ˆ ๋˜์ž–์•„.

ActiveRecord๋Š” ์ด๋ฏธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ๋ฐ, ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์•„๋‹ˆ์ž–์•„."๋ผ๊ณ  ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด์ œ ActiveRecord Search๊ฐ€ ๋˜์—ˆ์ง€๋งŒ, ActiveRecord ์œ„์— ๊ตฌ์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ...

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Action Text๋ฅผ ์‚ฌ์šฉํ•ด ์™”์ง€๋งŒ, ์ตœ์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋งˆํฌ๋‹ค์šด์„ ์‚ฌ์šฉํ•˜์—ฌ Action Text๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆํฌ๋‹ค์šด์€ ํ…์ŠคํŠธ๋ฅผ ํฌ๋งทํ•˜๊ธฐ์— ํ›Œ๋ฅญํ•œ ํ˜•์‹์ด๋ฉฐ, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์œ„์ง€์œ„๊ทธ ํŽธ์ง‘๊ธฐ๋ณด๋‹ค ๋งˆํฌ๋‹ค์šด์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ Action Text์— ๋ฐ”๋กœ ๋„ฃ์„ ๊ฒƒ์ด๊ณ , HouseMD๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

House๋Š” ์ด๋ฏธ RightBook์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹์„ ํ™•์ธํ•˜๊ณ  ๋ชจ๋“  ์†Œ์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8.1์˜ ๋ง›๋ณด๊ธฐ์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋„ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Kamal 2.1, ๋งŽ์€ ๊ฒƒ๋“ค์ด ๋‹ค๊ฐ€์˜ค๊ณ  ์žˆ์ง€๋งŒ ์ž ์‹œ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ  ๋นจ๊ฐ„์ƒ‰ ์›์„ ์ฆ๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

[๋ฐ•์ˆ˜]

[์Œ์•…]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment