Skip to content
@Hanghae-Hot6

Hanghae-Hot6

logo
image

๐Ÿ‘‰๐Ÿป ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๋…์„œ๊ฐ€ ๋ถ€์กฑํ•œ ํ˜„๋Œ€์ธ๋“ค์„ ์œ„ํ•ด! ๊ฐ“์ƒ์„ ์‚ด๊ณ ์‹ถ์€ ํ˜„๋Œ€์ธ๋“ค์„ ์œ„ํ•ด!
์ƒˆ๋กœ์šด ์‚ฌ๋žŒ๋“ค๊ณผ ์ฆ๊ฒ๊ฒŒ ์–˜๊ธฐํ•˜๋ฉฐ ๋…์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜




๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง ํŒ€์› ์†Œ๊ฐœ

์ด๋ฆ„ ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ ํฌ์ง€์…˜
์„œ์ง€์šด MildColor์˜ github Frontend
์กฐ์žฌ์‹  1005jsc์˜ github Frontend
๊ตญ๊ฒฝํ›ˆ kyunghoonkook์˜ github Frontend
๋ฅ˜์ฐฝ๋ฏผ ryucm์˜ github Backend
์กฐ๊ณ„์ผ chokyeil์˜ github Backend
๋ฐ•ํ˜„๋„ atto08์˜ github Backend
์žฅ์Šน์ฃผ DESIGNER



โš™๏ธ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

์„œ๋น„์Šค์•„ํ‚คํ…์ณver 1



๐Ÿ“… ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

๊ธฐ๊ฐ„ : 2022๋…„ 11์›” 03์ผ ~ 2022๋…„ 12์›” 16์ผ(6์ฃผ)



๐Ÿ›  ํ”„๋ก ํŠธ ๊ธฐ์ˆ  ์Šคํƒ




๐Ÿ›  ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ  ์Šคํƒ





๐Ÿ—บ API ์„ค๊ณ„

API

image image image image image



โœ’ ์™€์ด์–ด ํ”„๋ ˆ์ž„



๐Ÿ”จ ๊ธฐ์ˆ  ๋„์ž… ์ด์œ  - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ • - ํ”„๋ก ํŠธ์—”๋“œ

์Šคํƒ ๋„์ž… ์ด์œ  ๋ฒ„์ „
TypeScript 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์ด๋‚˜๋ฏน ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ž‘์„ฑ ๋™์•ˆ์—๋Š” ์˜ค๋ฅ˜๋ฅผ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๋‹ค๊ฐ€ ๋Ÿฐํƒ€์ž„ ์‹œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ณณ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Œ. ๋˜ํ•œ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ํƒ€์ž…์„ ๋ช…์„ธํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ์‹œ ํ˜•ํƒœ๋ฅผ ์ผ์ผํžˆ ํ™•์ธํ•ด์•ผํ–ˆ์Œ.

2. ๋Œ€์•ˆ : ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
3. ์˜์‚ฌ๊ฒฐ์ • :
ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋„์ž…
์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ฃผ์–ด ํ˜‘์—…ํ•˜๋Š” ํŒ€์›๋“ค์ด ํ†ต์ผ๋œ ๋ฐ์ดํ„ฐ ํ˜•์‹์— ๋งž์ถฐ ์ž‘์„ฑํ•จ.
^4.4.2
Styled-components 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ:
CSS์˜ ์ปดํฌ๋„ŒํŠธ & JS์—ฐ์‚ฐ์˜ ํ•„์š”์„ฑ ๋Š๋‚Œ

2. ๋Œ€์•ˆ : styled components, emotion

3. ์˜์‚ฌ ๊ฒฐ์ • : ์œ ์˜๋ฏธํ•œ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์žˆ๋˜ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์กฐ๊ธˆ ๋” ์ต์ˆ™ํ•œ styled components ๋ฅผ ์‚ฌ์šฉ ํ•˜๊ธฐ๋กœ ํ•จ
^5.3.6
RTK 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ:
๋ฆฌ์•กํŠธ๋กœ ์•ฑ์„ ์ œ์ž‘ํ•  ์‹œ์— ์ƒ๊ฒจ๋‚˜๋Š” ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ์ธ prop drilling์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด,์•ฑ ์ „์—ญ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„์ž… ํ•„์š”์„ฑ์„ ๋Š๋‚Œ

2. ๋Œ€์•ˆ : redux, recoli, mobx, context api,

