SEB TIL๐Ÿ‘

ํ”„๋ฆฌํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๐Ÿคฃ

Jeein0313 2023. 6. 27. 14:34

13์ผ์— ๊ฑธ์นœ stackoverflow ๊ตฌํ˜„ ํ”„๋ฆฌํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ค๋Š˜๋กœ ๋์ด ๋‚ฌ๋‹ค.

๋ถ€ํŠธ์บ ํ”„์—์„œ ์ฒ˜์Œ ์ง„ํ–‰ํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ๋ผ ๊ฑฑ์ •๋„ ๋งŽ์•˜์ง€๋งŒ, ๊ณ„ํš๋Œ€๋กœ ์ž˜ ์ง„ํ–‰๋œ ๊ฒƒ ๊ฐ™์•„ ๋‹คํ–‰์ด๋‹ค.

ํ”„๋ก ํŠธ๋ถ€๋ถ„์— ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์ข€ ๋” ๋‚จ์•„ ์žˆ์œผ๋‚˜, ๊ทธ๋ถ€๋ถ„์€ ์ฐจ์ฐจ ์ˆ˜์ •ํ•ด๋‚˜๊ฐ€๋ฉด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค.

 

์šฐ์„ , ์ด๋ฒˆ ํ”„๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” stackoverflow ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ณผ์ œ์˜€๋‹ค. (ํŒ€์žฅ์„ ๋งก์•˜..)

 

๋จผ์ € ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ–ˆ๋‹ค.

 

๋งค์ผ ์ •ํ•ด์ง„ ์‹œ๊ฐ„ 2์‹œ~3์‹œ์— ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•˜์˜€์œผ๋ฉฐ, ํšŒ์˜ ์‹œ๊ฐ„์—๋Š” ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ ๊ฒ€ํ•˜๊ณ , FE์™€ BE ์‚ฌ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋“ค์„ ์กฐ์ •ํ•ด๋‚˜๊ฐ”๋‹ค.

GitHub Project Kanban์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ๋‚ด์šฉ์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์—…๋ฌด์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ๊ณผ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌ ํ–ˆ๋‹ค.

์นธ๋ฐ˜ ๋ณด๋“œ๋Š” ์ด๋ฒˆ์— ์ฒ˜์Œ ์จ ๋ณด์•˜๋Š”๋ฐ, (๊ทธ ์ „์—๋Š” Jira๋ฅผ ์‚ฌ์šฉํ–ˆ์–ด์„œ) ๋งˆ์ผ์Šคํ†ค์„ ์„ค์ •ํ•˜๊ณ , ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์žฌ๋ฐŒ๊ธฐ๋„ ํ–ˆ๊ณ , ํ˜„์žฌ ์—…๋ฌด๊ฐ€ ์–ด๋А ๋‹จ๊ณ„์— ์™€์žˆ๋Š”์ง€ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.

ํ”„๋กœ์ ํŠธ ์™„๋ฃŒ ํ›„ ์นธ๋ฐ˜ ๋ณด๋“œ
closed๋œ ์ด์Šˆ๋“ค

 

Git flow๋Š” ๊ฐ„๋‹จํ•œ Coz' git flow๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, main <- release <-fe-dev, be-dev <-fe-feature~,be-feature๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋‚˜๋ˆ„์–ด ์ž‘์—…ํ•˜๊ณ  mergeํ•  ๋•Œ๋Š” ๊ฐ๊ฐ FE, BE ํŒ€์—์„œ ํšŒ์˜ ํ›„ ์ง„ํ–‰ํ–ˆ๋‹ค.

๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ

๊ทธ ๋ฐ–์˜ ๋ฌธ์„œํ™”(์‚ฌ์šฉ์ž ์ •์˜์„œ, ํ…Œ์ด๋ธ” ๋ช…์„ธ์„œ, ํ™”๋ฉด ์ •์˜์„œ, ERD, ๊ฐœ๋ฐœ์ž ํ…Œ์ŠคํŠธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ, API ๋ฌธ์„œ)๋Š” ๋ชจ๋‘ Notion์—์„œ ๊ด€๋ฆฌํ•˜์˜€๋‹ค.

https://www.notion.so/codestates/5bc39b81d1eb40068f77fd253580350f?pvs=4 

 

 

๊ฐœ๋ฐœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•˜์˜€๋‹ค.

 

