Skip to main content

14. 그다음 단계: 웹, 시스템, WASM, 오픈소스로 확장하기

그다음 단계: 웹, 시스템, WASM, 오픈소스로 확장하기

Rust 학습의 끝이 아니라, 진짜 시작점

여기까지 왔다면 이미 중요한 고비를 넘었습니다. 변수와 함수에서 시작해 소유권, 빌림, 에러 처리, 모듈, 테스트, 동시성, 그리고 작은 CLI 프로젝트까지 경험했으니까요. 이제 남은 질문은 하나입니다.

"그래서 이제 Rust로 뭘 하지?"

이 질문에 답하지 못하면 Rust 공부는 멋진 문법 체험으로 끝나기 쉽습니다. 반대로 이 질문에 답하면, Rust는 단순한 학습 언어가 아니라 앞으로 몇 년 동안 써먹을 도구가 됩니다.

Rust의 매력은 한 방향으로만 쓰이는 언어가 아니라는 점입니다. 웹 백엔드로도 갈 수 있고, 시스템 프로그래밍으로도 깊게 들어갈 수 있습니다. 브라우저에서 돌아가는 WebAssembly로도 이어지고, 작은 마이크로컨트롤러를 움직이는 임베디드 개발로도 확장됩니다. 그리고 그 모든 길 위에는 오픈소스 기여라는 강력한 성장 루트가 놓여 있습니다.

이 장에서는 초보자 기준으로, 입문 이후의 현실적인 다음 단계들을 안내하겠습니다.

Rust로 갈 수 있는 다섯 갈래

Rust를 배운 뒤의 대표적인 방향은 크게 다섯 가지입니다.

  • 웹 백엔드

  • 시스템 프로그래밍

  • WebAssembly

  • 임베디드

  • 오픈소스 기여

이 다섯 길은 서로 완전히 분리되어 있지 않습니다. 예를 들어 웹 백엔드를 하다가 성능 병목을 해결하려고 시스템 프로그래밍에 발을 들일 수 있고, 프론트엔드와 협업하다가 WebAssembly에 흥미가 생길 수도 있습니다. 임베디드를 하다가 관련 라이브러리에 기여하면서 오픈소스 경험을 쌓는 일도 흔합니다.

그러니 중요한 것은 "영원히 한 길만 고르는 것"이 아니라, "지금 내 수준에서 가장 빨리 성장할 수 있는 첫 길을 고르는 것"입니다.

웹 백엔드: 가장 빨리 결과를 내기 좋은 길

초보자에게 가장 추천하기 쉬운 방향은 웹 백엔드입니다. 이유는 간단합니다. 눈에 보이는 결과가 빨리 나오고, 이미 배운 Rust 지식을 자연스럽게 활용할 수 있기 때문입니다.

CLI 앱을 만들 때도 입력을 받고, 데이터를 저장하고, 에러를 처리하고, 기능을 모듈로 나눴습니다. 웹 백엔드는 거기에 HTTP 요청과 응답, 데이터베이스, 인증, 배포 같은 요소가 추가된 버전이라고 생각하면 됩니다. 갑자기 외계어가 되는 것이 아니라, 익숙한 프로그램이 네트워크를 만나 조금 더 사회성이 생긴 셈입니다.

Rust 백엔드 프레임워크로는 axum, Actix Web, Rocket 등이 널리 쓰이며, 커뮤니티에서도 이들 모두 성숙한 선택지로 언급됩니다. 특히 axum은 Tokio 생태계와 잘 맞고, Rocket은 타입 안정성과 사용성을 강점으로 내세웁니다.12

초보자라면 처음부터 "최고의 프레임워크"를 고르려고 오래 고민하지 마세요. 그 시간에 작은 API 하나를 더 만드는 편이 훨씬 낫습니다. 보통은 axum으로 시작해도 좋고, 문법이 더 선언적으로 느껴지는 스타일을 좋아하면 Rocket을 살펴봐도 괜찮습니다.

웹 백엔드에서 다음 순서로 가면 무리 없이 성장할 수 있습니다.

  • JSON을 주고받는 작은 REST API 만들기

  • SQLite나 PostgreSQL을 연결해 데이터 저장하기

  • 로그인, 인증, 환경 변수, 로그, 설정 파일 다루기

  • 배포하고 실제로 외부에서 접속해 보기

