์ด ํ๋ก์ ํธ๋ GIST์ ๊ฐ์ ์๋น์ค ๋ฌ๋ ํ๋ก์ ํธ(CT4504) ์์
์ ํตํด ์งํ๋์์ต๋๋ค.
ํ ๋ช : ์๋ฐค๋นต
์๋น์ค ๋ช : FIND-IT
-
๋ถ์ค์: ๋ฌผ๊ฑด์ ๋ถ์คํ ์ฌ๋
-
๋ถ์ค๊ฒ์๊ธ: ๋ถ์ค์๊ฐ ๊ฒ์ํ ๊ธ
-
๋ฐ๊ฒฌ์: ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ์ฌ๋
-
๋ฐ๊ฒฌ๊ฒ์๊ธ: ๋ฐ๊ฒฌ์๊ฐ ๊ฒ์ํ ๊ธ
| GIST ๋ด ๊ณต์์ ์ธ ๋ถ์ค๋ฌผ ์ฐพ๊ธฐ-์ฐพ์์ฃผ๊ธฐ ํ๋ซํผ์ ๋ถ์ฌ
GIST ์๋ด์์๋ ๋ฌผ๊ฑด์ ๋ถ์คํ๋ ์ผ์ด ๋งค์ผ ๋ฐ์ํ๊ณ ์์ต๋๋ค. ํนํ ์๋ ์ฌ์ง์์ ๋ณผ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ํ์ ์ปค๋ฎค๋ํฐ ์๋น์ค ์๋ธ๋ฆฌํ์์๋ ๋งค์ผ ์ ๊ฒ๋ 2-3ํ, ๋ง๊ฒ๋ 8-9ํ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ง์ ๋ถ์ค๋ฌผ์ด ๋ฐ์ํ๊ณ ์์ต๋๋ค.
์์ ์ ๋ฌผ๊ฑด์ ๋ถ์คํ ์ฌ๋(๋ถ์ค์)๋ค์ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง ๊ฒฝ๋ก๋ฅผ ํตํด ๋ถ์ค๋ฌผ์ ์ฐพ๊ฒ ๋ฉ๋๋ค.
- ์๋ธ๋ฆฌํ์ ๊ฒ์ํ์ ๋ถ์ค ๊ฒ์๊ธ ์ ๋ก๋
- ๊ฐ ๊ฑด๋ฌผ ๊ด๋ฆฌ ์ฌ๋ฌด์ค ๋ฌธ์(๊ธฐ์์ฌ ์ฌ๊ฐ์ค ๋ฐฉ๋ฌธ ํฌํจ)
- ์นด์นด์คํก ๋จ์ฒด ํก๋ฐฉ
๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ์ฌ๋(๋ฐ๊ฒฌ์)๋ค์ ๋๋ถ๋ถ ๋ค์์ 2๊ฐ์ง ๊ฒฝ๋ก๋ฅผ ํตํด ๋ฐ๊ฒฌํ ๋ถ์ค๋ฌผ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ธ๋ฆฌํ์ ๊ฒ์ํ์ ๋ฐ๊ฒฌ ๊ฒ์๊ธ ์ ๋ก๋
- ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ๊ฑด๋ฌผ์ ๊ด๋ฆฌ ์ฌ๋ฌด์ค์ ๋งก๊น
์ด๋ก๋ถํฐ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
-
๋ถ์ค๋ฌผ ๊ด๋ จ ์ ๋ณด๊ฐ ์๋ธ๋ฆฌํ์ ๊ฒ์ํ, ์นด์นด์คํก ๋จ์ฒด ํก๋ฐฉ, ๊ฐ ๊ฑด๋ฌผ ๊ด๋ฆฌ ์ฌ๋ฌด์ค๋ก ๋ถ์ฐ๋ฉ๋๋ค.
- ์๋ธ๋ฆฌํ์๊ณผ ์นด์นด์คํก ๋จ์ฒด ํก๋ฐฉ์ ๋ถ์ค๋ฌผ์ ์ฐพ๊ฑฐ๋ ์ฐพ์์ฃผ๊ธฐ ์ํด ์ด์ฉํ๋ ์๋น์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ถ์ค๋ฌผ ๊ด๋ จ ์ ๋ณด๊ฐ ๋๋ฝ๋๊ฑฐ๋ ๋น ๋ฅด๊ฒ ๋ฌปํ ์ ์์ต๋๋ค.
- GIST ๋ด์๋ ์ฌ๋ฌ ๊ฑด๋ฌผ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ ๊ฑด๋ฌผ์ ๊ด๋ฆฌ ์ฌ๋ฌด์ค์ ๋ถ์ค์๊ฐ ์ง์ ๋์๋ค๋๋ฉฐ, ๋ถ์ค๋ฌผ ๋ด์ญ์ ํ์ธํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค.
- ๊ฒฐ๊ตญ ๋ถ์ค์๋ ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ๋๊น์ง ๋ณ๋์ ์๊ฐ์ ๋ด์ด ์ฌ๋ฌ ๋งค์ฒด์ ์ฅ์๋ฅผ ๋์๋ค๋ ์ผ ํ๋ ๋ถํธํจ ๊ฒช๊ฒ ๋ฉ๋๋ค.
-
๋ถ์ค์์ ๊ฐ์ธ์ ๋ณด๊ฐ ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
- ์ ์ฉ์นด๋๋ ์ฃผ๋ฏผ๋ฑ๋ก์ฆ, ํ์์ฆ์ ๊ฒฝ์ฐ ๊ธ์ต์ ๋ณด, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ํ๋ฒ, ์ผ๊ตด ์ฌ์ง ๋ฑ์ ๊ฐ์ธ์ ๋ณด๊ฐ ๊ธฐ์ฌ๋์ด ์์ต๋๋ค.
- ๋ฐ๊ฒฌ์๊ฐ ์์ ๊ฐ์ ๋ถ์ค๋ฌผ์ ์๋ธ๋ฆฌํ์์ด๋ ์นด์นด์คํก ๋จ์ฒด ํก๋ฐฉ์ ๋ถ์ค๋ฌผ ์ฌ์ง๊ณผ ํจ๊ป ์ ๋ก๋ํ๊ฒ ๋๋ฉด, ๊ฐ์ธ์ ๋ณด ๋ ธ์ถ์ ์ํ์ด ์์ต๋๋ค.
์ ๋ฆฌํ์๋ฉด, GIST ๋ํ ๋ด์์ ๋ถ์ค๋ฌผ์ ์ํด ์กด์ฌํ๋ ํ๋ซํผ์ด ์์ผ๋ฉฐ, ๊ธฐ์กด ์๋น์ค(์ํ, ์นด์นด์คํก ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ๊ฐ์ธ์ ๋ณด ๋ ธ์ถ์ ์ํ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
์์์ ์ ์ํ ๋ฌธ์ ๋ฅผ ํ ๋๋ก, ๋ค์๊ณผ ๊ฐ์ ์์ด๋์ด๋ฅผ ๊ธฐํํ์ต๋๋ค.
- ๋ํ์ด๋ ๊ฑด๋ฌผ ๋จ์์
๋ถ์ค๋ฌผ ์ฐพ๊ธฐ & ์ฐพ์์ฃผ๊ธฐ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ซํผ์ ๋ง๋ค์ - ๊ฐ์ธ์ ๋ณด ๋
ธ์ถ ์ํ์ด ์๋ ๋ฌผํ์ ๋ํด
๊ฐ์ธ์ ๋ณด Masking๊ธฐ๋ฅ์ ์ ๊ณตํ์ - ๋ถ์ค๋ฌผ ํ๋ซํผ์ ํน์ฑ์ ๋ง๊ฒ
์น๋ณด๋ค๋ชจ๋ฐ์ผ์ฑํ๋ซํผ์ ์ ๊ณตํด์ผ ํ๋ค.
์ ํฌ ํ์ 3๊ฐ์ง ์์ด๋์ด ๋ผ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก FIND-IT ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก๋ ๊ฐ ๋ํ๊ณผ ๊ฑด๋ฌผ ๋จ์์์ ์ฌ์ฉํ ์ ์๋ ์๋น์ค๋ฅผ ๋ชฉํ๋ก ํ๋, ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๊ทธ ๋ฒ์๋ฅผ GIST๋ก ํ์ ํด์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
-
๊ธฐ๋ณธ์ ์ธ
ํ์๊ฐ์,๋ก๊ทธ์ธ์๋น์ค๋ฅผ ์ง์ํฉ๋๋ค.- ๊ฒ์ํ์ ๊ฒ์๊ธ์ ์ ๋ก๋ํ๊ธฐ ์ํด์๋ ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ์ด ํ์์ ๋๋ค.
-
๋ฉ์ธ ๊ธฐ๋ฅ์
๊ฒ์ํ์ ๋๋ค.- FIND-IT์ ๋๊ฒ ๋ดค์ ๋
๊ฒ์ํ ํ๋ซํผ์ ๋๋ค. - ์ฌ์ฉ์๋ ๊ฒ์ํ์ ๊ฒ์๊ธ์ ์ฌ๋ฆด ์ ์์ผ๋ฉฐ, ๋ถ์ค๋ฌผ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๊ฒ์๊ธ์๋
๊ฒ์๊ธ ์ ํ,์ ๋ชฉ,์์ธ ์ค๋ช,์ด๋ฏธ์ง,๋ฐ๊ฒฌ์์น(๊ฑด๋ฌผ, ์์ธ์ค๋ช ),์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
- FIND-IT์ ๋๊ฒ ๋ดค์ ๋
-
์ฌ์ฉ์๋ ๊ฒ์๊ธ์
๋๊ธ์ ๋ฌ ์ ์์ต๋๋ค.- ์ฌ์ฉ์๋ ๋ถ์ค๋ฌผ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฒ์๊ธ ๋๊ธ์ ๋จ๊ธธ ์ ์์ต๋๋ค.
- ๋๊ธ์ ๋๊ธ์ ๋ค๋
๋๋๊ธ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. - ๋๊ธ์
ํ ์คํธ๋ก ์ ํ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๋ฑ์ ๊ณผ์ ์ ์ ์ธ๋๋ฉฐ, ์ฌ๊ธฐ์๋ ํต์ฌ ์๋น์ค ํ๋ก์ฐ์ ๋ํด์๋ง ์ค๋ช ํฉ๋๋ค.
FIND-IT ์ฌ์ฉ์๋ ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ์ ๋ฐ๊ฒฌ์๋ก, ์์ ์ ๋ฌผํ์ ๋ถ์คํ ์ ๋ถ์ค์๋ก ์ ์๋ฉ๋๋ค.
๋ฐ๊ฒฌ์๋ ๋ถ์ค๋ฌผ ๋ฐ๊ฒฌ ์, ํด๋น ๋ถ์ค๋ฌผ์ ๋ํ ๋ถ์ค ๊ฒ์๊ธ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
-
๋ง์ฝ
๋ถ์ค ๊ฒ์๊ธ์ด ์๋ ๊ฒฝ์ฐ๋ฐ๊ฒฌ์๋ ๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์์ฑํฉ๋๋ค. ๋ฐ๊ฒฌํ ๋ถ์ค๋ฌผ์ ๊ด๋ จ๋ ์ ๋ณด(์นดํ ๊ณ ๋ฆฌ, ์ฌ์ง, ๋ฐ๊ฒฌ ์ฅ์ ๋ฑ)๋ฅผ ๊ธฐ์ ํ๊ณ๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์ ๋ก๋ํฉ๋๋ค.์ดํ ํด๋น ๋ถ์ค๋ฌผ์ ๋ถ์คํ
๋ถ์ค์๊ฐ ์ ๋ก๋๋๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ํด๋น ๋ถ์ค๋ฌผ์ ์ฐพ์์์๋๊ธ๋ก ๋จ๊ธด ๊ฒ์ ํ์ธํ๋ฉด,๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์ํ๋ฅผํด๊ฒฐ๋จ์ผ๋ก ์์ ํ๋ฉฐ ์๋น์ค ํ๋ก์ฐ๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. -
๋ง์ฝ
๋ถ์ค ๊ฒ์๊ธ์ด ์๋ ๊ฒฝ์ฐ๋ฐ๊ฒฌ์๋ ๋ณ๋์๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค. ํด๋น๋ถ์ค ๊ฒ์๊ธ์๋๊ธ์๋ฐ๊ฒฌ์๊ฐ ๋ฐ๊ฒฌํ ๋ถ์ค๋ฌผ์ ์์น์ ์ ๋ณด๋ฅผ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ๋ฉด๋ฐ๊ฒฌ์์ ์๋น์ค ํ๋ก์ฐ๋ ์ข ๋ฃ๋ฉ๋๋ค.
๋ถ์ค์ ๊ด์ ์ ์๋น์ค ํ๋ก์ฐ๋ ๋ฐ๊ฒฌ์ ๊ด์ ์ ๊ทธ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ์ญํ ์ด ๋ฐ๊ผ์ ๋ฟ, ์ ์ฒด์ ์ธ ํ๋ฆ์ ๋์ผํฉ๋๋ค.
๋ถ์ค์๋ ์์ ์ ๋ฌผํ์ ๋ถ์คํ ์, ํด๋น ๋ถ์ค๋ฌผ์ ๋ํ ๋ฐ๊ฒฌ ๊ฒ์๊ธ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
-
๋ง์ฝ
๋ฐ๊ฒฌ ๊ฒ์๊ธ์ด ์๋ ๊ฒฝ์ฐ๋ถ์ค์๋ ๋ถ์ค ๊ฒ์๊ธ์ ์์ฑํฉ๋๋ค. ์์ด๋ฒ๋ฆฐ ๋ถ์ค๋ฌผ์ ๊ด๋ จ๋ ์ ๋ณด(์นดํ ๊ณ ๋ฆฌ, ์ฌ์ง, ๋ถ์ค ์์ ์ฅ์ ๋ฑ)๋ฅผ ๊ธฐ์ ํ๊ณ๋ถ์ค ๊ฒ์๊ธ์ ์ ๋ก๋ํฉ๋๋ค.์ดํ ํด๋น ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ
๋ฐ๊ฒฌ์๊ฐ ์ ๋ก๋๋๋ถ์ค ๊ฒ์๊ธ์ ํด๋น ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ์ฅ์๋ฅผ๋๊ธ๋ก ๋จ๊ธด ๊ฒ์ ํ์ธํ๋ฉด, ํด๋น ์์น์๋ถ์ค๋ฌผ์ ์ฐพ๊ณ ,๋ถ์ค ๊ฒ์๊ธ์ ์ํ๋ฅผํด๊ฒฐ๋จ์ผ๋ก ์์ ํ๋ฉฐ ์๋น์ค ํ๋ก์ฐ๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. -
๋ง์ฝ
๋ถ์ค ๊ฒ์๊ธ์ด ์๋ ๊ฒฝ์ฐ๋ฐ๊ฒฌ์๋ ๋ณ๋์๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค. ํด๋น๋ถ์ค ๊ฒ์๊ธ์๋๊ธ์๋ฐ๊ฒฌ์๊ฐ ๋ฐ๊ฒฌํ ๋ถ์ค๋ฌผ์ ์์น์ ์ ๋ณด๋ฅผ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ๋ฉด๋ฐ๊ฒฌ์์ ์๋น์ค ํ๋ก์ฐ๋ ์ข ๋ฃ๋ฉ๋๋ค.
-
์ธ์ฆ ๋ฐ ์ธ๊ฐ (OAUTH)
์ธ์ฆ, ์ธ๊ฐ์๋ GIST ๋ํ ์ดํ์ํ ์ ๋ณด๊ตญ, GSA INFOTEAM์์ ์ ๊ณตํ๋ IdP Service๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. GIST ๊ตฌ์ฑ์๋ค์ ๋์์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋งํผ, ์นด์นด์คํก์ด๋ ๊ตฌ๊ธ ๋ฑ์ ์์ ๋ก๊ทธ์ธ์ด ์๋๋ผ GIST ๊ตฌ์ฑ์๋ค๋ง ์ฌ์ฉ ๊ฐ๋ฅํ Idp Service๋ฅผ ์ฑํํ์ต๋๋ค. GSA INFOTEAM Idp Service๋ OAuth2.0 ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฆ ๋๋ค.
์ฐธ๊ณ ๋ก, FIND-IT์ GSA INFOTEAM ์ธ์ ํด๋น IdP Service๋ฅผ ์ธ์ฆ ๋ฐ ์ธ๊ฐ์ ์ฌ์ํ ์ฒซ ๋ฒ์งธ ํ๋ก์ ํธ์ ๋๋ค.
GSA INFOTEAM Idp Serivce์ ๊ด๋ จ๋ ๋ฌธ์๋ ์ฌ๊ธฐ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
-
NestJS
๋ฐฑ์๋ ์๋น์ค ํ๋ ์์ํฌ๋ก NestJS๋ฅผ ์ฌ์ฉํ์ต๋๋ค. NestJS ์ฌ์ฉ๋ฒ์ ์กฐ์ธ์ ์ค ์ ์๋ ํ์๋ค์ด ์์ผ๋ฉฐ, ๋ณธ์ธ์ ํ๋ก ํธ์๋ ๊ฒฝํ๊ณผ Node.js์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ NestJS๋ฅผ ํ์ตํ ์ ์์ด NestJS๋ฅผ ์ฑํํ์ต๋๋ค.
-
PostgreSQL Database ์ ํ ์ต์ ์ SQLite, MySQL, PostgreSQL๋ฅผ ๊ณ ๋ คํ์ต๋๋ค. ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฌ์ง ์์ SQLite๋ฅผ ๊ณ ๋ คํ์ง๋ง, ํ์ ์์ ๋ ์ค์ํ๊ฒ ์ฌ์ฉ๋๋ MySQL๊ณผ PostgreSQL๋ฅผ ํ๋ณด๊ตฐ์ผ๋ก ์ ์ ํ์ต๋๋ค.
์ด๋ฏธ PostgreSQL์ ์ฌ์ฉํด์ ์๋น์ค๋ฅผ ์ด์ ์ค์ธ ํ์์ด ์๊ธฐ ๋๋ฌธ์ DB ์กฐ์ ๊ณผ์ ์์ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ ๋ฐ๊ธฐ ์์ํ๊ณ ์ MySQL์ด ์๋ PostgreSQL์ Database๋ก ์ ํํ์ต๋๋ค.
-
Amazon EC2
๋น์ฉ์์ ๋ฌธ์ ๋ก ๋ฐฑ์๋ ์๋ฒ์ DB ๊ฐ๊ฐ์ ์ํ ๋ณ๋์ EC2 Instance๋ฅผ ์์ฑํ์ง๋ ์์์ต๋๋ค. NestJS๋ pm2๋ฅผ ์ฌ์ฉํด ์คํํ์๊ณ , docker container๋ก postgreSQL DB๋ฅผ ๋์ ์ต๋๋ค.
-
Amazon S3
์ฌ์ฉ์๊ฐ ๊ฒ์๊ธ ์ ๋ก๋์ ์ฒจ๋ถํ ์ด๋ฏธ์ง๋ฅผ Amazon S3 bucket์ ์ ์ฅํ์ต๋๋ค.
Lifecycle policy
๊ฒ์๊ธ ์ ๋ก๋๋ 1๋จ๊ณ. ์ด๋ฏธ์ง ์ ๋ก๋(S3) 2๋จ๊ณ. ๊ฒ์๊ธ ์ ๋ก๋(DB)๋ก ์ฐ์ด์ด ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, 1๋จ๊ณ๋ง ์ด๋ฃจ์ง๊ณ 2๋จ๊ณ๋ ์คํจํ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฌ์ฉ๋์ง ์๋ ์ด๋ฏธ์ง๋ค์ด S3 bucket์ ๋ถํ์ํ๊ฒ ์ ์ฅ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด 1๋จ๊ณ์์ ์ ๋ก๋๋๋ Object์ tag๋ฅผ
expiration=true๋ก, 2๋จ๊ณ๊ฐ ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ํด๋น Object์ tag๋ฅผexpiration=false๋ก ์์ ํ๊ณ , S3์Lifecycle Policy๋ฅผ ์ฌ์ฉํด ๋ถํ์ํ ์ด๋ฏธ์ง(expiration=true)๋ค์ ์ ๊ฑฐํ์ต๋๋ค.Presigned URL S3 bucket์ ๋ํ GetOjbect ์์ฒญ ๊ถํ์ ๊ด๋ฆฌํ๊ธฐ ์ํด Presigned URL๋ฅผ ์ ์ฉํ์ต๋๋ค. ์ด๋ FIND-IT ์๋น์ค ์ธ์ ๋ชฉ์ ์ผ๋ก S3 bucket ๋ด ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , bucket์ private์ผ๋ก ์ ์งํ๋ฉด์๋ ์ฌ์ฉ์์๊ฒ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์๋์ ๋๋ค.
-
Flutter
Mobile APP ํ๋ ์์ํฌ๋ก
Flutter๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ค๋ฅธ ํ์๋ค์ด ๊ฐ๋ฐ์ ๊ด์ฌํ์ต๋๋ค. ๊ด๋ จ ๋ ํผ์งํ ๋ฆฌ์์ ํ์ธํ์ค ์ ์์ต๋๋ค. -
Flask
๊ฐ์ธ์ ๋ณด Masking ๊ธฐ๋ฅ์ ์ํด OCR Masking ๋ชจ๋ธ์ ์ฌ์ฉํด ์ด๋ฏธ์ง์ ๋ํ Masking ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด Flask๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ค๋ฅธ ํ์๋ค์ด ๊ฐ๋ฐ์ ๊ด์ฌํ์ต๋๋ค. ๊ด๋ จ ๋ ํผ์งํ ๋ฆฌ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ชจ๋ฐ์ผ์ฑ ํ๋ฉด ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Prisma
FIND-IT ์๋น์ค๋ PostgreSQL์ DB๋ก ์ฌ์ฉํ๋ฉฐ, ORM์ผ๋ก Prisma๋ฅผ ์ฌ์ฉํ๋ค. ์๋ ์ฌ์ง์ FIND-IT ์๋น์ค์ DB Schema๋ฅผ ๋ํ๋ด๋ฉฐ, dbdocs๋ฅผ ํตํด ์ข ๋ ์์ธํ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
User
-
GSA INFOTEAM IdP๋ก๊ทธ์ธ URL ๊ฐ์ ธ์ค๊ธฐ:
GET /user/login- IdP ๋ก๊ทธ์ธ URL์ ๋ฐํ
- ๋ชจ๋ฐ์ผ์ฑ์์ ํด๋น URL์ ์ฌ์ฉํด ๋ก๊ทธ์ธ ์งํ
-
IdP ๋ก๊ทธ์ธ ์ฝ๋ฐฑ:
GET /user/callback- ๋ก๊ทธ์ธ์ ๋๋ธ ์ฌ์ฉ์(๋ชจ๋ฐ์ผ์ฑ)์ผ๋ก๋ถํฐ
IdP ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐ์IdP Service๋ก๋ถํฐJWT ํ ํฐ์ ๋ฐ๊ณ , ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํ
-
Access Token ๊ฐฑ์ :
POST /user/refresh- Refresh Token์ ์ฌ์ฉํ์ฌ Access Token ๊ฐฑ์
IdP Service๋ฅผ ํตํด ์ด๋ฃจ์ด์ง
-
์ฌ์ฉ์ ์ ๋ณด ์กฐํ:
GET /user/info- Access Token์ ํตํด ์ฌ์ฉ์ ์ ๋ณด ๋ฐํ
IdP Service๋ฅผ ํตํด ์ด๋ฃจ์ด์ง
Post
-
๊ฒ์๋ฌผ ๋ฆฌ์คํธ ์กฐํ:
GET /post/list- ์ฌ๋ฌ ํํฐ ์ต์ ์ ํตํด ๊ฒ์๋ฌผ ๋ฆฌ์คํธ ์กฐํ
- ์ฃผ์ ํํฐ Input: ์นดํ ๊ณ ๋ฆฌ, ๊ฒ์๊ธ ์ ํ, ๊ฒ์๊ธ ์ํ, ๊ฑด๋ฌผ
- Cursor-based Pagination ์ ์ฉ
-
๋ด ๊ฒ์๋ฌผ ์กฐํ:
GET /post/my-posts- ์ฌ์ฉ์ ๋ณธ์ธ ๊ฒ์๋ฌผ ์กฐํ
-
๊ฒ์๋ฌผ ์์ฑ:
POST /post- ์ฃผ์ Input: Access Token, ๊ฒ์๊ธ ์ ํ(๋ถ์ค, ๋ฐ๊ฒฌ), ์ ๋ชฉ, ์์ธ ์ค๋ช , ์ด๋ฏธ์ง key ๋ฆฌ์คํธ, ๊ฑด๋ฌผ, ์์ธ ์์น, ๋ถ์ ๋ฌผ ์นดํ ๊ณ ๋ฆฌ
- ๊ฒ์๊ธ ์ ๋ก๋๋ 1๋จ๊ณ. ์ด๋ฏธ์ง ์ ๋ก๋ 2๋จ๊ณ. ๊ฒ์๊ธ ์ ๋ก๋ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
- ์ด๋ฏธ์ง key ๋ฆฌ์คํธ๋ 1๋จ๊ณ์์ ๋ฐํ๋ ์ด๋ฏธ์ง key ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ค.
- 2๋จ๊ณ์ ๋๋ฌํ์ง ๋ชปํ ์ด๋ฏธ์ง๋ค์ S3 bucket์ Lifecycle Policy์ ์ํด ์ญ์ ๋๋ค.
-
๊ฒ์๋ฌผ ์์ :
PATCH /post/:id
-
๊ฒ์๋ฌผ ์ญ์ :
DELETE /post/:id
Image
-
์ด๋ฏธ์ง ์ ๋ก๋(API):
POST /image- ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ S3์ ์ ๋ก๋
- ์ ๋ก๋๋ ์ด๋ฏธ์ง์ key ๋ฆฌ์คํธ ๋ฐํ
-
Presigned URL ์์ฑ(service):
- ์ด๋ฏธ์ง key ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ GetObject ๋ช ๋ น์ด์ ๋ํ presigned-url ๋ฐํ
- 1์๊ฐ ์ ํจ
-
Image Masking(service):
- ์ด๋ฏธ์ง์ ๋ ธ์ถ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ makingํ ์ด๋ฏธ์ง ๋ฐํํ๋ ์์ฒญ ์ ๋ฌ
- Masking ๊ธฐ๋ฅ์ด ์๋ ์ธ๋ถ ์๋ฒ์ ์์ฒญ์ ์ ๋ฌํ๋ proxy ์ญํ
-
์ด๋ฏธ์ง ๊ฒ์ฆ(service):
- S3์ ์
๋ก๋๋ ์ด๋ฏธ์ง๊ฐ ๊ฒ์๊ธ ์
๋ฅด๋์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ, ํด๋น ์ด๋ฏธ์ง์
expirationtag๋ฅผfalse๋ก ์์
- S3์ ์
๋ก๋๋ ์ด๋ฏธ์ง๊ฐ ๊ฒ์๊ธ ์
๋ฅด๋์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ, ํด๋น ์ด๋ฏธ์ง์
Comment
-
๋๊ธ ์์ฑ:
POST /comment- ๊ฒ์๋ฌผ์ ๋๊ธ ์์ฑ
- ์ฃผ์ Input: ๋๊ธ ๋ด์ฉ, ๋๊ธ ์ ํ(๋๊ธ, ๋๋๊ธ), ๊ฒ์๊ธ Id, ๋ถ๋ชจ ๋๊ธ Id(optional)
-
๋๊ธ ๋ฆฌ์คํธ ์กฐํ:
GET /comment/:postId- ํน์ ๊ฒ์๋ฌผ์ ๋๊ธ ๋ฆฌ์คํธ ์กฐํ
-
๋๊ธ ์ญ์ :
DELETE /comment/:commentId- ํน์ ๋๊ธ ์ญ์
Building
-
๊ฑด๋ฌผ ์์ฑ:
POST /building- ์๋ก์ด ๊ฑด๋ฌผ ์ ๋ณด ๋ฑ๋ก
-
๋ชจ๋ ๊ฑด๋ฌผ ์กฐํ:
GET /building
-
๊ฑด๋ฌผ ์ ๋ณด ์์ :
PATCH /building/:id- ํน์ ๊ฑด๋ฌผ ์ ๋ณด ์์
-
๊ฑด๋ฌผ ์ญ์ :
DELETE /building/:id- ํน์ ๊ฑด๋ฌผ ์ญ์
Swagger ๋ฌธ์ํ
Swagger๋ฅผ ์ฌ์ฉํ์ฌ API ๋ฌธ์๋ฅผ ์ ๊ณตํ๋ค.
- OAuth2 ์ธ์ฆ: IdP ๋ก๊ทธ์ธ ๋ฐ ํ ํฐ ๋ฐ๊ธ ์ง์
- JWT ์ธ์ฆ: Bearer ํ ํฐ ๊ธฐ๋ฐ์ ์ธ์ฆ ์ง์
- ์๋ํฌ์ธํธ ํ ์คํธ: Swagger UI์์ ์ง์ ์์ฒญ ํ ์คํธ ๊ฐ๋ฅ
Swagger API Docs ์ ๊ทผ ๊ฒฝ๋ก: /api/docs
- ๊น์ฒ ํฌ(๋ณธ์ธ)
- ๋ฐฑ์๋ ๋ก์ง, DB ์ค๊ณ ๋ฐ ๊ตฌํ
- AWS Service(S3, EC2) ์กฐ์
- ํ๋ก์ ํธ ์ค๊ฐ ๋ฐํ ๋ด๋น
- ๋ฌธ๊ฑด์ฐ
- DB ์ค๊ณ
- ์ด๊ธฐ Post Module ๊ตฌํ
- ์๊ฐํ
- ๋ชจ๋ฐ์ผ์ฑ ๋ด๋น
- ๋ฐฑ์๋ ๋ก์ง ์ค๊ณ ๊ด์ฌ
- ์ด๋ณด์ฑ
- ๋ชจ๋ฐ์ผ์ฑ ๋ด๋น
- ๋ฐฑ์๋ ๋ก์ง ์ค๊ณ ๊ด์ฌ
- ์ด์ฌํฌ
- AI ๋ชจ๋ธ ํ์ฉํ Masking ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ
- ์ต์ข ํ๋ก์ ํธ ๋ฐํ ๋ด๋น
๊ธฐ์กด ๊ธฐํ์์๋ ์ฑํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ์์ ์ด์๋ค. ๋จ์ํ๊ฒ ์๊ฐํ์ ๋, ๋ฌผ๊ฑด์ ์ฐพ๊ณ ์ฐพ์์ฃผ๋ ๊ณผ์ ์์ ์ฑํ ๊ธฐ๋ฅ์ด ๊ผญ ํ์ํ ๊ฒ์ผ๋ก ์๊ฐํ๋ค. ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ์ฑํ ๊ธฐ๋ฅ์ด ํ์ํ์ง ์๋ค๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ๋ค.
a. ๋ฐ๊ฒฌ์์ ์ ์ฅ์์, ๋ถ์ค๋ฌผ์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ ๋ถ์ค ๊ฒ์๊ธ์ ๋ถ์ค๋ฌผ ๋ฐ๊ฒฌ ์ฅ์๋ฅผ ๋๊ธ๋ก ๋จ๊ธฐ๊ฑฐ๋, ๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ์ ๋ก๋ํ๊ณ ๋๋ฉด, ๊ทธ ์ดํ์ ๋ฐ๊ฒฌ์-๋ถ์ค์ ์ฌ์ด์ ๋ํ๋ ๋ถํ์ํ๋ค.
b. ๋ถ์ค์์ ์ ์ฅ์์, ์์ ์ ๋ถ์ค๋ฌผ์ ๋ํ ๋ฐ๊ฒฌ ๊ฒ์๊ธ์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ, '๊ฐ์ฌ์ธ์ฌ' ์ธ์ ๋ฐ๊ฒฌ์-๋ถ์ค์ ์ฌ์ด์ ๋ํ๋ ๋ถํ์ํ๋ค.
c. ์ค๋ น ๋ฐ๊ฒฌ์-๋ถ์ค์ ์ฌ์ด์ ๋ํ๊ฐ ์ด๋ฃจ์ด์ง๋ค๊ณ ํ ์ง๋ผ๋, ๋ํ์ ์ง์์ฑ์ด ๋งค์ฐ ์งง์ ์ฑํ
๊ธฐ๋ฅ์ด ๋ฌด์๋ฏธํ๋ค.
d. ๋๊ธ ๊ธฐ๋ฅ์ด ๋ฐ๊ฒฌ์-๋ถ์ค์ ์ฌ์ด์ ๋ชจ๋ ๋ํ๋ฅผ ์ปค๋ฒํ ์ ์๋ค.
์์ ๊ฐ์ ์ด์ ๋ก ๋๊ธ ๊ธฐ๋ฅ์ผ๋ก๋ ์ฑํ
๊ธฐ๋ฅ์ ๊ตฌํํจ์ผ๋ก์จ ์ป์ ์ ์๋ ์ด์ (๋ฐ๊ฒฌ์-๋ถ์ค์๊ฐ ๋ํ)๋ฅผ ์ถฉ๋ถํ ์ป์ ์ ์๋ค๋ ๊ฒฐ๋ก ์ ๋ค๋ฌ์์ผ๋ฉฐ, ๊ธฐ์กด ๋๊ธ ๊ธฐ๋ฅ์ ๋๋๊ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ๋๊ธ ๊ธฐ๋ฅ์ ํตํ ๋ํ ํธ์์ฑ์ ๋์ด๊ณ ์ ํ๋ค.
ํ์ฌ PostgreSQL DB๋ docker container์ ๋ด๋ถ ํ์ผ ์์คํ ์ ์ฐ๊ฒฐ๋์ด ์๋ค. ์ด๋ EC2 instance ์์ฒด volume์ ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์, container๊ฐ ์ข ๋ฃ(์๋์ ์ด๋ ์ค์๋ )๋๋ฉด DB์ data๋ ์ฌ๋ผ์ง๊ฒ ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋์ EC2 instance๊ฐ ์ข ๋ฃํด์ผํ๋ ์ผ์ด ๋ฐ์ํ์ง ์์ ๋ณ๋์ ๋ฌธ์ ๋ ์์์ผ๋, ๋ง์ฝ ๊ทธ๋ฌํ ์ํฉ์ด ์์๋ค๋ฉด DB์ data๊ฐ ์ฌ๋ผ์ก์ ๊ฒ์ด๋ค.
docker container์ volume์ EC2 instance ์์ฒด volume์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ์๋๋ผ, EC2 instance์ mount๋ EBS์ ์ฐ๊ฒฐํ์ด์ผ ํ๋ค. docker container์ volume์ EBS์ ์ฐ๊ฒฐํ๋ค๋ฉด ์ค๋ น EC2 instance๊ฐ ๊ฐ์์ค๋ฝ๊ฒ ์ข ๋ฃ๋๋ค๊ณ ํ ์ง๋ผ๋, DB์ data๋ EBS์ ๊ทธ๋๋ก ๋ณด์กด๋๊ฒ ๋๋ค.
์ด์ ๋ํ ๋ฐฐ๊ฒฝ ์ง์์ด ์์์ง๋ง ์ด๊ธฐ์ ์กฐ์น๋ฅผ ์ทจํ์ง ์์ ๊ฒ์ด ๋ฌธ์ ์ด๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์๋ ์ฌ๋ฌ ๋ฒ ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ ๊ฒฝํ์ด ์์ง๋ง, ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์๋ ์ฒ์์ด๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์ง๋ก๋ฅผ ํํ๊ธฐ๋ก ๊ฒฐ์ฌํ๊ณ ๋์ ์ฒ์์ผ๋ก ์งํํ ํ๋ก์ ํธ์ธ๋ฐ, ํ๊ธฐ ์ค์์๋ ๋ถ๊ตฌํ๊ณ ๋๋ฆ ์๋ฏธ์๋ ๋ฐฑ์๋ ๊ฒฝํ์ ํ ์ ์์๋ค. DB์ API ์ค๊ณ๋ ์ด๋ป๊ฒ ํด์ผํ๋์ง, ๋์์ธ ํจํด์ด ์ ์ค์ํ์ง, ์์กด์ฑ ์ฃผ์ ๊ณผ ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ๋ฌด์์ธ์ง, DB migration์ด ์ ์ค์ํ์ง, ์๋ ๋ฐฐํฌ๊ฐ ์ ํ์ํ์ง ๋ฑ, ๋จ์ํ CS ์ ๊ณต ์์ ๋ง์ผ๋ก๋ ์ ์ ์๋ ๊ฒฝํ์ ํ๋ค.
ํ ๊ฐ์ง ์์ฌ์ด ์ ์ ๋ฐฑ์๋ ๋ฐฐํฌ๊ฐ ์ด๋ค์ง๊ธด ํ์ง๋ง, ๋ชจ๋ฐ์ผ์ฑ ๋ฑ๋ก์ ํ์ง ์์ ์ค ์ฌ์ฉ์๊ฐ ์์๋ค๋ ์ ์ด๋ค. ๊ฐ๋ฐํด๋ API endpoint๋ค๋ ๋ชจ๋ ์ฌ์ฉ๋์ง๋ ๋ชปํ๋ค. ๊ฐ๊ฐ์ธ์ด ์ด ํ๋ก์ ํธ์ ๋ป์ด ์์ด์ ํ์ผ๋ก ๊ฒฐ์ฑ๋ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์, ํ๋ก์ ํธ์ ๊ณ ๋ํ๋ ์ด๋ฃจ์ด์ง๊ธฐ ์ด๋ ค์ ๋ค. ๋ด ๊ณํ์ผ๋ก๋ ์กฐ๋ง๊ฐ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณผ ์๊ฐ์ธ๋ฐ, ๊ทธ ๋๋ ์ค์ ๋ฐฐํฌ์ ์ด์๊น์ง ์ด๋ฃจ์ด์ง๊ณ , ์ต์ด ๋ฐฐํฌ๋ ์๋น์ค์์ ๊ณ ๋ํ๊น์ง ์ด๋ฃจ์ด์ง๋ ๊ฒฝํ์ผ ํด๋ณผ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋ค.






