![[Docker] Volume, Mount](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbR5uFQ%2FbtsLanDc47G%2FAAAAAAAAAAAAAAAAAAAAAOsctZJ8a98Q1naGSc469whIoXdBBn7q69T3dh5Yvgg1%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DxlRX9pNHQZ0I4CH85WSlkSeGMsU%253D)
Docker Volume과 Mount 개념 정리Docker는 애플리케이션을 컨테이너로 실행할 때 데이터를 효율적으로 관리하기 위해 다양한 방법을 제공함. 그중에서 Volume과 Mount는 데이터를 저장하고 공유하는 데 중요한 역할을 함. 이 글에서는 Volume과 Mount의 개념, 차이점, 사용법을 간결하게 정리함.1. Docker VolumeVolume은 Docker에서 데이터를 저장하고 관리하기 위한 기본적인 메커니즘임. 컨테이너와 독립적으로 데이터를 관리하며, Docker 엔진이 이를 제어함.컨테이너 간 데이터 공유: 동일한 Volume을 여러 컨테이너에서 공유 가능함.호스트 독립성: 호스트 파일 경로에 의존하지 않으며, Docker가 데이터를 관리함.데이터 지속성: 컨테이너 삭제 시에도 데이터..
![[DB] 지속성(Durability)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FKKfRT%2FbtsK3f5oIRP%2FAAAAAAAAAAAAAAAAAAAAAAKkXXZy0-FLP1wjAgsqfWxQQC6rKbFRNGGgJBwoNFkd%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3Dp7bwLCmSEaGlA8dXc855eXUlo4k%253D)
지속성(Durability)지속성(Durability)이란 데이터베이스 시스템에서 트랜잭션이 성공적으로 커밋되었을 경우, 그 변경사항이 비휘발성(non-volatile) 저장소에 영구적으로 저장되어 시스템 장애가 발생하더라도 손실되지 않도록 보장하는 성질을 말함. 이는 데이터베이스의 ACID 속성 중 하나임.지속성의 핵심 원칙트랜잭션 커밋 이후:트랜잭션이 커밋되면, 해당 변경사항은 반드시 디스크와 같은 비휘발성 저장소에 영구적으로 저장되어야 함.예를 들어, 전자상거래에서 사용자가 결제를 완료(커밋)한 이후에는 시스템이 꺼지거나 문제가 발생하더라도 결제 내역이 보존되어야 함.장애 복구 가능성:장애 발생 시에도 트랜잭션의 커밋 상태는 항상 복구 가능해야 함.지속성을 보장하기 위한 기술들WAL (Write A..
![[DB] 일관성(Consistency)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdCtJjt%2FbtsK3mJ0PqD%2FAAAAAAAAAAAAAAAAAAAAANWiatsdiBq_pwcXRhMBQCXnGXk4nkCHXlDtV3pFXF58%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DFF1MpnMXxM2ruhLMZM8UEpCyxBk%253D)
데이터베이스의 일관성 (Consistency)데이터 일관성은 데이터베이스 및 시스템에서 중요한 개념으로, 데이터의 정확성과 신뢰성을 유지하기 위한 여러 원칙과 메커니즘으로 구성됨. 이를 크게 두 가지로 나눌 수 있음:1. 데이터 자체의 일관성 (Consistency in Data)데이터 자체의 일관성은 데이터가 시스템 내에서 항상 올바른 상태를 유지하는 것을 의미함. 이는 아래의 원칙들로 정의됨:- 사용자 정의 규칙 (Defined by the user)사용자가 설정한 비즈니스 규칙이나 데이터 제약 조건을 만족해야 함.예: 고객의 나이가 음수일 수 없거나, 제품의 가격이 0보다 작을 수 없음.- 참조 무결성 (Referential Integrity)데이터베이스에서 외래 키를 사용하는 경우 참조 무결성을 ..
![[DB] 고립성(Isolation)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcJjFMv%2FbtsK1KFH7m1%2FAAAAAAAAAAAAAAAAAAAAAAbZCXTzpc8-NZB0lXtqG2AhtazPInGDyK3ODSRbA6Sk%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DXbnKZpj%252F%252BHyaM8R6e752L8IXzrE%253D)
데이터베이스의 고립성(Isolation)데이터베이스에서 고립성(Isolation)은 트랜잭션이 서로 영향을 주지 않고 독립적으로 실행될 수 있도록 보장하는 ACID 특성 중 하나임.이는 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 자신의 작업을 마칠 때까지 다른 트랜잭션의 영향을 받지 않음을 의미함.트랜잭션과 고립성트랜잭션이란?데이터베이스의 논리적 작업 단위.여러 작업이 하나의 작업 단위로 실행되고, 모두 성공하거나 모두 실패해야 함.예: 은행 계좌 간 송금 시, 한 계좌에서 돈을 인출하고 다른 계좌로 입금하는 작업.고립성의 필요성트랜잭션이 실행되는 동안, 다른 트랜잭션의 중간 상태를 읽거나 영향을 받지 않아야 데이터의 일관성과 신뢰성을 유지할 수 있음.읽기 현상(Read Phenomena)고립성 ..
![[AT] Django Middleware Slack Webhook](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fcu0hBu%2FbtsKZ5oZcau%2FAAAAAAAAAAAAAAAAAAAAADtlZ6W9LCvNCVg4Zz6T1xMlDzbAMQMIPVkGwGevNMyw%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DKW4m77RRkQ5K19pQ8di6WEeVkrU%253D)
Django Middleware를 활용한 에러 알림 구현AS-IS문제 상황 인지Django 프로젝트에서 발생하는 에러를 실시간으로 파악하지 못해 대응 속도가 느림.해결하려고 하는 문제에러를 실시간으로 감지하고 알림을 보내는 방법이 필요함.만들고 싶은 기능에러 발생 시 DB에 로그를 기록하고, Slack으로 알림을 전송하는 시스템.Challenge문제 해결을 위해 고민한 내용Django 에러를 효과적으로 감지하기 위해 적합한 구조를 선택해야 했음.Slack Webhook API를 활용하여 알림을 전송하는 효율적인 방법 구현.어떻게 기술적으로 해결했는지Django의 Middleware와 process_exception 메서드를 활용해 에러를 감지.Python의 logging 모듈로 에러를 DB에 기록.Sla..
![[DB] 원자성(Atomicity)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbfsrr8%2FbtsKX0UM4CE%2FAAAAAAAAAAAAAAAAAAAAADLu1HMedd8br0oAk6hA7QfQS0HKiGcfUjfW5JT4wynY%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DHADY4VWMGNFx6VBXYQAYKtCZdkc%253D)
원자성(Atomicity)이란?데이터베이스 관리 ACID 속성 중 하나이다.트랜잭션 내의 모든 쿼리는 성공하거나, 실패 시 전부 롤백(취소) 되어야 한다.트랜잭션 내의 모든 쿼리가 성공해야만 완료(commit)이 된다.트랜잭션 내에 100개의 쿼리가 있다면, 이 100개 모두가 성공해야 데이터베이스에 반영된다.1개의 쿼리라도 실패 시, 롤백이다.시스템 오류로 인해 트랜잭션 중에 데이터베이스가 다운되거나 오류가 발생해도, 시스템은 트랜잭션을 "완전한 실패 상태"로 간주한다.이후 데이터베이스 복구 시, 실패한 트랜젹선의 영향을 전부 무효화하고 이전 상태로 되돌린다.요약원자성이란 원자(atom)에서 유래된 것으로, 더 이상 쪼갤 수 없는 최소 단위라는 의미를 가진다.트랜잭션 내에 100개워 쿼리 중 99개가 ..
![[DB] 트랜잭션(Transaction)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbpFhZE%2FbtsKXxRL4UG%2FAAAAAAAAAAAAAAAAAAAAAOLAhpBsjlbG_39M-zONFQDkkr14Gmj_Ys62rN60ZP5g%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DqZiPFvPb%252B5vookEb6iZDo1Oza9E%253D)
트랜잭션데이터베이스에서 하나의 작업 단위로 처리하는 SQL 쿼리들의 집합모든 쿼리가 성공하거나 실패하는 "All or Nothing" 원칙트랜잭션 주요 단계Transaction Begin트랜잭션의 시작을 알림.여러 SQL 작업이 묶이게 된다.Transaction COMMIT트랜잭션 내에서 발생한 모든 변경 사항을 데이터베이스에 영구적으로 저장Transaction ROLLBACK트랜잭션 도중 오류가 발생하거나 취소하고 싶을 때, 모든 변경 사항을 초기 상태로 복구예상치 못한 종료시스템이 갑자기 종료되거나 충돌 시, 트랜잭션은 자동으로 ROLLBACK 처리커밋 중 시스템이 다운된다면?큰 트랜잭션을 할 경우 커밋 중에 시스템이 다운될 가능성이 더 크다.커밋이 빠르다면 시스템이 다운될 가능성이 낮아진다.해결 ..
![[Django] ORM](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbWArqm%2FbtsKDS3sBc0%2FAAAAAAAAAAAAAAAAAAAAAMR1Prhb5hdX2QAK6ZAfmh12FWqVoYGbyeZKT0DN2qY0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DG%252FnLkQdr8CtBhb%252FE%252B8IJw6rYq1I%253D)
Django ORM 활용법Django ORM(Object-Relational Mapping)은 Django 프레임워크에서 데이터베이스를 쉽게 다룰 수 있도록 도와주는 기능임. SQL을 직접 작성하지 않고도 Python 코드로 데이터베이스를 조작할 수 있어 효율적임. 1. 데이터 필터링 (Filtering Data)데이터베이스에서 특정 조건에 맞는 데이터를 필터링하는 방법.# 특정 조건으로 데이터 필터링from myapp.models import MyModel# 예: name 필드가 'Alice'인 데이터 필터링filtered_data = MyModel.objects.filter(name='Alice')filter() 메서드를 사용해 특정 조건에 맞는 데이터를 조회함. 여러 조건을 결합하여 사용할 수도 있..