F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

숏 URL 서비스 구현하기: 기본 개념부터 실습까지

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



숏 URL 서비스란 무엇인가?

숏 URL 서비스는 긴 URL을 짧게 변환해주는 서비스입니다. 예를 들어, 긴 URL을 짧게 변환하여 사용자가 쉽게 기억하고 입력할 수 있도록 도와줍니다. 이러한 서비스는 특히 소셜 미디어나 문자 메시지에서 유용하게 사용됩니다.

왜냐하면 긴 URL은 문자 수 제한이 있는 플랫폼에서 불편함을 초래하기 때문입니다. 숏 URL은 이러한 문제를 해결해줍니다.

숏 URL 서비스의 대표적인 예로는 Bitly와 구글의 go.gl이 있습니다. 이들 서비스는 긴 URL을 짧게 변환하고, 클릭 수와 같은 통계 정보를 제공하여 사용자에게 유용한 데이터를 제공합니다.

숏 URL 서비스는 단순히 URL을 짧게 변환하는 것 외에도, URL 리다이렉션 기능을 통해 사용자가 짧은 URL을 클릭하면 원래의 긴 URL로 이동할 수 있도록 합니다.

이 글에서는 숏 URL 서비스의 기본 개념을 이해하고, 이를 직접 구현하는 방법을 단계별로 설명하겠습니다.



숏 URL 서비스의 기본 기능

숏 URL 서비스의 기본 기능은 크게 두 가지로 나눌 수 있습니다. 첫 번째는 긴 URL을 짧게 변환하는 기능입니다. 사용자가 긴 URL을 입력하면, 서비스는 이를 짧은 URL로 변환하여 반환합니다.

왜냐하면 긴 URL을 짧게 변환함으로써 사용자가 쉽게 기억하고 입력할 수 있기 때문입니다. 이 기능은 주로 POST 요청을 통해 구현됩니다.

두 번째 기능은 짧은 URL을 원래의 긴 URL로 리다이렉트하는 기능입니다. 사용자가 짧은 URL을 클릭하면, 서비스는 이를 원래의 긴 URL로 리다이렉트하여 사용자가 원하는 페이지로 이동할 수 있도록 합니다.

이 기능은 주로 GET 요청을 통해 구현됩니다. 사용자가 짧은 URL을 요청하면, 서비스는 데이터베이스에서 해당 짧은 URL에 대응하는 긴 URL을 찾아 리다이렉트합니다.

이 두 가지 기능을 구현하기 위해서는 데이터베이스와 서버 사이드 스크립트가 필요합니다. 다음 섹션에서는 이를 구현하는 방법을 자세히 설명하겠습니다.



숏 URL 서비스 구현하기

숏 URL 서비스를 구현하기 위해서는 먼저 데이터베이스를 설정해야 합니다. 데이터베이스에는 긴 URL과 짧은 URL을 저장할 테이블이 필요합니다. 예를 들어, MySQL을 사용하여 테이블을 생성할 수 있습니다.

CREATE TABLE urls (
    id INT AUTO_INCREMENT PRIMARY KEY,
    long_url TEXT NOT NULL,
    short_url VARCHAR(255) NOT NULL
);

왜냐하면 데이터베이스는 긴 URL과 짧은 URL을 매핑하여 저장하는 역할을 하기 때문입니다. 다음으로, 서버 사이드 스크립트를 작성하여 POST 요청을 처리하고, 긴 URL을 짧은 URL로 변환하는 기능을 구현합니다.

app.post('/shorten', (req, res) => {
    const longUrl = req.body.longUrl;
    const shortUrl = generateShortUrl();
    db.query('INSERT INTO urls (long_url, short_url) VALUES (?, ?)', [longUrl, shortUrl], (err, result) => {
        if (err) throw err;
        res.json({ shortUrl: shortUrl });
    });
});

이제 GET 요청을 처리하여 짧은 URL을 원래의 긴 URL로 리다이렉트하는 기능을 구현합니다.

app.get('/:shortUrl', (req, res) => {
    const shortUrl = req.params.shortUrl;
    db.query('SELECT long_url FROM urls WHERE short_url = ?', [shortUrl], (err, result) => {
        if (err) throw err;
        if (result.length > 0) {
            res.redirect(result[0].long_url);
        } else {
            res.status(404).send('URL not found');
        }
    });
});

이렇게 하면 기본적인 숏 URL 서비스가 완성됩니다. 다음 섹션에서는 이 서비스를 개선하는 방법을 알아보겠습니다.



숏 URL 서비스 개선하기

기본적인 숏 URL 서비스를 구현한 후에는 이를 개선하여 더 나은 사용자 경험을 제공할 수 있습니다. 첫 번째로, 짧은 URL을 생성할 때 고유한 식별자를 사용하여 충돌을 방지할 수 있습니다.

왜냐하면 고유한 식별자를 사용하면 동일한 짧은 URL이 여러 번 생성되는 것을 방지할 수 있기 때문입니다. 이를 위해 UUID나 해시 함수를 사용할 수 있습니다.

두 번째로, 짧은 URL의 클릭 수를 추적하여 사용자가 얼마나 자주 해당 URL을 클릭했는지 통계를 제공할 수 있습니다. 이를 위해 데이터베이스에 클릭 수를 저장하는 컬럼을 추가하고, GET 요청을 처리할 때 클릭 수를 증가시키는 로직을 추가합니다.

app.get('/:shortUrl', (req, res) => {
    const shortUrl = req.params.shortUrl;
    db.query('SELECT long_url, clicks FROM urls WHERE short_url = ?', [shortUrl], (err, result) => {
        if (err) throw err;
        if (result.length > 0) {
            db.query('UPDATE urls SET clicks = clicks + 1 WHERE short_url = ?', [shortUrl], (err, result) => {
                if (err) throw err;
                res.redirect(result[0].long_url);
            });
        } else {
            res.status(404).send('URL not found');
        }
    });
});

세 번째로, 짧은 URL의 만료 기간을 설정하여 일정 기간이 지나면 해당 URL이 자동으로 삭제되도록 할 수 있습니다. 이를 위해 데이터베이스에 만료 날짜를 저장하는 컬럼을 추가하고, 만료된 URL을 삭제하는 스크립트를 주기적으로 실행합니다.

이러한 개선 사항을 통해 숏 URL 서비스를 더욱 유용하고 효율적으로 만들 수 있습니다.



결론

이 글에서는 숏 URL 서비스의 기본 개념부터 구현 방법, 그리고 개선 방법까지 다루었습니다. 숏 URL 서비스는 긴 URL을 짧게 변환하여 사용자가 쉽게 기억하고 입력할 수 있도록 도와주는 유용한 서비스입니다.

왜냐하면 긴 URL은 문자 수 제한이 있는 플랫폼에서 불편함을 초래하기 때문입니다. 숏 URL 서비스는 이러한 문제를 해결해줍니다.

기본적인 숏 URL 서비스는 긴 URL을 짧게 변환하는 기능과 짧은 URL을 원래의 긴 URL로 리다이렉트하는 기능으로 구성됩니다. 이를 구현하기 위해 데이터베이스와 서버 사이드 스크립트를 사용합니다.

또한, 고유한 식별자를 사용하여 충돌을 방지하고, 클릭 수를 추적하여 통계를 제공하며, 만료 기간을 설정하여 URL을 자동으로 삭제하는 등의 개선 사항을 추가할 수 있습니다.

이러한 과정을 통해 숏 URL 서비스를 직접 구현해보면서 웹 개발의 기본 개념과 기술을 익힐 수 있습니다. 앞으로도 다양한 프로젝트를 통해 실력을 향상시키길 바랍니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
logo
copyright © F-Lab & Company 2025