๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Springboot

๋ฐฑ์—”๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ...

by ๋Œ€๋ณต2 2024. 7. 8.

 

 

์„œ๋ก 

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

 

 

๋ฐฑ์—”๋“œ?

๋ฐฑ์—”๋“œ๊ฐ€ ๋ญ”์ง€ ๋”ฑ ์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ ๋ณด์—ฌ์„œ ํ”„๋ก ํŠธ์—”๋“œ์™€์˜ ์ฐจ์ด์ ์„ ๋ณด๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ด์ œ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ์„ ๋•Œ, ํ˜„์žฌ ์ด์šฉ์ž๊ฐ€ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋“ค์ด ํ”„๋ก ํŠธ๋‹ค.

๊น”๋”ํ•œ UI์™€ ๋ฌด์–ธ๊ฐ€ ์จ์ ธ ์žˆ๋Š” ํ…์ŠคํŠธ, ๊ทธ๋ฆผ๋“ค๊นŒ์ง€ ๋ˆˆ์— ๋ณด์ด๋Š” ๊ฑด ๋‹ค ํ”„๋ก ํŠธ๋‹ค.

 

๋ฐฑ์—”๋“œ๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ฐ์  ์š”์†Œ์— ๋’ท๋ฐ›์นจ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๋Š” ํŒŒํŠธ๋‹ค. ์‚ฌ์ด๋“œ์— ์žˆ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋‚˜ ํฌ์ŠคํŒ…๋œ ๊ธ€, ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๊ทธ๋ฆผ๋“ค์€ ์ด์šฉ์ž์˜ PC์— ์ €์žฅ๋œ ๊ฒƒ์ด ์•„๋‹ ๊ฒƒ์ด๋‹ค. ์–ด๋”˜๊ฐ€์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ์ผ ํ…๋ฐ ๋ฐฑ์—”๋“œ๋Š” ๋ฐ”๋กœ ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค!!

 

 

๋ฐฑ์—”๋“œ๋Š” ๋ฌด์Šจ ์–ธ์–ด๋ฅผ ์ฃผ๋กœ ์“ธ๊นŒ?

๋ณดํ†ต ๋ฐฑ์—”๋“œ๋ฅผ ์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์ด์–ด๋„ ์ „๊ณต ๊ด€๋ จ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด์•˜๋‹ค๋ฉด ์Šคํ”„๋ง์ด๋‚˜ ๋…ธ๋“œ JS ๊ฐ™์€ ๊ฑด ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค.

์Šคํ”„๋ง์€ ์ž๋ฐ”๋‚˜ ์ฝ”ํ‹€๋ฆฐ์„ ์“ฐ๊ณ ... ๋…ธ๋“œ JS๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๊ณ ...
๋งž๋‹ค. ์ € 2๊ฐœ๋ฅผ ๋งŽ์ด ์“ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์–ธ์–ด๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ด์™ธ์—๋„ ํŒŒ์ด์ฌ์ด๋‚˜ PHP ๊ฐ™์€ ์–ธ์–ด๋„ ์‚ฌ์šฉ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์–ธ์–ด๋กœ๋งŒ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์—” ๋„ˆ๋ฌด๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด(๊ท€์ฐฎ์Œ์ด) ๋“ค์–ด๊ฐ„๋‹ค.

๊ทธ๋ž˜์„œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์งœ๋†“์€ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋“ค์„ ๊ฐ€์ ธ์™€์„œ ๋‚ ๋จน์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

(๋ณ„๋„๋กœ ๋ˆ„๊ตฐ๊ฐ€ ๊ตฌํ˜„ํ•ด ๋†“์€ ํŒจํ‚ค์ง€๋“ค์„ ํ•œ ์ค„ ์ž…๋ ฅ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋„ ์žˆ๋‹ค. = ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋‹ค.)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ”„๋ ˆ์ž„์›Œํฌ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
JavaScript Express Npm
Java Spring Maven
Python Django pip

 

 

 

๋ฐ์ดํ„ฐ

