Tech Wiki

TOPICSSERIES

Rust 실전 로드맵: 문법부터 비동기 웹 API까지

Rust 실전 로드맵: 문법부터 비동기 웹 API까지

Rust 문법과 소유권부터 테스트된 비동기 웹 API까지 단계별로 완성합니다.

학습 대상
다른 프로그래밍 언어 경험이 있고 Rust를 처음 배우는 개발자
선행 지식
터미널과 텍스트 편집기 사용 경험. 6단계 전에는 HTTP와 JSON의 기본 지식이 필요합니다.
최종 프로젝트
SQLite에 상태를 저장하고 제한된 동시성으로 주기적 검사를 실행하는 Axum 기반 Endpoint Monitor API
현재 진행률
32/32 편 공개
마지막 검증일
2026-09-19

시리즈 시작하기

단계 1 — 핵심 문법과 CLI 기초

단계 목표: 작은 Rust 프로그램을 컴파일, 실행, 포맷, 린트, 테스트하고 일반적인 표현식과 컬렉션 코드를 읽습니다.

  1. 공개됨
    01

    개발 환경과 Cargo

    도구 체인을 설치하고 검증한 뒤 크레이트 하나를 빌드·실행·포맷·린트·테스트합니다.

  2. 공개됨
    02

    변수와 상수

    타입 추론과 명시적 타입, shadowing, 상수, 가변성을 구분해서 사용합니다.

  3. 공개됨
    03

    함수와 제어 흐름

    문장과 표현식의 차이를 이해하고 함수, 분기, 반복문을 테스트 가능한 형태로 작성합니다.

  4. 공개됨
    04

    튜플·배열·구조 분해

    고정 크기 데이터를 튜플과 배열로 다루고 범위를 벗어난 인덱스 접근을 피합니다.

  5. 공개됨
    05

    Vec·String·HashMap

    Vec, String, HashMap으로 엔드포인트 데이터를 파싱하고 요약하며 UTF-8 문자열을 안전하게 처리합니다.

  6. 공개됨
    06

    CLI 입력과 로직 분리

    입출력과 로직을 분리한 엔드포인트 레지스트리 CLI를 만들고 단위 테스트를 실행합니다.

프로젝트 마일스톤: 테스트 가능한 엔드포인트 레지스트리 CLI

단계 2 — 소유권과 빌림

단계 목표: 이동과 빌림을 예측하고 소유 데이터와 빌린 데이터를 선택하며 불필요한 clone 없이 라이프타임 진단을 해결합니다.

  1. 공개됨
    07

    소유권과 이동

    대입과 함수 호출 뒤 값의 유효성을 예측하고 불필요한 clone을 피합니다.

  2. 공개됨
    08

    참조와 빌림

    CLI가 데이터를 빌리도록 리팩터링하고 별칭과 가변성 규칙을 설명합니다.

  3. 공개됨
    09

    슬라이스와 문자열

    문자열 API에서 String과 &str 중 적절한 타입을 선택하고 UTF-8 경계를 안전하게 처리합니다.

  4. 공개됨
    10

    라이프타임

    빌린 값을 반환하는 코드의 라이프타임 진단을 해결하고 불필요한 'static 사용을 피합니다.

  5. 공개됨
    11

    소유권 기반 API 설계

    엔드포인트 모델을 소유권·빌림·변환 경계가 분명한 API로 리팩터링합니다.

프로젝트 마일스톤: 명확한 소유권 경계를 갖춘 엔드포인트 모델

단계 3 — 타입 추상화와 크레이트 설계

단계 목표: 모듈을 구성하고 타입으로 상태를 모델링하며 트레이트와 이터레이터를 사용하고 오류 처리와 테스트 규칙을 세웁니다.

  1. 공개됨
    12

    구조체와 메서드

    엔드포인트 ID, URL, 검사 주기, 유효성 규칙을 구조체와 메서드로 표현합니다.

  2. 공개됨
    13

    열거형·Option·Result·패턴 매칭

    플래그와 특수값을 enum, Option, Result와 빠짐없는 패턴 매칭으로 바꿉니다.

  3. 공개됨
    14

    제네릭과 트레이트

    저장소와 검사기 경계를 정의하고 제네릭, 트레이트 객체, impl Trait의 선택 기준을 비교합니다.

  4. 공개됨
    15

    클로저와 이터레이터

    이터레이터와 클로저로 엔드포인트 결과를 필터링·변환·집계하며 불필요한 할당을 줄입니다.

  5. 공개됨
    16

    모듈·크레이트·워크스페이스

    도메인, 애플리케이션, 어댑터 책임을 모듈·크레이트·워크스페이스로 나눕니다.

  6. 공개됨
    17

    오류 처리와 테스트

    오류에 문맥을 보존하고 단위·통합·실패 테스트의 경계를 세웁니다.