처음 프로젝트는 거창할 필요가 없습니다. 오히려 작을수록 좋습니다. 예를 들면 메모 API, 짧은 URL 서비스, 개인 가계부 API, 독서 기록 서버 정도면 충분합니다. 핵심은 "CRUD를 한다"가 아니라, Rust로 서버를 끝까지 운영해 보는 경험입니다.

웹 백엔드가 잘 맞는 사람은 이런 경우입니다. 이미 웹 개념을 조금 알고 있거나, 취업 포트폴리오를 빨리 만들고 싶거나, 실무에서 API 서버와 데이터 처리를 다뤄보고 싶은 사람입니다.

시스템 프로그래밍: Rust의 본진으로 들어가는 길

Rust를 배울 때 많은 사람이 처음엔 소유권 때문에 힘들어합니다. 그런데 아이러니하게도, 그 고생이 가장 빛나는 곳이 바로 시스템 프로그래밍입니다.

시스템 프로그래밍은 운영체제, 파일 시스템, 네트워크, 프로세스, 메모리, 바이너리 포맷, 성능 최적화처럼 컴퓨터의 바닥과 가까운 영역을 다룹니다. 말만 들으면 무섭지만, 꼭 커널을 만드는 것부터 시작할 필요는 없습니다. 오히려 초보자는 "운영체제에 가까운 유틸리티"부터 시작하는 편이 좋습니다.

예를 들어 이런 프로젝트가 좋습니다.

  • grep, tail, find 같은 명령줄 도구 다시 만들기

  • 로그 파서나 파일 변환기 만들기

  • TCP 채팅 서버나 간단한 프록시 만들기

  • 키-값 저장소나 작은 캐시 프로그램 만들기

이 방향의 장점은 Rust의 강점을 아주 진하게 체감할 수 있다는 점입니다. 에러 처리를 대충 넘길 수 없고, 바이트 단위 데이터와 씨름하게 되며, 성능과 메모리 사용량을 더 의식하게 됩니다. 처음에는 조금 거칠지만, 이 과정을 지나면 코드에 대한 감각이 훨씬 단단해집니다.

시스템 프로그래밍이 잘 맞는 사람은 "왜 이 프로그램이 느릴까?", "이 파일은 내부에서 어떤 구조일까?", "네트워크 패킷은 어떻게 오갈까?" 같은 질문을 좋아하는 사람입니다. 기계의 속살이 궁금한 사람에게 Rust는 아주 좋은 현미경입니다.

WebAssembly: 브라우저 안으로 Rust를 데려오는 길

Rust를 배우다 보면 한 번쯤 이런 생각이 듭니다.

"이 빠른 코드를 브라우저에서도 쓸 수 없을까?"

그때 만나는 것이 WebAssembly, 줄여서 WASM입니다.

MDN 가이드는 Rust와 WebAssembly의 대표적인 사용 방식을 두 가지로 설명합니다. 하나는 전체 웹 앱을 Rust 중심으로 만드는 것이고, 다른 하나는 기존 JavaScript 애플리케이션의 일부를 Rust로 작성하는 것입니다. 초보자에게는 두 번째 접근이 훨씬 현실적입니다.3 Rust 공식 소개도 WASM의 역할을 JavaScript를 대체하는 것이 아니라, 계산량이 많거나 저수준 제어가 필요한 부분을 보강하는 방향으로 설명합니다.4

이 말은 아주 중요합니다. 처음부터 "프론트엔드를 전부 Rust로 만들겠다"라고 달려들면 금방 지칠 수 있습니다. 대신 브라우저 안에서 성능이 중요한 한 조각을 Rust로 옮기는 것이 좋은 시작입니다.

WASM이 특히 빛나는 예시는 이런 경우입니다.

  • 텍스트 파싱이나 문서 변환

  • 이미지, 오디오, 비디오 처리

  • 복잡한 계산기나 시뮬레이션

  • 에디터, 시각화 도구, 게임 로직 일부

시작할 때는 wasm-pack, wasm-bindgen 같은 도구를 접하게 됩니다.3 이름은 조금 낯설지만 역할은 분명합니다. Rust 코드를 .wasm으로 빌드하고, JavaScript와 데이터를 주고받기 쉽게 도와주는 도구들입니다.