์ด์ œ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค. ํ•˜์ง€๋งŒ ์•ผ์†ํ•˜๊ฒŒ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋„ ๊ฐ™์ด ํ•ด์•ผ ํ•œ๋‹ค.. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์žˆ๋Š” ๊ฑธ๊นŒ? ๋ฐ”๋กœ DB(DataBase)๋ผ๋Š” ๊ณณ์— ์ €์žฅ์ด ๋œ๋‹ค.

DB ๋˜ํ•œ ๊ฐœ๋ฐœ์ž๋ฅผ ํฌ๋งํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด MySQL ๊ฐ™์€ DB๋“ค์„ ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ์ด DB๋Š” ํ†ต์‹ ์šฉ ์„œ๋ฒ„์— ์žˆ์„๊นŒ?

์ •๋‹ต์€ ํ‹€๋ ธ๋‹ค. DB ์„œ๋ฒ„๋ผ๋Š” ๊ฒƒ์ด ๋˜ ์žˆ๋‹ค. ์ฐธ ๋ณต์žกํ•˜๋‹ค..

๊ฒฐ๊ตญ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์˜จ ๋ฉ”์‹œ์ง€(์ฟผ๋ฆฌ)๋ฅผ ์ฒ˜๋ฆฌํ•ด ์ค„ ์„œ๋ฒ„์™€ DB์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ง์—…์ด๋‹ค.

 

 

์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด

1. ํ‹ฐ์Šคํ† ๋ฆฌ์— ๊ธ€์„ ์“ฐ๊ณ  ๋‚œ ๋’ค, ์ž‘์„ฑ์ž๋Š” ์™„๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒƒ์ด๋‹ค.

2. ๊ทธ ๋ฒ„ํŠผ์€ ์„œ๋ฒ„์— ์ž‘์„ฑ์ž ๋ธ”๋กœ๊ทธ DB์— ํ•ด๋‹น ๊ธ€์„ ์˜ฌ๋ ค๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค.

3. ์„œ๋ฒ„๋Š” ๊ทธ ์š”์ฒญ์„ ๋ฐ›๊ณ  DB์— ์ž‘์„ฑ์ž ๊ธ€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด๋‹ค. 

4. ์ €์žฅ์ด ์™„๋ฃŒ๋˜๋ฉด ์ž‘์„ฑ์ž์—๊ฒŒ ์™„๋ฃŒ๋๋‹ค๋Š” ์•Œ๋ฆผ์„ ์ค„ ๊ฒƒ์ด๋‹ค.

 

์ด๊ฒƒ์€ ์ž‘์„ฑ ์ค‘์ธ ์ง€๊ธˆ์˜ ์ฃผ์†Œ๋ฅผ ์ผ๋ถ€ ์บก์ฒ˜ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด ์ฃผ์†Œ์—๋„ ๋‹ค ๋œป์ด ์žˆ์—ˆ๋‹ค.

์ฃผ์†Œ -> ๋ณด๋‚ผ ์„œ๋ฒ„

URL Path-> ์ ‘๊ทผํ•  ๊ฒฝ๋กœ(๋ช…์‚ฌ)

์š”์ฒญ ํƒ€์ž… -> ์›ํ•˜๋Š” ์ฒ˜๋ฆฌ(๋™์‚ฌ)

 

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

๊ทผ๋ฐ ์™œ API๋ฅผ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊นŒ? ์ด๋ฏธ ์ •ํ•ด์ง„ ๊ตญ๋ฃฐ์ด ์žˆ์—ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ REST API๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 

์ธํ”„๋ผ