3. ์˜์‚ฌ๊ฒฐ์ • :
์„œ๋ฒ„์—์„œ ๋น„๋™๊ธฐ๋กœ ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ๋Š” React Query๋กœ ๋‹ด๋‹นํ•˜๊ธฐ๋กœ ํ•˜์˜€๊ณ , ์•ฑ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค ํŒ๋‹จ.
recoil, context api, mobx, redux ๋„ค๊ฐ€์ง€ ๋ชจ๋‘ ์œ„์˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š”๋ฐ ๋ฌธ์ œ๋Š” ์—†๋‹ค .
recoil์€ ์‚ฌ์šฉ๋ฒ•์ด ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๋ผ๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๊ฐ€๋” ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋ง์„ ๋“ค์—ˆ๋‹ค.(์Šค์Šค๋กœ ์ง์ ‘ ๊ฒช์–ด๋ณด์ง€๋Š” ๋ชปํ•˜์˜€์Œ)
mobx๋Š” class ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ ํŒ€์›๋“ค์€ class๋ฌธ๋ฒ•์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ์„ ํƒ์ง€์—์„œ ์ œ์™ธ.
context api๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒ€์›๋“ค๋ผ๋ฆฌ ์ปจ๋ฒค์…˜์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •ํ•ด์ค˜์•ผํ–ˆ๋‹ค ์ด ๊ณผ์ •์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ๋ชจ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํŒจ์Šคํ–ˆ๋‹ค.
๊ฒฐ๊ตญ ํ”„๋ก ํŠธ ํŒ€์›๋“ค ๋ชจ๋‘๊ฐ€ ์นœ์ˆ™ํ•œ redux๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ .
๋งŽ์€ Redux ํŒจํ„ด๋“ค ์ค‘์—์„œ Redux์—์„œ ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋Š” Redux ํŒจํ„ด ๋ฐฉ๋ฒ•์ธ Redux toolkit ์‚ฌ์šฉํ•˜์˜€๋‹ค Redux toolkit์€ ํŠนํžˆ typescript์— ๋Œ€ํ•œ ์—ฐ๋™์ด ์ž˜ ๋˜์–ด์žˆ๊ณ  ๊ณต์‹ ๋ฌธ์„œ๋„ ์„ค๋ช…์ด ์ž˜ ๋˜์–ด์žˆ์–ด ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ํˆด์ด๋ผ๊ณ  ํŒ๋‹จ.
^1.8.6
React-Query 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ:
- ๊ธฐ์กด์— ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ redux thunk ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, redux์˜ ๊ธฐ๋ณธ์›์น™์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๋ฐฉ๋Œ€ํ•ด์ง€๊ณ , ์„œ๋ฒ„๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์„ž์—ฌ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ์— ๋ฌธ์ œ ๋ฐœ์ƒ.
โ‡’ ์„œ๋ฒ„๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌ์‹œ์ผœ ๊ด€๋ฆฌํ•˜๊ณ , ์œ ์—ฐํ•œ ์ž‘์—…์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋„์ž…์ด ํ•„์š”.

2. ๋Œ€์•ˆ :
1) redux saga
2) react async
3) redux-thunk
4) react-query

3. ์˜์‚ฌ๊ฒฐ์ • :
- redux saga: ์ƒ๋Œ€์ ์œผ๋กœ ๋†’์€ learning curve

โ‡’ ๋‹จ๊ธฐ ํ”„๋กœ์ ํŠธ์—์„œ ๋ถ€์ ํ•ฉ
- react async: ์ ์€ ์ฐธ๊ณ ์ž๋ฃŒ์™€ ๋‹ค์šด๋กœ๋“œ ์ˆ˜
โ‡’ ํ˜„์‹œ์ ์—์„œ ๋„์ž…ํ•˜๊ธฐ์— ๋ถ€์ ํ•ฉ
- redux thunk
โ‡’ redux ์„ค์ •์ด ์„œ๋“œํŒŒํ‹ฐ๋กœ ์ธํ•ด ๋”์šฑ ๋น„๋Œ€ํ•ด๊ณ , ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๊ณ  ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ํ˜‘์—…์‹œ์— ๋ณต์žกํ•ด์ง€๊ณ , ๊ฐœ๋ฐœ ์‹œ๊ฐ„์—์„œ๋„ ๋‹จ์ ์œผ๋กœ ์ž‘์šฉ.
- react query
โ‡’ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ์˜ ๊ฐ์†Œ, react-query์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ทœ๊ฒฉํ™”๋œ ์ƒํƒœ๊ด€๋ฆฌ ๋ฐฉ์‹์€ ํ˜‘์—…๊ณผ ์ฝ”๋“œ์ž‘์„ฑ์‹œ ํšจ์œจ์ , ์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์บ์‹ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์šฉ์ด. ๊ฐœ๋ฐœ ์†๋„์™€ ํŽธ๋ฆฌ์„ฑ์„ ์œ„ํ•ด react query ์ฑ„ํƒ
^3.39.2
Axios 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ: ๋ฐฑ์—”๋“œ์™€ ๋ฐ์ดํ„ฐ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„์ž… ํ•„์š”.ํŽธ์˜๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ๊ณผ ๋ธŒ๋ผ์šฐ์ € ์ง€์›๊ณผ ๊ฐ™์€ ํ™•์žฅ์„ฑ ๊ณ ๋ ค.

2. ๋Œ€์•ˆ : AXIOS, FETCH, AJAX

3.์˜์‚ฌ๊ฒฐ์ •:
- FETCH : ๋ณ„๋„์˜ ์„ค์น˜๊ณผ์ •์ด ๋ถˆํ•„์š”ํ•˜์ง€๋งŒ, ์‘๋‹ต๋ฐ์ดํ„ฐ๋ฅผ JSON๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•œ ๋ณ€ํ™˜ ๊ณผ์ •์ด ํ•„์š”, ๋ธŒ๋ผ์šฐ์ € ์ง€์›๋ฒ”์œ„๋Š” AXIOS ๋ณด๋‹ค ์ ์Œ.
-AJAX : jquery ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„๊ฐ€๋Šฅ, Error, Success, Complete์˜ ์ƒํƒœ๋ฅผ ํ†ตํ•ด ํ๋ฆ„์„ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ, ๊ทธ๋Ÿฌ๋‚˜ promise๊ธฐ๋ฐ˜์ด ์•„๋‹˜.
-AXIOS : ์„ค์น˜๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๋” ๋„“์€ ๋ธŒ๋ผ์šฐ์ € ์ง€์›๋ฒ”์œ„, ์‘๋‹ต๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ JSON์œผ๋กœ ๋ณ€ํ™˜, ๋ณ„๋„์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ๊ฐ€๋Šฅ์œผ๋กœ ์ธํ•œ ์œ ์ง€๋ณด์ˆ˜, ๊ฐ€๋…์„ฑ ๋ฉด์—์„œ ์žฅ์ , interceptor ๊ธฐ๋Šฅ ์ œ๊ณต
โ‡’ jquery๋Š” ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜์ง€ ์•Š๊ณ , Fetch์™€ AJAX ๋ณด๋‹ค ๋” ๋งŽ์€ ํŽธ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” AXIOS๋ฅผ ๋„์ž….
^1.1.3
Socket, StompJs 1. ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฌธ์ œ:
์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ๋ฐฉํ–ฅ์ ์ธ httpํ†ต์‹ ์„ ์“ฐ๋Š” ๊ฒƒ์€ ์„œ๋ฒ„, ํ”„๋ก ํŠธ ๋‘˜ ๋‹ค์—๊ฒŒ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ด๊ธฐ๋•Œ๋ฌธ์— ์–‘๋ฐฉํ–ฅ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ œ๊ณตํ•˜๋Š” ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ. ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒ€์ฆ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ์„ธํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ๋œ์Œ.

2. ๋Œ€์•ˆ : ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ : socket.io, ws, sockJs-client , ์›น์†Œ์ผ“ ๊ธฐ๋Šฅ API : stompJS

3. ์˜์‚ฌ๊ฒฐ์ • :
์ˆœ์ˆ˜ ์›น์†Œ์ผ“์€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ WebSocket์„ ์ง€์›ํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค, ๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ์ˆœ์ˆ˜ ์›น์†Œ์ผ“ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— websocket ํ”„๋กœํ† ์ฝœ์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ
websocket ํ”„๋กœํ† ์ฝœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ค‘ socket.io, ws๋Š” ๋…ธ๋“œ์— ์ตœ์ ํ™” ๋˜์–ด์žˆ๊ณ , Spring ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Servlet ์Šคํƒ ์œ„์—์„œ Server/Client ์šฉ๋„์˜ SockJS ํ”„๋กœํ† ์ฝœ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SockJs๋ฅผ์ฑ„ํƒํ•จ
์„œ๋ฒ„์™€ ์ปค๋„ฅํŠธ ๋˜์—ˆ์„ ๋•Œ, ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ, ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์„ ๋•Œ์™€๊ฐ™์€ ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ•  ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”๋กœํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์ด ์ž˜ ์ •๋ฆฌ๋˜์–ด ๋“ค์–ด์žˆ๋Š” Stomp๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋„์›€์„ ๋ฐ›์•„ ์ฑ„ํŒ… ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•จ
^6.1.2

๐Ÿ”จ ๊ธฐ์ˆ  ๋„์ž… ์ด์œ  - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ • - ๋ฐฑ์—”๋“œ

