Skip to content

wang-bam-bbang/find-it-be

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

FIND-IT

์ด ํ”„๋กœ์ ํŠธ๋Š” GIST์˜ ๊ฐ•์˜ ์„œ๋น„์Šค ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ(CT4504) ์ˆ˜์—…์„ ํ†ตํ•ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ๋ช…: ์™•๋ฐค๋นต

์„œ๋น„์Šค ๋ช…: FIND-IT

์ตœ์ข… ๋ฐœํ‘œ์ž๋ฃŒ

1. ํ”„๋กœ์ ํŠธ ์ฃผ์ œ

์šฉ์–ด ์ •์˜

  • ๋ถ„์‹ค์ž: ๋ฌผ๊ฑด์„ ๋ถ„์‹คํ•œ ์‚ฌ๋žŒ

  • ๋ถ„์‹ค๊ฒŒ์‹œ๊ธ€: ๋ถ„์‹ค์ž๊ฐ€ ๊ฒŒ์‹œํ•œ ๊ธ€

  • ๋ฐœ๊ฒฌ์ž: ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ์‚ฌ๋žŒ

  • ๋ฐœ๊ฒฌ๊ฒŒ์‹œ๊ธ€: ๋ฐœ๊ฒฌ์ž๊ฐ€ ๊ฒŒ์‹œํ•œ ๊ธ€

๋ฌธ์ œ์˜์‹

| GIST ๋‚ด ๊ณต์‹์ ์ธ ๋ถ„์‹ค๋ฌผ ์ฐพ๊ธฐ-์ฐพ์•„์ฃผ๊ธฐ ํ”Œ๋žซํผ์˜ ๋ถ€์žฌ

GIST ์›๋‚ด์—์„œ๋Š” ๋ฌผ๊ฑด์„ ๋ถ„์‹คํ•˜๋Š” ์ผ์ด ๋งค์ผ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์•„๋ž˜ ์‚ฌ์ง„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Œ€ํ•™์ƒ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค ์—๋ธŒ๋ฆฌํƒ€์ž„์—๋Š” ๋งค์ผ ์ ๊ฒŒ๋Š” 2-3ํšŒ, ๋งŽ๊ฒŒ๋Š” 8-9ํšŒ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋งŽ์€ ๋ถ„์‹ค๋ฌผ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—ํƒ€ ์ด๋ฏธ์ง€ 1

์—ํƒ€ ์ด๋ฏธ์ง€ 2

์ž์‹ ์˜ ๋ฌผ๊ฑด์„ ๋ถ„์‹คํ•œ ์‚ฌ๋žŒ(๋ถ„์‹ค์ž)๋“ค์€ ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ๋ถ„์‹ค๋ฌผ์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  1. ์—๋ธŒ๋ฆฌํƒ€์ž„ ๊ฒŒ์‹œํŒ์— ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€ ์—…๋กœ๋“œ
  2. ๊ฐ ๊ฑด๋ฌผ ๊ด€๋ฆฌ ์‚ฌ๋ฌด์‹ค ๋ฌธ์˜(๊ธฐ์ˆ™์‚ฌ ์‚ฌ๊ฐ์‹ค ๋ฐฉ๋ฌธ ํฌํ•จ)
  3. ์นด์นด์˜คํ†ก ๋‹จ์ฒด ํ†ก๋ฐฉ

๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ์‚ฌ๋žŒ(๋ฐœ๊ฒฌ์ž)๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋‹ค์Œ์˜ 2๊ฐ€์ง€ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ๋ถ„์‹ค๋ฌผ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  1. ์—๋ธŒ๋ฆฌํƒ€์ž„ ๊ฒŒ์‹œํŒ์— ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€ ์—…๋กœ๋“œ
  2. ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ๊ฑด๋ฌผ์˜ ๊ด€๋ฆฌ ์‚ฌ๋ฌด์‹ค์— ๋งก๊น€