๋‚˜๋Š” ๋ฐฑ์—”๋“œ ๋ถ€๋ถ„์„ ๋งก์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ํ”„๋ก ํŠธ๋ถ„๋“ค์ด API๋ฌธ์„œ๋ฅผ ๋นจ๋ฆฌ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ๊ณผ, ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ๊ณผ์ œ ์˜€๋‹ค.

 

๊ทธ๋ž˜์„œ ์ฒซ์งธ ์ฃผ์— ๊ฑฐ์˜ API ๋ฌธ์„œ๋ฅผ ์™„์„ฑํ•ด์„œ ๋จผ์ € ํ”„๋ก ํŠธ ๋ถ„๋“ค๊ป˜ ์ „๋‹ฌํ•ด ๋“œ๋ฆฌ๊ณ , CI/CD ํ”Œ๋žซํผ ์ค‘ ํ•˜๋‚˜์ธ gitActions๋กœ ๋ฐฐํฌ Flow๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์˜ฌ๋ฆฌ๊ณ  ๋‚˜๋‹ˆ FE๋ถ„๋“ค๊ป˜์„œ api ์š”์ฒญ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ํŽธ๋ฆฌํ–ˆ๋‹ค.

 

๋‚˜๋Š” Member(ํšŒ์›) ๋ถ€๋ถ„์„ ๋งก์•„์„œ JWT๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ์ธ์ฆ, ์ธ๊ฐ€ ์™€ ํšŒ์› ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ(ํƒˆํ‡ด) ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ›„๋ฐ˜๋ถ€์— OAuth2 ๋กœ๊ทธ์ธ์„ ๋งก์œผ์…จ๋˜ ๋ถ„์ด ๊ตฌํ˜„์„ ํž˜๋“ค์–ดํ•˜์…”์„œ google OAuth2๋กœ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. 

 

๋‚˜๋จธ์ง€ ํŒ€์›๋ถ„๋“ค์€ ๊ฐ๊ฐ question, answer, ouath2๋ฅผ ๋งก์œผ์…”์„œ ๊ตฌํ˜„ํ•ด ์ฃผ์…จ๋‹ค. (์งˆ๋ฌธ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ, ๋Œ“๊ธ€ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ, ์งˆ๋ฌธ Title๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋“ฑ)

(ํ•˜์ง€๋งŒ, OAuth2์˜ ๊ฒฝ์šฐ ํ”„๋ก ํŠธ์—์„œ ๊ตฌํ˜„์ด ๋๋‚˜์ง€ ์•Š์•„ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ์€ ๋ชปํ–ˆ๋‹ค. -> MainProject์—์„œ ์ ์šฉํ•ด ๋ณผ ์˜ˆ์ •)

 

 

๋ฐœ์ƒํ–ˆ๋˜ ์ด์Šˆ๋“ค..

 

๋ณธ์ฒด ๊ฑฑ์ •์ด ๋งŽ์€ ์„ฑ๊ฒฉ์ด๋ผ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์‹œ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋˜๋„๋ก ๋นจ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ gitActions์— ๋ฐฐํฌ๋ฅผ ํ•  ๋•Œ ec2์™€ ๋ณด์•ˆ ๊ทธ๋ฃน ๋ฌธ์ œ๋กœ ์‹ธ์šฐ๊ธฐ ์‹œ์ž‘ํ•˜์˜€๊ณ ,, ๊ฒฐ๊ตญ ec2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์„ธํŒ…ํ–ˆ๋”๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. 

 

๋˜, API ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด Mockito๋กœ ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ๋ฅผ controller ๋งˆ๋‹ค ์ž‘์„ฑํ•ด ์ฃผ์—ˆ๋Š”๋ฐ ๊ทธ ๊ณผ์ •์—์„œ Spring Security๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ, ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ์— ์ž‘์„ฑํ•ด์ฃผ์—ˆ๋˜ @WebMvcTest๊ฐ€ Spring Security๋ฅผ ํ™œ์„ฑํ™”์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด @SpringBootTest๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  Spring Rest Docs 2.x ๋ฒ„์ „์—์„œ URI ๊ฐ์ฒด๋ฅผ get(), patch() ๋“ฑ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ,

urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request?

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง์ ‘ String์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

//when
        ResultActions actions = mockMvc.perform(
                        get("/users/{member-id}",memberId)
                        .accept(MediaType.APPLICATION_JSON)
        );

 

 

์•„์‰ฌ์› ๋˜ ์ ..๐Ÿ˜‚

 