์Šคํƒ ๋„์ž… ์ด์œ  ๋ฒ„์ „
Node.js ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จํ•˜์—ฌ python, java ๋ณด๋‹ค ํšจ์œจ์ ์ด๋ฉฐ, jQuery๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ์— ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ^4.4.2
Redis 1) RefreshToken ์ €์žฅ, 2) email ์ธ์ฆ ๋ฒˆํ˜ธ ์œ ํšจ ๊ธฐ๊ฐ„ ์„ค์ • ^5.3.6
docker-compose ๊ฐ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ฐœ๋ฐœํ™˜๊ฒฝ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ํ™˜๊ฒฝ๋งˆ๋‹ค ๋ณ„๋„์˜ DB๋ฅผ ์„ค์น˜๊ฐ€ ํ•„์š” => redis์™€ postgresql์˜ ๋ณ„๋„ ์„ค์น˜ ์—†์ด ๋™์ผ ํ™˜๊ฒฝ์—์„œ test๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก docker-compose๋ฅผ ๊ตฌ์„ฑ ^3.39.2
CI-CD JS ๋‚ด์žฅ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— import๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€๊ณผ ๋ฌด๊ฑฐ์›€์ด ๋‹ค์†Œ ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— ๋„์ž…ํ–ˆ๋‹ค. JSON ๋ฐ์ดํ„ฐ ์ž๋™ ๋ณ€ํ™˜ / axios interceptor & ๊ฐ„๊ฒฐํ•œ instance ๊ธฐ๋Šฅ ^1.1.3
WebSocket, Stomp ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ๋ฐฉํ–ฅ์ ์ธ httpํ†ต์‹ ์„ ์“ฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์–‘๋ฐฉํ–ฅ์ ์œผ๋กœ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ–ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ค‘, Spring ์„œ๋ฒ„์˜ ์„ฑ๊ฒฉ๊ณผ ๊ฐ€์žฅ ์ž˜ ๋งž์€ SockJs, Stomp๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค ^6.1.2
spring email ํšŒ์›๊ฐ€์ž… ์‹œ ๋ณธ์ธ ์ธ์ฆ ํ•„์š” ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ^4.4.2
OAuth2.0 ํšŒ์› ๊ฐ€์ž…์˜ ๊ฐ„ํŽธํ™”๋ฅผ ํ†ตํ•ด ์œ ์ €๋“ค์˜ ์‚ฌ์šฉ ํŽธ๋ฆฌํ•จ ์ฆ๊ฐ€ ^4.4.2
PostgreSQL ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ• ํ•˜๊ธฐ ์œ„ํ•ด์„œ. mysql์˜ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ†ตํ•ด ๋งŽ์ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์ง€๋งŒ, ๊ทธ๋ž˜๋„ postgresql์ด join๊ณผ ๋ณ‘๋ ฌ ์ฟผ๋ฆฌ, MVC๋ฅผ ์ง€์› ^4.4.2
Amazon S3 ์ด๋ฏธ์ง€ ์ €์žฅ. CICD์˜ ๊ณผ์ • ^4.4.2
Swagger fox Back-end์—์„œ ๊ตฌํ˜„์ด ๋๋‚œ ๊ฒƒ์„ ์ผ์ผ์ด front-end์— ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ delay ๋ฐœ์ƒ. ๊ฐœ๋ฐœ ๋„์ค‘ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœํ•œ API๋ฅผ ๋งค๋ฒˆ API๋ช…์„ธ์„œ์— ๊ธฐ์ž…ํ•˜๋Š” ๊ณผ์ •์ด ์–ด๋ ค์›Œ swagger๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์ธ ์†Œํ†ต ^4.4.2



โœจ ์ฃผ์š” ๊ธฐ๋Šฅ - ํ”„๋ก ํŠธ์—”๋“œ

