Loading...
2020. 11. 18. 21:49

[Kubernetes] 3. Controller๋กœ ๋” ๋‚˜์•„๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์šฐ๋ฆฌ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ 4๊ฐœ ๊ฐ์ฒด๋“ค์˜ ์—ญํ• ๊ณผ ๊ทธ๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํ•œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐ ์žˆ์–ด ๊ธฐ๋ณธ์ ์ธ ์š”์†Œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์„œ๋น„์Šค์˜ ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋Š” ์Šค์ผ€์ผ ์—…/์•„์›ƒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ batch ์ž‘์—… ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •, ๋ฐฐํฌ์— ๋”์šฑ ๋น›์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Controller ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด์ „์— ์„ค๋ช…ํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•œ ์„œ๋น„์Šค๋“ค์— ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€์‹œ์ผœ์ฃผ๋Š” ์กด์žฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„ ์š”์ฒญ ์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒƒ์ด๋ฏ€๋กœ Namespace์— ๋ถ€์—ฌ๋œ ๋ฆฌ์†Œ์Šค ํ—ˆ์šฉ๋Ÿ‰์— ํ•œํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ/์‚ญ์ œํ•˜๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ธฐ๋Šฅ, ๋‚ด ์„œ๋น„์Šค ์•ž๋‹จ์— ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ๋ฐ๋ชฌ์„..

2020. 11. 14. 17:44

[Kubernetes] 2. Kubernetes ๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ๊ฐ์ฒด(object)

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Kubernetes์™€ Container Deployment์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋กœ ์„œ๋น„์Šค ๋ฐฐํฌํ•˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •๊ณผ Docker Swarm ๋“ฑ์˜ ๋‹ค๋ฅธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด๊ณผ ์–ด๋–ค ์ ์ด ๋‹ค๋ฅธ์ง€ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์„ ํ™•์ธํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์šด์˜ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์ ํ•ฉํ•œ์ง€, ์ฐจํ›„ ๋ฏธ๋ž˜ ์šด์˜ ๋Œ€์ฑ…์œผ๋กœ ์‚ฌ์šฉํ• ๋งŒํ•œ์ง€๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ ๋ ค ๋Œ€์ƒ์œผ๋กœ ์„ ์ •ํ•˜์…จ๋‹ค๋ฉด ์ด ๊ธ€์„ ๊ณ„์† ์ฝ์œผ๋ฉฐ Kubernetes๋ฅผ ์ง์ ‘ ๊ณต๋ถ€ํ•ด๋ณด๊ณ , ์‚ฌ์šฉํ•ด๋ณด์‹œ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”. Kubernetes์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ Kubernetes๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ Docker์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ค‘์•™์˜ Docker Engine์ด ์ž๋ฆฌ์žก๊ณ  ์žˆ์–ด, ์ด ์—”์ง„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒ์„ฑํ•˜๋Š”..

2020. 11. 7. 22:37

[Kubernetes] 1. Container Deployment์™€ Kubernetes

์ €์—๊ฒŒ ์žˆ์–ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” Docker Swarm์„ ์ง€๋‚˜ ์ด์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋˜ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์ด์ง์„ ํ•œ ํšŒ์‚ฌ์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๊ฒŒ ๋˜์–ด ์ฃผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ๋•Œ๋ถ€ํ„ฐ Docker Swarm ๋ณด๋‹ค๋Š” Kubernetes๋กœ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ผ์ด ์ž์ฃผ ์ƒ๊ฒจ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ Docker๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋งŒ Kubernetes์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ณ , ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ๋“œ๋ฆฌ๋Š” ๊ธ€์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. Container Deployment์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ์˜ค๊ธฐ๊นŒ์ง€.. Kubernetes๋Š” Go ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Google์—์„œ ๊ฐœ๋ฐœํ•˜์—ฌ 2014๋…„์— ๊ณต๊ฐœ๋œ Container Orchestration to..

2020. 11. 2. 22:10

[MSA] 6. MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 2 - Two-Phase commit๊ณผ Saga

