8์žฅ

์š”๊ตฌ์‚ฌํ•ญ

  • ์ฃผ์–ด์ง„ url์— ๋Œ€ํ•ด ๋‹จ์ถ• url์„ ๊ฒฐ๊ณผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹จ์ถ• url์— ์ ‘์†ํ•˜๋ฉด ์›๋ž˜ URL๋กœ ์ ‘์†๋จ

  • ํŠธ๋ž˜ํ”ฝ ๊ทœ๋ชจ๋Š” ๋งค์ผ 1์–ต๊ฐœ

  • ์งง์œผ๋ฉด ์งง์„์ˆ˜๋ก ์ข‹์Œ

  • ์‚ฌ์šฉ ๋ฌธ์ž๋Š” 09, aZ

  • ๋‹จ์ถ•๋œ URL์€ ์‚ญ์ œ๋‚˜ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์Œ

๊ณ„๋žต์  ์ถ”์ •

  • ์“ฐ๊ธฐ ์—ฐ์‚ฐ: ๋งค์ผ 1์–ต๊ฐœ์˜ ๋‹จ์ถ• URL ์ƒ์„ฑ

  • ์ดˆ๋‹น ์“ฐ๊ธฐ ์—ฐ์‚ฐ: 1์–ต/ 24/ 3600 = 1160

  • ์ฝ๊ธฐ ์—ฐ์‚ฐ: ์ฝ๊ธฐ ์—ฐ์‚ฐ๊ณผ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด 10:1์ด๋ผ๊ณ  ๊ฐ€์ •. ์ฝ๊ธฐ ์—ฐ์‚ฐ์€ ์ดˆ๋‹น 11600ํšŒ ๋ฐœ์ƒ

  • 10๋…„๊ฐ„ ์šด์˜์‹œ, 3650์–ต ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ ๋ณด๊ด€ํ•ด์•ผํ•จ

  • ์ถ•์•ฝ ์ „ URL์˜ ํ‰๊ท  ๊ธธ์ด๋ฅผ 100์ด๋ผ๊ณ  ํ•˜๋ฉด, 10๋…„๋™์•ˆ ํ•„์š”ํ•œ ์šฉ๋Ÿ‰์€ 36.5TB

API ์„ค๊ณ„

  • POST /api/v1/data/shorten

  • GET /api/v1/shortUrl

    • ์›๋ž˜ URL = hastTable.get(๋‹จ์ถ• URL)

    • 301, 302 ์‘๋‹ต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

URL ๋‹จ์ถ• ํ•ด์‹œ ํ•จ์ˆ˜

  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๊ฐฏ์ˆ˜ = 62๊ฐœ

  • 10๋…„๊ฐ„ 3650์–ต๊ฐœ์˜ URL์„ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ,

  • n = 7์ด๋ฉด 3.5์กฐ๊ฐœ์˜ URL์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์—, hashValue๋Š” 7๋กœ ์ถฉ๋ถ„

ํ•ด์‹œ ํ›„ ์ถฉ๋Œ ํ•ด์†Œ

  • ์†์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ž˜ ์•Œ๋ ค์ง„ ํ•ด์‹œ ํ•จ์ˆ˜(CRC32, MD5, SHA-1)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

  • ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์งง์€ ํ•ด์‹œ๊ฐ’๋„ 7๋ณด๋‹ค ๊ธธ์–ด์„œ ํž˜๋“ฆ

  • ์ฒซ ๋ฒˆ์งธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ณ„์‚ฐ๋œ ํ•ด์‹œ ๊ฐ’์—์„œ ์ฒ˜์Œ 7๊ฐœ ๊ธ€์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

    • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ถฉ๋Œ์ด ํ•ด์†Œ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์ „์— ์ •ํ•œ ๋ฌธ์ž์—ด์„ ํ•ด์‹œ๊ฐ’์— ๋ง๋ถ™์ธ๋‹ค.

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์งˆ์˜๋ฅผ ํ•ด์•ผํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.

      • ๋ธ”๋ฃธ ํ•„ํ„ฐ๋ฅผ ์“ฐ๋ฉด ์ค„์ผ ์ˆ˜ ์žˆ์Œ

  • ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•

    • base conversion์€ ์œ ์šฉ โ†’ ๋ฌธ์ž ๊ฐœ์ˆ˜๊ฐ€ 62๋‹ˆ๊นŒ base-62๋ณ€ํ™˜์„ ํ•˜๋ฉด ๋จ

)

๊ฐœ๋žต์ ์ธ ์ˆœ์„œ๋„ ์ˆœ์„œ ๋ฆฌ๋””๋ ‰์…˜ ์„ค๊ณ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ถ• URL์„ ํด๋ฆญํ•œ๋‹ค.

  2. ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํ•ด๋‹น ํด๋ฆญ์œผ๋กœ ๋ฐœ์ƒํ•œ ์š”์ฒญ์„ ์›น ์„œ๋ฒ„์— ์ „๋‹ฌํ•œ๋‹ค.

  3. ๋‹จ์ถ• URL์ด ์ด๋ฏธ ์บ์‹œ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์›๋ž˜ URL์„ ๋ฐ”๋กœ ๊บผ๋„๋‚ด์„œ ์ „๋‹ฌํ•œ๋‹ค.

  4. ์บ์‹œ์— ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊บผ๋‚ธ๋‹ค.

  5. ๊บผ๋‚ธ URL์„ ์บ์‹œ์— ๋„ฃ์€ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์กฐ๊ธˆ ๋” ์ด์•ผ๊ธฐํ•ด๋ณผ๋งŒํ•  ๊ฒƒ

  • ์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์žฅ์น˜

    • IP ์ฃผ์†Œ๋ฅผ ๋น„๋กฏํ•œ ํ•„ํ„ฐ๋ง ๊ทœ์น™

  • ์›น ์„œ๋ฒ„์˜ ๊ทœ๋ชจ ํ™•์žฅ

    • stateless ๊ณ„์ธต์ด๋ฏ€๋กœ, ์ž์œ ๋กญ๊ฒŒ ๊ทœ๋ชจ ์กฐ์ ˆ ๊ฐ€๋Šฅ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ทœ๋ชจ ํ™•์žฅ

    • ๋‹ค์ค‘ํ™” ํ˜น์€ ์ƒค๋”ฉ์œผ๋กœ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ ๋‹ฌ์„ฑ

  • ๋ฐ์ดํ„ฐ ๋ถ„์„ ์†”๋ฃจ์…˜

    • ์–ด๋–ค ๋งํฌ๋ฅผ ๋งŽ์ด ํด๋ฆญํ–ˆ๋Š”์ง€, ์–ธ์ œ ํด๋ฆญํ–ˆ๋Š”์ง€ ๋“ฑ ๋ถ„์„ ๊ฐ€๋Šฅ

  • ๊ฐ€์šฉ์„ฑ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ, ์•ˆ์ •์„ฑ

Last updated