ํŽ˜์ด์ง€ API ์—ฐ๊ฒฐ, ๊ธฐ๋Šฅ ๋ฐ CSS
๋กœ๊ทธ์ธ - ์„œ์ง€์šด โœ…์นด์นด์˜ค ๋กœ๊ทธ์ธ
โœ…๋กœ๊ทธ์ธ
ํšŒ์›๊ฐ€์ž… - ์„œ์ง€์šด โœ…ํšŒ์›๊ฐ€์ž…
โœ…์•„์ด๋”” ์ค‘๋ณต ์ฒดํฌ
โœ…๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ
๋งˆ์ด ํŽ˜์ด์ง€ - ์„œ์ง€์šด โœ…๋กœ๊ทธ์•„์›ƒ
โœ…๋งˆ์ดํŽ˜์ด์ง€ ์ฐจํŠธ
๋ฉ”์ธํŽ˜์ด์ง€ - ๊ตญ๊ฒฝํ›ˆ โœ…๋ฐฐ๋„ˆ
โœ…์นดํ…Œ๊ณ ๋ฆฌ
โœ…์ธ๊ธฐ๋ชจ์ž„
โœ…์ƒ๋‹จTOP ๋ฒ„ํŠผ
โœ…์ฑ„ํŒ… ๋ฒ„ํŠผ
โœ… ํ›„๊ธฐ 3๊ฐœ ์ตœ์‹  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
๋ชจ์ž„ ์ „์ฒด ํŽ˜์ด์ง€ - ๊ตญ๊ฒฝํ›ˆ โœ…์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ sort
๋ชจ์ž„ ์ƒ์„ธ ํŽ˜์ด์ง€ - ๊ตญ๊ฒฝํ›ˆ โœ…๋“ฑ๋ก๋œ ๋ชจ์ž„ ์ •๋ณด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
๋ชจ์ž„ ๊ด€์‹ฌ - ๊ตญ๊ฒฝํ›ˆ โœ…๊ด€์‹ฌ ๋ชจ์ž„ ๋“ฑ๋ก
๋ชจ์ž„ ์ฐธ์„/ํƒˆํ‡ด - ๊ตญ๊ฒฝํ›ˆ โœ…๋ชจ์ž„ ๊ฐ€์ž…ํ•˜๊ธฐ ํƒˆํ‡ดํ•˜๊ธฐ
๋ชจ์ž„ ์ž‘์„ฑ ํŽ˜์ด์ง€ - ์กฐ์žฌ์‹  โœ…๋ชจ์ž„ ์ž‘์„ฑํ•˜๊ธฐ, ๋„ค์ด๋ฒ„ ์ฑ… ๊ฒ€์ƒ‰, Pagination
๋ชจ์ž„ ์ˆ˜์ • ํŽ˜์ด์ง€ - ์กฐ์žฌ์‹  โœ…๋ชจ์ž„ ์ˆ˜์ •ํ•˜๊ธฐ, ๋„ค์ด๋ฒ„ ์ฑ… ๊ฒ€์ƒ‰, Pagination
๋ชจ์ž„ ์‚ญ์ œ ๊ธฐ๋Šฅ - ์„œ์ง€์šด โœ…๋ชจ์ž„ ์‚ญ์ œํ•˜๊ธฐ
์ฑ„ํŒ… - ์กฐ์žฌ์‹  โœ… SockJS, Stomp๋ฅผ ์ด์šฉํ•œ ์ฑ„ํŒ… ๊ตฌํ˜„(์ฑ„ํŒ…, ๋ฐฉ ๋งŒ๋“ค๊ธฐ)
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ - ์กฐ์žฌ์‹  โœ… ๋„ค์ด๋ฒ„ ์ฑ… ๊ฒ€์ƒ‰, Pagination
๋ชจ๋‹ฌ - ์„œ์ง€์šด โœ…๋ชจ๋‹ฌ css
ํ›„๊ธฐ - ๊ตญ๊ฒฝํ›ˆ โœ…ํ›„๊ธฐ ์ƒ์„ฑ,์‚ญ์ œ,๋ถˆ๋Ÿฌ์˜ค๊ธฐ
ํ—ค๋” - ์„œ์ง€์šด & ๊ตญ๊ฒฝํ›ˆ โœ…ํ—ค๋” css
โœ…ํ—ค๋” ๊ฒ€์ƒ‰
ํ‘ธํ„ฐ - ๊ตญ๊ฒฝํ›ˆ โœ…ํ‘ธํ„ฐ css
๋ฐ˜์‘ํ˜• - ์ „์ฒด โœ…๋ชจ๋ฐ”์ผ
โœ…PC

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ - ๋ฐฑ์—”๋“œ

ํŽ˜์ด์ง€ API ์—ฐ๊ฒฐ, ๊ธฐ๋Šฅ ๋ฐ CSS
๋กœ๊ทธ์ธ - ๋ฅ˜์ฐฝ๋ฏผ โœ…์นด์นด์˜ค ๋กœ๊ทธ์ธ
โœ…๋กœ๊ทธ์ธ
ํšŒ์›๊ฐ€์ž… - ๋ฅ˜์ฐฝ๋ฏผ โœ…ํšŒ์›๊ฐ€์ž…
โœ…์•„์ด๋”” ์ค‘๋ณต ์ฒดํฌ
โœ…๋‹‰๋„ค์ž„ ์ค‘๋ณต ์ฒดํฌ
๋งˆ์ด ํŽ˜์ด์ง€ - ๋ฅ˜์ฐฝ๋ฏผ โœ…๋กœ๊ทธ์•„์›ƒ
โœ…๋งˆ์ดํŽ˜์ด์ง€ ์ฐจํŠธ
๋ชจ์ž„ CRUD - ๋ฐ•ํ˜„๋„ โœ…
๋ชจ์ž„ ์ „์ฒด ํŽ˜์ด์ง€ - ๋ฐ•ํ˜„๋„ โœ…์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ sort
๋ชจ์ž„ ์ƒ์„ธ ํŽ˜์ด์ง€ - ๋ฐ•ํ˜„๋„ โœ…๋“ฑ๋ก๋œ ๋ชจ์ž„ ์ •๋ณด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
๋ชจ์ž„ ๊ด€์‹ฌ - ๋ฐ•ํ˜„๋„ โœ…๊ด€์‹ฌ ๋ชจ์ž„ ๋“ฑ๋ก
๋ชจ์ž„ ์ฐธ์„/ํƒˆํ‡ด - ๋ฐ•ํ˜„๋„ โœ…๋ชจ์ž„ ๊ฐ€์ž…ํ•˜๊ธฐ ํƒˆํ‡ดํ•˜๊ธฐ
์ฑ„ํŒ… - ์กฐ๊ณ„์ผ,๋ฅ˜์ฐฝ๋ฏผ โœ…
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ - ์กฐ๊ณ„์ผ โœ…

