# AWS Lambda가 이제 Rust를 공식 지원! 서버리스 개발의 새로운 가능성 탐구

---

# # 📌 서론 – “왜 이제야 Rust를 쓰게 되었을까?”

최근 **AWS Lambda**가 공식적으로 **Rust** 언어를 지원한다는 소식이 전 세계 개발자 커뮤니티를 뜨겁게 달구고 있습니다. 서버리스 환경에서 높은 성능과 메모리 효율을 제공하던 Go, Node.js, Python 등에 이어 Rust가 합류함으로써, **서버리스** 애플리케이션을 설계하는 방식에 새로운 패러다임이 등장했습니다.

하지만 아직도 “Rust가 뭔가요?”, “Lambda에 어떻게 적용하나요?” 같은 기본적인 질문이 많습니다. 이번 글에서는 **AWS Lambda가 Rust를 지원하게 된 배경**, **Rust가 제공하는 장점**, 그리고 **실제 Lambda 함수에 Rust를 적용하는 단계별 방법**을 초보자도 쉽게 이해할 수 있도록 정리했습니다.

---

# # 📚 본론

## # 1️⃣ AWS Lambda와 서버리스 개념 이해하기

- **AWS Lambda**는 이벤트 기반으로 코드를 실행하는 서버리스 컴퓨팅 서비스입니다.

- 서버를 직접 관리할 필요 없이 **함수 단위**로 코드를 배포하고, 트리거(예: API Gateway, S3 이벤트 등)가 발생하면 자동으로 실행됩니다.

- **서버리스**의 핵심 장점은 **자동 스케일링**, **사용한 만큼만 비용 지불**, **운영 부담 최소화**입니다.

> **핵심 키워드**: `AWS Lambda`, `서버리스`

## # 2️⃣ Rust 언어가 가지는 매력

| 특징 | 설명 | 서버리스와의 시너지 |

|------|------|-------------------|

| **메모리 안전** | 컴파일 타임에 메모리 오류(버퍼 오버플로, 널 포인터 등)를 차단 | 런타임 오류 감소 → 안정적인 함수 실행 |

| **높은 성능** | C/C++ 수준의 실행 속도와 낮은 레이턴시 | 짧은 응답 시간, 비용 효율적인 실행 |

| **Zero‑Cost Abstractions** | 고수준 추상화가 비용을 추가하지 않음 | 가독성 유지 + 성능 손실 없음 |

| **풍부한 생태계** | Cargo(패키지 매니저), crates.io(라이브러리) | 빠른 의존성 관리와 재사용성 확보 |

Rust는 **시스템 프로그래밍 언어**로 알려졌지만, 최근에는 **WebAssembly**, **클라우드 네이티브** 등 다양한 분야에서도 주목받고 있습니다. 특히 **Lambda**와 같은 짧은 실행 시간과 제한된 리소스 환경에서 Rust의 경량 바이너리는 큰 이점을 제공합니다.

## # 3️⃣ Lambda에서 Rust 사용하기 – 단계별 가이드

### # 3‑1. 개발 환경 준비

1. **Rust 설치**

   
```
bash

   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

   
```

2. **AWS CLI 설정**

   
```
bash

   aws configure

   
```

3. **Docker (옵션)** – Lambda 런타임과 동일한 환경에서 빌드하려면 Docker가 필요합니다.

### # 3‑2. 프로젝트 초기화

```
bash

cargo new hello_lambda --bin

cd hello_lambda

```

`Cargo.toml`에 Lambda 런타임용 의존성을 추가합니다.

```
toml

[dependencies]

lambda_runtime = '0.7'

serde = { version = '1.0', features = ['derive'] }

log = '0.4'

simple_logger = '1.11'

```

### # 3‑3. 코드 작성

`src/main.rs` 예시:

