요즘 코딩 판에서 React Server Components (RSC) 얘기가 핫하다고 하는데 저도 잘 모르지만 주제가 재밌어서 알아봐 왔습니다~.
Next.js가 밀고 있는 이 기술은 단순한 기능 하나 툭 던져준 게 아니라, 우리 웹 개발판 자체를 뒤집어엎고 있다는데요.
RSC가 왜 등장했고, 이게 왜 '풀스택 개발의 역설'이라고 불리는지, 흥미롭게 파헤쳐 볼게요. 😉
RSC를 이해하려면, 우리가 '왜 이렇게까지 왔는가'를 봐야죠. 지금 우리를 괴롭혔던 두 가지 개념부터 쿨하게 정리해봅시다.
CSR은 한때 SPA(Single Page Application)의 혁신이었지만, 요즘 들어 욕을 바가지로 먹는 방식이죠.
모놀리스는 요즘 마이크로 서비스 아키텍처(MSA)에게 밀렸지만, 한때는 웹 서비스의 국룰이었어요.
RSC는 CSR의 느린 초기 로딩과 모놀리스의 배포/확장성 문제 사이에서 절묘한 균형점을 찾으려고 나타났습니다.
RSC는 "데이터 가져오기(Data Fetching)랑 화면 그리기(Rendering)는 서버에서 해치우자"는 마인드입니다.
| 구분 | CSR (Client Side Rendering) | RSC (React Server Components) |
|---|---|---|
| 렌더링 주체 | 클라이언트 (사용자 브라우저) | 서버 (초기 콘텐츠 및 데이터) |
| JS 전송량 | 무조건 전부 다 보냄 (느림) | 상호작용 컴포넌트만 선별적으로 보냄 (빠름) |
| 데이터 접근 | 클라이언트에서 API 별도 호출 | 서버 컴포넌트에서 DB에 직접 접근 |
| 장점 | 상호작용이 자유로움. | 초기 로딩 속도, 번들 크기, 데이터 접근 효율 최고 |
RSC의 가장 재밌는 점은 개발자의 역할이 뒤섞인다는 거예요. RSC를 도입하면...
"어? 결국 하나로 합치는 거면 옛날 페이스북 모놀리스처럼 되는 거 아냐?"라고 생각할 수 있지만, 절대 아닙니다.
| 특징 | 과거 모놀리스 (옛날 방식) | RSC 기반 풀스택 (현재 방식) |
|---|---|---|
| 코드 구조 | 모든 기능이 엉킨 '대환장 파티' | 컴포넌트별로 서버/클라이언트 역할이 명확히 분리 |
| 기술 스택 | 백엔드(Java 등) 프론트엔드(JS) | JS/TS 단일 언어로 통일 (개발 효율 굿) |
| 배포 방식 | 전체 서버를 다시 올려야 함 (무거움) | 서버리스(Edge Function) 형태로 빠르게 분산 배포 (가벼움) |
RSC는 모놀리스의 '하나로 합쳐진 편의성'은 가져오되, 단점인 '유지보수 지옥'은 버린 '신개념 하이브리드'라고 이해하면 됩니다. 즉, 풀스택 코딩의 편리함과 분산 아키텍처의 확장성을 동시에 잡은 치트키인 셈이죠.
RSC는 우리에게 설렘과 동시에 숙제를 던져줍니다.
프론트엔드 개발자가 DB 코드를 짜면, 백엔드 개발자와 코드 리뷰 및 보안 기준을 어떻게 맞출지가 핵심이에요. "이건 프론트 영역인데 건들지 마!" 하던 시대는 갔습니다.
Server Component는 서버에서 작동합니다. 즉, 데이터베이스 접근 권한, 민감 정보 노출 방지 등 백엔드 레벨의 보안 지식이 프론트엔드 개발자에게도 필수 소양이 됩니다.
모든 컴포넌트를 RSC로 만들면 오히려 복잡해질 수 있어요. "여기까지는 서버 컴포넌트로 성능 잡고, 여기서부터는 클라이언트 컴포넌트로 사용자 상호작용 넣자!"라고 명확하게 경계를 그릴 줄 아는 능력이 진정한 고수의 덕목이 될 거예요.
RSC는 단순히 React의 유행이 아니라, 웹 개발의 다음 챕터를 열고 있습니다. 이 변화를 놓치지 않고 잘 탑승해서, 우리 모두 '갓생 개발자'로 레벨업 합시다! 🚀
React가 강력한건 알고 있었는데 Next.js와 결합해서 서버 통신까지 가능하게 할 수 있는지는 몰랐네요.. JS뿐만 아니라 TS도 강력한 언어로서 자리매김하는 걸 보면 프론트에 특화된 직무가 아니더라도 관련 지식은 있어야할 것 같다는 생각이 들었습니다. 잘 읽었습니다!