์ด์ „ ๊ธ€์— ์ด์–ด์„œ MSA ๋‚ด์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์›ํ™œํžˆ ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋”๋ถˆ์–ด ๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•œ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ DB ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” Commit๊ณผ Rollback์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MSA์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ DB ์ธ์Šคํ„ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ถ„๋ฆฌ๋จ์— ๋”ฐ๋ผ ๊ด€๊ณ„ํ˜•์œผ๋กœ ๋งบ์–ด์ง„ Entity๋“ค์€ ์„œ๋กœ๊ฐ€ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋กœ ์šด์˜๋˜๊ณ , ๊ทธ๋“ค ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋ฌด๋„ˆ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ์ด๋“ค ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1. Two-Phase Commit Two-Phase Commit์ด๋ž€, 2๋‹จ๊ณ„์— ๊ฑฐ์ณ์„œ ์˜์†ํ•˜๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ์•„..

2020. 9. 27. 19:53

[MSA] 5. MSA์˜ ํŠธ๋žœ์žญ์…˜ ์ด์•ผ๊ธฐ 1 - ํŠธ๋žœ์žญ์…˜์˜ ์ดํ•ด์™€ MSA์—์„œ ๋ฐ”๋ผ๋ณด๋Š” ํŠธ๋žœ์žญ์…˜

์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์–ด๋–ค ์ œ๋ชฉ์„ ๋ถ™์—ฌ์•ผ ํ• ์ง€ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. MSA์—์„œ ํŠธ๋žœ์žญ์…˜์˜ ๋ฌธ์ œ๋Š” ํ˜„์žฌ ๋Œ€๋‘๋˜๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๊ธฐ๋ณธ ์ด์•ผ๊ธฐ์™€ ๋ชจ๋†€๋ฆฌ์‹์˜ ํŠธ๋žœ์žญ์…˜, MSA์—์„œ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์ •๋ง ๊นŠ๊ฒŒ ๋‹ค๋ค„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 3 ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰๋  ์˜ˆ์ •์ด๋ฉฐ 1๋ฒˆ์งธ ํŒŒํŠธ์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์„ ์ด์•ผ๊ธฐ ํ•˜๊ณ , ๋ชจ๋†€๋ฆฌ์‹์˜ ํŠธ๋žœ์žญ์…˜์„ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. What is Transaction ? ํŠธ๋žœ์žญ์…˜์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์—๋Š” ๊ฒ€์ƒ‰(SELECT), ์ˆ˜์ •(UPDATE), ์‚ฝ์ž…(INSERT), ์‚ญ์ œ(DELETE)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ..

2020. 8. 26. 13:00

[Spring] Jib(์ง€๋ธŒ)๋ฅผ ์ด์šฉํ•œ Docker ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ

https://blog.neonkid.xyz/228 [Spring boot] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Docker ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ Old & New Spring boot๋กœ ๊ฐœ๋ฐœํ•œ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์Šคํ„ด์Šค์— ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” WAS๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ Docker ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๏ฟฝ๏ฟฝ blog.neonkid.xyz ์œ„ ํฌ์ŠคํŠธ์—์„œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด Spring boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Docker ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Dockerfile์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธฐ์—๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ„๋“คํ•œํ…Œ๋Š” ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋ถ€๋‹ด์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ์•„์‰ฌ์› ๋˜ ๋ถ€๋ถ„์ด์—ˆ๋Š”๋ฐ์š”. Google Jib ์œ„์™€ ๊ฐ™์ด ๋ณดํ†ต Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด, ํ”„..

2020. 8. 25. 21:43

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 3 - ๊ตญ๋‚ด ํฌํ„ธ ์ธ์ฆ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ๊ธฐ์กด์˜ User Entity ํ˜น์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ User Entity์™€ ์—ฐ๋™ํ•˜์—ฌ OAuth2 ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. Spring boot Security์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Google, Facebook ๋“ฑ์˜ ํ•ด์™ธ ์†Œ์…œ ๋กœ๊ทธ์ธ API๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์šฐ๋ฆฌ๋Š” ์ง€์›ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ž˜ ์ด์šฉํ•˜์—ฌ Key์™€ Client ID๋งŒ ๋„ฃ์–ด์ฃผ๋ฉด ์‰ฝ๊ฒŒ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, NAVER, Kakao ๋“ฑ ๊ตญ๋‚ด ํฌํ„ธ ์‚ฌ์ดํŠธ์˜ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? NAVER, Kakao API๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ Spring boot Security์—์„œ๋Š” ๊ณต๊ต๋กญ๊ฒŒ๋„ ๊ตญ๋‚ด ํฌํ„ธ OAuth2 ์ธ์ฆ์— ๋Œ€ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ์ œ๊ณตํ•ด์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋“ค OAuth2 ..