초보자에게 추천하는 첫 WASM 프로젝트는 아주 단순한 것이 좋습니다. 예를 들어 브라우저에서 동작하는 마크다운 변환기, 이미지 필터, 계산 모듈 같은 식입니다. UI는 HTML과 JavaScript가 맡고, 연산 핵심만 Rust로 옮기세요. 이렇게 하면 "Rust가 웹에서 어떤 위치에 서는가"를 명확하게 이해할 수 있습니다.

만약 이후에 Rust 중심 프론트엔드까지 관심이 생긴다면 Yew나 Leptos 같은 프레임워크도 살펴볼 수 있습니다. 다만 그건 "입문 다음 단계"라기보다 "한 번쯤 웹과 WASM에 손이 익은 뒤의 확장 코스"라고 생각하는 편이 좋습니다.

임베디드: 작은 기기에서 Rust의 안전성을 체감하는 길

임베디드는 센서, 보드, 마이크로컨트롤러처럼 자원이 제한된 환경에서 소프트웨어를 만드는 분야입니다. 여기서는 메모리가 아주 작고, 실수 한 번이 하드웨어 오동작으로 이어질 수 있습니다. 그래서 Rust의 장점이 무척 설득력 있게 드러납니다.

Rust 공식 임베디드 소개는 컴파일 타임 분석, 힙 없는 메모리 구성 가능성, 강한 동시성 안전성, 이식성 같은 점을 핵심 장점으로 설명합니다.5 쉽게 말하면, "작고 예민한 기기에서 실수할 여지를 줄여주는 언어"라는 뜻입니다.

다만 임베디드는 진입 장벽이 분명히 있습니다. 크로스 컴파일, 주변장치 설정, 인터럽트, 디버깅 장비 같은 개념이 나오기 때문입니다. 공식 Embedded Rust Book도 데스크톱 환경에서 Rust를 충분히 다뤄본 경험과, 임베디드 기초 개념을 어느 정도 알고 있을 것을 전제로 합니다.7 그래서 완전 초보자라면 바로 깊은 물로 뛰어들기보다, Rust Embedded Working Group이 소개하는 Discovery Book이나 입문 자료부터 차근차근 따라가는 편이 좋습니다.6

좋은 소식도 있습니다. 임베디드 Rust는 실험실 장난감 수준에만 머물지 않습니다. 공개된 사례를 보면 보안 칩, 펌웨어, 로보틱스, 산업 장비 등 실제 제품 환경에서도 Rust 사용이 점점 늘고 있습니다.8

이 길이 잘 맞는 사람은 눈에 보이는 하드웨어를 움직이는 데 즐거움을 느끼는 사람입니다. LED가 깜빡이는 순간 행복해지고, 센서 값이 찍히는 것을 보면 괜히 뿌듯한 사람이라면 꽤 잘 맞습니다. 작은 칩 하나가 "Hello, world!"보다 훨씬 큰 감동을 줄 수도 있습니다.

오픈소스 기여: 가장 작게 시작해 가장 멀리 가는 길

웹이든 시스템이든 WASM이든 임베디드든, 결국 오래 성장하는 사람들은 오픈소스와 연결됩니다.

오픈소스 기여라고 하면 많은 초보자가 거대한 기능 추가를 떠올립니다. 하지만 실제로는 그렇지 않습니다. 처음 기여는 보통 아주 작습니다. 문서 오탈자 수정, 예제 코드 개선, 에러 메시지 정리, 테스트 추가, 재현 가능한 버그 리포트 작성도 훌륭한 기여입니다.

초보자에게 특히 좋은 점은, 오픈소스 기여가 "실전 코드를 읽는 훈련"이 된다는 것입니다. 내가 혼자 짠 코드만 보면 내 버릇만 보입니다. 하지만 다른 사람이 만든 프로젝트를 읽기 시작하면, 모듈 분리, 에러 처리, 테스트 구조, 리뷰 문화까지 한꺼번에 배우게 됩니다.

첫 기여를 찾고 싶다면 good first issue 같은 라벨이나 큐레이션 사이트를 활용하면 좋습니다.9 다만 라벨이 붙었다고 해서 항상 쉬운 것은 아닙니다. "쉽다"는 뜻이 아니라 "처음 기여하는 사람도 도전해볼 만하다"는 뜻에 가깝습니다.