์ด๋กœ๋ถ€ํ„ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ถ„์‹ค๋ฌผ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์—๋ธŒ๋ฆฌํƒ€์ž„ ๊ฒŒ์‹œํŒ, ์นด์นด์˜คํ†ก ๋‹จ์ฒด ํ†ก๋ฐฉ, ๊ฐ ๊ฑด๋ฌผ ๊ด€๋ฆฌ ์‚ฌ๋ฌด์‹ค๋กœ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

    • ์—๋ธŒ๋ฆฌํƒ€์ž„๊ณผ ์นด์นด์˜คํ†ก ๋‹จ์ฒด ํ†ก๋ฐฉ์€ ๋ถ„์‹ค๋ฌผ์„ ์ฐพ๊ฑฐ๋‚˜ ์ฐพ์•„์ฃผ๊ธฐ ์œ„ํ•ด ์ด์šฉํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‹ค๋ฌผ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ๋น ๋ฅด๊ฒŒ ๋ฌปํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • GIST ๋‚ด์—๋Š” ์—ฌ๋Ÿฌ ๊ฑด๋ฌผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๊ฑด๋ฌผ์˜ ๊ด€๋ฆฌ ์‚ฌ๋ฌด์‹ค์„ ๋ถ„์‹ค์ž๊ฐ€ ์ง์ ‘ ๋Œ์•„๋‹ค๋‹ˆ๋ฉฐ, ๋ถ„์‹ค๋ฌผ ๋‚ด์—ญ์„ ํ™•์ธํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ตญ ๋ถ„์‹ค์ž๋Š” ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•  ๋•Œ๊นŒ์ง€ ๋ณ„๋„์˜ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์—ฌ๋Ÿฌ ๋งค์ฒด์™€ ์žฅ์†Œ๋ฅผ ๋Œ์•„๋‹ค๋…€์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ถ„์‹ค์ž์˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์‹ ์šฉ์นด๋“œ๋‚˜ ์ฃผ๋ฏผ๋“ฑ๋ก์ฆ, ํ•™์ƒ์ฆ์˜ ๊ฒฝ์šฐ ๊ธˆ์œต์ •๋ณด, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ํ•™๋ฒˆ, ์–ผ๊ตด ์‚ฌ์ง„ ๋“ฑ์˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๊ธฐ์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฐœ๊ฒฌ์ž๊ฐ€ ์œ„์™€ ๊ฐ™์€ ๋ถ„์‹ค๋ฌผ์„ ์—๋ธŒ๋ฆฌํƒ€์ž„์ด๋‚˜ ์นด์นด์˜คํ†ก ๋‹จ์ฒด ํ†ก๋ฐฉ์— ๋ถ„์‹ค๋ฌผ ์‚ฌ์ง„๊ณผ ํ•จ๊ป˜ ์—…๋กœ๋“œํ•˜๊ฒŒ ๋˜๋ฉด, ๊ฐœ์ธ์ •๋ณด ๋…ธ์ถœ์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด, GIST ๋Œ€ํ•™ ๋‚ด์—์„œ ๋ถ„์‹ค๋ฌผ์„ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ํ”Œ๋žซํผ์ด ์—†์œผ๋ฉฐ, ๊ธฐ์กด ์„œ๋น„์Šค(์—ํƒ€, ์นด์นด์˜คํ†ก ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•  ์‹œ ๊ฐœ์ธ์ •๋ณด ๋…ธ์ถœ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„์ด๋””์–ด ๋ผˆ๋Œ€

์œ„์—์„œ ์ •์˜ํ•œ ๋ฌธ์ œ๋ฅผ ํ† ๋Œ€๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„์ด๋””์–ด๋ฅผ ๊ธฐํšํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋Œ€ํ•™์ด๋‚˜ ๊ฑด๋ฌผ ๋‹จ์œ„์˜ ๋ถ„์‹ค๋ฌผ ์ฐพ๊ธฐ & ์ฐพ์•„์ฃผ๊ธฐ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ์„ ๋งŒ๋“ค์ž
  2. ๊ฐœ์ธ์ •๋ณด ๋…ธ์ถœ ์œ„ํ—˜์ด ์žˆ๋Š” ๋ฌผํ’ˆ์— ๋Œ€ํ•ด ๊ฐœ์ธ์ •๋ณด Masking ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ž
  3. ๋ถ„์‹ค๋ฌผ ํ”Œ๋žซํผ์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์›น๋ณด๋‹ค ๋ชจ๋ฐ”์ผ์•ฑ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.

์ €ํฌ ํŒ€์€ 3๊ฐ€์ง€ ์•„์ด๋””์–ด ๋ผˆ๋Œ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ FIND-IT ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ถ๊ทน์ ์œผ๋กœ๋Š” ๊ฐ ๋Œ€ํ•™๊ณผ ๊ฑด๋ฌผ ๋‹จ์œ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋‚˜, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ทธ ๋ฒ”์œ„๋ฅผ GIST๋กœ ํ•œ์ •ํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

2. ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ

๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ ์„ค๋ช…

  1. ๊ธฐ๋ณธ์ ์ธ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฒŒ์‹œํŒ์— ๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
  2. ๋ฉ”์ธ ๊ธฐ๋Šฅ์€ ๊ฒŒ์‹œํŒ ์ž…๋‹ˆ๋‹ค.

    • FIND-IT์€ ๋„“๊ฒŒ ๋ดค์„ ๋•Œ ๊ฒŒ์‹œํŒ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ๊ฒŒ์‹œํŒ์— ๊ฒŒ์‹œ๊ธ€์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ถ„์‹ค๋ฌผ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฒŒ์‹œ๊ธ€์—๋Š” ๊ฒŒ์‹œ๊ธ€ ์œ ํ˜•, ์ œ๋ชฉ, ์ƒ์„ธ ์„ค๋ช…, ์ด๋ฏธ์ง€, ๋ฐœ๊ฒฌ์œ„์น˜(๊ฑด๋ฌผ, ์ƒ์„ธ์„ค๋ช…), ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์‚ฌ์šฉ์ž๋Š” ๊ฒŒ์‹œ๊ธ€์— ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž๋Š” ๋ถ„์‹ค๋ฌผ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€์— ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€์— ๋Œ“๊ธ€์„ ๋‹ค๋Š” ๋Œ€๋Œ“๊ธ€ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€์€ ํ…์ŠคํŠธ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ํ”Œ๋กœ์šฐ

service flow

๊ธฐ๋ณธ์ ์ธ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋“ฑ์˜ ๊ณผ์ •์€ ์ œ์™ธ๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ๋Š” ํ•ต์‹ฌ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

FIND-IT ์‚ฌ์šฉ์ž๋Š” ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•  ์‹œ ๋ฐœ๊ฒฌ์ž๋กœ, ์ž์‹ ์˜ ๋ฌผํ’ˆ์„ ๋ถ„์‹คํ•  ์‹œ ๋ถ„์‹ค์ž๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋ฐœ๊ฒฌ์ž ๊ด€์ 

๋ฐœ๊ฒฌ์ž๋Š” ๋ถ„์‹ค๋ฌผ ๋ฐœ๊ฒฌ ์‹œ, ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์— ๋Œ€ํ•œ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ๋งŒ์•ฝ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์ด ์—†๋Š” ๊ฒฝ์šฐ

    ๋ฐœ๊ฒฌ์ž๋Š” ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌํ•œ ๋ถ„์‹ค๋ฌผ์— ๊ด€๋ จ๋œ ์ •๋ณด(์นดํ…Œ๊ณ ๋ฆฌ, ์‚ฌ์ง„, ๋ฐœ๊ฒฌ ์žฅ์†Œ ๋“ฑ)๋ฅผ ๊ธฐ์ž…ํ•˜๊ณ  ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ์ดํ›„ ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์„ ๋ถ„์‹คํ•œ ๋ถ„์‹ค์ž๊ฐ€ ์—…๋กœ๋“œ๋œ ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์„ ์ฐพ์•˜์Œ์„ ๋Œ“๊ธ€๋กœ ๋‚จ๊ธด ๊ฒƒ์„ ํ™•์ธํ•˜๋ฉด, ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์˜ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐ๋จ์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉฐ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

  2. ๋งŒ์•ฝ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์ด ์žˆ๋Š” ๊ฒฝ์šฐ

    ๋ฐœ๊ฒฌ์ž๋Š” ๋ณ„๋„์˜ ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์˜ ๋Œ“๊ธ€์— ๋ฐœ๊ฒฌ์ž๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๋ถ„์‹ค๋ฌผ์˜ ์œ„์น˜์™€ ์ •๋ณด๋ฅผ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ๋ฉด ๋ฐœ๊ฒฌ์ž์˜ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๋Š” ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ถ„์‹ค์ž ๊ด€์ 

๋ถ„์‹ค์ž ๊ด€์ ์˜ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๋Š” ๋ฐœ๊ฒฌ์ž ๊ด€์ ์˜ ๊ทธ๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ญํ• ์ด ๋ฐ”๊ผˆ์„ ๋ฟ, ์ „์ฒด์ ์ธ ํ๋ฆ„์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์‹ค์ž๋Š” ์ž์‹ ์˜ ๋ฌผํ’ˆ์„ ๋ถ„์‹คํ•  ์‹œ, ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์— ๋Œ€ํ•œ ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ๋งŒ์•ฝ ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์ด ์—†๋Š” ๊ฒฝ์šฐ

    ๋ถ„์‹ค์ž๋Š” ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์žƒ์–ด๋ฒ„๋ฆฐ ๋ถ„์‹ค๋ฌผ์— ๊ด€๋ จ๋œ ์ •๋ณด(์นดํ…Œ๊ณ ๋ฆฌ, ์‚ฌ์ง„, ๋ถ„์‹ค ์˜ˆ์ƒ ์žฅ์†Œ ๋“ฑ)๋ฅผ ๊ธฐ์ž…ํ•˜๊ณ  ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ์ดํ›„ ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ๋ฐœ๊ฒฌ์ž๊ฐ€ ์—…๋กœ๋“œ๋œ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹น ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ์žฅ์†Œ๋ฅผ ๋Œ“๊ธ€๋กœ ๋‚จ๊ธด ๊ฒƒ์„ ํ™•์ธํ•˜๋ฉด, ํ•ด๋‹น ์œ„์น˜์˜ ๋ถ„์‹ค๋ฌผ์„ ์ฐพ๊ณ , ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์˜ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐ๋จ์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉฐ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

  2. ๋งŒ์•ฝ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์ด ์žˆ๋Š” ๊ฒฝ์šฐ

    ๋ฐœ๊ฒฌ์ž๋Š” ๋ณ„๋„์˜ ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์˜ ๋Œ“๊ธ€์— ๋ฐœ๊ฒฌ์ž๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๋ถ„์‹ค๋ฌผ์˜ ์œ„์น˜์™€ ์ •๋ณด๋ฅผ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ๋ฉด ๋ฐœ๊ฒฌ์ž์˜ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๋Š” ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

3. ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ ๋ฐ ๋ฐฑ์—”๋“œ ์ฃผ์š” ๊ธฐ๋Šฅ

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

service architecture

  1. ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ (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์™€ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. NestJS

    ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋กœ NestJS๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. NestJS ์‚ฌ์šฉ๋ฒ•์— ์กฐ์–ธ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ํŒ€์›๋“ค์ด ์žˆ์œผ๋ฉฐ, ๋ณธ์ธ์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฒฝํ—˜๊ณผ Node.js์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์‹์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ NestJS๋ฅผ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์–ด NestJS๋ฅผ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. PostgreSQL Database ์„ ํƒ ์˜ต์…˜์— SQLite, MySQL, PostgreSQL๋ฅผ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š์•„ SQLite๋ฅผ ๊ณ ๋ คํ–ˆ์ง€๋งŒ, ํ˜„์—…์—์„œ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” MySQL๊ณผ PostgreSQL๋ฅผ ํ›„๋ณด๊ตฐ์œผ๋กœ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋ฏธ PostgreSQL์„ ์‚ฌ์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ์šด์˜ ์ค‘์ธ ํŒ€์›์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— DB ์กฐ์ž‘ ๊ณผ์ •์—์„œ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์„ ๋ฐ›๊ธฐ ์ˆ˜์›”ํ•˜๊ณ ์ž MySQL์ด ์•„๋‹Œ PostgreSQL์„ Database๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  4. Amazon EC2

    ๋น„์šฉ์ƒ์˜ ๋ฌธ์ œ๋กœ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ DB ๊ฐ๊ฐ์„ ์œ„ํ•œ ๋ณ„๋„์˜ EC2 Instance๋ฅผ ์ƒ์„ฑํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. NestJS๋Š” pm2๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ–‰ํ•˜์˜€๊ณ , docker container๋กœ postgreSQL DB๋ฅผ ๋„์› ์Šต๋‹ˆ๋‹ค.

  5. 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์œผ๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์˜๋„์ž…๋‹ˆ๋‹ค.

  6. Flutter

    Mobile APP ํ”„๋ ˆ์ž„์›Œํฌ๋กœ Flutter๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ๊ฐœ๋ฐœ์— ๊ด€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ ˆํผ์ง€ํ† ๋ฆฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. Flask

    ๊ฐœ์ธ์ •๋ณด Masking ๊ธฐ๋Šฅ์„ ์œ„ํ•ด OCR Masking ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ Masking ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด Flask๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ๊ฐœ๋ฐœ์— ๊ด€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ ˆํผ์ง€ํ† ๋ฆฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flutter ํ™”๋ฉด ๊ตฌ์„ฑ

๋ชจ๋ฐ”์ผ์•ฑ ํ™”๋ฉด ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์•ฑ ์ด๋ฏธ์ง€ 1

๋ชจ๋ฐ”์ผ์•ฑ ์ด๋ฏธ์ง€ 2

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

Prisma

FIND-IT ์„œ๋น„์Šค๋Š” PostgreSQL์„ DB๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ORM์œผ๋กœ Prisma๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์€ FIND-IT ์„œ๋น„์Šค์˜ DB Schema๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, dbdocs๋ฅผ ํ†ตํ•ด ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

DB Schema


User

์ฃผ์š” ์—”๋“œํฌ์ธํŠธ

  1. GSA INFOTEAM IdP๋กœ๊ทธ์ธ URL ๊ฐ€์ ธ์˜ค๊ธฐ:

    • GET /user/login
    • IdP ๋กœ๊ทธ์ธ URL์„ ๋ฐ˜ํ™˜
    • ๋ชจ๋ฐ”์ผ์•ฑ์—์„œ ํ•ด๋‹น URL์„ ์‚ฌ์šฉํ•ด ๋กœ๊ทธ์ธ ์ง„ํ–‰
  2. IdP ๋กœ๊ทธ์ธ ์ฝœ๋ฐฑ:

    • GET /user/callback
    • ๋กœ๊ทธ์ธ์„ ๋๋‚ธ ์‚ฌ์šฉ์ž(๋ชจ๋ฐ”์ผ์•ฑ)์œผ๋กœ๋ถ€ํ„ฐ IdP ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„ IdP Service๋กœ๋ถ€ํ„ฐ JWT ํ† ํฐ์„ ๋ฐ›๊ณ , ์ด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜
  3. Access Token ๊ฐฑ์‹ :

    • POST /user/refresh
    • Refresh Token์„ ์‚ฌ์šฉํ•˜์—ฌ Access Token ๊ฐฑ์‹ 
    • IdP Service๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง
  4. ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ:

    • GET /user/info
    • Access Token์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •๋ณด ๋ฐ˜ํ™˜
    • IdP Service๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง

Post

์ฃผ์š” ์—”๋“œํฌ์ธํŠธ

  1. ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ:

    • GET /post/list
    • ์—ฌ๋Ÿฌ ํ•„ํ„ฐ ์˜ต์…˜์„ ํ†ตํ•ด ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
    • ์ฃผ์š” ํ•„ํ„ฐ Input: ์นดํ…Œ๊ณ ๋ฆฌ, ๊ฒŒ์‹œ๊ธ€ ์œ ํ˜•, ๊ฒŒ์‹œ๊ธ€ ์ƒํƒœ, ๊ฑด๋ฌผ
    • Cursor-based Pagination ์ ์šฉ
  2. ๋‚ด ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ:

    • GET /post/my-posts
    • ์‚ฌ์šฉ์ž ๋ณธ์ธ ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ
  3. ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ:

    • POST /post
    • ์ฃผ์š” Input: Access Token, ๊ฒŒ์‹œ๊ธ€ ์œ ํ˜•(๋ถ„์‹ค, ๋ฐœ๊ฒฌ), ์ œ๋ชฉ, ์ƒ์„ธ ์„ค๋ช…, ์ด๋ฏธ์ง€ key ๋ฆฌ์ŠคํŠธ, ๊ฑด๋ฌผ, ์ƒ์„ธ ์œ„์น˜, ๋ถ„์‹ ๋ฌผ ์นดํ…Œ๊ณ ๋ฆฌ
    • ๊ฒŒ์‹œ๊ธ€ ์—…๋กœ๋“œ๋Š” 1๋‹จ๊ณ„. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ 2๋‹จ๊ณ„. ๊ฒŒ์‹œ๊ธ€ ์—…๋กœ๋“œ ๊ณผ์ •์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.
    • ์ด๋ฏธ์ง€ key ๋ฆฌ์ŠคํŠธ๋Š” 1๋‹จ๊ณ„์—์„œ ๋ฐ˜ํ™˜๋œ ์ด๋ฏธ์ง€ key ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • 2๋‹จ๊ณ„์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ์ด๋ฏธ์ง€๋“ค์€ S3 bucket์˜ Lifecycle Policy์— ์˜ํ•ด ์‚ญ์ œ๋œ๋‹ค.
  4. ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ •:

    • PATCH /post/:id
  5. ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ:

    • DELETE /post/:id

Image

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ(API):

    • POST /image
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ S3์— ์—…๋กœ๋“œ
    • ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€์˜ key ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜
  2. Presigned URL ์ƒ์„ฑ(service):

    • ์ด๋ฏธ์ง€ key ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„ GetObject ๋ช…๋ น์–ด์— ๋Œ€ํ•œ presigned-url ๋ฐ˜ํ™˜
    • 1์‹œ๊ฐ„ ์œ ํšจ
  3. Image Masking(service):

    • ์ด๋ฏธ์ง€์— ๋…ธ์ถœ๋œ ๊ฐœ์ธ์ •๋ณด๋ฅผ makingํ•œ ์ด๋ฏธ์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์š”์ฒญ ์ „๋‹ฌ
    • Masking ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์™ธ๋ถ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” proxy ์—ญํ• 
  4. ์ด๋ฏธ์ง€ ๊ฒ€์ฆ(service):

    • S3์— ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๊ฒŒ์‹œ๊ธ€ ์—…๋ฅด๋„์— ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ, ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ expiration tag๋ฅผ false๋กœ ์ˆ˜์ •

Comment

์ฃผ์š” ์—”๋“œํฌ์ธํŠธ

  1. ๋Œ“๊ธ€ ์ƒ์„ฑ:

    • POST /comment
    • ๊ฒŒ์‹œ๋ฌผ์— ๋Œ“๊ธ€ ์ƒ์„ฑ
    • ์ฃผ์š” Input: ๋Œ“๊ธ€ ๋‚ด์šฉ, ๋Œ“๊ธ€ ์œ ํ˜•(๋Œ“๊ธ€, ๋Œ€๋Œ“๊ธ€), ๊ฒŒ์‹œ๊ธ€ Id, ๋ถ€๋ชจ ๋Œ“๊ธ€ Id(optional)
  2. ๋Œ“๊ธ€ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ:

    • GET /comment/:postId
    • ํŠน์ • ๊ฒŒ์‹œ๋ฌผ์˜ ๋Œ“๊ธ€ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
  3. ๋Œ“๊ธ€ ์‚ญ์ œ:

    • DELETE /comment/:commentId
    • ํŠน์ • ๋Œ“๊ธ€ ์‚ญ์ œ

Building

์ฃผ์š” ์—”๋“œํฌ์ธํŠธ

  1. ๊ฑด๋ฌผ ์ƒ์„ฑ:

    • POST /building
    • ์ƒˆ๋กœ์šด ๊ฑด๋ฌผ ์ •๋ณด ๋“ฑ๋ก
  2. ๋ชจ๋“  ๊ฑด๋ฌผ ์กฐํšŒ:

    • GET /building
  3. ๊ฑด๋ฌผ ์ •๋ณด ์ˆ˜์ •:

    • PATCH /building/:id
    • ํŠน์ • ๊ฑด๋ฌผ ์ •๋ณด ์ˆ˜์ •
  4. ๊ฑด๋ฌผ ์‚ญ์ œ:

    • DELETE /building/:id
    • ํŠน์ • ๊ฑด๋ฌผ ์‚ญ์ œ

Swagger ๋ฌธ์„œํ™”

Swagger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • OAuth2 ์ธ์ฆ: IdP ๋กœ๊ทธ์ธ ๋ฐ ํ† ํฐ ๋ฐœ๊ธ‰ ์ง€์›
  • JWT ์ธ์ฆ: Bearer ํ† ํฐ ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ์ง€์›
  • ์—”๋“œํฌ์ธํŠธ ํ…Œ์ŠคํŠธ: Swagger UI์—์„œ ์ง์ ‘ ์š”์ฒญ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ

Swagger API Docs ์ ‘๊ทผ ๊ฒฝ๋กœ: /api/docs

4. ํŒ€์›๋ณ„ ๊ธฐ์—ฌ ๋‚ด์šฉ

  • ๊น€์ฒ ํฌ(๋ณธ์ธ)
    • ๋ฐฑ์—”๋“œ ๋กœ์ง, DB ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„
    • AWS Service(S3, EC2) ์กฐ์ž‘
    • ํ”„๋กœ์ ํŠธ ์ค‘๊ฐ„ ๋ฐœํ‘œ ๋‹ด๋‹น
  • ๋ฌธ๊ฑด์šฐ
    • DB ์„ค๊ณ„
    • ์ดˆ๊ธฐ Post Module ๊ตฌํ˜„
  • ์„œ๊ฐ•ํ˜„
    • ๋ชจ๋ฐ”์ผ์•ฑ ๋‹ด๋‹น
    • ๋ฐฑ์—”๋“œ ๋กœ์ง ์„ค๊ณ„ ๊ด€์—ฌ
  • ์ด๋ณด์„ฑ
    • ๋ชจ๋ฐ”์ผ์•ฑ ๋‹ด๋‹น
    • ๋ฐฑ์—”๋“œ ๋กœ์ง ์„ค๊ณ„ ๊ด€์—ฌ
  • ์ด์žฌํฌ
    • AI ๋ชจ๋ธ ํ™œ์šฉํ•œ Masking ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ
    • ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ ๋‹ด๋‹น

5. ํšŒ๊ณ 

์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜์ง€ ์•Š์€ ์ด์œ 

๊ธฐ์กด ๊ธฐํš์—์„œ๋Š” ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ์˜ˆ์ •์ด์—ˆ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์„ ๋•Œ, ๋ฌผ๊ฑด์„ ์ฐพ๊ณ  ์ฐพ์•„์ฃผ๋Š” ๊ณผ์ •์—์„œ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ๊ผญ ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ๋‹ค.

a. ๋ฐœ๊ฒฌ์ž์˜ ์ž…์žฅ์—์„œ, ๋ถ„์‹ค๋ฌผ์„ ๋ฐœ๊ฒฌํ•  ๊ฒฝ์šฐ ๋ถ„์‹ค ๊ฒŒ์‹œ๊ธ€์— ๋ถ„์‹ค๋ฌผ ๋ฐœ๊ฒฌ ์žฅ์†Œ๋ฅผ ๋Œ“๊ธ€๋กœ ๋‚จ๊ธฐ๊ฑฐ๋‚˜, ๋ฐœ๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ์—…๋กœ๋“œํ•˜๊ณ  ๋‚˜๋ฉด, ๊ทธ ์ดํ›„์— ๋ฐœ๊ฒฌ์ž-๋ถ„์‹ค์ž ์‚ฌ์ด์˜ ๋Œ€ํ™”๋Š” ๋ถˆํ•„์š”ํ•˜๋‹ค.

b. ๋ถ„์‹ค์ž์˜ ์ž…์žฅ์—์„œ, ์ž์‹ ์˜ ๋ถ„์‹ค๋ฌผ์— ๋Œ€ํ•œ ๋ฐ”๊ฒฌ ๊ฒŒ์‹œ๊ธ€์„ ๋ฐœ๊ฒฌํ•  ๊ฒฝ์šฐ, '๊ฐ์‚ฌ์ธ์‚ฌ' ์™ธ์— ๋ฐœ๊ฒฌ์ž-๋ถ„์‹ค์ž ์‚ฌ์ด์˜ ๋Œ€ํ™”๋Š” ๋ถˆํ•„์š”ํ•˜๋‹ค.

c. ์„ค๋ น ๋ฐœ๊ฒฌ์ž-๋ถ„์‹ค์ž ์‚ฌ์ด์˜ ๋Œ€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ํ• ์ง€๋ผ๋„, ๋Œ€ํ™”์˜ ์ง€์†์„ฑ์ด ๋งค์šฐ ์งง์•„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ๋ฌด์˜๋ฏธํ•˜๋‹ค.

d. ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์ด ๋ฐœ๊ฒฌ์ž-๋ถ„์‹ค์ž ์‚ฌ์ด์˜ ๋ชจ๋“  ๋Œ€ํ™”๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์œผ๋กœ๋„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ (๋ฐœ๊ฒฌ์ž-๋ถ„์‹ค์ž๊ฐ„ ๋Œ€ํ™”)๋ฅผ ์ถฉ๋ถ„ํžˆ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋‹ค๋‹ฌ์•˜์œผ๋ฉฐ, ๊ธฐ์กด ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์— ๋Œ€๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ๋Œ€ํ™” ํŽธ์˜์„ฑ์„ ๋†’์ด๊ณ ์ž ํ–ˆ๋‹ค.

DB๋ฅผ EBS์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์€ ๊ฒƒ

ํ˜„์žฌ 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๋“ค๋„ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์ง€๋Š” ๋ชปํ–ˆ๋‹ค. ๊ฐœ๊ฐœ์ธ์ด ์ด ํ”„๋กœ์ ํŠธ์— ๋œป์ด ์žˆ์–ด์„œ ํŒ€์œผ๋กœ ๊ฒฐ์„ฑ๋œ ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ์ ํŠธ์˜ ๊ณ ๋„ํ™”๋Š” ์ด๋ฃจ์–ด์ง€๊ธฐ ์–ด๋ ค์› ๋‹ค. ๋‚ด ๊ณ„ํš์œผ๋กœ๋Š” ์กฐ๋งŒ๊ฐ„ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณผ ์ƒ๊ฐ์ธ๋ฐ, ๊ทธ ๋•Œ๋Š” ์‹ค์ œ ๋ฐฐํฌ์™€ ์šด์˜๊นŒ์ง€ ์ด๋ฃจ์–ด์ง€๊ณ , ์ตœ์ดˆ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค์—์„œ ๊ณ ๋„ํ™”๊นŒ์ง€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝํ—˜์ผ ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published