Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bocho-drive/back

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

199 Commits

Repository files navigation

๐Ÿš˜๋ณด์ดˆ ์šด์ „๐Ÿš˜

์—ฌ๋Ÿฌ๋ถ„์˜ ๋“ ๋“ ํ•œ ๊ฐ€์ด๋“œ, ๋ณด์ดˆ ์šด์ „


์šด์ „, ์ฒ˜์Œ์ด๋ผ ๋–จ๋ฆฌ์‹œ์ฃ ? ๊ฑฑ์ • ๋งˆ์„ธ์š”! ๋ณด์ดˆ ์šด์ „ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธด ์ดˆ๋ณด ์šด์ „์ž๋“ค์ด ๋ชจ์—ฌ, ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ์šด์ „ ํŒ๊นŒ์ง€ ์„œ๋กœ ๊ณต์œ ํ•˜๊ณ  ์„ฑ์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด์—์š”.
ํ•จ๊ป˜๋ผ๋ฉด ์ฒซ ์šด์ „๋„ ๋‘๋ ต์ง€ ์•Š์•„์š”! ์šด์ „, ๊ฐ™์ด ์ฆ๊ฒจ๋ด์š”! ๐Ÿš—๐Ÿ’จ

๐Ÿ“ŒInfo

โ—ใใ‚ใพใ‚‹ ํ”„๋กœ์ ํŠธ ๋ธŒ๋กœ์…” : ๋ณด์ดˆ์šด์ „ ๋ธŒ๋กœ์…”
โ—ใใ‚ใพใ‚‹ ๋ฐฐํฌ ๋งํฌ : https://www.bocho.p-e.kr/
โ—ใใ‚ใพใ‚‹ ํŒ€ ๋…ธ์…˜ : ๋ณด์ดˆ์šด์ „ ๋…ธ์…˜

๐Ÿ“†Period

2024ๅนด07ๆœˆ19ๆ—ฅ ~ 2024ๅนด08ๆœˆ15ๆ—ฅ


๐ŸšœProject Members






FrondEnd/Leader FrondEnd BackEnd/Vice Leader BackEnd BackEnd

Service Architecture

๐Ÿ› ๏ธTools

backend



Infrastructure



Dev tools

ERD

๐ŸŒŸBackend ์ฃผ์š” ๊ธฐ์ˆ 

1. ๋กœ๊ทธ์ธ: JWT ํ† ํฐ ๋ฐฉ์‹, Spring Security

JWT(Json Web Token)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ, ์„œ๋ฒ„๋Š” AccessToken๊ณผ RefreshToken์„ ๋ฐœ๊ธ‰ํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. AccessToken์€ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋งŒ๋ฃŒ๋˜๋ฉฐ, RefreshToken์„ ํ†ตํ•ด AccessToken์„ ์žฌ๋ฐœ๊ธ‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•œ๋‹ค. Spring Security๋ฅผ ํ†ตํ•ด ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ •๋ณด์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ–ˆ๋‹ค. ์†Œ์…œ ๋กœ๊ทธ์ธ(Kakao, Google) ๋˜ํ•œ Spring Security์™€ OAuth2๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ–ˆ๋‹ค.

2. WebSocket

WebSocket์„ ์ด์šฉํ•ด ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜์ƒ ๊ณต์œ  ๋ฐ ์—ฐ์ˆ˜ ๋งค์นญ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค. HTTP์™€๋Š” ๋‹ฌ๋ฆฌ WebSocket์€ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„๊ณผ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•œ๋‹ค.

3. ์ด๋ฏธ์ง€ S3 ์—…๋กœ๋“œ

AWS S3(Simple Storage Service) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํŒŒ์ผ์„ S3 ๋ฒ„ํ‚ท์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. S3๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋„ ์•ˆ์ •์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€๋Š” URL ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. S3์™€ ์—ฐ๋™๋œ ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ ๋น„์šฉ ํšจ์œจ์ ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค. ๋˜ํ•œ, S3 ๋ฒ„ํ‚ท์˜ ์ •์ฑ… ์„ค์ •์„ ํ†ตํ•ด ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํŒŒ์ผ์˜ ๊ณต๊ฐœ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•ด ์ด๋ฏธ์ง€ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธTrouble Shooting

๐Ÿšจ issue 1

๐Ÿ”๋กœ๊ทธ์ธ AccessToken, RefreshToken ๋ฐœ๊ธ‰

๋กœ๊ทธ์ธ ์‹œ accessToken์„ ๋ฐœ๊ธ‰ํ•  ๋•Œ loginFilter์—์„œ token์„ ๋ฐœ๊ธ‰ํ•˜์ง€ ์•Š๊ณ  controller์—์„œ ์ง์ ‘ accessToken์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

โ“ cause

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด loginFilter๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ controller๋กœ ๊ฐ€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋˜๊ณ  ์žˆ์—ˆ๋‹ค.

โ— solution

this.setFilterProcessesUrl("/signin");

์œ„์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด UsernamePasswordAuthenticationFilter๊ฐ€ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  URL์„ /signin์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์œผ๋กœ ์ธํ•ด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ /signin ๊ฒฝ๋กœ๋กœ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ํ•„ํ„ฐ๊ฐ€ ์ด ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์–ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๐Ÿšจ issue 2

๐Ÿ“ท์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๊ด€๋ จ ์˜ค๋ฅ˜

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•ด form-data๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํ•ด๋‹น ํ•„๋“œ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธ€์ด ์ž‘์„ฑ๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

โ“ cause

RequestDto ํด๋ž˜์Šค์— @Getter ์–ด๋…ธํ…Œ์ด์…˜์ด ์—†์–ด์„œ, Spring Boot๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋‹น ํ•„๋“œ์— ์ ‘๊ทผํ•˜์—ฌ ๋งคํ•‘ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Spring์€ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ์‹œ, ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด๋‹น ํ•„๋“œ์˜ Getter ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ณ , ๋˜ํ•œ ๊ฐ์ฒด๋ฅผ JSON์ด๋‚˜ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ๋„ Getter๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ— solution

RequestDto ํด๋ž˜์Šค์— @Getter ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ ํ•„๋“œ์— ๋Œ€ํ•œ Getter ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Spring์ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

About

๐Ÿš˜ ๋ณด์ดˆ์šด์ „ ์ปค๋ฎค๋‹ˆํ‹ฐ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /