Project

๋ฏธํŒ…์—์„œ ๋งŒ๋‚œ ์‚ฌ์ด

[

๐Ÿค“ ๋ฏธํŒ…์—์„œ ๋งŒ๋‚œ ์‚ฌ์ด๋ž€?

๊ฐœ์š” 

์ฝ”๋กœ๋‚˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ์ฝ”๋กœ๋‚˜ ๋ธ”๋ฃจ ํ˜„์ƒ์„ ํƒ€ํŒŒํ•˜๊ธฐ ์œ„ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

์†Œ์…œ๋ฏธํŒ…์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์žฅ์˜ ํ˜์‹ ์œผ๋กœ ๋ถˆ๋ฆฌ์šธ ๋‹ค๋Œ€๋‹ค ์†Œ์…œ๋ฏธํŒ…์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

 

์–ด๋ ค์› ๋˜ ์ 

1. ๊ณ„์†๋˜๋Š” ์š”๊ตฌ์™€ ๊ทธ๋กœ ์ธํ•œ DB, API ๋ณ€๊ฒฝ

 

๋ณดํ†ต API์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ DB๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ฏธ๋ฆฌ API๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ •ํ•œ DB๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ•ด์˜จ ๋ณดํ†ต์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ์ •์‹ ์ถœ์‹œ์™€ ๊ธฐ์—…๊ณผ ์—ฐ๊ณ„ํ•œ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ฌ๋ž๋‹ค....

์šฐ์„  ์ œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž…์žฅ์— ๋งˆ์Œ๋Œ€๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž์˜ ๋‹ˆ์ฆˆ๋ฅผ ํŒŒ์•…ํ•œ ๊ธฐ์—… ๋Œ€ํ‘œ๋‹˜์˜ ์š”๊ตฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ๋Œ€ํ‘œ๋‹˜์˜ ์ƒ๊ฐ์ด ๋‹ฌ๋ผ์ง€๊ฑฐ๋‚˜ ๋” ํ•„์š”ํ•œ๊ฒŒ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ”๋กœ DB๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  API ๋ช…์„ธ๋œ ๋‚ด์šฉ๋„ ๋ณ€ํ™”์‹œ์ผœ์•ผ ํ–ˆ๋‹ค. DB,,,,API,,,,,๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€๋Š” ์•Š๋‹ค,, ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ๋…ธ๋™์ด ๋“ค์–ด๊ฐ„๋‹ค....

์ด๋Ÿฌํ•œ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์œผ๋ฉด์„œ ๊นจ๋‹ฌ์€ ๊ฒƒ์ด ์žˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ๋œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๊ณ  ์„ค๊ณ„ํ•˜์ž๋Š” ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์„ค๊ณ„๋ฅผ ํ•œ๋‹ค๋ฉด ๋ฐ”๋€Œ๋Š” ์ผ๋“ค์ด ๊ทธ๋งŒํผ ์ ์–ด์ง€์ง€ ์•Š์„๊นŒ???

๋‘๋ฒˆ์งธ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ์‹ค๋ ฅ์„ ๊ฐˆ๊ณ  ๋‹ฆ์ž! ์ด๋ ‡๊ฒŒ ์ง€์†์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝ์‹œ์ผœ์ค˜์•ผํ•  ๋•Œ ํŒจํ„ด์˜ ์ค‘์š”์„ฑ์„ ์•Œ๊ฒŒ๋๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์—‰๋ง์ง„์ฐฝ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ๋ฐฐ๋กœ ๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค.

์„ธ๋ฒˆ์งธ ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ข‹์€ ํˆด๋“ค์„ ์‚ฌ์šฉํ•˜์ž!! ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ์ดˆ๊ธฐ์—๋Š” SQL์ž‘์„ฑ ์‹ค๋ ฅ ์ข€ ๊ธฐ๋ฅด๊ณ (๋ฉ‹๋„ ์žˆ์–ด ๋ณด์ผ๋ ค๊ณ  ใ…Žใ…Ž) cmd๋ฅผ ์‚ฌ์šฉํ•ด DB์— ์ ‘์†ํ•œ ํ›„ DB๋ฅผ ๊ด€๋ฆฌํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ”์œ ์ผ์ • ์†์— ์ด๋Ÿฌํ•œ ์ง“์€ ์ •๋ง ๋ฐ”๋ณด๊ฐ™์€ ์ง“์ž„์„ ์•Œ๊ฒŒ๋๋‹ค. ์ข‹์€ phpmyadmin, workbench๋ฅผ ์•ˆ์“ฐ๊ณ  cmd๋ฅผ ์“ฐ๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ์žฅ์ ๋„ ์žˆ๊ฒ ์ง€๋งŒ ๋ฐ”์œ ํ”„๋กœ์ ํŠธ ์†์—์„œ๋Š” ๋‹จ์ ์ด ๋” ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.

2. AWS S3์— IMG ์—…๋กœ๋“œํ•˜๊ธฐ

 

 ์ง€๊ธˆ๊นŒ์ง€ Firebase๋ฅผ ์‚ฌ์šฉํ•ด์„œ IMG๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹๋งŒ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ AWS S3๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์— ์ ์‘ํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์—ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ž๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค...

์ฒ˜์Œ์—๋Š” MultiPart๋ฅผ ์‚ฌ์šฉํ•ด์„œ IMG๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ๋ชฐ๋ž์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” Byte[]๋ฅผ Stringํ™” ์‹œ์ผœ์„œ JSON์œผ๋กœ ๋ณด๋‚ธ ๋’ค ์ด๋ฅผ ๋‹ค์‹œ Byte[]์™€ ์‹œ์ผœ์„œ IMG๋ฅผ JSON์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋ฐ”๋ณด๊ฐ™์€ ์ง“์ด์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋ฐฉ์‹์œผ๋กœ ๊ณ„์†๋œ ์‹œ๋„๋ฅผ ํ–ˆ์ง€๋งŒ ์ด๋ฏธ Stringํ™” ๋œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ๋‹ค์‹œ ๋˜๋Œ์•„๊ฐ€์ง€ ์•Š์•˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ์œ„์— ๊ฐœ๋ฐœ์„ ์ž˜ ์•„๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋ฌผ์–ด๋ด Multipart์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ข‹์€ ํ†ต์‹  ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค๋‹ˆ... ์ •๋ง ์ง€๊ธˆ๊นŒ์ง€ Byte[] ๋ณ€๊ฒฝ์— ์‹œ๊ฐ„์„ ์Ÿ์€ ๋‚ด ์ž์‹ ์„ ์›๋ง๋„ ํ–ˆ์—ˆ์ง€๋งŒ ์ด๋Ÿฐ๊ฒŒ ๋ฐฐ์›€์˜ ์žฌ๋ฏธ๋ผ๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

3. SSL ์ ์šฉ

 

 SSL์„ ์ ์šฉํ•ด์„œ HTTPS ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด๋„ ์‹œ๊ฐ„์„ ๋งŽ์ด ์ผ์—ˆ๋‹ค. SSL์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด์•ผํ•  ์ผ๋“ค์ด ์ •๋ง ๋งŽ์•˜์—ˆ๋‹ค. ๋„๋ฉ”์ธ ์ƒ์„ฑ ๋ฐ ์ ์šฉ, ํ‚ค ๋ฐœ๊ธ‰ ๋ฐ ์ ์šฉ, HTTPS ํ†ต์‹  ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„ค์ • ๋“ฑ ์‹ ๊ฒฝ ์จ์ฃผ๊ณ  ๋ญ๊ฐ€ ํ•˜๋‚˜ ์‚๋šค์–ด์ง€๋ฉด ์ „์ฒด์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ์ธ์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•˜๋Š”๋ฐ๊นŒ์ง€ ์ค‘ ๋งŽ์€ ์‹œ๊ฐ„์€ SSL ์ ์šฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜๋„ SSL๋ฅผ ์ดํ•ดํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ˆ ๋‹ค์Œ์—๋Š” ์งง์€(?) ์‹œ๊ฐ„์•ˆ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

4. ๋กœ์ง ํšจ์œจ์„ฑ

 

 ์ฆ๊ฒจ์ฐพ๊ธฐ ์ฐพ์•„์ฃผ๋Š” ๊ธฐ๋Šฅ, ์—ญ๊ฒฐ์ œ ๊ธฐ๋Šฅ, ํ•„ํ„ฐ ๊ธฐ๋Šฅ ๋“ฑ ํ†ต์‹ ์„ ํ•  ๋•Œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ํ•ด์•ผํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋งŽ์•˜๋‹ค. ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋˜๋‹ˆ ๋กœ์ง์ด ๋งŽ์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋„ ํฐ ๊ฒƒ๋“ค์ด ์ƒ๊ฒจ์„œ ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด 2์ดˆ ์ด์ƒ์˜ ์‹œ๊ฐ„์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„ ํšจ์œจ์„ ์ƒ๊ฐํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๋˜ํ•œ ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ ์šฉ, ํ ์‚ฌ์šฉ, ์„ธ์…˜ ์‚ฌ์šฉ์„ ํ•˜๋ฉด์„œ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

5. OAuth2.0

 

 '์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ•˜๋ฉด์„œ ๊ฐ„ํŽธํ•˜์ž'๋ผ๋Š” ๊ฒƒ์ด ๋Œ€ํ‘œ๋‹˜๊ป˜์„œ ๊ฐ•์กฐํ•˜์‹  ๊ฒƒ์ด์ž ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์žฅ ํฐ ์š”์†Œ์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ KAKAO ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” OAuth2.0 ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” OAuth2.0์ด๋ผ๋Š” ๋‹จ์–ด ์กฐ์ฐจ ๋“ค์–ด๋ณด์ง€ ๋ชปํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ๊ณผ ์—ฐ๋™ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋กœ๊ทธ์ธ ๋ฐฉ์‹์ด OAuth2.0 ๋ฐฉ์‹์ž„์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , AccessToken์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ์ „์ฒด์ ์ธ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์„ ์•Œ๊ฒŒ ๋˜๋ฉด์„œ ์ •๋ง ์ข‹์€ ๋ฐฉ์‹์ž„์„ ์•Œ ์ˆ˜ ์žˆ๊ฒ  ๋˜์—ˆ๋‹ค. OAuth2.0์˜ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , KAKAO ๋กœ๊ทธ์ธ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ณด๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ˆ ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค.

( ์ฐธ๊ณ  : withseungryu.tistory.com/108?category=890878 )

 

[Spring Boot] ์ฐจ๊ทผ์ฐจ๊ทผ OAuth 2.0 ๊ตฌํ˜„ํ•˜๊ธฐ - (1) ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿง oAuth๋ž€? ๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ Google, Github, Kakao ๋“ฑ์˜ ID์™€ Password๋ฅผ ๋ฐ›์•„ Google, Github, Kakao์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์œ ์ถœ..

withseungryu.tistory.com

 

 

์†Œ์Šค ๊ณต๊ฐœ๋Š” ์–ดํ”Œ ์ถœ์‹œ ํ›„ ์ถ”ํ›„ ์ •๋ฆฌํ•œ ํ›„์— ๊ณต๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋กœ๋‚˜๊ฐ€ ์ž ์ž ํ•ด์งˆ 3์›” ์ฏค ์ถœ์‹œ ์˜ˆ์ •...

 

 

 

Stack 

Back-end Spring boot, MySQL, JPA, AWS S3, Redis

Client : Android, IOS

์˜์ƒ

 

ํฌ์Šคํ„ฐ

 

๋ฐœํ‘œ ์ž๋ฃŒ 

์ตœ์ข…๋ฐœํ‘œ.pdf
2.25MB

 

์ƒ์žฅ

๋ฐ˜์‘ํ˜•