์ด๋ฆ„๋ถ€ํ„ฐ๊ฐ€ ๊ธฐ๋ฐ˜ ์‹œ์„ค์ด๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋ฒ„์˜ ํ•˜๋“œ์›จ์–ด์  ์˜๋ฏธ๋ฅผ ๋œปํ•œ๋‹ค. ๊ฒŒ์ž„์—์„œ ๊ฐ€๋” ์‚ฌ๋žŒ์ด ๋งŽ์ด ๋ชฐ๋ฆฌ๋ฉด '์„œ๋ฒ„ ํ„ฐ์กŒ๋‹ค'๋ผ๋Š” ํ‘œํ˜„์„ ํ•˜๋Š”๋ฐ, ์ •๋ง๋กœ ์„œ๋ฒ„๊ฐ€ ํ„ฐ์ง„ ๊ฑฐ๋‹ค. ํ•˜์ง€๋งŒ ํšŒ์‚ฌ ์ž…์žฅ์—์„œ๋„ ์‚ฌ๋žŒ์ด ์–ธ์ œ๋‚˜ ๋ชฐ๋ฆฌ์ง€ ์•Š์„ ๋•Œ๋Š” ์‚ฌ๋†“์€ ์„œ๋ฒ„๊ฐ€ ์•„๊น์ง€ ์•Š์„๊นŒ? ๊ทธ๋ž˜์„œ ์š”์ฆ˜์€ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ผ๋Š” ๋ ŒํŠธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

 

ํด๋ผ์šฐ๋“œ

์•„๋งˆ์กด์˜ aws, ๊ตฌ๊ธ€์˜ GCP, ๋„ค์ด๋ฒ„ NCP ๋“ฑ๋“ฑ๊ณผ ๊ฐ™์ด ์„œ๋ฒ„๋ฅผ ๋นŒ๋ ค์ฃผ๋Š” ์„œ๋น„์Šค๋“ค์ด ์žˆ๋‹ค. ์ด ํšŒ์‚ฌ๋“ค์˜ ์‹ค์ œ ์„œ๋ฒ„์—๋Š” ๋งŽ์€ ์–‘์˜ VM(๊ฐ€์ƒ๋จธ์‹ )์ด ๋Œ์•„๊ฐ€๊ณ  ์žˆ๊ณ , ์ด VM์„ ๋นŒ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— DB ์ „์šฉ ์„œ๋ฒ„ ๋˜ํ•œ VM์„ ๋นŒ๋ ค์„œ ์—ด ์ˆ˜ ์žˆ๊ณ  ์ด๋Ÿฌํ•œ VM์„ ํ†ต์งธ๋กœ ๋นŒ๋ฆฌ๋Š” ๊ฒƒ์„ IaaS(Infrastructure as a Service)๋ผ๊ณ  ํ•œ๋‹ค.

 

๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ, ์ด์ „์— ์„œ๋ฒ„๊ฐ€ ํ„ฐ์ง„๋‹ค๋Š” ๋ง์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋Š” ๊ฐ‘์ž๊ธฐ ํ•œ์ •๋œ ์„œ๋ฒ„์— ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆด ๋•Œ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ์‹œ์ผœ ์ค„ ๋ฐฉ๋ฒ•๋„ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, LB(Load Balancer)๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ์ด ์นœ๊ตฌ์˜ ์—ญํ• ์€ ํŠธ๋ž˜ํ”ฝ์ด ๋„ˆ๋ฌด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง„ VM์„ ๋” ๋นŒ๋ ค์˜ค๊ณ , ํŠธ๋ž˜ํ”ฝ์„ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ๋ถ„ํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์„œ๋ฒ„์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ์•Œ์•„์„œ VM์˜ ๊ฐœ์ˆ˜์™€ LB๋ฅผ ์„ธํŒ…ํ•ด ์ฃผ๋Š” ์„œ๋น„์Šค๋„ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ, ๋ฐ”๋กœ Paas(Platform as a Service)๋ผ๊ณ  ํ•œ๋‹ค.

 

VM์˜ ํฌ๊ธฐ๋Š” ํ•œ์ •์ ์ด๋ฉฐ, ๊ทœ๋ชจ๊ฐ€ ํฐ ๊ธฐ์—…์€ ์ฝ”๋“œ๋Ÿ‰์ด๋‚˜ ํŠธ๋ž˜ํ”ฝ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์˜ VM์œผ๋กœ ๊ตด๋ฆด ์ˆ˜๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ VM์„ ๊ตฌ๋ถ„ํ•ด์„œ ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ผ๊ณ  ํ•œ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋งŒ ๋นŒ๋ ค์„œ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ์„œ๋ฒ„์— ํŠน์ • ์„œ๋น„์Šค๋งŒ ๋นŒ๋ ค ์“ธ ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ SaaS(Software as a Service)๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

๋งˆ๋ฌด๋ฆฌ

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