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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ245

2022.05.29 ใ€Œ๊ฒฐ์ œ APIใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ crud ์ž‘์—…ํ•œ ๊ฒƒ์„ ์ˆ˜์ • ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋ฒˆ ์ฃผ์— ๋๋‚ด๊ณ  ๋‚˜์„œ, ๋’ค๋Šฆ๊ฒŒ ๊ฒฐ์ œ API๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์นด์นด์˜ค ํŽ˜์ด API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋งŒํผ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์–ด๋””์„œ ๋ณธ ๊ฑด๋ฐ ๋งŒ๋“ค์–ด์ง„ API๋ฅผ ๊ฐ€์ ธ์™€์„œ ์“ฐ๋Š” ๊ฒƒ๋„ ๋Šฅ๋ ฅ์ด๋ผ๊ณ ..ใ…‹ใ…‹ ๊ทธ๋ž˜๋„ ํ•ด์•ผ์ง€ ์–ด์ฉŒ๊ฒ ๋‚˜. ์นด์นด์˜ค ํŽ˜์ด API ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ ๋˜๊ฒŒ ๋‹ค์–‘ํ•œ API๋ฅผ ์†Œ๊ฐœํ•ด ๋†“์•˜๋‹ค. ๊ฒฐ์ œ ์š”์ฒญ๋„ ๋ณด์•ˆ์ƒ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ํ•ด์•ผ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„˜๊ฒจ ์ฃผ๊ณ  ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ๊ต‰์žฅํžˆ ๋งŽ๋‹ค. ์‹ค๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ API๋ผ ํ™•์‹คํžˆ ๋‹ค๋ฅด๊ธด ํ•˜๋‹ค. ๊ฐœ์ธ์ ์ธ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ํ…Œ์ŠคํŠธ ๊ฒฐ์ œ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ฆฌ๋Š” ์ž‘์—…์€ ์ฐธ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ ๊ฒฐ์ œ ์š”์ฒญ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ค๊ณ„ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํฌ๊ฒŒ ๋ณด๋ฉด ๋‘ ๊ฐ€์ง€ ์ข….. 2022. 5. 29.
2022.05.28 ใ€Œ์ฟ ํ‚ค ์ˆ˜์ •ใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API๋ฅผ ์ฒ˜์Œ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์ฟ ํ‚ค๋กœ ํž˜๋“ค๊ฒŒ ์งฐ์—ˆ๋‹ค. ์˜ค๋Š˜ ์ฃผ๋ฌธ API๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์นด์นด์˜คํŽ˜์ด ๊ด€๋ จ API ํƒ์ƒ‰ ๋ฐ ๊ตฌ์ƒ์„ ํ•˜๋˜ ๋„์ค‘ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฒฐ์ œํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋– ์˜ฌ๋ ธ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API ๋™์ž‘์ด ์ž˜ ๋˜๋Š”์ง€ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ํ™•์ธ์„ ํ•˜๋˜ ๋„์ค‘ ์ด์ƒํ•œ ์ฟ ํ‚ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.. ๋‹ค์‹œ ํ•œ๋ฒˆ ์ ๊ฒ€์„ ํ†ตํ•ด ์ฝ”๋“œ ์ˆ˜์ •์„ ํ•˜๋ฉฐ ๋‹จ๋ฒˆ์— ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋Š” ์ž๋งŒ์‹ฌ ๋Š๊ผˆ๋˜ ์ž์‹ ์— ๋ฐ˜์„ฑ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค..ใ…Žใ…Ž ๋ฌธ์ œ์  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์ถ”๊ฐ€๊ฐ€ ๋˜์งˆ ์•Š๋Š”๋‹ค ์ฟ ํ‚ค๊ฐ€ ๋‹ค์ค‘์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค => ์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์ œ์ผ ์ปธ๋‹ค ๊ธฐ์กด ์ฝ”๋“œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ฟ ํ‚ค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ response ๊ฐ์ฒด์— ์‚ฝ์ž…ํ•œ๋‹ค. ๋ฌธ์ œ ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์€ Key๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ €์žฅ๋œ๋‹ค. => ๋‚ด๊ฐ€ ์›ํ•œ ๊ฑด ๊ธฐ์กด ์ฟ ํ‚ค๋ฅผ .. 2022. 5. 28.
๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ [Micro Service Architecture] ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ๊ณ„์ธต ๊ฐ„ DTO ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋Š” ์ผ์ด ๋งŽ์•„์กŒ๋‹ค. ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์ ์ ˆํžˆ ์„ค๊ณ„ํ•ด์•ผ ํ•  ํ•„์š”๋ฅผ ๋Š๋ผ๋ฉฐ ์ตœ๋Œ€ํ•œ ํด๋ž˜์Šค ์„ค๊ณ„๋ฅผ ์ž˜ํ–ˆ๋‹ค. ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๋˜ ์ค‘ MAS ์•„ํ‚คํ…์ณ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•œ๋ฒˆ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ  ์ˆ˜์ •์„ ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ๋ณดํŽธ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ (Monolithic Architecture) ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ๋ณด์•„์˜จ ํ˜•ํƒœ์ด๋‹ค! ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ ์ฃผ๋กœ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ๊ฒฝ์šฐ ํ•œ๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚จ ์žฅ์  ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ฒ˜๋กœ ๊ฐœ๋ฐœ์ด ์‰ฝ๋‹ค ๋ณต์žกํ•˜์ง€ ์•Š๊ณ , ๋ฐฐํฌ๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ค ํ™•์žฅ์„ฑ์ด ์‰ฝ๋‹ค ๊ณ ๊ฐ€์šฉ์„ฑ ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค ๋‹จ์  Scale out์ด ์–ด.. 2022. 5. 27.
2022.05.26 ใ€ŒํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„ ๊ฒฝ์šฐใ€ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ๋Š๋ฆฌ๋‹ค. ์„œ๋ฒ„ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ด ๋ชฐ๋ ค ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•˜๋Š” ์‹œ๊ฐ„์ด ๋ฌด์ง„์žฅ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌ๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด์•˜๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ์‹์œผ๋กœ ํ•ด๊ฒฐ์„ ํ•˜๋Š”์ง€? ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๋™๊ธฐ๋Š” ์ฒซ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด๊ณ , ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์ด๋‹ค. ์ด๋ฉ”์ผ ์ „์†ก์— ์ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์ ์šฉํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. Async Config ์Šคํ”„๋ง์—์„œ๋Š” @Async๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. configuration์„ ํ†ตํ•ด ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ปค์Šคํ„ฐ ๋งˆ์ด์ง• ์‹œ์ผฐ๋‹ค. Async ์ ์šฉ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธธ ๋ฐ”๋ผ๋Š” ๋ฉ”์„œ๋“œ์— ์• ๋…ธํ…Œ์ด์…˜์„ ์ .. 2022. 5. 26.
2022.05.25 ใ€ŒEmail ์ธ์ฆใ€ ์—ด์‹ฌํžˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ดˆ๊ธฐ ๊ตฌ์ƒํ•œ wiki๋ฅผ ๋‹ค์‹œ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ํšŒ์›๊ฐ€์ž… ์‹œ ์ด๋ฉ”์ผ api๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑธ ๊นŒ๋จน์—ˆ๋‹ค.. ๊ทธ๋ž˜์„œ ํšŒ์›๊ฐ€์ž…์„ ๋‹ค์‹œ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค. Java์˜ MailSender ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SMTP ๊ตฌ๊ธ€ ์ด๋ฉ”์ผ๋กœ ์ด๋ฉ”์ผ ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด์ฃผ๋„๋ก ์„ค๊ณ„ํ•˜๊ณ  ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ redis DB์— ์ €์žฅํ•˜์—ฌ ๋น„๊ตํ•˜๊ณ  ํšŒ์›๊ฐ€์ž…์„ ์ด๋ฃจ๊ฒŒ ํ•  ๊ฒƒ์ด๋‹ค. Mail Sender // Mail implementation 'org.springframework.boot:spring-boot-starter-mail' ๋จผ์ € ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. Application.yml ์ง€๊ธˆ๊นŒ์ง€ Properties ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ๊ธฐํšŒ์— yaml์„ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ์ด์œ ๋Š” ์ธ.. 2022. 5. 25.
2022.05.24 ใ€ŒLv.3 ์ž…๊ตญ์‹ฌ์‚ฌใ€ ์š”์ƒˆ ํ”„๋กœ์ ํŠธ ๋น„์ค‘์ด ๋„ˆ๋ฌด ์ปธ๋˜์ง€๋ผ ์˜ค๋žœ๋งŒ์— ์‹œ๊ฐ„์ด ๋‚˜์„œ ์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘์—์„œ ์ด๋ถ„ ํƒ์ƒ‰ (Binary Search)์„ ์ด์šฉํ•œ ๋ฌธ์ œ์ด๋‹ค. ์–ผํ• ๋ณด๋‹ˆ๊นŒ ์ถœ์ œ์œจ์ด ๋‚ฎ๋˜๋ฐ ๊ทธ๋ž˜๋„ ์ด๋ก  ์ƒ ์•Œ๊ณ  ๊ฐ€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•„์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. ์ด๋ถ„ ํƒ์ƒ‰ (Binary Search) ์ด๋ถ„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ์ตœ์†Œ, ์ตœ๋Œ€ ๊ฐ’์„ ์ •ํ•ด ๋‘๊ณ  ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ€๋ฉฐ ์ค‘๊ฐ„ ๊ฐ’์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ ํƒ์ƒ‰์„ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ O(logN)์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. https://programmers.co.kr/learn/courses/30/lessons/43238 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ž…๊ตญ์‹ฌ์‚ฌ n๋ช…์ด ์ž…๊ตญ์‹ฌ์‚ฌ๋ฅผ ์œ„ํ•ด ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ž…๊ตญ์‹ฌ์‚ฌ๋Œ€์— ์žˆ.. 2022. 5. 24.
2022.05.24 ใ€Œ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง Ver.2ใ€ ์ฃผ๋งˆ๋‹ค ๋ฆฌํŒฉํ„ฐ๋ง ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ ์„ค๊ณ„ํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์ฃผ๋งˆ๋‹ค ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜๋‹ˆ๊นŒ ํ™•์‹คํžˆ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง€๋Š” ๊ฑธ ๋Š๋‚€๋‹ค. ์˜ค๋Š˜ ์•„์นจ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋”ฐ์ง€๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ฑฐ๋‹ˆ์™€ ์–ด๋ ค์šด ๋“ฏํ•˜๋ฉด์„œ๋„ ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋„์ž…ํ•ด์„œ ์ง„ํ–‰ํ•˜๋‹ˆ ๋‚˜๋ฆ„ ๋ณด๋žŒ์ฐผ๋˜ ๋ฆฌํŒฉํ„ฐ๋ง์ด์—ˆ๋‹ค. ์ง๋ฉดํ–ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ๋‚˜์—ดํ•˜๋ฉฐ ์ •๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ๋‹ค. ์ธ์ฆ & ์ธ๊ฐ€ ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋‚˜๋Š” ์ธ์ฆ, ์ธ๊ฐ€๋ฅผ ์ธํ„ฐ์…‰ํ„ฐ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ธ์ฆ์€ ํ† ํฐ ๊ฒ€์ฆ, ์ธ๊ฐ€๋Š” ์—๋„ˆํ…Œ์ด์…˜ ๋ฐ ํ† ํฐ ๊ฒ€์ฆ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ : ์ธํ„ฐ์…‰ํ„ฐ์˜ preHandle ๋ฉ”์„œ๋“œ ์•ˆ์— ๋‘ ๊ฐœ์˜ ๋กœ์ง์ด ๋™์‹œ์— ๋“ค์–ด์žˆ๋‹ค. ํ† ํฐ ๊ฒ€์ฆ + ์—๋„ˆํ…Œ์ด์…˜ ๊ฒ€์ฆ => ์ฑ…์ž„์ด ๋งŽ๋‹ค -> ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ํ•ด๊ฒฐ : ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ๋ถ„๋ฆฌํ–ˆ๋‹ค. @Override .. 2022. 5. 24.
2022.05.22 ใ€ŒShopping Cart API [Ver.2]ใ€ ์–ด์ œ๋ถ€ํ„ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API ๊ตฌํ˜„์— ๋Œ€ํ•ด ๊ณ ๋ฏผ์„ ์ •๋ง ๋งŽ์ด ํ–ˆ๋‹ค. ๋‹น์—ฐํžˆ DB๋ฅผ ์ด์šฉํ•˜๋‹ค ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ฒ˜์Œ์ด๋ผ ๋” ๊ฐœ๋…์ด ๋‚ฏ์„ค์—ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์กฐํšŒ๋Š” ๋๋‚ฌ๋Š”๋ฐ, ์˜ค๋Š˜ ์•„์นจ ๋‹ค์‹œ ๋ณด๋‹ˆ ์ถ”๊ฐ€์—์„œ ์ด์ƒํ•œ ๋กœ์ง์ด ์žˆ์—ˆ๊ณ , ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์„œ ์ˆ˜์ •์„ ํ•˜๊ณ  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ API๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. API๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด์„œ ๋ฌธ์ œ์ ๋“ค๊ณผ ํ™•์‹คํžˆ ์•Œ๊ฒŒ ๋œ ์ ์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค~ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์กฐํšŒ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์กฐํšŒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด์žˆ๋Š” ์ƒํ’ˆ ๋ชฉ๋ก์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ฒ ๋‹ค๋Š” ๊ฒƒ. ๊ทธ ์ƒํ’ˆ ๋ชฉ๋ก์˜ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ–ˆ๋‹ค. public class CartItemDTO { private final Integer productNo; private Integer productStock; private final String prod.. 2022. 5. 22.
2022.05.21 ใ€Œ Shopping Cart API ๋งŒ๋“ค๊ธฐ ใ€ ์–ด์ œ๋ถ€๋กœ ์ธ์ฆ, ์ธ๊ฐ€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค. ์ง„์งœ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ์†๋„๋ฅผ ์ข€ ๋” ๋‚ผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋งŒ๋“ค๊ฑด๋Œ€ ์ด๋ฒˆ์—๋Š” DB๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ฟ ํ‚ค์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ ๋•Œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋„ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ๋ณดํ†ต ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋Š” ์ฟ ํ‚ค๋‚˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ์˜จ์ „ํ•œ API๋กœ๋งŒ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? ์ผ๋‹จ DB์— ์ €์žฅ์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š๊ณ  ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ๊ธฐ๋Šฅ 1. ์ƒํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ 2. ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธด ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ => ์ˆ˜์ •๊ณผ ์‚ญ์ œ๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ํ”„๋ŸฐํŠธ๋‹จ์—์„œ ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š.. 2022. 5. 21.
2022.05.20 ใ€Š์Šคํ”„๋ง ๋ถ€ํŠธ ๊ถŒํ•œ ์ฒ˜๋ฆฌใ€‹ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ค‘์ด๋‹ค. jwt๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ์€ ๋‹ค ๋๋‚ฌ๊ณ  ์ธ๊ฐ€ ์ž‘์—…๋งŒ ๋‚จ์•˜๋‹ค. ๋Œ€๋ถ€๋ถ„ ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ถŒํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š”๋“ฏํ•˜๋‹ค. ๋‚˜๋Š” ์ผ๋‹จ ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์งœ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ์„ ์ข€ ๋งŽ์ด ํ•ด๋ดค๋‹ค. ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์ž๋ฉด ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ๊ด€๋ฆฌ์ž์ธ์ง€ ํšŒ์›์ธ์ง€ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์ž‘์—…์ด๋“ ์ง€ ์ค‘๋ณต๋˜๋Š” ๋กœ์ง์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฏ€๋กœ ์ด๊ฒƒ์€ ์ธํ„ฐ์…‰ํ„ฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ์ธ๊ฐ€ ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋œ ์ด์œ ๋‹ค. ํ•œ๋ฒˆ ํ•ด๋ณด์ž~ => ์ „๋ฐ˜์ ์ธ ๊ณ„ํš ์ž‘์„ฑ ์ค‘๊ฐ„ ์ •๋ฆฌ ํ˜ผ์ž ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด์„œ ์ธ์ง€ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋‚˜์งˆ ์•Š๋Š”๋‹ค. ์ƒ๊ฐ์„ ํ•ด๋ณด์•˜๋‹ค. ์–ด๋Š ํ•œ ๊ธฐ๋Šฅ์ด๋“  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ฐ€์žฅ ์‹œ๊ฐ„์„ ๋งŽ์ด ์Ÿ์€ ๋ถ€๋ถ„์€ Restful ํ•œ ์„ค๊ณ„ ๋ฐฉ์‹๊ณผ ์ธ์ฆ ์ธ๊ฐ€ ๋ถ€๋ถ„์ด๋‹ค.. 2022. 5. 20.
2022.05.18 ใ€ŒRedis DB ์ ์šฉใ€ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ๋กœ๊ทธ์ธ API๊นŒ์ง€๋Š” jwt ํ† ํฐ์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ์ž˜ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ๋กœ๊ทธ์•„์›ƒ์ด๋‹ค. jwt ํ† ํฐ ์ž์ฒด๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์‚ญ์ œ์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. ์„ธ์…˜์„ ์‚ฌ์šฉ ์‹œ ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ DB์— ์ €์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜์„ ์‚ญ์ œํ•˜๋ฉด ๊ทธ๋งŒ์ด์ง€๋งŒ ํ† ํฐ์€ ๊ทธ๋ ‡๊ฒŒ ๋ชป ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ Redis DB๋ผ๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ DB๋ฅผ ์ด์šฉํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฒ˜์Œ ๋“ค์–ด๋ณด๋Š”๋ฐ DB๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ์ธ๋ฉ”๋ชจ๋ฆฌ DB๋Š” ๋‹ค๋ฅธ DBMS์™€ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ์„ฑ๊ฒฉ์„ ๊ฐ€์ง€๋Š”์ง€ ๊ทธ๊ฑธ ์ •๋ฆฌํ•˜๊ณ  ์ ์šฉํ•ด๋ณด๋Š” ํ•˜๋ฃจ๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋  ๊ฒƒ ๊ฐ™๋‹ค. Redis DB Key & Value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„ ๊ด€๊ณ„ํ˜• DBMS ์บ์‹œ, DB ๋“ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์ธ๋ฉ”๋ชจ๋ฆฌ.. 2022. 5. 18.
2022.05.18 ใ€ŒLv.2 Heap ๋” ๋งต๊ฒŒใ€ ์ž๋ฃŒ๊ตฌ์กฐ ์ •๋ฆฌํ•ด์•ผ์ง€ ๊ณ„ํš๋งŒ ํ•˜๊ณ  ๋ˆˆ์œผ๋กœ๋งŒ ๊ฐœ๋…๋“ค์„ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.. ๋ˆˆ์œผ๋กœ ์ฝ๊ณ  ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ด๋„ ์–ด๋Š ์ •๋„๋Š” ๊ฐ์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ์ •๋ฆฌ ์ข€ ํ•ด์•ผ๊ฒ ๋‹ค ์ •๋ง ์˜ค๋Š˜์€ ์˜ค์ „์— Heap์„ ์ด์šฉํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. Lv2์ด๋‹ค. ์˜ˆ์ „์—๋Š” Lv1๋„ ์–ด๋ ค์› ๊ณ , ๋ฌธ์ œ ์ž์ฒด๋„ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์—ˆ๋Š”๋ฐ ํ’€๋‹ค ๋ณด๋‹ˆ ์ข€ ๊ฐ์ด ์˜ค๋Š” ๋“ฏํ•˜๋‹ค..?? ๋‘ ๋‹ฌ ์•ˆ์— Lv3๊นŒ์ง€ ๋งˆ์Šคํ„ฐ ๋ชฉํ‘œ๋ฅผ ์žก์ž. ์ทจ์—…ํ•˜๊ณ  ์‹ถ๋‹ค!! Heap์ด๋ž€ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์™€ ๊ฑฐ์˜ ๋น„์Šทํ•œ๋ฐ ์˜ˆ์ „์— ์ž ๊น ์ด์ง„ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ฐœ๋…์„ ๋ณธ ๊ธฐ์–ต์ด ์žˆ์—ˆ๋Š”๋ฐ ๊ฐœ๋…์„ ๋จผ์ € ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๊ฒฐ๊ตญ Heap์ด ์šฐ์„ ์ˆœ์œ„ Queue (PriorityQueue)๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Heap์„ ์ด์šฉํ•˜๋Š” ๊ฑด๋ฐ ๊ทธ์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๋ฌธ์ œ ์„ค.. 2022. 5. 18.
์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ์ตœ์ ํ™” ์š”์ƒˆ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ, DB, ์ž์†Œ์„œ ์ˆ˜์ •, ํ† ๋น„ ์Šคํ”„๋ง, ์ฝ”ํ…Œ ์ค€๋น„ ๋“ฑ๋“ฑ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜๋ฃจ๊ฐ€ ๋„ˆ๋ฌด ์งง๊ธฐ๋„ ํ•˜๊ณ  ์ž ์„ ์ ๊ฒŒ ์ž๋„ ๊ดœ์ฐฎ์€ ์ฒด์งˆ์ด ๋˜๊ณ  ์‹ถ์€ ์š”์ฆ˜์ด๋‹ค. DB๊ณต๋ถ€๋Š” Real Mysql์„ ์ฝ๊ณ  ์žˆ๋‹ค. ์ฝ๊ธฐ ๋„ˆ๋ฌด ์–ด๋ ค์šด ์ฑ…์ธ๋ฐ.. DB ์งˆ๋ฌธ๋„ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์—์„œ ๋””ํ…Œ์ผํ•œ ์งˆ๋ฌธ๊นŒ์ง€ ํ•„์ˆ˜๋ผ๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด์‹ฌํžˆ ์ •๋ฆฌํ•˜๋ฉด์„œ ์ฝ๊ณ  ์žˆ๋‹ค. ์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ์ตœ์ ํ™” ๋ถ€๋ถ„์„ ๊ณต๋ถ€์ค‘์ธ๋ฐ ์ด ๋ถ€๋ถ„์—์„œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…์„ ์ •๋ฆฌํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. Join ๊ธฐ๋ฒ• Nested Loop Join ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์กฐ์ธ์„ ์ˆ˜ํ–‰ ๋ฐ˜๋ณต๋ฌธ ์™ธ๋ถ€์˜ ํ…Œ์ด๋ธ”์„ ์„ ํ–‰ ํ…Œ์ด๋ธ” & ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ ์นญํ•จ ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์˜ ํ…Œ์ด๋ธ”์€ ํ›„ํ–‰ ํ…Œ์ด๋ธ” & ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์นญํ•œ๋‹ค. ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์„ ํ–‰ ํ…Œ์ด๋ธ” ํ–‰์„ ์ถ”์ถœ ํ›„ ํ›„ํ–‰ ํ…Œ์ด๋ธ”์„ ์ฝ์œผ๋ฉฐ .. 2022. 5. 17.
2022.05.17 ใ€ŒLv.2 ํ”„๋ฆฐํ„ฐใ€ ๋ฌธ์ œ ์„ค๋ช… ์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐํ„ฐ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กญ๊ฒŒ ๊ฐœ๋ฐœํ•œ ํ”„๋ฆฐํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ธ์‡„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 1. ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ(J)๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊บผ๋ƒ…๋‹ˆ๋‹ค. 2. ๋‚˜๋จธ์ง€ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ J๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•œ ๊ฐœ๋ผ๋„ ์กด์žฌํ•˜๋ฉด J๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์Šต๋‹ˆ๋‹ค. 3. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด J๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 4๊ฐœ์˜ ๋ฌธ์„œ(A, B, C, D)๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๊ณ  ์ค‘์š”๋„๊ฐ€ 2 1 3 2 ๋ผ๋ฉด C D A B ์ˆœ์œผ๋กœ ์ธ์‡„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ .. 2022. 5. 17.
2022.05.17 ใ€Œ@Transactional ์˜ต์…˜ ๋ฐ ์„ฑ๋Šฅใ€ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ๋„์ค‘ Service ํด๋ž˜์Šค์—์„œ @Transactional ์‚ฌ์šฉ์— ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ์•Œ์•˜๋‹ค. ์˜ต์…˜์„ ํ•œ๋ฒˆ ์ถ”๊ฐ€ํ•ด๋ณด๋ผ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ํ•œ๋ฒˆ ์ด ์—๋„ˆํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜๋„ ์žˆ๋Š” ์ค‘์š”ํ•œ ์˜ต์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. ํŠธ๋žœ์žญ์…˜(Transaction)์˜ ์ •์˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ, ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ ํŠธ๋žœ์žญ์…˜ ACID ์„ฑ์งˆ ์›์ž์„ฑ(Atomicity) : ํŠธ๋žœ์žญ์…˜์ด DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•ด์•ผํ•œ๋‹ค. ์ผ๊ด€์„ฑ(Consistency) : ํŠธ๋žœ์žญ์…˜์€ ์ผ๊ด€์„ฑ ์žˆ๋Š” DB ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค. ์ž‘์—… ์ฒ˜๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜์–ด์•ผ ํ•จ. ๋…๋ฆฝ์„ฑ(Isolation) : ๋™์‹œ์— ์‹คํ–‰๋˜๋Š”.. 2022. 5. 17.
๋ฐ˜์‘ํ˜•