๐ŸŽฏ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ฑ„ํŒ…๋ฐฉ UI ๊ฐœ์„ 

1. ์ฑ„ํŒ…๋ฐฉ PCํ™”๋ฉด์—์„œ ๋ชจ๋ฐ”์ผ๋กœ ์ „ํ™˜, ๋ชจ๋ฐ”์ผํ™”๋ฉด์—์„œ PCํ™”๋ฉด์œผ๋กœ ์ „ํ™˜์‹œ ๋” ๋ถ€๋“œ๋Ÿฌ์šด UX๋กœ ๊ณ ์น˜๊ธฐ

๊ตฌ๋ถ„ ์„ค๋ช…
๋ฌธ์ œ์ƒํ™ฉ ์ฑ„ํŒ…๋ฐฉ์˜ PCํ™”๋ฉด(ํŒ์—…ํ™”๋ฉด)์—์„œ ๋ชจ๋ฐ”์ผํ™”๋ฉด(ํ’€ํ™”๋ฉด)์œผ๋กœ ์ „ํ™˜ ๋˜ ๊ทธ ์—ญ์ˆœ์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ ์ฑ„ํŒ…์ฐฝ์ด ๋‹ซํ˜€์ง
๋” ๋ถ€๋“œ๋Ÿฌ์šด UX๋กœ ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ์Œ
๋” ๋ถ€๋“œ๋Ÿฌ์šด UX๋กœ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PCํ™”๋ฉด์ผ๋•Œ์™€ ๋ชจ๋ฐ”์ผํ™”๋ฉด์ผ๋•Œ์˜ ์ฑ„ํŒ…์ฐฝ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์„
์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋‚Œ
๋ฌธ์ œ์›์ธ ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์ผ๋•Œ๋Š” ํ’€ํ™”๋ฉด์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ณ  PCํ™”๋ฉด์ผ ๋–„์—๋Š” ํŒ์—…ํ™”๋ฉด์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•จ
ํ’€ํ™”๋ฉด์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ โ€˜/mobile_chatโ€™์ด๋ผ๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ๋”ฐ๋กœ ์—ด์–ด ์คŒ
๊ธฐ์กด ์ฝ”๋“œ๋Š” ์ฑ„ํŒ…์ฐฝ์„ ์—ด๊ณ  ๋‹ซ๋Š” state๊ฐ€ ํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ–ˆ์Œ
ํ™”๋ฉด์˜ width๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒ๋‹จํ•˜๋Š” hook์ด ์—†์–ด
์–ด๋Š width์— ๋ชจ๋ฐ”์ผํ™”๋ฉด์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”์ง€, PCํ™”๋ฉด์œผ๋กœ ๋“ค์–ด์˜ค๋Š”์ง€ ์•ฑ์ด ์•Œ์ˆ˜๊ฐ€ ์—†์—ˆ์Œ
๋ฌธ์ œํ•ด๊ฒฐ ์ฑ„ํŒ…์ฐฝ์„ ์—ด๊ณ  ๋‹ซ๋Š” ์ƒํƒœ๋ฅผ ๋‹ด๋Š” redux์˜ slice๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ๋ฐ”๊ฟ”์คŒ
ํ™”๋ฉด์˜ width๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒ๋‹จํ•˜๋Š” hook์„ ๋งŒ๋“ฌ
pcํ™”๋ฉด์—์„œ ๋ชจ๋ฐ”์ผํ™”๋ฉด ์ƒํƒœ๋กœ ๋Œ์ž…๋  ์‹œ , ๋˜ ์—ญ์ˆœ ์ผ ์‹œ hook์ด ์ž‘๋™์ด ๋˜๊ณ ,
์ด์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๊ฒŒ๋” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
์ด๋ฒคํŠธ์˜ ์ฝœ๋ฐฑ์œผ๋กœ PCํ™”๋ฉด โ†’ ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ์ผ ๊ฒฝ์šฐ, โ€˜/mobile_chatโ€™์œผ๋กœ ์ฃผ์†Œ๋ฅผ ์˜ฎ๊ธฐ๊ณ 
๋ชจ๋ฐ”์ผ ํ™”๋ฉด โ†’ PCํ™”๋ฉด ์ผ ๊ฒฝ์šฐ ์ฑ„ํŒ…์ฐฝ ํŒ์—…์„ ๋„์šฐ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•จ
ํ•ด๊ฒฐ๊ฒฐ๊ณผ ์œ ์ €๋Š” ์ฑ„ํŒ…์„ ํ•˜๋Š”์ค‘์— ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ํ™”๋ฉด ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„, ๋Š๊ธฐ์ง€ ์•Š๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฑ„ํŒ…์„ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ

