반응형

슬기로운 개발자생활 67

Rust와 Axum을 활용한 웹 백엔드 개발 - 비동기 프로그래밍

비동기 프로그래밍은 프로그램이 동시에 여러 작업을 처리할 수 있도록 해줍니다. 이는 특히 네트워크 요청, 파일 I/O 등 대기 시간이 긴 작업에서 효율적인 자원 활용을 가능하게 합니다. Rust는 안전성과 성능을 겸비한 비동기 프로그래밍 모델을 제공합니다. 이번 글에서는 Rust에서의 비동기 프로그래밍에 대해 알아보고, async와 await 키워드를 사용하여 비동기 코드를 작성하는 방법을 배워보겠습니다.1. 비동기 프로그래밍 이해하기1.1 동기와 비동기의 차이점동기(synchronous) 프로그래밍: 작업이 순차적으로 실행되며, 이전 작업이 완료되어야 다음 작업을 시작할 수 있습니다.비동기(asynchronous) 프로그래밍: 작업이 동시에 진행될 수 있으며, 하나의 작업이 완료되기를 기다리지 않고 다..

Rust와 Axum을 활용한 웹 백엔드 개발 - 기본 문법: 변수, 함수, 소유권

추천 실습자료 : Rust Exercise Rust는 안전성, 성능, 병행성을 강조하는 시스템 프로그래밍 언어입니다. 다른 언어와 구별되는 Rust만의 독특한 문법과 개념들은 처음에는 다소 복잡하게 느껴질 수 있지만, 이를 이해하면 강력하고 안정적인 코드를 작성할 수 있습니다. 이번 글에서는 Rust의 핵심 문법인 변수, 데이터 타입, 함수, 제어 흐름, 소유권, 구조체와 열거형 등을 자세히 살펴보겠습니다. 1. 변수와 가변성1.1 변수 선언과 불변성Rust에서 변수는 기본적으로 불변성(immutable)입니다. 즉, 변수의 값을 변경할 수 없습니다.fn main() { let x = 5; println!("x의 값은 {}입니다.", x); // x = 6; // 컴파일 에러 발생: 불변..

Rust와 Axum을 활용한 웹 백엔드 개발 - Rust 개발환경 구축

소개올바른 개발환경을 구축하는 것은 효율적이고 생산적인 개발을 위해 필수적입니다. 이 글에서는 Windows, Linux, MacOS에서 Rust 백엔드 개발을 위한 환경을 구축하는 방법을 설명합니다. 사용할 도구와 기술로는 언어 자체인 Rust, 패키지 관리 도구인 Cargo, 그리고 코드 에디터인 Visual Studio Code가 있습니다.1. Rust 설치Rust는 rustup이라는 공식 설치 도구를 통해 쉽게 설치하고 관리할 수 있습니다.1.1 Windows에서 Rust 설치rustup 설치 프로그램 다운로드Rust 설치 사이트에서 rustup-init.exe 설치 프로그램을 다운로드합니다.설치 프로그램 실행다운로드한 rustup-init.exe 파일을 실행합니다.설치 옵션 선택터미널 창이 열리..

[Docker] python 경량화 + 빌드속도 최적화 이미지 (+ selenium 설정 추가) 240906 문제 해결 추가

ㅁ 파일구조폴더구조는 이렇게 가져가는게 Docker로 배포하기 편한듯ㅁDockerfile3.9 버전 러버라 파이썬 쓸 떈 3.9 이미지를 주로 사용캐싱을 활용한 빌드속도 최적화셀레니움을 위한 크롬 설치 ### 20240906 수정 Stable 버전인 128.0.6613.119-1 크롬 설치 후 셀레니움 실행 시 disconnected: not connected to DevTools 에러 발생1. 윈도우에서 테스트해보니 에러메시지 [WinError 193] %1은(는) 올바른 Win32 응용 프로그램이 아닙니다webdriver-manager가 THIRD_PARTY_NOTICES.chromedriver를 가져오는 것을 확인하여 수정해봄 -> 도커에서는 적용되지 않음.2. 결국 특정 버전의 크롬을 설치하는 방..

Rust AXUM+MongoDB로 RestAPI 서버 개발하기 - AWS Lambda 활용 이미지 리사이징

AWS Lambda를 활용하여 Amazon S3에 업로드된 이미지를 자동으로 리사이징하는 과정을 자세히 다룹니다. 이 기능은 서버리스 아키텍처를 통해 이미지 처리를 자동화하여 리소스 사용을 최적화하고, 응용 프로그램의 성능을 향상시킬 수 있습니다. AWS Lambda와 S3 버킷 간의 연동 방법부터 실제 이미지 처리 로직의 구현까지, 단계별로 알아보겠습니다.0. 리소스 최적화의 중요성이번 편에서는 AWS Lambda를 이용해 S3 버킷에 업로드된 이미지 파일을 자동으로 리사이징하는 방법을 살펴봅니다. 이 과정은 효율적인 이미지 관리를 가능하게 하며, 웹사이트의 로딩 시간을 줄이고 사용자 경험을 향상시키는 데 중요한 역할을 합니다.1. AWS Lambda와 S3 트리거 설정, S3 권한 부여AWS Lamb..

Rust AXUM+MongoDB로 RestAPI 서버 개발하기 - AWS S3 연동 이미지 업로드

Rust를 사용한 Axum 서버에서 Amazon S3에 이미지를 저장하는 과정에서 Pre-signed URL을 활용하는 방법은 클라이언트가 서버를 거치지 않고 직접 S3에 파일을 업로드할 수 있게 해주면서도 보안을 유지할 수 있는 효율적인 방법입니다. 이 과정에서 Axum 서버는 Pre-signed URL을 생성하고, 업로드 될 파일의 content_type과 S3 key를 관리하여 데이터베이스에 저장하는 로직만 수행합니다. 다음은 이 과정을 설명하기 위한 순서와 설명입니다: 0. 사전 준비 사항 AWS 이미지를 저장해놓을 S3 Bucket 디렉토리 구조는 원본 이미지를 저장해놓을 raw/ 이미지 크기 별 폴더 w140/ w600/로 구분해놓았습니다. lambda 활용하여 이미지 크기를 조정하여 저장해놓..

Rust AXUM+MongoDB로 RestAPI 서버 개발하기 - 프로젝트 설정

Rust AXUM을 활용한 RestfulAPI 웹 애플리케이션 서버를 개발해봅시다. 전체적인 폴더구조, 흐름은 다음과 같습니다. 프로젝트 시작 cargo new {project_name} --bin 0. 프로젝트 폴더 구조 src/ |-- main.rs |-- .env |-- {domain}/ |-- mod.rs |-- entity.rs |-- handler.rs |-- usecase.rs |-- repository.rs |-- dto/ |-- mod.rs |-- req.rs |-- res.rs |-- config/ |-- mod.rs |-- database.rs 1. 필수 패키지 설치 먼저, 프로젝트를 시작하기 전에 Cargo.toml 파일에 다음 패키지들을 추가해야 합니다: axum: 웹 애플리케이션..

Dealing with sub-packages (or sub-modules) in Rust

When dealing with sub-packages (or sub-modules) in Rust, especially in larger projects like an axum web application, structuring your code effectively is key to maintaining clarity and manageability. Let's address your example structure and how you can organize and reference these modules and sub-modules. Given your project structure: src/main.rs src/photo/handler.rs src/photo/usecase.rs src/pho..

Mastering Rust: A Guide to Managing Modules and Packages

Introduction: Rust, a system programming language known for its safety and performance, offers a powerful module system that facilitates the organization and reuse of code. Understanding how to effectively manage modules and packages is essential for Rust developers looking to build robust and maintainable applications. This guide will take you through the basics of Rust's module system, package..

Understanding Result, map_err, ?, Ok, and Err in Rust with Axum JWT Authentication

Rust's powerful error handling model is exemplified by its use of the Result type, which represents either success (Ok) or failure (Err). This model encourages explicit handling of all possible errors, making Rust programs more robust and reliable. In the context of web development with Axum, a web framework for Rust, understanding how to effectively use Result, map_err, ?, Ok, and Err is crucia..

반응형