Quick Link๋ ๋จ์ถ URL์ ์ ๊ณตํ๋ ๋ฌด๋ฃ ์๋น์ค์ ๋๋ค. ์ฌ์ฉ์๋ ๊ธด URL์ ์งง๊ณ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ๋งํฌ๋ก ๋ณํํ์ฌ ๊ฐํธํ๊ฒ ๊ณต์ ํ ์ ์์ต๋๋ค.
Quick Link๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ ์์กด์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- Java 21
- Spring Boot 3.3.0
- MySQL 8.0.1
- Gradle 8.8
- ์ ์ฅ์๋ฅผ clone ํฉ๋๋ค.
git clone https://github.com/seonghun-dev/QuickLink.git
cd QuickLink
- Docker-compose๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํ์ํค๊ณ , schema.sql ํ์ผ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ์ ์ฉํฉ๋๋ค.
docker-compose up -d
- Gradle์ ํตํด ๋น๋ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ํต๋๋ค.
./gradlew build
./gradlew bootRun
- ๋ธ๋ผ์ฐ์ ์์ http://localhost:8080 ์ผ๋ก ์ด๋ํ์ฌ ์๋น์ค๋ฅผ ์ด์ฉํฉ๋๋ค.
Quick Link๋ URL ๋จ์ถ์ ์ํด Base62 ์ธ์ฝ๋ฉ๊ณผ Snowflake ID ์์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
Base62 ์ธ์ฝ๋ฉ
Base62๋ URL์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ ์งํฉ์ ์ฌ์ฉํ์ฌ ์ซ์ ID๋ฅผ ์งง์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฐฉ์์ ๋๋ค. ์ํ๋ฒณ ๋์๋ฌธ์์ ์ซ์ (0-9)๋ฅผ ํฌํจํ 62๊ฐ์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋จ์ถ๋ URL์ด ์๋์ ์ผ๋ก ์งง๊ณ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค.
Snowflake ID ์์ฑ
Snowflake ์๊ณ ๋ฆฌ์ฆ์ ํธ์ํฐ์์ ๊ฐ๋ฐํ ๋ถ์ฐ ์์คํ ์ ์ํ ๊ณ ์ ID ์์ฑ๊ธฐ์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ 64๋นํธ ์ซ์๋ก ๊ตฌ์ฑ๋ ๊ณ ์ ID๋ฅผ ์์ฑํ๋ฉฐ, ํ์์คํฌํ, ๋ฐ์ดํฐ์ผํฐ ID, ๋จธ์ ID, ์ผ๋ จ ๋ฒํธ ๋ฑ์ ์กฐํฉํ์ฌ ์ค๋ณต๋์ง ์๋ ๊ณ ์ ID๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์์ต๋๋ค. .
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ญ์์ค.