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

๐Ÿ’ป..Tech..๐Ÿ’ป

(4)
Spring์— Jackson Custom Serialization ์ ์šฉ ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Jackson๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ž๋ฐ” ๊ธฐ๋ณธ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋“ค์„ Json์œผ๋กœ Serialize๋ฅผ ์ง„ํ–‰ํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ, ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ์žˆ๋˜ ์‚ฌ์šฉ์ž ์ •์˜๊ฐ์ฒด๋ฅผ jsonํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•  ์ผ์ด ์ƒ๊ธฐ๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ Serializeํ•ด์•ผํ• ์ง€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด serializtion์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•ด์„œ objectMapper์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋ฅผ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋นˆ ๋“ฑ๋กํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” HashMap์„ ์ƒ์†๋ฐ›์€ ์‚ฌ์šฉ์ž์ •์˜ DataSet๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. writeObject()๋ฅผ ํ†ตํ•ด ์žฌ๊ท€์ ์œผ๋กœ ๊ด€๋ จ๋œ ์ง๋ ฌํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ json ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. public class DataSe..
โšก๏ธ Scale Out๋œ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฐฉ๋ฒ• โšก๏ธ ๋จผ์ € ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ์ƒ๊ธฐ๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜๋ฉด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒน์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Scale Up / Scale Out ์Šค์ผ€์ผ์—…์€ ๋‹จ์ผ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ์ฆ์นด์‹œ์ผœ ๋” ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• (CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ์—…๊ทธ๋ ˆ์ด๋“œ) ์žฅ์  ์„œ๋ฒ„๊ฐ€ ํ•˜๋‚˜์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. (์žฅ์ ) ๋‹จ์  ์ผ์ •์ˆ˜์ค€์ด์ƒ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Œ (๋น„ํšจ์œจ) ์„œ๋ฒ„๊ฐ€ ์ฃฝ์œผ๋ฉด ๋ณต๊ตฌ์ „๊นŒ์ง€ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋œ๋‹ค. ์Šค์ผ€์ผ์•„์›ƒ์€ ์ƒˆ๋กœ์šด ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ ์„œ๋ฒ„๊ฐ€ ๋‚˜๋ˆ ๊ฐ€์ ธ ๋” ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์žฅ์  ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€์ด๋ฏ€๋กœ ํ•˜๋‚˜๊ฐ€ ์ฃฝ์–ด๋„ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์„œ๋น„์Šค ์ œ๊ณต ๊ฐ€๋Šฅํ•˜์—ฌ ‘๊ฐ€์šฉ์„ฑ’์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์š”์ฒญ๋Ÿ‰์— ๋”ฐ๋ผ ํ•„์š”์— ๋”ฐ๋ผ ์„œ๋ฒ„..
์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์„œ๋ฒ„๋ฆฌ์Šค๋ž€? ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ๋ชจ๋ธ ์„œ๋ฒ„์ž์›์„ AWS์—์„œ ์ œ๊ณตํ•ด์ฃผ๊ณ  ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์„ ์งœ๋Š”๋ฐ๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๊ตฌ์„ฑ, ํดํŠธ, ํ™•์žฅ์„ฑ ๋“ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋จ ๊ธฐ์กด์˜ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด? → ์˜จํ”„๋ ˆ๋ฏธ์Šค๋Š” ๊ฐ‘์ž๊ธฐ ์„œ๋ฒ„๋ฅผ ํ™•์žฅ์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์„œ๋ฒ„๊ฐ€ ํ„ฐ์ง€๊ณ  ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์ ์ธ ์†ํ•ด๋กœ ์ด์–ด์ง → ๋Š˜์–ด๋‚œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ธ๋ ฅ๋„ ํ•„์š”ํ•จ.. → ํ•˜์ง€๋งŒ, ํ•ญ์ƒ ๋งŽ์€ ์š”์ฒญ๊ณผ ์ธ๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹˜.. → ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ ˆ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๋‹ค! ์„œ๋ฒ„๋ฆฌ์Šค๋Š” ์„œ๋น„์Šค ์š”์ฒญ๋Ÿ‰์— ๋”ฐ๋ผ ๋ณ€ํ•˜์ง€์•Š๊ณ  ํ•ญ์ƒ ๊ฐ™์€ ํ’ˆ์งˆ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•จ AWS ๊ฒฐ์ œ ์•Œ๋žŒ ์„ค์ •ํ•˜๊ธฐ ..
[์˜ค๋ฅ˜] PRG(Post-Redirect-Get) ํŒจํ„ด ์ ์šฉ ์˜ค๋ฅ˜ ๐Ÿค” ๋ฌธ์ œ๋ฅผ ๊ฒช๊ฒŒ ๋œ ์ด์œ  ๐Ÿค” ์ฑ… '์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด'๋ฅผ ์“ฐ์‹  ๋ถ„๊ป˜์„œ ๋ถ€๋ก ๋ถ€๋ถ„์— ์žˆ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—์„œ POST ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ redirect ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ทฐ ํžŒํŠธ๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์‹œ๋„ํ•ด๋ณด๋ผ๊ณ  ํ•˜์…จ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด ํ”„๋กœ์ ํŠธ์— ์‹ค์ œ๋กœ ์‹œ๋„ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. 1. "/url" ๋กœ ๋ฆฌํ„ดํ•˜๋ฉด ํ™”๋ฉด์€ ์ „ํ™˜๋˜๋‚˜ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ๋Š” ๊ณ„์†ํ•ด์„œ ์ด์ „ url์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ์—ˆ๋‹ค. 2. "redirect:/url"๋กœ ๋ฐ˜ํ™˜ํ–ˆ๋”๋‹ˆ ํ™”๋ฉด์ด ์ „ํ™˜๋˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. 1๋ฒˆ ๋ฐฉ๋ฒ•์€ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ™”๋ฉด์„ ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค POST์š”์ฒญ์ด ๋‚ ๋ผ๊ฐˆ ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค. 2๋ฒˆ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€์ž‘์šฉ์„ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค. โš ๏ธ ๋ฌธ์ œ ์ƒํ™ฉ โš ๏ธ ..

๋ฐ˜์‘ํ˜•