์ ์šฉ ์ „

default.mp4

์ ์šฉ ํ›„

default.mp4
Infinite Carousel

Infinite Carousel

๊ตฌ๋ถ„ ์„ค๋ช…
๋ฌธ์ œ
์ƒํ™ฉ
๋งจ ๋ ๋ฐฐ๋„ˆ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฐฐ๋„ˆ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  ์—ญ์žฌ์ƒ ๋˜๋Š” ๋“ฏํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐœ์ƒ
๋ฌธ์ œ์›์ธ transition + ์–‘ ๋ ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€์ ์ธ ์ด๋ฏธ์ง€๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ ๋•Œ๋ฌธ์— ์—ญ์žฌ์ƒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐœ์ƒ
๋ฌธ์ œํ•ด๊ฒฐ ๋ฐฐ๋„ˆ ์–‘ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด ์ฃผ๊ณ  ๋ ๋ฐฐ๋„ˆ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฐฐ๋„ˆ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ transition์„ ์—†์• ์คŒ
ํ•ด๊ฒฐ๊ฒฐ๊ณผ ํ•ด๋‹น ํ•˜๋Š” ์ด๋ฏธ์ง€์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐฐ๋„ˆ ์ด๋ฒคํŠธ๊ฐ€ ์ด๋ฃจ์–ด ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„˜์–ด๊ฐ€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ƒ๊น€
Infinite Carousel ์ ์šฉ ์ „/ํ›„

์ ์šฉ ์ „

c.mp4

์ ์šฉ ํ›„

_2022_12_10_23_52_01_642.mp4


๐Ÿ‘ฉโ€๐Ÿ’ป ์œ ์ € ํ”ผ๋“œ๋ฐฑ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ


๋ชจ์ž„ ์ฐธ์„ ์ธ์› ๋‹ค ์ฐผ์„๋•Œ ์ฐธ์„ ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด null์ด alert ์œผ๋กœ ์ถœ๋ ฅ

์ธ์› ๋‹ค ์ฐผ์„๋•Œ post์š”์ฒญ์— ๋Œ€ํ•œ response๋ฅผ error๋กœ ๋ณด๋‚ด์ฃผ์…จ๋Š”๋ฐ ํ•ด๋‹น response๋ฅผ data๋กœ ์žก๊ณ  ์žˆ์—ˆ์Œ back์—์„œ error -> data๋กœ ๋ณด๋‚ด

ํด๋Ÿฝ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๊ฐ€ null ์ด๋ฉด ์—‘๋ฐ•์ด ๋œฌ๋‹ค.

ํ”„๋ก ํŠธ/๋ฐฑ์—์„œ ์ธ๋„ค์ผ์ด๋ฏธ์ง€๊ฐ€ null ์ผ๋•Œ ๋””ํดํŠธ ์ธ๋„ค์ผ ๋„ฃ์–ด์ฃผ์–ด ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์ง€ ์•Š์€ ๋ชจ์ž„๋„ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์‹ฌ์–ด์ฃผ์—ˆ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ • ์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ผ์น˜ํ•ด๋„ ์•ˆ ๋จ

์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ • ๊ฐ’์œผ๋กœ ํ™•์ธ ํ•˜๊ณ  ์žˆ์–ด์„œ ์ผ์น˜ ํ™•์ธ์ด ๋ถˆ๊ฐ€ ํ–ˆ์—ˆ์Œ

๋ชจ์ž„๊ฐœ์„ค ํ•  ๋•Œ ์ŠคํŽ˜์ด์Šค๋ฐ”๋งŒ ๋ˆŒ๋Ÿฌ์„œ ๋ชจ์ž„๊ฐœ์„ค์ด ๋จ

ํ”„๋ก ํŠธ ์„œ๋ฒ„๋กœ input์— ๋“ค์–ด์˜จ ๊ฐ’์„ ๋ณด๋‚ด๊ธฐ ์ „์— trim(โ€™ โ€™)์„ ์ด์šฉํ•ด ๋นˆ ๊ฐ’๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค
๋ฐฑ์—”๋“œ ๊ฐœ์„ค์‹œ ๋ฐ›์•„์˜ค๋Š” requestDto์— ํ•„์ˆ˜๋กœ ์š”๊ตฌํ•˜๋Š” ์ž…๋ ฅ๊ฐ’์€ NotBlank ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„๋†“์•„ ํ•„์ˆ˜๋กœ ์š”๊ตฌํ•˜๋Š” ์ž…๋ ฅ๊ฐ’์€ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด 400์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ๋ณ€๊ฒฝ

