반응형

슬기로운 개발자생활/Rust 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을 활용한 웹 백엔드 개발 - Axum 프레임워크 소개

1-1. Axum의 특징과 설치Axum의 주요 특징Axum은 Rust로 작성된 경량의 웹 애플리케이션 프레임워크로, Tokio 비동기 런타임을 기반으로 합니다. 주요 특징은 다음과 같습니다:간단한 라우팅: 함수와 경로를 간단하게 매핑하여 핸들러를 정의할 수 있습니다.비동기 지원: Tokio 런타임과 함께 비동기 프로그래밍을 효율적으로 지원합니다.확장성: 다른 라이브러리와의 통합이 용이하며, 필요한 기능을 모듈화하여 사용할 수 있습니다.상태 관리 용이성: 애플리케이션 상태를 쉽게 공유하고 관리할 수 있습니다.Axum 설치하기Axum을 사용하려면 Cargo.toml 파일에 의존성을 추가해야 합니다.[dependencies]axum = "0.7"tokio = { version = "1", features = ..

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; // 컴파일 에러 발생: 불변..

반응형