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

๐Ÿช CS

(17)
๋„คํŠธ์›Œํฌ (์ฒ˜๋ฆฌ๋Ÿ‰, ํ† ํด๋กœ์ง€, ๋ณ‘๋ชฉํ˜„์ƒ) 1. ๋„คํŠธ์›Œํฌ๋ž€? ์ปดํ“จํ„ฐ ๋“ฑ์˜ ์žฅ์น˜๋“ค์ด ํ†ต์‹  ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌ์ถ•ํ•˜๋Š” ์—ฐ๊ฒฐ๋ง์„ ๋งํ•œ๋‹ค. ๋…ธ๋“œ(node)์™€ ๋งํฌ(link)๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ง‘ํ•ฉ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์šฉ์–ด ๋…ธ๋“œ : ๋„คํŠธ์›Œํฌ ์žฅ์น˜ (์„œ๋ฒ„, ๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜ ๋“ฑ) ๋งํฌ : ์œ ์„  ๋˜๋Š” ๋ฌด์„  1.1. ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ๋Š” ‘์ข‹์€’ ๋„คํŠธ์›Œํฌ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ข‹์€ ๋„คํŠธ์›Œํฌ ๋งŽ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง๋‹ค. ์žฅ์•  ๋นˆ๋„๊ฐ€ ์ ์œผ๋ฉฐ ์ข‹์€ ๋ณด์•ˆ์„ ๊ฐ–์ถ˜๋‹ค. ์ฒ˜๋ฆฌ๋Ÿ‰ (throughput) ๋งํฌ ๋‚ด์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘์œผ๋กœ, ๋ณดํ†ต ์–ผ๋งŒํผ์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹จ์œ„ : bps(bits per second) ์ดˆ๋‹น ์ „์†ก ๋˜๋Š” ์ˆ˜์‹ ๋˜๋Š” ๋น„ํŠธ ์ˆ˜ ๋ฐ›๋Š” ์˜ํ–ฅ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŽ์ด ์ ‘์†ํ•  ๋•Œ..
HTTP์™€ IP์ฃผ์†Œ IP ์ฃผ์†Œ ์ธํ„ฐ๋„ท ๊ณ„์ธต์— IP ์ฃผ์†Œ๋ฅผ ์“ด๋‹ค. ์ปดํ“จํ„ฐ - ์ปดํ“จํ„ฐ ๊ฐ„์˜ ํ†ต์‹  IP ์ฃผ์†Œ์—์„œ ARP๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ MAC ์ฃผ์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์‹  IP ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•œ ์œ„์น˜ ์ถ”์ฒ™ IP ์ฃผ์†Œ๋Š” ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ†ตํ•ด ๋™ ๋˜๋Š” ๊ตฌ๊นŒ์ง€ ์œ„์น˜ ์ถ”์  ๊ฐ€๋Šฅ ARP (Address Resolution Protocol) IP ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ MAC ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜๋Š” IP์™€ MAC ์ฃผ์†Œ์˜ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ARP๋ฅผ ํ†ตํ•ด IP ์ฃผ์†Œ(๊ฐ€์ƒ ์ฃผ์†Œ, ๋…ผ๋ฆฌ์  ์ฃผ์†Œ)๋ฅผ -> MAC ์ฃผ์†Œ(์‹ค์ œ ์ฃผ์†Œ, ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ)๋กœ ๋ณ€ํ™˜ RARP๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ -> IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ ARP์˜ ์ฃผ์†Œ ์ฐพ๋Š” ๊ณผ์ • ![[Pasted image 20230116003053.png]] ์žฅ์น˜ A๊ฐ€ Request ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ..
ERD์™€ ์ •๊ทœํ™” ๊ณผ์ • ERD (Entity Relationship Diagram) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ผˆ๋Œ€ ์—ญํ• ์„ ํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์˜ ๊ด€๊ณ„๋“ค์„ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค. 1. ERD์˜ ์ค‘์š”์„ฑ ERD๋Š” ์‹œ์Šคํ…œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๊ตฌ์ถ•ํ•œ ์ดํ›„์—๋„ ๋””๋ฒ„๊น… ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ์žฌ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ ์„ค๊ณ„๋„ ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ERD๋Š” ๊ด€๊ณ„ํ˜• ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ : ๋น„๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ์—†๊ฑฐ๋‚˜, ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌ๋˜์ง€ ์•Š์€ ์ •๋ณด 2. ์ •๊ทœํ™” ๊ณผ์ • ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์˜ ์ž˜๋ชป๋œ ์ข…์† ๊ด€๊ณ„๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์ƒ ํ˜„์ƒ์ด ์ผ์–ด๋‚˜์„œ ์ด๋ฅผ..
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (DB, DataBase) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (DB, DataBase) ์ผ์ •ํ•œ ๊ทœ์น™, ํ˜น์€ ๊ทœ์•ฝ์„ ํ†ตํ•ด ๊ตฌ์กฐํ™”๋˜์–ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ํŠน์ • DBMS๋งˆ๋‹ค ์ •์˜๋œ ์ฟผ๋ฆฌ ์–ธ์–ด(query language)๋ฅผ ํ†ตํ•ด ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •, ์กฐํšŒ ๋“ฑ ์ˆ˜ํ–‰ DBMS : ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ์–ด, ๊ด€๋ฆฌํ•˜๋Š” ํ†ตํ•ฉ ์‹œ์Šคํ…œ ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ ๋™์‹œ ๊ณต์œ  ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ„์— DBMS๊ฐ€ ์žˆ๊ณ , ๊ทธ ์œ„์— ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์กด์žฌํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. MySQL(DBMS) ์œ„์— Node.js๋‚˜ php(์‘์šฉ ํ”„๋กœ๊ทธ๋žจ)์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„์ง‘์–ด๋‚ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋กœ์ง ๊ตฌ์ถ• ์ข…๋ฅ˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 1. ์—”ํ„ฐํ‹ฐ (entity) ์‚ฌ๋žŒ, ์žฅ์†Œ, ๋ฌผ๊ฑด, ์‚ฌ๊ฑด, ๊ฐœ๋… ๋“ฑ ..
์‹œ๊ฐ„ ๋ณต์žก๋„ Big-O ๋ณต์žก๋„ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ์ž…๋ ฅ์˜ ํ•จ์ˆ˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋กœ์ง์ด '์–ผ๋งˆ๋‚˜ ์˜ค๋žœ ์‹œ๊ฐ„'์ด ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์“ฐ์ด๋ฉฐ, ๋ณดํ†ต Big-O ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. Big-O ํ‘œ๊ธฐ๋ฒ• ์ž…๋ ฅ ๋ฒ”์œ„ n์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ๋กœ์ง์ด ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ์˜ˆ๋ฅผ ๋“ค์–ด, '์ž…๋ ฅ ํฌ๊ธฐ n'์˜ ๋ชจ๋“  ์ž…๋ ฅ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด 10n^2 + n์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ด๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์ด ๋œ๋‹ค. for (int i=0; i
์˜์ƒ ํ›„๊ธฐ - ์ธํ„ฐ๋„ท๊ณผ ์›น์˜ ์—ญ์‚ฌ - ์ธํ„ฐ๋„ท์€ ์ž‘์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•ฉ์ณ์ง„ ๊ฐ€์žฅ ํฐ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ์ด๋‹ค. - ์›น์€ ๋„คํŠธ์›Œํฌ ์œ„์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. - ํ”„๋กœํ† ์ฝœ์€ ์ฃผ์†Œ๋ฅผ ์ฃผ์†Œ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ์ด๋‹ค. - ์›น์€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๋กœ๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ธ ํ”„๋กœํ† ์ฝœ๋กœ ์ž‘๋™ํ•œ๋‹ค.
์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ - ๋””์ž์ธ ํŒจํ„ด ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ๋”๋ณด๊ธฐ ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค๋กœ, BE์—์„œ ์ง€์ •ํ•œ API ์ฃผ์†Œ๊ฐ€ FE์˜ API ์ฃผ์†Œ๊ฐ€ ํ”„๋ก์‹œ ์— ์˜ํ•ด์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋ง‰ํžˆ๊ฒŒ ๋˜๋ฉด CORS๋ฅผ ๋˜์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋”๋ณด๊ธฐ ์ œ์–ด ํ๋ฆ„ ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ์ด ์–ด๋””์— ์žˆ๋А๋ƒ์— ์ฐจ์ด์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ •ํ•ด์ง„ ๊ธธ์„ ๋”ฐ๋ผ์•ผ ํ•˜๋ฏ€๋กœ ์ˆ˜๋™์ ์ด๊ณ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ ๋™์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์ œ์–ด์˜ ์—ญ์ „(Inversion Of Control)์ด ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ„ฐ๋ ˆ์ดํ„ฐ ํŒจํ„ด์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋”๋ณด๊ธฐ ์žฅ์ ์€ ์ง‘ํ•ฉ์ฒด ํด๋ž˜์Šค์˜ ์‘์ง‘๋„๋ฅผ ๋†’์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ง‘ํ•ฉ์ฒด ๋‚ด์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ์ผ์ด ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์•Œ ํ•„์š” ์—†์ด, ..
ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฐจ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋ž‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ? ์šฐ์„  ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์ •ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋“ˆํ™”ํ•œ ๊ฒƒ์ด๋‹ค. ๊ณผ์—ฐ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฑธ๊นŒ? ์ œ์–ด ํ๋ฆ„ ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ์ด ์–ด๋””์— ์žˆ๋А๋ƒ์˜ ์ฐจ์ด์ด๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ •ํ•ด์ง„ ๊ธธ์„ ๋”ฐ๋ผ์•ผ ํ•˜๋ฏ€๋กœ ์ˆ˜๋™์ ์ด๊ณ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ ๋™์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ! ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์ œ์–ด์˜ ์—ญ์ „(Inversion Of Control)์ด ์ ์šฉ๋˜์–ด ์žˆ๋‹ค. ํ”„๋ ˆ์ž„ ์›Œํฌ ํด๋”๋ช…, ํŒŒ์ผ๋ช…์— ๋Œ€ํ•œ ๊ทœ์น™ O ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ์ข€ ๋” ์—„๊ฒฉํ•˜๋‹ค. ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ‘๋น„ํ–‰๊ธฐ(๋„๊ตฌ)’๋ฅผ ํƒ€๊ณ  ์ด๋™ํ•˜์ง€๋งŒ ‘๋น„ํ–‰๊ธฐ’๊ฐ€ ์ปจํŠธ๋กคํ•˜๊ณ  ๋‚˜๋Š” ๊ฐ€๋งŒํžˆ ์•‰์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด์™€ ๋น„์Šทํ•˜๋‹ค. Spring Framework Vue.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋”๋ช…, ํŒŒ์ผ๋ช… ๋“ฑ์— ๋Œ€ํ•œ ๊ทœ์น™ X ํ”„๋ ˆ์ž„์›Œํฌ์—..