์ „์ฒด ๊ธ€

BackEnd Developer
๐Ÿš€ ๊ฐœ์š” ํ”„๋กœ์ ํŠธ์—์„œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค. ์ดˆ๊ธฐ์— ๊ณ ๋ฏผํ•˜๋˜ ์ค‘ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ๋Š”๋ฐ ๋‚˜์ค‘์— ์•Œ๊ณ ๋ณด๋‹ˆ Short Polling ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ์›น ํ†ต์‹  ๋ฐฉ์‹์—” Long Polling๊ณผ ์›น ์†Œ์ผ“ ๋ฐฉ์‹๋„ ์žˆ๋Š”๋ฐ ์ด ๊ธ€์—์„œ ์„ค๋ช…ํ•˜์ง„ ์•Š๋Š”๋‹ค. โญ Short Polling ๊ณ„์† ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ฐ˜๋ณตํ•˜๋Š” ํ”ํ•œ ๋ฐฉ์‹์ด๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋‹ˆ ๋Œ€์ฒด ์–ด๋Š ๊ฐ„๊ฒฉ์œผ๋กœ? ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ฐฉ๋ฒ•์€ 5์ดˆ๋งˆ๋‹ค ์•Œ๋ฆผ ์กฐํšŒ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋ฐ”๋ณด๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ด ๋ฐฉ๋ฒ•์€ ๋™์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์š”์ฒญ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋น„๋ก€ํ•ด ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ๊ธธ๊ฒŒ ๋ณด๋ฉด ๋ˆ„๊ฐ€๋ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ๋จน๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋ฐ”๋กœ ์•ˆ ๋ณด๋‚ด์ง€๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ์กฐํšŒํ•ด์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ์„œ๋ฒ„์—์„œ..
๐Ÿš€ ๊ฐœ์š” ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์œผ๋กœ ๊ธฐ์—…์„ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” API๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์•ˆ ์“ฐ๊ณ  ๋‹จ์ˆœํžˆ if๋ฌธ์œผ๋กœ ๋ถ„๊ธฐ์ฒ˜๋ฆฌํ•ด์„œ ์ผ์ผ์ด ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆฌ๋„๋ก ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ service ๋ž‘ repository ๋‹จ ๋ฉ”์„œ๋“œ๋‚˜ ์ฝ”๋“œ๊ฐ€ ์ƒ๋‹นํžˆ ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์ €๋ถ„ํ•ด์ง„๋‹ค. ์กฐ๊ฑด์ด 4๊ฐ€์ง€์—ฌ์„œ repository์— ํ•ด๋‹น API๋ฅผ ์œ„ํ•œ ์กฐํšŒ ๋ฉ”์†Œ๋“œ๊ฐ€ 16๊ฐœ๋‚˜ ํ•„์š”ํ–ˆ๋‹ค. ํ˜น์—ฌ๋‚˜ ์กฐ๊ฑด์ด ์ถ”๊ฐ€๋˜๋ฉด ์ ์  ๊ด€๋ฆฌํ•˜๊ธฐ๋„ ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JPA ๋™์  ์ฟผ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. JPA์—์„œ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ณดํ†ต JPQL, Criteria, Specification, QueryDSL ์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๋˜๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋ก  JPA๊ฐ€ ์•„๋‹Œ MyBatis๋‚˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ž์ฒด๋ฅผ ์ปดํฌ..
๐Ÿš€ ๊ฐœ์š” ์ด์ „์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ nGrinder๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ๊ธ€์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ํˆด์€ ์„ธํŒ…์ด ๋ฏธ๋ฆฌ ๋๋‚œ ์ƒํƒœ์ด๋‹ค. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ์ข€ ๋” ์•Œ์•„๋ณด๋‹ˆ ๋‹จ์ˆœํžˆ ์Šคํฌ๋ฆฝํŠธ ์งœ๊ธฐ โžก ํ…Œ์ŠคํŠธ ์ง„ํ–‰ โžก ๊ฒฐ๊ณผ ๋ถ„์„ ๊ณผ์ •์ด ๋‹ค๊ฐ€ ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ˆ˜๋ฆฝ โžก ์‹œ๋‚˜๋ฆฌ์˜ค ์งœ๊ธฐ โžก ํ…Œ์ŠคํŠธ ์ง„ํ–‰ โžก ๊ฒฐ๊ณผ ๋ถ„์„ โžก ์ ์šฉ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๊ณ  ํ•œ๋‹ค. ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ์ข€ ๋” ํŒŒ๋‹ค๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ์ค€๋น„ํ•  ๊ฒƒ๋„ ๋งŽ๊ณ  ๊ณ ๋ คํ•  ์ ๋„ ๋งŽ์€ ๊ฒƒ ๊ฐ™๊ณ  ์ด๋Ÿฐ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๊ฑฑ์ •๋ผ์„œ ํ• ๊นŒ ๋ง๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ž  ๋ชป ์ด๋ฃจ๊ณ  ๊ทธ๋žฌ๋Š”๋ฐ ์–ด์จŒ๋“  ์กฐํšŒํ•  ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„์ ๋ ์ˆ˜๋ก ๋‹น์—ฐํžˆ ์กฐํšŒ ์„ฑ๋Šฅ์€ ๋–จ์–ด์ง€๊ธฐ ๋งˆ๋ จ์ด๊ณ  ์ด๋Ÿฐ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ถ€๋ถ„์—์„œ ๋‚ด ์ฟผ๋ฆฌ๋ฌธ์€ ์†”์งํžˆ ๋งŽ์ด ํ˜•ํŽธ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ƒํ™ฉ์ด์–ด์„œ ๊ฒ€์ƒ‰ ๋กœ์ง์ด๋“  ์ฟผ๋ฆฌ๋ฌธ์ด๋“  ๊ฐœ์„ ํ•  ..
๐Ÿš€ ๊ฐœ์š” โญ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test) ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํŠน์ • ์ƒํ™ฉ์—์„œ ์–ด๋–ค ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ œํ’ˆ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ, ํ™•์žฅ์„ฑ ๋ฐ ์•ˆ์ •์„ฑ๋„ ์ด ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ณ , ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ๋ชฉ์ . ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ฐœ๋…์ด๋‹ค. โญ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ (Load Test) ์ž„๊ณ„๊ฐ’ ํ•œ๊ณ„์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ์ง€์†์ ์œผ๋กœ ๊พธ์ค€ํžˆ ์ฆ๊ฐ€์‹œ์ผœ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์ˆ˜, ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ€ํ•˜ ์กฐ๊ฑด์„ ์ ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ‰๊ฐ€ํ•œ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ์ด ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ์ž ์ˆ˜ ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ..
๐Ÿš€ ์„œ๋ก  ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์‹œ PUT, PATCH, DELETE๋ฅผ ์–ด๋Š ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ณ  API๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ํ”„๋ก ํŠธ์—”๋“œ๋‹˜๋“ค์ด ํ—ท๊ฐˆ๋ฆฌ์‹ ๋‹ค๊ณ  ๐Ÿ˜‚๐Ÿ˜‚ (์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฐ ์‚ญ์ œ๋„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ƒํƒœ๋งŒ ์‚ญ์ œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ ์‚ญ์ œ๋Š” ์ผ๋ถ€๋งŒ ๊ตฌํ˜„ํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ์ „์ฒด์ ์œผ๋กœ ์ˆ˜์ •๊ณผ ์‚ญ์ œ API๋“ค์„ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. โญ PUT๊ณผ PATCH ๊ตฌ๋ถ„ํ•˜๊ธฐ PUT, PATCH๋ฅผ ์ˆ˜์ • ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ๋งŒ ์•Œ๊ณ ์žˆ์–ด์„œ ์ฐจ์ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ณ  ํ˜ผ์šฉํ•ด์„œ ๋ง‰ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด ๋‘˜์€ ์—„์—ฐํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐœ์ชฝ์ด: PUT ์š”์ฒญ์ด๋“  PATCH ์š”์ฒญ์ด๋“  ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์€๋ฐ์š”????? ๊ฐœ์ชฝ์•„. ๊ทธ๊ฒƒ์€ ๊ฒฐ๊ณผ๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋ณด์ผ ๋ฟ ๋‘˜์€ ๋Œ€์ฒด์žฌ..
์กฐ๋งŒ์ œ
๐Ÿš€ fakerdeft.dev ๐Ÿš€