1. 라우팅의 정의: “요청을 어디로 보낼지 정해주는 일”
라우팅(Routing)이란 사용자의 요청(Request)이 어떤 주소(URL)로 들어왔을 때,
이를 어떤 기능, 페이지, 혹은 데이터 처리 로직으로 연결할지를 정하는 작업입니다.
예를 들어:
- /about 주소로 들어온 요청은 → "회사 소개" 페이지로
- /login 주소는 → 로그인 기능 처리 로직으로
즉, **경로(Route)**를 지정해주는 것입니다. 사용자는 단순히 링크를 클릭했지만, 그 뒤에서는 수많은 라우팅 설정이 움직이며 정확한 결과를 보여줍니다.
2. 서버 측 라우팅: 요청을 처리하는 백엔드의 역할
서버 측 라우팅은 사용자 요청을 백엔드 서버가 받아 적절한 응답을 리턴하는 역할을 합니다.
대표적인 예로 Node.js 기반 Express 프레임워크에서 라우팅을 어떻게 처리하는지 살펴보겠습니다.
// Express.js 라우팅 예시
app.get('/about', (req, res) => {
res.send('회사 소개 페이지입니다');
});
- app.get('/about', ...): 브라우저가 /about 경로로 요청을 보내면,
- res.send(...): 해당 요청에 대해 “회사 소개 페이지입니다”라는 응답을 리턴합니다.
요점은 어떤 URL이 들어왔을 때 어떤 코드를 실행할지 지정하는 것입니다.
이러한 방식은 PHP, Python(Django/Flask), Java(Spring), Ruby(Rails) 등 모든 서버 프레임워크에서 유사하게 적용됩니다.
3. 클라이언트 측 라우팅: SPA에서의 화면 전환 기술
기존 웹은 매 페이지마다 서버에서 HTML을 다시 받아오는 방식이었지만,
요즘은 SPA(Single Page Application) 구조가 대세입니다. 이때는 클라이언트에서도 라우팅이 필요합니다.
React를 기준으로 설명해보면, 사용자가 주소창에 /contact를 입력했을 때, 전체 페이지를 새로 불러오는 것이 아니라 필요한 컴포넌트만 바꿔 보여줍니다.
import { BrowserRouter, Routes, Route } from 'react-router-dom';
<BrowserRouter>
<Routes>
<Route path="/about" element={<AboutPage />} />
<Route path="/contact" element={<ContactPage />} />
</Routes>
</BrowserRouter>
- path="/about": 사용자가 /about 주소로 진입했을 때
- element={<AboutPage />}: AboutPage 컴포넌트를 화면에 보여줍니다.
서버가 아닌 브라우저 내에서만 이루어지는 라우팅, 이것이 바로 클라이언트 측 라우팅입니다.
4. 라우팅이 왜 중요한가?
라우팅 설정이 제대로 되어 있지 않으면 어떤 일이 벌어질까요?
- 사용자가 요청한 페이지가 없다는 에러(404 Not Found) 발생
- 엉뚱한 페이지가 뜨거나, 화면이 아무 반응 없이 멈춤
- 로그인 후 리디렉션이 꼬이거나, 게시글 번호를 잘못 가져와 오류 발생
결국, 서비스 품질과 사용자 경험에 직결되는 문제로 이어집니다.
뿐만 아니라 라우팅을 잘 구성해두면:
- 기능이 늘어날 때도 체계적으로 관리 가능
- 유지보수 시 어디서 어떤 요청을 처리하는지 쉽게 추적
- 보안(접근 제어) 설정도 효율적으로 관리 가능
즉, **라우팅은 ‘보이지 않는 백본’**입니다.
겉으로는 보이지 않지만, 웹 서비스의 모든 요청 흐름을 조율하는 기술입니다.
5. 실무에서의 라우팅 설계 팁
서비스 규모가 커질수록 라우팅의 중요성은 더욱 커집니다.
다음은 실무에서 흔히 사용되는 라우팅 설계 팁입니다.
✅ URL 구조는 직관적으로
- /products/123 → 상품 상세
- /users/45/settings → 사용자 설정
- /login, /signup → 인증 관련
이처럼 의미 있는 단어와 패턴을 사용하면 유지보수성도 좋아지고, 사용자에게도 이해하기 쉽습니다.
✅ 라우팅 파일을 분리하자
라우팅을 한 곳에 몰아서 관리하면 가독성과 유지보수성이 올라갑니다.
// routes/about.js
router.get('/about', aboutController.getPage);
// routes/index.js
const aboutRoutes = require('./about');
app.use('/', aboutRoutes);
✅ 인증이 필요한 라우트는 가드 처리
특정 페이지(예: 마이페이지, 장바구니)는 로그인한 사용자만 접근할 수 있게 해야 합니다.
이럴 때는 미들웨어나 Route Guard로 접근 제한을 설정합니다.
6. 요약 정리
구분 라우팅 설명
| 서버 측 라우팅 | URL에 따라 데이터를 응답하거나 페이지를 렌더링 |
| 클라이언트 측 라우팅 | 주소에 따라 보여주는 화면 컴포넌트를 지정 (SPA 중심) |
| 목적 | 사용자 요청을 정확히 처리할 수 있도록 연결 |
| 중요성 | 서비스 흐름 유지, 사용자 경험 개선, 유지보수 효율성 |
마치며: 라우팅, 웹의 보이지 않는 조율자
라우팅은 단지 개발을 위한 기술 이상의 의미를 가집니다.
사용자의 클릭 한 번에 어떤 로직이 돌아가야 하는지를 결정하는 핵심입니다.
겉으로는 드러나지 않지만, 우리가 하루에도 수십 번 방문하는 웹사이트의 모든 흐름 뒤에는
정확하게 설계된 라우팅 로직이 조용히 일을 하고 있습니다.
이제부터는 웹사이트를 사용할 때마다 "이 화면은 어떤 라우팅을 거쳐 왔을까?" 한 번쯤 생각해보는 것도 재미있을 거예요.
'일상' 카테고리의 다른 글
| 자바스크립트 화살표 함수(Arrow Function) 완전 정복! (2) | 2025.07.25 |
|---|---|
| API란 무엇인가? 뜻과 개념부터 데이터 연결 시스템 예시까지 완벽 정리 (6) | 2025.07.24 |
| 플로우차트 뜻부터 실무 예시, 추천 툴까지 완벽 가이드 (기획자·개발자·디자이너 필독) (1) | 2025.07.24 |
| CSS 완전 정복: 개념부터 반응형 웹, 구글 폰트 적용법, 그리고 주석까지 (3) | 2025.07.24 |
| 컴퓨터 속 ‘정리의 기술’ – 디렉토리와 폴더 구조 완벽 이해하기 (1) | 2025.07.24 |