오픈소스를 시작할 때는 다음 원칙이 도움이 됩니다.

  • 내가 실제로 써본 프로젝트를 고르기

  • 코드보다 문서, 테스트, 예제부터 보기

  • 아주 작은 PR 하나를 목표로 하기

  • 이슈를 읽고, CONTRIBUTING 문서를 먼저 확인하기

예를 들어 웹 백엔드가 관심사라면 axum, actix-web, sqlx 주변 생태계를 볼 수 있습니다. 시스템 쪽이라면 CLI 도구나 개발 도구 프로젝트가 좋습니다. 임베디드라면 embedded-hal, probe-rs, 보드 지원 크레이트 같은 곳이 좋은 출발점이 됩니다.

중요한 것은 "유명한 프로젝트에 기여했다"가 아닙니다. "문제를 읽고, 이해하고, 수정하고, 리뷰를 받아 반영했다"는 경험 자체가 큰 자산입니다.

어떤 길을 먼저 고르면 좋을까

고민된다면, 지금까지의 배경을 기준으로 고르면 됩니다.

  • 웹 개발 경험이 있거나 취업용 포트폴리오가 급하다면 웹 백엔드

  • 성능, 파일, 네트워크, 운영체제에 끌린다면 시스템 프로그래밍

  • 프론트엔드 경험이 있고 브라우저 성능 최적화가 궁금하다면 WebAssembly

  • 하드웨어, 센서, 보드, 펌웨어가 재미있다면 임베디드

  • 아직 확신이 없다면 작은 프로젝트 하나와 오픈소스 기여를 병행

특히 방향이 안 잡히는 초보자에게는 "웹 백엔드 + 오픈소스 기여" 조합을 추천합니다. 결과물이 빨리 나오고, 실무 감각을 익히기 좋고, 커뮤니티와도 연결되기 쉽기 때문입니다.

초보자를 위한 현실적인 12주 확장 계획

거창한 로드맵보다 중요한 것은, 다음 12주를 손에 잡히게 쓰는 것입니다.

처음 4주는 한 방향을 골라 작은 프로젝트 하나를 만드세요. 웹 백엔드라면 API 서버, 시스템이라면 CLI 유틸리티, WASM이라면 계산 모듈, 임베디드라면 보드 제어 예제가 좋습니다.

다음 4주는 기능을 늘리기보다 품질을 높이세요. 테스트를 추가하고, 에러 메시지를 다듬고, README를 쓰고, 실행 방법을 정리하고, 한 번 배포하거나 데모를 만들어 보세요. 이 단계에서 프로젝트가 비로소 "작품"이 됩니다.

마지막 4주는 바깥 세상과 연결하세요. 비슷한 오픈소스 저장소를 읽고, 이슈를 하나 골라보고, 문서 수정이든 테스트 추가든 작은 기여를 시도해 보세요. 가능하다면 내가 만든 프로젝트에 배운 점도 반영하세요.

이 12주가 끝나면 당신은 단순히 Rust 문법을 아는 사람이 아니라, "Rust로 무언가를 만들고 개선하고 공유해본 사람"이 됩니다. 그 차이는 꽤 큽니다.

결국 중요한 것은 한 길을 깊게 걸어보는 것

Rust를 배우고 나면 세상이 갑자기 넓어 보입니다. 웹도 되고, 시스템도 되고, 브라우저도 되고, 작은 칩도 됩니다. 이건 분명 멋진 일입니다. 하지만 동시에 초보자에게는 함정이기도 합니다. 너무 많은 가능성 때문에 아무 길도 깊게 가지 못할 수 있으니까요.

그래서 지금 필요한 것은 모든 길을 아는 것이 아니라, 한 길을 정해 끝까지 걸어보는 것입니다.

작은 서버를 배포해 보세요. 작은 도구를 매일 써보세요. 브라우저에서 Rust 모듈을 돌려보세요. 보드 위 LED를 깜빡이게 해보세요. 그리고 가능하면 아주 작은 오픈소스 PR도 하나 보내보세요.

그 순간부터 Rust 학습은 "공부"가 아니라 "이력"이 됩니다.

참고

1Rust 백엔드 프레임워크 토론

2Rocket 공식 사이트

3MDN Rust to Wasm 가이드

4Rust WebAssembly 소개

5Rust 임베디드 소개

6Rust Embedded Working Group

7The Embedded Rust Book

8Embedded Rust in Production 2025

9Good First Issue

책 목록

rust 학습

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기