반응형

AXUM 11

Rust Axum 테스팅 자동화 커리큘럼 학습 이야기

최종 소스코드 (깃허브 링크)  GitHub - devsosin/test_automation_rust_axumContribute to devsosin/test_automation_rust_axum development by creating an account on GitHub.github.com 기존 지식웹 풀스택 개발 경험이 좀 있고 AWS EC2 배포 경험, 도커 활용 Jenkins CI/CD 구축 등 다양하게 해봄python, javascript, java 언어 공부했고django, fastapi, expressjs, reactjs, springboot 사용해봤음 1. 클론 코딩전반적인 백엔드 API 구조는 알고 있었기 때문에 아래 영상을 보며 rust와 axum에 대해서 감을 잡음Rust Axum..

&Axum SQLx를 활용한 데이터베이스 중급 - 성능 모니터링

데이터베이스 성능 모니터링은 애플리케이션의 안정성과 효율성을 유지하는 데 필수적입니다. 데이터베이스의 성능 문제는 전체 시스템의 병목 현상을 초래할 수 있으므로, 적절한 모니터링을 통해 문제를 조기에 발견하고 해결하는 것이 중요합니다. 이번 글에서는 PostgreSQL의 성능 모니터링 도구를 소개하고, 실시간 쿼리 모니터링 및 분석 방법을 살펴보겠습니다.5-1. PostgreSQL의 성능 모니터링 도구 소개1. 성능 모니터링의 중요성문제 조기 발견: 성능 저하나 오류를 빠르게 감지하여 대응할 수 있습니다.자원 최적화: 시스템 자원의 효율적인 사용을 통해 비용 절감과 성능 향상을 도모합니다.사용자 경험 개선: 빠르고 안정적인 서비스를 제공하여 사용자 만족도를 높입니다.2. PostgreSQL의 내장 성능 ..

&Axum SQLx를 활용한 데이터베이스 중급 - 고급 쿼리와 최적화 기법

이번 글에서는 데이터베이스를 효율적으로 사용하기 위한 고급 쿼리 작성 및 최적화 기법을 다룹니다. 특히 CTE(Common Table Expressions), 인덱스 적용 방법, 복잡한 조인과 서브쿼리 작성, 쿼리 성능 분석 및 최적화 방법을 집중적으로 살펴보겠습니다. 이를 통해 복잡한 데이터베이스 작업을 효율적으로 처리하고, 애플리케이션의 성능을 향상시킬 수 있습니다.4-1. CTE(Common Table Expressions)의 이해1. CTE란 무엇인가?CTE(Common Table Expression)는 쿼리 내에서 임시 결과셋을 정의하고 이를 다른 쿼리에서 재사용할 수 있도록 하는 SQL 기능입니다. CTE는 WITH 키워드를 사용하여 정의하며, 복잡한 쿼리를 읽기 쉽고 유지보수하기 쉽게 만들어..

&Axum SQLx를 활용한 데이터베이스 중급 - 마이그레이션 (Migration)

데이터베이스 마이그레이션은 애플리케이션 개발에서 필수적인 부분입니다. 스키마 변경, 새로운 테이블 추가, 기존 테이블 수정 등의 작업을 체계적으로 관리해야 합니다. 이 글에서는 마이그레이션의 필요성과 개념을 이해하고, sqlx-cli를 사용하여 데이터베이스 마이그레이션을 관리하는 방법을 알아보겠습니다. 또한, 실제로 데이터베이스 스키마 버전 관리를 실습해 보겠습니다.3-1. 마이그레이션의 필요성과 개념 이해1. 마이그레이션이란?마이그레이션(Migration)은 데이터베이스의 스키마 변경 사항을 관리하고 적용하는 과정을 말합니다. 마이그레이션을 통해 다음을 수행할 수 있습니다.새로운 테이블 생성기존 테이블 수정 (컬럼 추가, 삭제, 변경)인덱스, 제약 조건 추가 또는 제거데이터 변환 또는 초기 데이터 삽입..

&Axum SQLx를 활용한 데이터베이스 중급 - 데이터베이스 연동

이번 글에서는 SQLx를 활용하여 Rust 애플리케이션과 PostgreSQL 데이터베이스를 연동하는 방법을 알아보겠습니다. SQLx는 Rust에서 비동기적으로 SQL 데이터베이스에 접근할 수 있도록 도와주는 강력한 크레이트입니다. 이전 글에서 Docker를 활용하여 PostgreSQL 환경을 설정했으므로, 이제 실제로 데이터베이스에 연결하고 데이터를 조작해 보겠습니다.2-1. SQLx 소개 및 설치1. SQLx란?SQLx는 Rust에서 비동기 SQL 데이터베이스 작업을 수행할 수 있게 해주는 크레이트입니다. 주요 특징은 다음과 같습니다.비동기 지원: Tokio와 같은 비동기 런타임과 함께 사용하여 비동기 데이터베이스 작업을 수행할 수 있습니다.커넥션 풀링: 효율적인 데이터베이스 연결 관리를 제공합니다.안..

&Axum SQLx를 활용한 데이터베이스 중급 - Docker를 활용한 PostgreSQL 환경 설정

이 글에서는 Docker와 Docker Compose를 활용하여 PostgreSQL 데이터베이스를 설정하는 방법을 알아보겠습니다. Docker를 사용하면 로컬 환경에 직접 설치하지 않고도 데이터베이스를 컨테이너로 관리할 수 있어 개발 환경 설정이 간편해지고 일관성을 유지할 수 있습니다.1. Docker와 Docker Compose 소개 및 설치1.1 Docker 소개Docker는 애플리케이션을 컨테이너로 패키징하여 배포하고 실행할 수 있는 플랫폼입니다. 컨테이너는 애플리케이션과 그 실행 환경을 함께 묶어 일관된 환경에서 실행할 수 있도록 도와줍니다.1.2 Docker 설치운영체제별 Docker 설치 방법은 다음과 같습니다.WindowsDocker Desktop for Windows를 설치합니다.설치 링크..

Rust와 Axum을 활용한 웹 백엔드 개발 - 간단한 가계부 웹 API

이번 섹션에서는 Rust와 Axum을 활용하여 간단한 가계부 웹 애플리케이션을 구축합니다. 프로젝트 요구사항을 분석하고, CRUD 엔드포인트를 구현하며, 요청 파라미터와 경로 변수를 처리하는 방법을 배워보겠습니다. 또한 JSON 데이터의 직렬화 및 역직렬화, 에러 처리와 커스텀 에러 응답까지 다루어 실제 서비스 개발에 필요한 기본기를 익힙니다.2-1. 프로젝트 요구사항 분석 및 설계1. 프로젝트 개요목적: 간단한 가계부 애플리케이션을 구축하여 수입과 지출을 관리할 수 있도록 합니다.주요 기능:가계부(Book) 생성, 조회, 수정, 삭제 기능수입/지출 기록(Record) 추가, 조회, 수정, 삭제 기능카테고리(Category) 관리 (선택 사항)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: 웹 애플리케이션..

반응형