๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€388

์›น ๋ณด์•ˆ๊ณผ ํ†ต์‹  ๊ตฌ์กฐ 1. ์ฟ ํ‚ค(Cookie)๋ž€?HTTP๋Š” Stateless(๋ฌด์ƒํƒœ) ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.์ฆ‰, ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ๋žŒ์ด ์ด์ „์—๋„ ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ๋žŒ์ธ์ง€๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์›น ์„œ๋น„์Šค๋Š” ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์œ ์ง€ ๋“ฑ ๊ธฐ์–ตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.์ด๋Ÿฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ฟ ํ‚ค์ž…๋‹ˆ๋‹ค.1-1. ์ฟ ํ‚ค์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ Set-Cookie ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค๋ฅผ ๋‚ด๋ ค๋ณด๋ƒ…๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ™์€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ž๋™์œผ๋กœ Cookie ํ—ค๋”์— ์ฟ ํ‚ค๋ฅผ ๋‹ด์•„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.์„œ๋ฒ„๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ๋ณด๊ณ  ์–ด๋–ค ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์˜จ ์š”์ฒญ์ธ์ง€ ๋“ฑ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.// ์˜ˆ์‹œ ์‘๋‹ต ํ—ค๋”Set-Cookie: sessi.. 2025. 12. 12.
SQL ๋™์ž‘ ์›๋ฆฌ์™€ ์ตœ์ ํ™” 1. JOIN / GROUP BY / HAVING1-1. JOINํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต ํ…Œ์ด๋ธ” ํ•˜๋‚˜์— ๋‹ค ๋„ฃ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด,user ํ…Œ์ด๋ธ”: ์‚ฌ์šฉ์ž ์ •๋ณด (id, name, email…)orders ํ…Œ์ด๋ธ”: ์ฃผ๋ฌธ ์ •๋ณด (id, user_id, total_price…)์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ  ๋†“์œผ๋ฉด, ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ฃผ๋ฌธ์„ ํ–ˆ๋Š”์ง€๋ฅผ ๋ณด๋ ค๋ฉด ๋‘ ํ…Œ์ด๋ธ”์„ ๋ฌถ์–ด์„œ ์กฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด JOIN์ž…๋‹ˆ๋‹ค.๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ INNER JOIN, LEFT JOIN์ž…๋‹ˆ๋‹ค. 1. INNER JOIN๋‘ ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ํ–‰๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ์กฐ์ธ์ž…๋‹ˆ๋‹ค.SELECT u.id, u.name, o.id AS order_id, o.total_priceFROM users uJOIN.. 2025. 12. 12.
์ธ์ฆ/์ธ๊ฐ€ (Authentication & Authorization) ์›น ์„œ๋น„์Šค์—์„œ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ์šฉ๋œ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์ด๋•Œ ํ•„์š”ํ•œ ๊ฐœ๋…์ด ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)์ž…๋‹ˆ๋‹ค.1. ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)์˜ ์ฐจ์ด์ธ์ฆ์€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ์ธํ•  ๋•Œ ID/๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•˜๊ฑฐ๋‚˜ “์ด ์‚ฌ๋žŒ์ด ์‹ค์ œ๋กœ ์ด ๊ณ„์ • ์ฃผ์ธ์ธ๊ฐ€?”๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ฐ€๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ๊ธ€์„ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ด€๋ฆฌ์ž๋งŒ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ธ๊ฐ€์ž…๋‹ˆ๋‹ค.⇒ ๋กœ๊ทธ์ธ์€ ์ธ์ฆ, ๊ถŒํ•œ ์ฒดํฌ๋Š” ์ธ๊ฐ€2. Session ๊ธฐ๋ฐ˜ ์ธ์ฆ (์ „ํ†ต์ ์ธ ๋ฐฉ์‹)์„ธ์…˜ ์ธ์ฆ์€ ์„œ๋ฒ„๊ฐ€ .. 2025. 12. 5.
HTTP์™€ ์›น ํ†ต์‹  ๊ธฐ์ดˆ 1. HTTP๋ž€?HTTP(HyperText Transfer Protocol)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™(ํ”„๋กœํ† ์ฝœ) ์ž…๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋ฒ„ํŠผ์„ ํด๋ฆญ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ(request)์„ ์ „์†ก์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„, ์‘๋‹ต(response)์„ ์ „์†ก์ด๋•Œ “์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์„์ง€”๋ฅผ ์ •ํ•ด๋†“์€ ์•ฝ์†์ด ๋ฐ”๋กœ HTTP ์ž…๋‹ˆ๋‹ค.2. HTTP ๋ฉ”์„œ๋“œ์™€ IdempotentHTTP ์š”์ฒญ์—๋Š” “์ด ์š”์ฒญ์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์€์ง€”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋™์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์ด ๋ฐ”๋กœ HTTP ๋ฉ”์„œ๋“œ(Method) ์ž…๋‹ˆ๋‹ค.2-1. ์ž์ฃผ ์“ฐ๋Š” HTTP ๋ฉ”์„œ๋“œGET์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉex) ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ, ํŠน์ • ๊ธ€ ์ƒ์„ธ ์กฐํšŒ ๋“ฑPOST์„œ๋ฒ„์— ์ƒˆ๋กœ.. 2025. 11. 26.
API API (Application Programming Interface)1. ๊ฐœ๋…API๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•จ.์ฆ‰, ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด์ง„ ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต๋ฐ›๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ(Protocol) ์ž„.์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋จ.2. ํŠน์ง•ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋ฐ ๊ธฐ๋Šฅ ํ˜ธ์ถœ์„ ํ‘œ์ค€ํ™”ํ•จ๋‚ด๋ถ€ ๋กœ์ง์„ ์ˆจ๊ธฐ๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•จ (์บก์Аํ™” ๊ฐœ๋…๊ณผ ์œ ์‚ฌ)ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด์— ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•จJSON, XML ๋“ฑ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๊ตฌ์กฐ๋กœ ๋™์ž‘3. ๊ตฌ์„ฑ ์š”์†Œ๊ตฌ์„ฑ ์š”์†Œ์„ค๋ช…EndpointAPI๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๋Š” URL ์ฃผ์†ŒMethod๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹ (G.. 2025. 11. 7.
XML XML (eXtensible Markup Language)1. ๊ฐœ๋…XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋งˆํฌ์—… ์–ธ์–ด๋กœ, ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ(Meaning) ์™€ ๊ตฌ์กฐ(Structure) ๋ฅผ ํ•จ๊ป˜ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ.ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ(Extensible) ์ด ๋†’์œผ๋ฉฐ, ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜, ์„ค์ • ํŒŒ์ผ, ๋ฌธ์„œ ๊ตฌ์กฐ ์ •์˜ ๋“ฑ์— ๋„๋ฆฌ ํ™œ์šฉ๋จ.2. ํŠน์ง•ํƒœ๊ทธ()๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ตฌ์กฐ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ํ•จ๊ป˜ ํ‘œํ˜„ ๊ฐ€๋Šฅ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์–ด๋ ต์ง€๋งŒ ๊ธฐ๊ณ„๊ฐ€ ํ•ด์„ํ•˜๊ธฐ ์šฉ์ดํ•จ๊ณ„์ธต์ (hierarchical) ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์„ ์œ„ํ•œ DTD ๋˜๋Š” XML Schema ์ง€์›์ฃผ์„() ์‚ฌ์šฉ ๊ฐ€๋ŠฅJSON๋ณด๋‹ค ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•จํ†ต์‹ ๋ณด๋‹ค๋Š” ๋ฌธ์„œ ์ €์žฅ, ์„ค์ •, ๋ณต์žกํ•œ ๊ณ„์ธต ํ‘œํ˜„์— ์ฃผ๋กœ ์‚ฌ์šฉ๋จ3... 2025. 10. 29.
๋ฐ˜์‘ํ˜•