프로젝트 마일스톤: 도메인, 애플리케이션, 어댑터로 나뉜 크레이트 구조

단계 4 — 스마트 포인터와 동시성

단계 목표: 스마트 포인터와 동기화 도구를 의도적으로 선택하고 Send와 Sync를 이해하며 구조를 숨기지 않는 매크로를 사용합니다.

  1. 공개됨
    18

    스마트 포인터와 소유 그래프

    소유 관계와 공유 범위에 맞춰 Box, Rc, Arc, Weak를 선택하고 순환 참조를 피합니다.

  2. 공개됨
    19

    내부 가변성과 동기화

    런타임 빌림 검사와 스레드 간 동기화를 구분하고 잠금으로 보호한 상태를 테스트합니다.

  3. 공개됨
    20

    매크로와 코드 생성

    작은 선언적 매크로를 작성하고 확장 결과를 확인한 뒤 함수나 derive가 더 나은 경우를 판단합니다.

  4. 공개됨
    21

    스레드와 Send·Sync

    소유권을 스레드로 옮겨 차단 작업을 병렬화하고 Send와 Sync가 막는 문제를 설명합니다.

  5. 공개됨
    22

    채널과 공유 상태

    메시지 전달과 공유 상태를 비교하고 종료 가능한 제한된 작업자 구조를 만듭니다.

프로젝트 마일스톤: 종료 경로를 테스트한 제한된 작업 큐

단계 5 — 비동기와 네트워크

단계 목표: Future를 이해하고 Tokio 태스크와 채널을 사용하며 취소, 마감 시간, 동시성 제한을 적용한 HTTP 작업을 설계합니다.

  1. 공개됨
    23

    Future·Poll·Pin

    간단한 Future를 따라가며 executor, wake, Pin이 필요한 이유를 이해합니다.

  2. 공개됨
    24

    Tokio 태스크와 async/await

    Tokio task로 검사를 동시에 실행하고 join 결과를 처리하며 동시성과 병렬성을 구분합니다.

  3. 공개됨
    25

    비동기 채널과 정상 종료

    채널, select!, 취소를 이용해 backpressure와 정상 종료를 갖춘 작업자를 만듭니다.

  4. 공개됨
    26

    HTTP 타임아웃·재시도·동시성 제한

    타임아웃·재시도·동시성 제한 정책을 명시한 HTTP 검사기를 구현합니다.

  5. 공개됨
    27

    네트워크 오류와 부분 실패

    DNS, 연결, TLS, 상태 코드, 타임아웃, 취소 오류를 분류해 안정적인 도메인 오류로 노출합니다.

프로젝트 마일스톤: 취소 가능한 제한된 비동기 HTTP 검사기

단계 6 — 웹 API와 프로덕션

단계 목표: 최종 서비스를 조립하고 데이터를 저장하며 백그라운드 작업자, 관측성, 보안 제어를 추가하고 배포 가능한 시스템을 검증합니다.

  1. 공개됨
    28

    Axum 라우팅·상태·추출기

    타입이 지정된 상태와 JSON 요청 검증을 사용하는 Axum CRUD·상태 API를 만듭니다.

  2. 공개됨
    29

    SQLx·SQLite·마이그레이션

    반복 가능한 마이그레이션과 트랜잭션 경계를 갖춘 SQLx·SQLite 저장소를 구현합니다.

  3. 공개됨
    30

    API와 백그라운드 작업자

    스케줄링, HTTP 검사, 저장, API 상태를 시작과 종료가 명확한 하나의 애플리케이션으로 연결합니다.

  4. 공개됨
    31

    관측성과 API 보안

    구조화 로그, 요청 ID, 로그 마스킹, 입력 제한, 상태 점검, 설정 검증을 추가합니다.

  5. 공개됨
    32

    통합 테스트와 컨테이너 배포

    API·데이터베이스·작업자·종료·실패 경로를 통합 테스트하고 재현 가능한 릴리스 이미지를 만듭니다.

프로젝트 마일스톤: 통합 테스트와 컨테이너 실행을 검증한 Endpoint Monitor API

Tech Wiki

Built with WordPress · Learn in public.