๋ชจ์ž„๊ฐœ์„ค์‹œ์— ์–ด๋– ํ•œ ๊ฐ’(์ธํ’‹)์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋ฉด ์ข‹์„ ๋“ฏ

inputํƒœ๊ทธ์— required ์˜ต์…˜์„ ๋‹ฌ์•„์ฃผ์–ด์„œ form ์ œ์ถœ ์‹œ ์ž…๋ ฅ๋˜์ง€ ์•Š์€ ๊ฐ’์„ ๋ช…์‹œํ•˜๊ฒŒ ํ•ด์คŒ

๊ณผ๊ฑฐ ์ฑ„ํŒ… infinite scroll๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

์ ์šฉ ์™„๋ฃŒ

๐Ÿ‘ป ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ

Front-end
- ๋ฐ˜์‘ํ˜• ๋„์ž… โ€” ๋ชจ๋ฐ”์ผver --์™„๋ฃŒ
- ๋ณด์•ˆ ๊ฐ•ํ™” โ€” https -- ์™„๋ฃŒ
- infinite carousel -- ์™„๋ฃŒ
- infinite scroll โ€” ๋ชจ๋ฐ”์ผver -- ์™„๋ฃŒ
- ๊ณผ๊ฑฐ ์ฑ„ํŒ… ๋ฌดํ•œ ์Šคํฌ๋กค๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ -- ์™„๋ฃŒ
- ํ›„๊ธฐ ๊ธฐ๋Šฅ -- ์™„๋ฃŒ
- api instance -- ์™„๋ฃŒ
- ๊ฒ€์ƒ‰, ์ข‹์•„์š”๋“ฑ ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋Š” api call ์ตœ์ ํ™”
- ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰ ์ตœ์ ํ™”
- ์ฑ„ํŒ…์—์„œ ์ด๋ฏธ์ง€ ์ „์†ก ๊ธฐ๋Šฅ ์ถ”๊ฐ€
Back-end
- Redis๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ตฌํ˜„ ๊ณ ๋„ํ™”
- Node.js์˜ scheduler๋ฅผ ํ†ตํ•ด ํฌ๋กค๋ง์˜ ์ž๋™ํ™” ์ง„ํ–‰ โ†’ AWS Batch - CloudWatch ์‚ฌ์šฉ ์˜ˆ์ •
- JPQL์„ ํ†ตํ•ด ์„ฑ๋Šฅ ๊ฐœ์„ 
- postgres๋ฅผ ์ด์šฉํ•œ full-text search ๋„์ž… (๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก Like๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์€ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์— ๋ถ€๋‹ด์„ ์ค€๋‹ค)
- https ์ ์šฉ
- ECS๋ฅผ ํ†ตํ•œ ๋ฐฐํฌ --> ํ˜„์žฌ์˜ ๋ฐฐํฌ์—๋Š” EC2 ์„œ๋ฒ„์— ์ง์ ‘ Redis, JDK, Code Deploy๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๊ฒƒ์€ docker-compose๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จ ๋ฐฐํฌ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
- ECR๊นŒ์ง€์˜ CI๋Š” ์™„๋ฃŒ๋œ ์ƒํƒœ์ด๋‚˜ ECS์—์„œ Load Balace์˜ target group์˜ health check๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชป ํ•˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
- ์‹œ๊ฐ„์ด ๋‚จ๋Š”๋‹ค๋ฉด kafka๋ฅผ ํฌ๋กค๋ง ์„œ๋ฒ„์™€ log ์ˆ˜์ง‘, ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์— ๋„์ž…ํ•œ Data Pipeline์„ ๊ตฌ์ถ•ํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
- Jwt ํ† ํฐ ๋งŒ๋ฃŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ - JwtFilter ์ชฝ์—์„œ



Pinned Loading

  1. Front Front Public

    TypeScript 1

  2. Back Back Public

    Java 1

Repositories

Showing 3 of 3 repositories
  • Back Public
    Hanghae-Hot6/Backโ€™s past year of commit activity
    Java 0 1 4 0 Updated Apr 27, 2024
  • Front Public
    Hanghae-Hot6/Frontโ€™s past year of commit activity
    TypeScript 0 1 13 0 Updated Dec 24, 2022
  • .github Public
    Hanghae-Hot6/.githubโ€™s past year of commit activity
    0 0 0 0 Updated Dec 12, 2022

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