```
rust

use lambda_runtime::{handler_fn, Context, Error};

use serde::{Deserialize, Serialize};

use log::LevelFilter;

# [derive(Deserialize)]

struct Request {

    name: String,

}

# [derive(Serialize)]

struct Response {

    message: String,

}

# [tokio::main]

async fn main() -> Result<(), Error> {

    simple_logger::init_with_level(LevelFilter::Info)?;

    let func = handler_fn(my_handler);

    lambda_runtime::run(func).await?;

    Ok(())

}

async fn my_handler(event: Request, _: Context) -> Result<Response, Error> {

    Ok(Response {

        message: format!('Hello, {}!', event.name),

    })

}

```

### # 3‑4. 바이너리 빌드 (Linux x86_64)

```
bash

cargo build --release --target x86_64-unknown-linux-musl

```

> **Tip**: `musl` 라이브러리를 사용하면 별도 공유 라이브러리 없이 실행 파일 하나만 배포할 수 있어 Lambda 배포 패키지가 작아집니다.

### # 3‑5. 배포 패키지 만들기

```
bash

cd target/x86_64-unknown-linux-musl/release

zip -j function.zip hello_lambda

```

### # 3‑6. Lambda 함수 생성 및 업로드

```
bash

aws lambda create-function \

  --function-name rust-hello \

  --runtime provided.al2 \

  --handler not.required \

  --zip-file fileb://function.zip \

  --role arn:aws:iam::123456789012:role/lambda-exec-role

```

- **runtime**: `provided.al2` (Custom Runtime on Amazon Linux 2)

- **handler**는 필요 없으며, `bootstrap` 파일이 자동으로 실행됩니다.

### # 3‑7. 테스트

```
bash

aws lambda invoke \

  --function-name rust-hello \

  --payload '{'name':'World'}' \

  response.json

cat response.json

```

정상적으로 `'Hello, World!'` 라는 메시지가 반환되면 성공!

## # 4️⃣ 기대 효과와 주의사항

| 기대 효과 | 설명 |

|-----------|------|

| **비용 절감** | 실행 시간이 짧아져 GB‑second 비용이 감소 |

| **성능 향상** | 고성능 로직(예: 암호화, 이미지 처리)에서 기존 언어 대비 2~3배 빠른 응답 |

| **안정성** | 메모리 안전성 덕분에 런타임 크래시 감소 |

**주의사항**

- **Cold Start**: Rust 바이너리는 크기가 작아도 초기 로드 시 약간의 딜레이가 발생할 수 있습니다.

- **디버깅**: `println!` 대신 `log` crate를 활용하고 CloudWatch Logs에서 확인하세요.

- **런타임 제한**: 현재 `provided.al2` 커스텀 런타임은 최대 15분까지 실행 가능하므로, 장시간 작업은 별도 설계가 필요합니다.

---

# # 🚀 결론 – 이제 Rust로 서버리스 혁신을 시작하세요!

AWS Lambda가 **Rust**를 공식 지원하면서, 서버리스 개발자는 **고성능·안전·경량**이라는 세 마리 토끼를 한 번에 잡을 수 있게 되었습니다.

1️⃣ **Rust**의 메모리 안전성과 실행 속도는 비용 효율적인 Lambda 함수를 만들기에 최적화돼 있습니다.

2️⃣ **AWS Lambda**와의 조합으로 인프라 관리 없이 복잡한 백엔드 로직을 손쉽게 구현할 수 있습니다.

3️⃣ **시작이 간단**합니다 – 위 단계별 가이드를 따라 프로젝트를 설정하고 배포하면 바로 Rust 기반 서버리스 서비스를 운영할 수 있습니다.

> **행동 유도**: 아직 Rust를 접해보지 않으셨다면, 오늘 바로 `rustup`을 설치하고 간단한 “Hello, Lambda!” 예제로 첫 함수를 만들어 보세요. 그리고 블로그 댓글이나 SNS에 여러분만의 성공 사례를 공유해 주세요! 여러분의 경험이 다른 개발자들에게 큰 영감이 됩니다.

---

*SEO 키워드: **AWS Lambda**, **Rust**, **서버리스***