์šฐ์„ , ๋ฐฑ์—”๋“œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ, ๊ธฐํšํ–ˆ๋˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž˜ ์ž‘๋™๋˜์—ˆ์ง€๋งŒ, ํ”„๋ก ํŠธ์™€ ์—ฐ๋™ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ๋“ค์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ•˜์ง„ ๋ชปํ–ˆ๋‹ค.(์‚ฌ์šฉ์ž ์งˆ๋ฌธ, ๋Œ“๊ธ€ ์ •๋ณด ๋ถ€๋ถ„..) ๋ฐฑ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” CORS ๊ด€๋ จ ์„ค์ •์€ ๋ชจ๋‘ ํ•ด์คฌ๋Š”๋ฐ ์•„๋งˆ๋„ ํ”„๋ก ํŠธ์˜ axios ์š”์ฒญ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ™์ด ์ˆ˜์ •์„ ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ S3๋กœ ์˜ฌ๋ ค์„œ ํ”„๋ก ํŠธ ์ƒํ™ฉ์„ ํ™•์ธํ–ˆ์–ด์•ผ ํ•˜๋Š”๋ฐ ํ•˜๋Š” ์•„์‰ฌ์›€์ด ์ข€ ๋‚จ๋Š”๋‹ค.ใ… ใ… 

 

๋ฐ”๋กœ ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ๋‹น์žฅ ์ˆ˜์ •์€ ์–ด๋ ต๊ฒ ์ง€๋งŒ, ์‹œ๊ฐ„ ๋‚ ๋•Œ ํ‹ˆํ‹ˆ์ด ์ˆ˜์ •ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค.

 

 

 

์ข‹์•˜๋˜ ์ !๐Ÿ˜Š

 

์šฐ์„  ํ”„๋ฆฌํ”„๋กœ์ ํŠธ๋กœ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ๋“ค ํŠนํžˆ, Spring Boot๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ์˜ค๋žœ๋งŒ์— ํ•ด๋ณด๋Š” ํ˜‘์—… ๊ณผ์ •๋„ ์ฆ๊ฑฐ์› ๊ณ , ๋ฌด์—‡๋ณด๋‹ค ํŒ€์›๋ถ„๋“ค์ด ๋‹ค ๊ธ์ •์ ์ธ ํƒœ๋„๋กœ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์ž„ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ–ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋ฐฐํฌ๊นŒ์ง€ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๊ณ , ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์ด ใ…Žใ…Ž.. ํž˜๋“ค์—ˆ์ง€๋งŒ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜๋ฉด ๋˜ ๋ฟŒ๋“ฏํ•œ๊ฑธ..๐Ÿ˜†(์•„๋ฌด๋„ ์•Œ์•„์ฃผ์ง€ ์•Š๋Š” ํ–‰๋ณต..ใ…‹ใ…‹ใ…‹)

 

 

 

๊ฒฐ๊ณผ๋ฌผโญ๏ธ

 

 

ํ™ˆํŽ˜์ด์ง€
ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ , ๋กœ๊ทธ์ธํ•ด์„œ home์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ „์ฒด ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
Ask Question๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ ์งˆ๋ฌธ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
์งˆ๋ฌธ ๋“ฑ๋ก๊ณผ ๋Œ“๊ธ€ ๋“ฑ๋ก ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์งˆ๋ฌธ์„ ํด๋ฆญํ•˜๋ฉด ์งˆ๋ฌธ ๋‚ด์šฉ๊ณผ ๋Œ“๊ธ€ ๋‚ด์šฉ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
์‚ฌ์šฉ์ž ํŽ˜์ด์ง€์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค
์‚ฌ์šฉ์ž ์ •๋ณด ์‚ญ์ œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

ํ”„๋กœ์ ํŠธ ๋ ˆํฌ : 

https://github.com/codestates-seb/seb44_pre_006

 

๋ฐฐํฌ ๋ ˆํฌ :

https://github.com/jeein2222/seb44_pre_006

'SEB TIL๐Ÿ‘' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Section 3 - KPT ํšŒ๊ณ   (3) 2023.05.09
TIL - Spring MVC ํ…Œ์ŠคํŒ…  (0) 2023.04.29
TIL - Spring MVC ์˜ˆ์™ธ์ฒ˜๋ฆฌ  (0) 2023.04.17
Section 2 - KPT ํšŒ๊ณ   (2) 2023.04.10
TIL - Spring Core ๊ธฐ๋ณธ  (0) 2023.04.04