반응형

Log 264

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..

주문 수집 발송 처리 자동화 - 스마트스토어 톡스토어 쿠팡 인터파크

커머스 스토어를 운영하는 많은 사업자들이 느끼는 어려움 중 하나는 주문 관리와 배송 처리의 비효율성입니다. 매일 쏟아지는 주문을 수작업으로 처리하는 것은 시간과 노력이 많이 들며, 실수가 발생할 가능성도 높습니다. 이런 문제를 해결하기 위해 저희는 커머스 자동화 프로그램을 개발했습니다. ㅁ 주요 기능 및 강점1. 주문 수집 및 발송 처리 속도저희 커머스 자동화 프로그램의 가장 큰 강점 중 하나는 주문 수집부터 발송 처리까지의 속도입니다. 모든 프로세스가 자동으로 이루어지며, 10초 이내에 완료됩니다. 실제로는 프로그램이 내부적으로 10초의 대기 시간을 가지므로, 실제 처리 시간은 5~6초에 불과합니다. 셀레니움과 같은 가상 브라우저를 통한 자동화가 아닌, 세션정보를 통한 직접 요청방식으로 본 프로그램을 ..

프로그램 2024.06.13

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 활용하여 이미지 크기를 조정하여 저장해놓..

지프스피릿(JEEP Spirit) 남성 벨트 추천: BT-475 소가죽 남성벨트

세련된 남성을 위한 선택, 지프스피릿 BT-475 남성벨트 안녕하세요, 패션을 사랑하는 여러분. 오늘 여러분에게 추천하고 싶은 아이템은 바로 '지프스피릿(JEEP Spirit) 남성벨트 BT-475'입니다. 심플하면서도 강렬한 디자인 지프의 스피릿을 담은 이 벨트는 미니멀리즘과 실용성을 동시에 갖추었습니다. 심플한 버클 디자인이 특징으로, 어떤 정장에도 완벽하게 어울리며, 스타일을 한층 업그레이드시켜줄 것입니다. 최상의 품질, 소가죽의 견고함 BT-475는 고품질 소가죽으로 만들어져 오랫동안 사용해도 변함없는 견고함을 자랑합니다. 제품을 보호하고 보관할 수 있는 전용 케이스가 함께 제공되어, 선물하기에도 이상적입니다. 다양성을 존중하는 지프스피릿 다양한 사이즈와 조절 가능한 길이로 모든 분들이 편안하게 ..

실험실/마케팅 2024.03.21

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..

반응형