๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กWeb (back-end) (8)

Unfazedโ—๏ธ๐ŸŽฏ

[Spring Boot] ๋ฒ„์ „ ์ฒด๊ณ„ Semantic Versioning

Semantic Versioning(SemVer)์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฒด๊ณ„์ ์ธ ๊ทœ์น™์œผ๋กœ, MAJOR.MINOR.PATCH ํ˜•์‹์œผ๋กœ ๋ฒ„์ „์„ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด ์ฒด๊ณ„๋Š” API๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๋ฉฐ, Spring Boot ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ํ•ต์‹ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์œผ๋กœ ์ฑ„ํƒ๋˜์—ˆ๋‹ค. Semantic Versioning ๊ธฐ๋ณธ ํ˜•์‹MAJOR.MINOR.PATCHMAJOR ๋ฒ„์ „(์ฃผ ๋ฒ„์ „): ๊ธฐ์กด ๊ธฐ๋Šฅ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋  ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 1.x.x → 2.0.0)MINOR ๋ฒ„์ „(๋ถ€ ๋ฒ„์ „): ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 2.1.x → 2.2.0)PATCH ๋ฒ„์ „(ํŒจ์น˜ ๋ฒ„์ „): ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์ด ๋‚ด๋ถ€ ๊ฐœ์„ ์ด ์žˆ์„ ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 2.2.0 → 2...

Web (back-end)/Spring 2025. 2. 27. 14:19
JDBC์™€ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ (SQL Mapper, ORM)

JDBC๋Š” 1996๋…„ JDK 1.1์— ๊ณต์‹ ๋„์ž…๋œ Java์˜ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ API๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ์ˆ˜๋™ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ๋‚ฎ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด SQL Mapper์™€ ORM ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ’ก ์™œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?๋ฒค๋” ์ค‘๋ฆฝ์„ฑ: ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ‘œ์ค€ JDBC ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉ → ์‹ค์ œ ๊ตฌํ˜„์€ ๊ฐ DB ๋ฒค๋”์˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‹ด๋‹นํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ: OS/๋„คํŠธ์›Œํฌ ์ฐจ์ด๋ฅผ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ถ”์ƒํ™”๐Ÿ”„ ๋™์ž‘ ํ๋ฆ„์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ → DriverManager์— ์—ฐ๊ฒฐ ์š”์ฒญ๋“ฑ๋ก๋œ ๋“œ๋ผ์ด๋ฒ„๋“ค ์ค‘ JDBC URL ํŒจํ„ด ์ผ์น˜ํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„ ์„ ํƒํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฌผ๋ฆฌ์  ์—ฐ..

Web (back-end)/DB 2025. 2. 20. 02:24
์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๊ฐ€ Open ์ƒํƒœ์ผ ๋•Œ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€

1. HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„a) ์ •์ƒ ์ƒํƒœ(Closed)ํด๋ผ์ด์–ธํŠธ → ์ปจํŠธ๋กค๋Ÿฌ → ์„œ๋น„์Šค → ์™ธ๋ถ€ API ํ˜ธ์ถœ → ์‘๋‹ต ๋ฐ˜ํ™˜๋ชจ๋“  ์š”์ฒญ์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ๋กœ์ง๊นŒ์ง€ ์ •์ƒ์ ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.b) Open ์ƒํƒœ (Resilience4J)ํด๋ผ์ด์–ธํŠธ → ์ปจํŠธ๋กค๋Ÿฌ → ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค(Open) → Fallback ์‘๋‹ต ์ฆ‰์‹œ ๋ฐ˜ํ™˜ (์™ธ๋ถ€ API ํ˜ธ์ถœ ๋ฏธ๋ฐœ์ƒ)์š”์ฒญ์€ ์ปจํŠธ๋กค๋Ÿฌ ์—”๋“œํฌ์ธํŠธ์— ๋„๋‹ฌํ•˜์ง€๋งŒ, ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๊ฐ€ ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰์„ ์ฐจ๋‹จํ•œ๋‹ค.์™ธ๋ถ€ API ํ˜ธ์ถœ ์—†์ด Fallback ๋ฉ”์„œ๋“œ์—์„œ ์ง์ ‘ ์‘๋‹ต ์ƒ์„ฑ (์˜ˆ: 503 ์—๋Ÿฌ)2. ์ปจํŠธ๋กค๋Ÿฌ ๊ณ„์ธต ์˜ํ–ฅ ๋ถ„์„๊ตฌ๋ถ„์š”์ฒญ ๋„๋‹ฌ ์—ฌ๋ถ€์™ธ๋ถ€ API ํ˜ธ์ถœ ์—ฌ๋ถ€Closedโœ…โœ…Openโœ…โŒHalf-Openโœ…โš ๏ธ (์ œํ•œ์  ํ—ˆ์šฉ)์ปจํŠธ๋กค๋Ÿฌ ์ง„์ž… ๋กœ๊ทธ: ์š”์ฒญ์€ ํ•ญ์ƒ ๊ธฐ๋ก๋จ (HTTP ์š”..

Web (back-end)/HTTP 2025. 2. 19. 16:27
HTTP ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ถ”์ 

HTTP ์ฟ ํ‚ค(HTTP cookie) : ์›น ์„œ๋ฒ„์— ์˜ํ•ด ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋Š”, '์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ'.์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๊ธฐ๋ก ์ •๋ณด ํŒŒ์ผ๋กœ ์ฟ ํ‚ค, ์›น ์ฟ ํ‚ค, ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค๋ผ๊ณ ๋„ ํ•œ๋‹ค.  ์ฟ ํ‚ค์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐœ์ƒ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„ ๊ด€๋ จ ์ •๋ณด๋ฅผ  ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ฑ…์ž„์ด ์žˆ๊ณ , ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ 'ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํƒœ' ๋˜๋Š” 'HTTP ์ƒํƒœ ๊ด€๋ฆฌ ์ฒด๊ณ„(HTTP State Management Mechanism)๋ผ ํ•œ๋‹ค. ๊ณตํ†ต์ ์ธ ์ฟ ํ‚ค ์ €์žฅ ๋ฐฉ์‹๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณด๊ด€ํ•˜๋Š”๋ฐ ๊ฐ ์ฟ ํ‚ค๋Š” ์ด๋ฆ„,..

Web (back-end)/HTTP 2025. 2. 18. 15:02
์›น ํŽ˜์ด์ง€ ๋กœ๋“œ ๊ณผ์ • / Process of Loading a Web Page

1. ๋„คํŠธ์›Œํฌ ์š”์ฒญ URL ๋ถ„์„: ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•œ URL์„ ๋ถ„์„ํ•˜์—ฌ ํ”„๋กœํ† ์ฝœ, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, ๊ฒฝ๋กœ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ๋“ฑ์„ ํŒŒ์•…ํ•œ๋‹ค. DNS ์กฐํšŒ: ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด DNS ์„œ๋ฒ„์— ์กฐํšŒ๋ฅผ ๋ณด๋‚ธ๋‹ค. TCP ์—ฐ๊ฒฐ: DNS ์กฐํšŒ๋ฅผ ํ†ตํ•ด ์–ป์€ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ TCP ์—ฐ๊ฒฐ์„ ํ•œ๋‹ค. HTTP ์š”์ฒญ: ์„œ๋ฒ„์— HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋Š” ์š”์ฒญ๋˜๋Š” ๋ฆฌ์†Œ์Šค URL, ํ—ค๋” ์ •๋ณด, ์š”์ฒญ body(POST ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ์‹œ) ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค. *ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋จผ์ € ์บ์‹œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์บ์‹œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์บ์‹œ์— ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค. 2. ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ๋ฐ ์‘๋‹ต ์„œ๋ฒ„ ์ฒ˜๋ฆฌ: ..

Web (back-end) 2024. 1. 10. 04:18