HH9C4 / BBBB-BE

7 stars 7 forks source link


๐Ÿ‘€ welcome to ๋กœ๊ณ _๊ฐ€๋กœํ˜• ๐Ÿ‘€

์„œ์šธ์‹œ ๋„์‹œ ๋ฐ์ดํ„ฐ ๊ณต๊ณต API ๊ธฐ๋ฐ˜ ์ •๋ณด์ œ๊ณตํ˜• ์ปค๋ฎค๋‹ˆํ‹ฐ

image

image



๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Our Team

์ •์„ฑ์šฐ ์žฅ์œค์„œ ์œ ๋„์› ์˜ค๊ธฐ์จ ์ž„ํšจ์ง„ ์ด์ง€ํ˜œ
@anfrosus @Younddo @dwon5001 @joyfive @BLAKE198492 aksjdffg@naver.com
VL / BE BE BE TL / FE FE DS


๐Ÿ‘Š ํ”„๋กœ์ ํŠธ ๋…ธ์…˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘Š ์›ํŽ˜์ด์ง€ ๋…ธ์…˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ



ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ

๐Ÿ›ก OAuth2 ์†Œ์…œ๋กœ๊ทธ์ธ (kakao, naver)

  • Kakao์™€ Naver๊ณ„์ •์„ ํ†ตํ•œ ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • Kakao Email๊ณผ Naver Email ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ณ„์ •์— Kakao ์™€ Naver ๋ชจ๋‘ ์—ฐ๋™๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ๊ณณ ๋ชจ๋‘์—์„œ ์—ฐ๋™์ด ํ•ด์ œ๋˜๋ฉฐ ์„œ๋น„์Šค์—์„œ ํƒˆํ‡ด์ฒ˜๋ฆฌ ๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ๋“ฑ์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์œผ๋ฉฐ ํƒˆํ‡ดํ•œ๊ณ„์ •์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(ํšŒ์› ์ •๋ณด๋Š” ์‚ญ์ œ๋จ).
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๋กœ๊ทธ์ธ1](https://user-images.githubusercontent.com/99253403/207301154-bf2cfd83-49d1-474d-9980-69d1d41a64f8.gif)

๐Ÿ“Š ์„œ์šธ์‹œ open api๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ •๋ณด์ œ๊ณต ๊ธฐ๋Šฅ

  • ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ 5๋ถ„๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  • 2-1. ๊ตฌ ๋ณ„ ์ฝ”๋กœ๋‚˜ ์ •๋ณด, spot ๋ณ„ ๋‚ ์”จ ์ •๋ณด ์ œ๊ณต : ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • 2-2. ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ๋ˆ„์  ํ†ต๊ณ„๋ฅผ ํ™œ์šฉํ•œ ์ •๋ณด์ œ๊ณต ๊ธฐ๋Šฅ : ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜ผ์žก๋„ ์ ์ˆ˜๋ฅผ ์‚ฐ์ • ํ•˜์—ฌ ์ˆœ์œ„ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • 2-3. spot ๋ณ„ ๋ˆ„์  + ์‹ค์‹œ๊ฐ„ ์ •๋ณด์ œ๊ณต ๊ธฐ๋Šฅ : ์ง€๋‚œ์ฃผ ๊ฐ™์€ ์š”์ผ์˜ ํ˜ผ์žก๋„, ์ธ๊ตฌ์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ธ๊ตฌ ์ถ”์ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๋ฐ์ดํ„ฐ ๋ณด์—ฌ์ฃผ๊ธฐ](https://user-images.githubusercontent.com/99253403/207301175-8c1b24aa-4b91-4de5-9e08-29afdbedf8ff.gif)

๐Ÿ—จ ๊ตฌ ๋ณ„ ์ปค๋ฎค๋‹ˆํ‹ฐ (CRUD)

  • ์„œ์šธ์‹œ 25๊ฐœ ๊ตฌ ๋ณ„ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • 1.๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ์ž‘์„ฑ/์ˆ˜์ •/์‚ญ์ œ/์กฐํšŒ : ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ๊ณผ ํƒœ๊ทธ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • 2.์ข‹์•„์š” : ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€์„ ์ข‹์•„์š” ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์—๋Œ€ํ•œ ์•Œ๋ฆผ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • 3.๋ถ๋งˆํฌ : ๋‚ด๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๋ฅผ ๋ถ๋งˆํฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ๋งˆํฌํ•œ ์ง€์—ญ์˜ ๊ฒŒ์‹œ๊ธ€์ด ์ถ”๊ฐ€๋˜๋ฉด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๊ธ€์“ฐ๊ธฐ1](https://user-images.githubusercontent.com/99253403/207301193-a4957b80-66b4-49ef-ab55-0f180fa0b806.gif) ![๊ธ€์“ฐ๊ธฐ2](https://user-images.githubusercontent.com/99253403/207301224-b89ad772-209f-4557-ae20-d6064610d649.gif)

๐Ÿ” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ(๋‚ด์šฉ+ํƒœ๊ทธ, ํƒœ๊ทธ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ)

  • QueryDSL์„ ํ™œ์šฉํ•˜์—ฌ ๋™์  ์ฟผ๋ฆฌ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ํƒœ๊ทธ๋กœ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž ๊ฒ€์ƒ‰๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๊ฒ€์ƒ‰๊ธฐ๋Šฅ ์ฐ](https://user-images.githubusercontent.com/99253403/207519598-ecea29d3-4a91-4815-a23f-8edb3c83e7bd.gif)

๐Ÿ‘จโ€๐Ÿ’ป ๋งˆ์ดํŽ˜์ด์ง€ ๊ธฐ๋Šฅ (๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€, ๋‚ด๊ฐ€ ์ข‹์•„์š”ํ•œ ๊ธ€, ๋‚ด ๊ฒŒ์‹œ๊ธ€์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€, ๋‚ด ์ •๋ณด ์ˆ˜์ •)

  • ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ๊ธ€, ๋‚ด๊ฐ€ ์ข‹์•„์š”ํ•œ ๊ธ€, ๋‚ด ๊ฒŒ์‹œ๊ธ€์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœํ•„์‚ฌ์ง„๊ณผ ๋‹‰๋„ค์ž„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด ๊ฒŒ์‹œ๊ธ€์— ์ƒˆ๋กœ์šด ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฌ๋ฉด ์ƒˆ๋กœ์šด ์•Œ๋ฆผ์ด ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๋งˆ์ดํŽ˜์ด์ง€](https://user-images.githubusercontent.com/99253403/207517662-42b7834c-b9a3-4e75-95fe-f770b1f71718.gif)

๐Ÿ“ข ์‹ ๊ณ  ๊ธฐ๋Šฅ (์‚ฌ์šฉ์ž, ๋‹‰๋„ค์ž„, ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€)

  • ์•…์„ฑ ์‚ฌ์šฉ์ž, ๋ถˆ๊ฑด์ „ํ•œ ๋‹‰๋„ค์ž„, ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€์„ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณธ์ธ์€ ๋ณธ์ธ์„ ์‹ ๊ณ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ฐ™์€ ๊ฑด์˜ ์‹ ๊ณ ์— ๋Œ€ํ•ด์„œ๋Š” ๊ณ„์ • ํ•˜๋‚˜๋‹น 1ํšŒ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • ํ•ญ๋ชฉ๋ณ„ ์ผ์ • ํšŸ์ˆ˜๊ฐ€ ์ง€๋‚˜๊ฒŒ ๋˜๋ฉด ๊ฐ•์ œ๋กœ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๋‚ด์šฉ์„ ๋น„๊ณต๊ฐœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![์‹ ๊ณ ๊ธฐ๋Šฅ](https://user-images.githubusercontent.com/99253403/207518162-3aeb68d6-3b4b-48e0-987c-139fc9bf2447.gif)

โ˜‘ ๋ฌดํ•œ์Šคํฌ๋กค

๋ฏธ๋ฆฌ๋ณด๊ธฐ
![๋ฌดํ•œ์Šคํฌ๋กค](https://user-images.githubusercontent.com/99253403/207509009-285b4f26-a55e-44fc-b020-78b1487e35b7.gif)

๐Ÿ’ฌ WebSocket์„ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…

  • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ๊ทผ์— ๋Œ€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„ํŒ…๋ฐฉ์ด ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค.
  • ์ƒ๋Œ€๋ฐฉ์ด ๋‚˜๊ฐ„ ํ›„์— ์ƒˆ๋กœ์šด ๋ฉ”์„ธ์ง€๊ฐ€ ๋“ฑ๋ก๋˜๋ฉด ๊ธฐ์กด์˜ ์ฑ„ํŒ…์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋ชจ๋‘ ๋‚˜๊ฐ€๊ฒŒ ๋˜๋ฉด ์ฑ„ํŒ… ๋‚ด์—ญ์€ ์‚ญ์ œ๋˜๋ฉฐ ๋‹ค์‹œ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์ฑ„ํŒ…๋ฐฉ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![์‹ค์‹œ๊ฐ„์ฑ„ํŒ…1](https://user-images.githubusercontent.com/99253403/207512649-2fd40388-4967-47b3-a6fc-d2196eed748a.gif) ![์‹ค์‹œ๊ฐ„์ฑ„ํŒ…2](https://user-images.githubusercontent.com/99253403/207512250-1afdf846-a32d-42b5-8446-d39b8b53db44.gif)

๐Ÿ”” SSE๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ

  • ๋ถ๋งˆํฌํ•œ ๊ฒŒ์‹œํŒ์— ์ƒˆ๋กœ์šด ๊ธ€์ด ๋“ฑ๋ก๋˜๋ฉด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜๋ฉฐ ์•Œ๋ฆผ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€์— ์ข‹์•„์š” ๋ฐ ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฌ๋ฉด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜๋ฉฐ ์•Œ๋ฆผ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์ด ์˜ค๋ฉด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜๋ฉฐ ์•Œ๋ฆผ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์ฑ„ํŒ…๋ฐฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ
![์‹ค์‹œ๊ฐ„์•Œ๋ฆผ1](https://user-images.githubusercontent.com/99253403/207517096-7f1574bb-0843-4ca4-a58b-e2b90082d691.gif) ![์‹ค์‹œ๊ฐ„์•Œ๋ฆผ2](https://user-images.githubusercontent.com/99253403/207517107-8ebb8235-e153-44c2-b79d-23cb465f2083.gif)



์ ์šฉ ๊ธฐ์ˆ 

โ—ป QueryDSL

์ •๋ ฌ, ๊ฒ€์ƒ‰์–ด ๋“ฑ์— ๋”ฐ๋ฅธ ๋™์  ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ์œ„ํ•˜์—ฌ QueryDSL ๋„์ž…ํ•˜์—ฌ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

โ—ป Swagger

ํ”„๋ก ํŠธ์—”๋“œ์™€ ์ •ํ™•ํ•˜๊ณ  ์›ํ™œํ•œ ์†Œํ†ต์„ ์œ„ํ•˜์—ฌ ์Šค์›จ๊ฑฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
BoombiBoombi Swagger

โ—ป Sentry๋ฅผ ํ†ตํ•œ ์—๋Ÿฌ ๋กœ๊ทธ ํ™•์ธ ๋ฐ ๊ณต์œ 

Sentry๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—๋Ÿฌ๋กœ๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธ/๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
Sentry Image

โ—ป Github Actions & Code Deploy (CI/CD)

์ž๋™ ๋นŒ๋“œ/๋ฐฐํฌ๋ฅผ ์œ„ํ•˜์—ฌ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜๊ณผ ์ฝ”๋“œ๋””ํ”Œ๋กœ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ CI/CD ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
AWS CodeDeploy

โ—ป Nginx (๋ฌด์ค‘๋‹จ๋ฐฐํฌ)

์„œ๋น„์Šค ์šด์˜์ค‘ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ์žฌ๋ฐฐํฌ์‹œ ์ค‘๋‹จ์—†๋Š” ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•˜์—ฌ Nginx ์™€ Shell Script๋ฅผ ํ™œ์šฉํ•ด ๋ฌด์ค‘๋‹จ๋ฐฐํฌ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โ—ป Scheduler๋ฅผ ํ†ตํ•œ open api ํ˜ธ์ถœ

5๋ถ„๋งˆ๋‹ค ๋ณ€๋™๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘/์ œ๊ณต/๊ด€๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ํ™œ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โ—ป Redis

์—ฐ์†๋œ ์š”์ฒญ์œผ๋กœ ์ธํ•œ DB๋ณ‘๋ชฉ์„ ํ•ด์†Œํ•˜๊ณ  RefreshToken ๋“ฑ ์†Œ๋ฉธ๊ธฐ๊ฐ„์ด ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ TimeToLive ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก Redis๋ฅผ ๋„์ž…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.



โš™ Development Environment

Java 11 SpringBoot 2.7.5 Ubuntu 20.04.5 LTS QueryDSL 5.0



๐Ÿšจ Trouble Shooting

Join Fetch ์ˆœ์„œ ๋ณด์žฅ ๋ฌธ์ œ WIKI๋ณด๊ธฐ

NGINX ReverseProxy๋ฅผ ํ™œ์šฉํ•œ ๋ฌด์ค‘๋‹จ๋ฐฐํฌ ์‹œ Cors, SSE ์„ค์ • WIKI๋ณด๊ธฐ

JPA N+1 ๋ฌธ์ œ WIKI๋ณด๊ธฐ

Open Api data WIKI๋ณด๊ธฐ

Token Reissue WIKI๋ณด๊ธฐ

Redis ํฌ๋กค๋Ÿฌ ๋ด‡ ๋ฐ ์ธ์ฆ์„ค์ • WIKI๋ณด๊ธฐ



:raising_hand::thought_balloon: Concern

Access Token and Refresh Token Reissue Process WIKI๋ณด๊ธฐ

Comment & Like Table Structure WIKI๋ณด๊ธฐ

S3 Image Upload Control WIKI๋ณด๊ธฐ

Validation Logic WIKI๋ณด๊ธฐ



๐ŸŒ Architecture

hh99_9_C4_MVP


๐Ÿ“‹ ERD Diagram

75KzfBPRqYgYoW9qT


๐Ÿ“ Technologies & Tools (BE) ๐Ÿ“





![๋กœ๊ณ _์„ธ๋กœํ˜•](https://user-images.githubusercontent.com/99253403/207518245-d2398b14-f4ac-417d-b542-f8a3308588cb.png)

Email : boombiboombi.official@gmail.com Instagram : @boombiboombi.official


โ—ป Copyright ยฉ2022 Hang-Hae99 9th Final : C team 4 all rights reserved.