2020. 8. 16. 20:10

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 2 - User Entity ์—ฐ๋™

์›น ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ–์ถฐ์ ธ์•ผ ํ•  ๊ฒƒ์€ ๋ฐ”๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•œ ์‚ฌ์šฉ์ž์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ๊ณผ ๋”๋ถˆ์–ด, ๋‹จ๊ณจ์ธ์ง€, ์•„๋‹Œ์ง€ ๋“ฑ์ด๋‚˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž ๋“ฑ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ ์žˆ์–ด, ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋น„์Šค์— ์žˆ์–ด ๊ฐ€์žฅ ๋ฒˆ๊ฑฐ๋กœ์šด ๊ฒƒ์€ ์‚ฌ์šฉ์ž ๋“ฑ๋ก์„ ์œ„ํ•œ ํšŒ์› ๊ฐ€์ž…์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๊ณ , ๋ณธ์ธ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ, ์ฃผ์†Œ์™€ ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ์„ ์ž…๋ ฅํ•จ๊ณผ ๋”๋ถˆ์–ด, ๋˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋งˆ๋‹ค ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” OAuth2 ์ธ์ฆ์„ ํ†ตํ•ด ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๋“ค์„ ์ €์žฅํ•˜๋Š” User Entity๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ..

2020. 8. 12. 14:47

[Spring] Argument Resolver๋ฅผ ์ด์šฉํ•œ ์œ ์—ฐ์„ฑ ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒ˜๋ฆฌ

์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค Controller ๋ถ€๋ถ„์—์„œ ์ด๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ Controller์— ์ „์ฒ˜๋ฆฌ ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜ํ™” ํ•˜๊ฑฐ๋‚˜ Utils ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ์˜์กด์„ฑ ์ฃผ์ž…ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ทธ๋‚˜๋งˆ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Utils๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋งค๋ฒˆ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜๊ณ , ์ด๊ฒƒ์ด ์ปค์ง€๋ฉด ์—ญ์‹œ ์ฝ”๋“œ๊ฐ€ ๋‚œ์žกํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Spring์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณตํ†ต์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„๋œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Argument Resolver์ž…๋‹ˆ๋‹ค. Spring Argument Resolver API ์—”๋“œํฌ์ธํŠธ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ(ํŒŒ๋ผ๋ฏธํ„ฐ)๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ํ•„์š”..

2020. 8. 10. 18:12

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 1 - Google ๊ณ„์ • ์ธ์ฆ

์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ, ์˜ค๋Š˜์€ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Spring boot Security ๋””ํŽœ๋˜์‹œ๋ฅผ ์ด์šฉํ•ด OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ ํ† ํฐ๊ณผ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ถŒํ•œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ , ๋ถ€์—ฌ ๋ฐ›์€ ID์™€ Secret๋ฅผ ์ด์šฉํ•˜์—ฌ ํ† ํฐ์„ ๋ฐ›๋Š” ๋ฐฉ์‹์ด์—ˆ์ฃ . ์ด๋ฅผ ํ† ๋Œ€๋กœ Spring boot security๋ฅผ ์ด์šฉํ•˜์—ฌ ํšŒ์› ๊ฐ€์ž…๊ณผ ์ธ์ฆ์„ ๋™์‹œ์— ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ง€๊ธˆ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŠธ๋Š” ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํ•˜์—ฌ๊ธˆ, OAuth2 ๋กœ๊ทธ์ธ๋ถ€ํ„ฐ User Entity ์—ฐ๋™๊นŒ์ง€ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋ฉฐ ์ด๋ฒˆ์— ๋‹ค๋ฃฐ ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์ธ Spring boot security ..