๋ด๊ฐ ์ฐพ๋ ๋งํ์ ๋งํ์นดํ๋ฅผ ๋ด ์ฃผ๋ณ์์ ๊ฒ์ํ๊ณ ์ฐพ์ ์ ์๋ ์๋น์ค์ ๋๋ค. ๋งํ๋ฅผ ์ข์ํ๋ ์ฌ๋๋ค์ ์ํด ๋ด ์ฃผ๋ณ์์ ๋ด๊ฐ ์ฐพ๋ ๋งํ์ฑ ์ ๋ณผ ์ ์๋์ง ์๊ณ ์ถ๋ค๋ ์๊ฐ ํ๋๋ก ๋ถ์ํ(BOOKSURFING) ์๋น์ค๋ฅผ ๊ธฐํํ๊ฒ ๋์์ต๋๋ค.
์ฌ์ฉ์๋ค์๊ฒ ๋ฆฌ๋ทฐ ๊ธฐ๋ฐ์ ๋์ ์ถ์ฒ๊ณผ ์ฃผ๋ณ ์ด์๋งค์ฅ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ๋งํ ํฌ๋ค์ ๋์ฆ ์ถฉ์กฑ๊ณผ ํ์ฑํ๋ฅผ ๋๋ชจํ๋ฉฐ, ์์๋ฆฌ์คํธ ๋ฐ ์๋ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉ์ ํธ์์ฑ์ ๊ฐํํฉ๋๋ค.
1. ์ถ์ฒ ๋์๋ชฉ๋ก๊ณผ ๋ด ์ฃผ๋ณ ์ด์๋งค์ฅ ํ์ธ ๊ฐ๋ฅ (๐ Click)
- ์ถ์ฒ ๋์๋ชฉ๋ก์ ์ ์ ๋ค์ ๋ฆฌ๋ทฐ์์ผ๋ก ์ ์ ๋๋ฉฐ ๋ฉ์ธํ์ด์ง์ ์ฌ๋ผ์ด๋๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
- ๋ฉ์ธํ์ด์ง ํ๋จ์ ์ด์๋งค์ฅ์ ๋ถ์ํ๊ณผ ์ ํด๋ ์ง์ ๋งค์ฅ๋ค์ด๋ฉฐ ๊ฐ ๋งค์ฅ์ ์ด์์๊ฐ, ๋ฉ๋ด, ์์ฅ๋์ ๋ฑ์ ์ ๋ณด๋ฅผ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
- ํค๋์ BOOKCAFE๋ฅผ ๋๋ฅด๋ฉด ๋ฐ๊ฒฝ 3km ์ด๋ด์ ๋ด ์ฃผ๋ณ ์ด์๋งค์ฅ์ ์ ์ ์์ต๋๋ค.
2. ์ง์ ๋ฆฌ๋ทฐ์ ๋์ ๋ฆฌ๋ทฐ ์์ฑ ๋ฐ ์กฐํ (๐ Click)
- ์ง์ ๋ฆฌ๋ทฐ์ ๋์๋ฆฌ๋ทฐ๋ ์ ์ ๋ค๋ง ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ง์ ๋ฆฌ๋ทฐ๋ ์ผ๋ฐ ๋ฆฌ๋ทฐ์ ์์์ฆ ๋ฆฌ๋ทฐ๋ก ๋๋์ด์ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์์ฆ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ๋์ฑ ์ ๋ขฐ๋ ์๋ ์ง์ ์ ์ ์ ์์ต๋๋ค.
3. ์์๋ฆฌ์คํธ ๋ฑ๋ก ๋ฐ ์๋ ๊ธฐ๋ฅ (๐ Click)
- ์ ์ ๋ ์ํ๋ ๋์์ ์ง์ ์ ์์๋ฆฌ์คํธ์ ๋ฑ๋ก ๊ฐ๋ฅํฉ๋๋ค.
- ๋ง์ฝ ์ํ๋ ๋์๊ฐ ์ํ๋ ์ง์ ์ ์ ๊ณ ๋์์๋ ์๋์ผ๋ก ์ ์ ์๊ฒ ์๋์ด ๊ฐ๋๋ค.
4. ์ ์ ์ง์ ์ฌ์ฅ ์ ์ฒญ ๋ฐ CSV ๋์๋ฑ๋ก ๊ฐ๋ฅ (๐ Click)
- ์ ์ ๋ ์ง์ ์ฌ์ฅ์ผ๋ก ์ ์ฒญํผ์ ์ ์ถํ๊ณ ๊ด๋ฆฌ์์ ์ฌ์ฌ ํ์ ์ง์ ์ฌ์ฅ์ผ๋ก ์ ํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ง์ ์ฌ์ฅ์ ์ง์ ์์ ์์ CSV๋ก ๊ฐํธํ๊ฒ ๋์๋ฑ๋ก์ด ๊ฐ๋ฅํฉ๋๋ค.
์ดํด๋ฅผ ๋๊ธฐ์ํด ๊ฐ์ํํ ERD ์ ๋๋ค.
ํธ๋ฌ๋ธ์ํ 1: ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง ๋ฒํท (๐ Click)
- AWS S3 ์ด๋ฏธ์ง ์
๋ก๋๋ก ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ:
- EC2 ์๋ฒ์์ AWS S3 ๋ฒํท์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ์ ๋ก๋ ์, ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ก ์๋ฒ ์คํ์ด ๋ถ๊ฐ๋ฅํ ์ํฉ.
- AWS-SDK ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์:
- ํ์ฌ ์ฌ์ฉ ์ค์ธ AWS-SDK ๋ฒ์ ์์ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ก ์ธํ ๋ฌธ์ ํ์ธ.
- ์ ํ1 - S3 ๋ฒํท ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ:
- AWS-SDK ๋์ S3 ๋ฒํท ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ ํด๊ฒฐ.
- ์ ํ2 - ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง ๋ฒํท ์ฌ์ฉ:
- ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง ๋ฒํท์ ์ฑํํ์ฌ ์ด๋ฏธ์ง ์ ๋ก๋ ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ.
- ์ ํ1 - S3 ๋ฒํท ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์
:
- ํ์ฌ ์ฌ์ฉ ์ค์ธ AWS-SDK ๋์ S3 ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ํ์ฌ ์ด๋ฏธ์ง ์ ๋ก๋ ๋ก์ง ์์ .
- ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋๋ก ํ์ธ ํ ๋ฐ์.
- ์ ํ2 - ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง ๋ฒํท ์ฑํ:
- ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง ๋ฒํท์ ํ๋ก์ ํธ์ ํตํฉํ๊ณ ์ด๋ฏธ์ง ์ ๋ก๋ ๊ด๋ จ ์ฝ๋ ์์ .
- ๊ตฌ๊ธ ์คํ ๋ฆฌ์ง๋ฅผ ํตํด ์ด๋ฏธ์ง ์ ๋ก๋ ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ํ์ธ ํ ์กฐ์น.
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์ ๊ฐ์ :
- ์ ํํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ์ฌ EC2 ์๋ฒ๊ฐ ์์ ์ ์ผ๋ก ์คํ๋ ๊ฒ์ผ๋ก ๊ธฐ๋.
- AWS-SDK ๋ฉ๋ชจ๋ฆฌ ๋์ ํด์:
- ์๋ก์ด ์ด๋ฏธ์ง ์ ๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ์ผ๋ก AWS-SDK ๋ฒ์ ์์ ๋ฐ์ํ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ.
- ์ฑ๋ฅ ํฅ์:
- ์ ํํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ด๋ฏธ์ง ์ ๋ก๋ ์ฑ๋ฅ์ด ํฅ์๋์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ๊ฒ์ผ๋ก ์์.
ํธ๋ฌ๋ธ์ํ 2: Redis (๐ Click)
๋์ ๋ฐ์ดํฐ๋ฅผ DB์์ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์๊ฐ์ด ์์๋์ด ์ฌ์ฉ์ ๊ฒฝํ์ด ์ ํ๋๋ค.
๋์ ๋ฐ์ดํฐ ์กฐํ ์ฑ๋ฅ ๊ฐ์ :
- SQL ์ฟผ๋ฆฌ๋ฌธ ํ์ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฌธ์์ ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ต์ํํ๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ ํ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋๋ก SQL ์ฟผ๋ฆฌ๋ฌธ์ ์ต์ ํํ๋ค.
- ํน์ ๊ฒ์์ด์ ํด๋นํ๋ ๋์์ id, ํ์ดํ๊ณผ ์ด๋ฏธ์ง URL๋ง์ ์ ํํ์ฌ ๊ฐ์ ธ์ค๋๋ก ์์ ํด์ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ ์์ ์ต์ํํ๋ค.
- Redis ์บ์ฑ ๊ธฐ๋ฅ ํ์ฉ:
- ๊ฒ์์ด๋ฅผ ํค๋ก ์ฌ์ฉํ์ฌ ๋์ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ Redis์ ์บ์๋ก ์ ์ฅํ๋ค.
- ์ฌ์ฉ์๊ฐ ๋์๋ฅผ ๊ฒ์ํ ๋, ๋จผ์ Redis ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , ์์ ๊ฒฝ์ฐ DB์์ ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ Redis์ ์ ์ฅํ๋ค.
- ์บ์ ๋ง๋ฃ ๊ธฐ๊ฐ์ ์ค์ ํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๋๋ก ํ๋ค.
- ๋์ ๋ฐ์ดํฐ ์กฐํ ์ฑ๋ฅ ๊ฐ์ :
- SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ ํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ง์ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋๋ก ์ต์ ํํ๋ค.
- ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ ์์ ์ต์ํํ์ฌ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์๋๋ก ํ๋ค.
- Redis ์บ์ฑ ๊ตฌํ:
- ๊ฒ์ ์ Redis์ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ๊ณ , ์์ผ๋ฉด DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ Redis์ ์ ์ฅํ๋ ๋ก์ง์ ๊ฐ๋ฐํ๋ค.
- Redis์ ์ ์ฅ๋๋ ํค๋ ๊ฒ์์ด๋ก, ๊ฐ์ ํด๋น ๋์ ๋ฐ์ดํฐ๋ก ํ๋ค.
- ์บ์ ๋ง๋ฃ ๊ธฐ๊ฐ์ 2๋ถ์ผ๋ก ์ค์ ํจ.
๋ฐ์ดํฐ ๋ก๋ ์๋ ํฅ์:
- ํจ์จ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฌธ๊ณผ ์ต์ํ์ ํ์ ๋ฐ์ดํฐ๋ง์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋ก๋ ์๋๋ฅผ ํฅ์์์ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํฉ๋๋ค.
- Redis ์บ์ฑ์ ํตํด ๋ฐ๋ณต์ ์ธ ์์ฒญ์ ๋ํ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
ํธ๋ฌ๋ธ์ํ 3: ์์์ฆ ์กฐ์ ์ด์ (๐ Click)
OCR ์ ์ ์ด์
OCR ์ค์์ ๋น๊ตํด ๋ณด๋ ์ข ํฉ์ ์ผ๋ก google cloud vision์ด ์ ์ผ ์ ํฉํ๋ค๊ณ ๋๊ผ๋ค.
1. ์์์ฆ ์กฐ์ ๋ฌธ์
OCR์ ์ฌ์ง์ ํ ์คํธ๋ก ๋ณํ ํ๋ ๊ฒ์ด๋ฏ๋ก ์์์ฆ์ ๋ค์ด๊ฐ๋งํ keyword์ธ์ง ํ๋ณ ํ ๊ฐ์ ธ์ค๋ ๊ฒ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
๋ง์ฝ ํด๋น ํค์๋๊ฐ ํฌํจ๋๋ฉด ๋ชจ๋ ์์์ฆ์ผ๋ก ์ธ์ ํ, ๊ฐ๊ฒ๋ช , ์ฃผ์๊ฐ ๊ฐ๋ค๋ฉด ์ข ์ด ์์กฐ ์์์ฆ๋ ์์์ฆ์ผ๋ก ์ธ์๋๋ค.
๋ํ, ํ๋ถ ์์์ฆ์ ๋ํ ๋ฐ๋ก ์ ํจ์ฑ ์ฒ๋ฆฌ๊ฐ ์๋ค.
- ์์์ฆ ํจํด์ธ์ ๋ชจ๋ธ ํ์ต
- ์์์ฆ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ์ธ์์์ผ์ ํ์ต์ํค๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ง๋ง, ์ค์ ์ ์ผ๋ก ์คํ๋๊ธฐ ์ด๋ ต๋ค.
- ์์์ฆ ์ ์ฉ ํ ํ๋ฆฟ ์ด์ฉํ๊ธฐ
- Azure Document Intelligence ์ ๊ฐ์ด ์์์ฆ ์ ์ฉ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ค๊ณ ํ์์ผ๋ ์์์ฆ ์ ์ฉ ํ ํ๋ฆฟ์ ์ฌ๋ฆฌ๋ ์ฌ์ง์ด ์์์ฆ์ด๋ผ๋ ๊ฐ์ ํ์ ์ ํ ์ ๋ณด๋ฅผ ์ถ์ถํด๋ด๋ฏ๋ก keyword ์ฒ๋ฆฌ๋ง ์์ ๋ฟ ์์กฐ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ์์์ฆ์ ์ง์ ๊ด๋ฆฌ์๊ฐ ํ์ธ ํ๊ธฐ
- ์ฌ์ฉ์๊ฐ ์์์ฆ์ ์ฌ๋ฆฌ๋ฉด ๊ด๋ฆฌ์์๊ฒ ์์์ฆ ์ฌ์ง์ด ๋ณด๋ด์ง๊ฒ ๋๋ฉฐ ๊ด๋ฆฌ์๊ฐ ํ์ธ ํ ์์์ฆ์ ์น์ธํ๋ ๋ฐฉ์์ด๋ค.
์์ ํด๊ฒฐ๋ฐฉ์ ์ค ์์กฐ๋ฐฉ์ง๋ฅผ ์ํด ์์์ฆ์ ์ง์ ๊ด๋ฆฌ์๊ฐ ํ์ธํ๋ ๊ณผ์ ์ด ํ์์ด๋ฏ๋ก ์์์ฆ ์ ์ฉ ํ ํ๋ฆฟ์ ์ด์ฉํ๊ธฐ ๋ณด๋ค๋ ํค์๋๋ก ์์์ฆ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ฝ๋์์ ์์์ฆ์ ์ง์ ๊ด๋ฆฌ์๊ฐ ํ์ธ ํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ํํ์์ต๋๋ค.
- Google storage์ ์์์ฆ ์ฌ์ง์ ์ ์ฅ:
- ์ฌ์ง์ ์ฌ๋ฆฌ๋ฉด Google storage์ ์ฌ์งํ์ผ์ ์ ์ฅ
- ์ ์ฅ๋ ์์์ฆ ์ฌ์ง์ Slack์ผ๋ก ์ ์ก:
- ์์์ฆ ํค์๋ ํ๋ณ, ์ผ์นํ๋ ๊ฐ๊ฒ ์ ๋ณด ๋ฐ ์ฃผ์, ์ค๋ณต์์์ฆ ํ๋ณ ์กฐ๊ฑด ํต๊ณผ ์ slack์ผ๋ก ์ฌ์ง๊ณผ DB์ ์ ์ฅ๋ id ๊ฐ ์ ์ก
- ์์์ฆ ํ๋ณ:
- Slack ์๋ฆผ์ ํตํด ๊ด๋ฆฌ์๊ฐ ์์์ฆ ์ํ(์น์ธ, ๋ฏธ์น์ธ)์ ๋ณ๊ฒฝํ๋ ๋ก์ง ์ถ๊ฐ
- ์์กฐ๋ ์์์ฆ ํ๋ณ:
์์์ฆ์ ๊ด๋ฆฌ์๊ฐ ํ์ธํจ์ผ๋ก ์ธํด ์์กฐ๋ ์์์ฆ ํ๋ณ์ด ๊ฐ๋ฅ
ํธ๋ฌ๋ธ์ํ 4: wkx/parser (๐ Click)
TypeORM์ ์ด์ฉํ๋ฉด MySQL์ ์์น๊ฐ์ ๋ํ๋ด๋ ํ์์ธ Point(x, y) ๊ฐ์ ์ง์ด๋ฃ์ ์ ์๋ ๋ฌธ์
TypeORM์์ ์ง์ํ๋ Queryselector๋ฅผ ์ด์ฉํด ์ค์ SQL ์ฟผ๋ฆฌ์ ๋น์ทํ ํํ๋ก ๊ฐ์ ์ง์ด๋ฃ๋ ๋ฐฉ์(wkx)
์ ์ฅ๋ ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ด Point๋ฅผ Parser ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๋ฐ ์ฃผ๋ณ ์ง์ ์ฐพ๊ธฐ ๊ธฐ๋ฅ ์์ฑ
ํธ๋ฌ๋ธ์ํ 5: ์์ ๋ก๊ทธ์ธ (๐ Click)
- ๋ณด์ ์ด์ - URL์ ํ ํฐ ๋
ธ์ถ:
- ํ์ฌ ์์ ๋ก๊ทธ์ธ์์๋ URL์ ํตํด access token๊ณผ refresh token์ ์ ์กํ๊ณ ์์ต๋๋ค. ์ด๋ ๋ณด์์ ์ทจ์ฝ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ฟ ํค๋ฅผ ํตํ ๋ก๊ทธ์ธ ์ด์:
- ๊ธฐ์กด์ JWT๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ์ ์งํํ๋ ์ค, ์์ ๋ก๊ทธ์ธ์์๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํ ํฐ์ ๋ฐ๋ ๊ณผ์ ์ด ์ถ๊ฐ๋์ด ์์ต๋๋ค.
- HTML ๋ฐ ๋ก์ง ๋ถ์ผ์น:
- ๋ก๊ทธ์ธ ์ฑ๊ณต์ ๋ฐ์์ฃผ๋ HTML์ด ์์ด ๋ก์ง๋ง์ด ๊ตฌํ๋์ด ์์ต๋๋ค. ์ด๋ก ์ธํด ์ฌ์ฉ์์๊ฒ ์ ์ ํ ์๋ต ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ์ด ๋ฏธํกํฉ๋๋ค.
- JWT ๊ธฐ๋ฐ ์์
๋ก๊ทธ์ธ์ผ๋ก์ ์ ํ:
- ํ์ฌ์ ๋ณด์ ์ด์์ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์์ ์ผ๊ด์ฑ์ ์ํด, ์์ ๋ก๊ทธ์ธ์์๋ JWT๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํ๋๋ก ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
- ์์ ๋ก๊ทธ์ธ ํ์๋ JWT๋ฅผ ํตํด ํ ํฐ์ ์์ ํ๊ฒ ์ ๋ฌํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- Redis ํ์ฉํ์ฌ ์ฝ๋์ ์ฌ์ฉ์ ID ์ ์ฅ:
- ์์ ๋ก๊ทธ์ธ ์ ๋ฐ๊ธ๋ ์ฝ๋์ ์ฌ์ฉ์ ID๋ฅผ Redis์ ์ ์ฅํ๋ ๋ก์ง์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋์ค์ ํด๋น ์ฝ๋๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- HTML ๋ฐ ์ฌ์ฉ์ ์๋ต ๊ฐํ:
- ๋ก๊ทธ์ธ ์ฑ๊ณต์ ๋ฐ์์ฃผ๋ HTML ํ์ด์ง์ ๋ก์ง์ ๊ฐ์ ํ์ฌ, ์ฌ์ฉ์์๊ฒ ์ ์ ํ ์๋ต์ ์ ๊ณตํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์๋๋ก ํฉ๋๋ค.
- JWT ๊ธฐ๋ฐ ์์
๋ก๊ทธ์ธ ๊ตฌํ:
- ์์ ๋ก๊ทธ์ธ์์ JWT๋ฅผ ์ฌ์ฉํ์ฌ ํ ํฐ์ ์์ ํ๊ฒ ์ ๋ฌํ๊ธฐ ์ํ ์ฝ๋ ๋ฐ ๋ก์ง์ ๊ตฌํํฉ๋๋ค.
- Redis๋ฅผ ํ์ฉํ ์ฝ๋ ๋ฐ ์ฌ์ฉ์ ID ์ ์ฅ ๋ก์ง ์ถ๊ฐ:
- ์์ ๋ก๊ทธ์ธ ์ ๋ฐ๊ธ๋ ์ฝ๋์ ์ฌ์ฉ์ ID๋ฅผ Redis์ ์ ์ฅํ๊ณ , ์ด๋ฅผ ํตํด ๋์ค์ ์ธ์ฆ์ ์งํํฉ๋๋ค. ๋ง๋ฃ๊ธฐ๊ฐ์ 30์ด๋ก ์ค์ ํฉ๋๋ค.
- HTML ๋ฐ ๋ก์ง ๊ฐ์ :
- ๋ก๊ทธ์ธ ์ฑ๊ณต์ ์ฌ์ฉ์์๊ฒ ์ ์ ํ HTML ํ์ด์ง๋ฅผ ์ ๊ณตํ๊ณ , ๋ก์ง์ ๊ฐ์ ํ์ฌ ์๋ต์ ์ผ๊ด์ฑ์ ํ๋ณดํฉ๋๋ค.
- ๋ณด์ ๊ฐํ:
- URL์ ๋ ธ์ถ๋๋ ํ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , JWT๋ฅผ ํตํด ์์ ํ๊ฒ ์ฌ์ฉ์ ์ธ์ฆ์ ์ํํ์ฌ ๋ณด์์ฑ์ ๊ฐํํฉ๋๋ค.
- ์ผ๊ด๋ ์ฌ์ฉ์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ: - ๋ชจ๋ ๋ก๊ทธ์ธ ๋ฐฉ์์์ JWT๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ์ ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์์ ํจ์จ์ฑ์ ํฅ์์ํต๋๋ค.
ํ๊ฒฝ ๋ณ์ ์ค์ (๐ Click)
๋ค์์ ํ๋ก์ ํธ๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ ํ๊ฒฝ ๋ณ์๋ค์ ๋๋ค. ํ๋ก์ ํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ์ด ๋ณ์๋ค์ ์ค์ ํด์ผ ํฉ๋๋ค.
- DATABASE_HOST: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์คํธ
- DATABASE_PORT: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌํธ
- DATABASE_USERNAME: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ด๋ฆ
- DATABASE_PASSWORD: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํธ
- DATABASE_NAME: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ
- DATABASE_SYNC: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ธฐํ ์ฌ๋ถ
- GOOGLE_DATABASE_HOST: Google ์คํ ๋ฆฌ์ง ํธ์คํธ
- GOOGLE_DATABASE_PORT: Google ์คํ ๋ฆฌ์ง ํฌํธ
- GOOGLE_DATABASE_USERNAME: Google ์คํ ๋ฆฌ์ง ์ฌ์ฉ์ ์ด๋ฆ
- GOOGLE_DATABASE_PASSWORD: Google ์คํ ๋ฆฌ์ง ์ํธ
- GOOGLE_DATABASE_NAME: Google ์คํ ๋ฆฌ์ง ์ด๋ฆ
- GOOGLE_DATABASE_SYNC: Google ์คํ ๋ฆฌ์ง ๋๊ธฐํ ์ฌ๋ถ
- SERVER_PORT: ์๋ฒ ํฌํธ
- JWT_ACCESS_TOKEN_SECRET: ์ก์ธ์ค ํ ํฐ ๋น๋ฐํค
- JWT_ACCESS_TOKEN_EXP: ์ก์ธ์ค ํ ํฐ ๋ง๋ฃ ์๊ฐ
- JWT_REFRESH_TOKEN_SECRET: ๋ฆฌํ๋ ์ ํ ํฐ ๋น๋ฐํค
- JWT_REFRESH_TOKEN_EXP: ๋ฆฌํ๋ ์ ํ ํฐ ๋ง๋ฃ ์๊ฐ
- AWS_ACCESS_KEY_ID: AWS ์ก์ธ์ค ํค ID
- AWS_SECRET_ACCESS_KEY: AWS ๋น๋ฐ ์ก์ธ์ค ํค
- AWS_S3_BUCKET: AWS S3 ๋ฒํท ์ด๋ฆ
- GOOGLE_PROJECTID: Google Cloud ํ๋ก์ ํธ ID
- GOOGLE_BUCKET_NAME: Google Cloud ๋ฒํท ์ด๋ฆ
- KEYFILE: Google Cloud ํค ํ์ผ ๊ฒฝ๋ก
- KAKAO_CLIENT_ID: ์นด์นด์ค ํด๋ผ์ด์ธํธ ID
- KAKAO_CLIENT_SECRET: ์นด์นด์ค ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ
- KAKAO_REDIRECT_URI: ์นด์นด์ค ๋ฆฌ๋๋ ์ URI
- KAKAO_ADMIN_REDIRECT_URI: ์นด์นด์ค ๊ด๋ฆฌ์ ๋ฆฌ๋๋ ์ URI
- NAVER_CLIENT_ID: ๋ค์ด๋ฒ ํด๋ผ์ด์ธํธ ID
- NAVER_CLIENT_SECRET: ๋ค์ด๋ฒ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ
- NAVER_REDIRECT_URI: ๋ค์ด๋ฒ ๋ฆฌ๋๋ ์ URI
- NAVER_ADMIN_REDIRECT_URI: ๋ค์ด๋ฒ ๊ด๋ฆฌ์ ๋ฆฌ๋๋ ์ URI
- REDIS_USERNAME: Redis ์ฌ์ฉ์ ์ด๋ฆ
- REDIS_HOST: Redis ํธ์คํธ
- REDIS_PORT: Redis ํฌํธ
- REDIS_PASSWORD: Redis ์ํธ
- REDIS_EXPIRATION_TIME_SECONDS: Redis ๋ง๋ฃ ์๊ฐ(์ด)
- REDIS_CODE_EXPIRATION_TIME_SECONDS: Redis ์ฝ๋ ๋ง๋ฃ ์๊ฐ(์ด)
- MAIL_USER: ๋ฉ์ผ ์ฌ์ฉ์ ์ด๋ฆ
- MAIL_PASS: ๋ฉ์ผ ๋น๋ฐ๋ฒํธ
- book_api: Book API ํค
- receipt_projectId: OCR ํ๋ก์ ํธ ID
- receipt_BUCKET_NAME: OCR ๋ฒํท ์ด๋ฆ
- receit_keyfile: OCR ํค ํ์ผ ๊ฒฝ๋ก
- slack_token: Slack ํ ํฐ
- slack_conversationId: Slack ์ฑ๋ ID
| ํ์ฅ : ์ ๊ท์ฑ |
๋ถํ์ฅ : ์ด๋ํ | ํ์ : ์ก์ฐฝํ | ํ์ : ํ์๊ฒฝ | ํ์ : ์ด์ฃผ์ |
|
๋ง์ดํ์ด์ง, ๋์ ๋ฆฌ๋ทฐ, ์๋ฆผ CRUD |
๋ฉ๋ด, ์คํ ์ด CRUD CI/CD ๋ก๊ทธ์ธ ํ์๊ฐ์ ๊ฒฐ์ ๊ธฐ๋ฅ Front axios ์์ |
๋ค์ด๋ฒ,์นด์นด์ค ์์
๋ก๊ทธ์ธ ๋์,์ง์ ๋์CRUD ์ ์ ์ง์ ์ฌ์ฅ์ ํ (C) ๋น๋ฐ๋ฒํธ์ฐพ๊ธฐ๊ธฐ๋ฅ ๊ฒ์์ด TOP10 ๋ญํน ๊ธฐ๋ฅ |
์์์ฆ์ธ์ฆ ๋ฆฌ๋ทฐ ๋ฑ๋ก(C) ์ฌ์ฅ๋ ๋ฆฌ๋ทฐ CRUD ๋์ CSV๋ก ๋ฑ๋ก(C) |
์ง์ ์ด์ฉ ํ๊ธฐ CRUD ์ง๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ |



