전체 글
-
[Mysql] 트랜잭션과 ACID 이해하기!DB/Mysql 2025. 4. 15. 15:51
🔸 트랜잭션(Transaction)이란? 트랜잭션이란, 하나의 작업 단위를 이루는 일련의 SQL 명령들의 집합입니다. 데이터베이스에서는 여러 작업이 모두 성공하거나, 모두 실패해야 일관성이 유지되기 때문에 트랜잭션이라는 개념이 중요합니다. 예를 들어, 은행 계좌 이체를 생각해볼게요. -- A 계좌에서 1000원 출금UPDATE accounts SET balance = balance - 1000 WHERE user_id = 'A';-- B 계좌에 1000원 입금UPDATE accounts SET balance = balance + 1000 WHERE user_id = 'B'; 이 두 쿼리는 반드시 함께..
-
REST API 설계 원칙 중 PUT, PATCH 차이 (멱등성 관련)Web 2025. 4. 15. 15:29
💡 멱등성(Idempotence)이란?멱등성은 수학과 컴퓨터 과학에서 사용하는 개념으로, 같은 연산을 여러 번 적용해도 결과가 처음 한 번 적용했을 때와 동일한 성질을 말합니다.REST API에서 멱등성은 다음처럼 이해할 수 있어요:"같은 요청을 여러 번 보내더라도 서버 상태가 한 번 요청했을 때와 같아야 한다."🔍 예시로 이해하기 DELETE /users/123 요청을 생각해봅시다. 한 번 보내면 사용자 123이 삭제됩니다. 두 번 보내도 이미 삭제되어 있어서 서버 상태엔 변화가 없습니다.→ 따라서 DELETE는 멱등한 메서드입니다.✅ HTTP Method와 멱등성 HTTP Method 멱등성 있음? 설명 GET ✅ ..
-
🌐 RESTful API 설계 원칙 정리하기!Web 2025. 4. 15. 15:17
RESTful API는 웹 서비스를 설계할 때 가장 널리 사용되는 아키텍처 스타일 중 하나입니다. "REST"는 Representational State Transfer의 약자로, 자원을 명확하고 일관된 방식으로 접근할 수 있도록 해주는 규칙을 말해요. 이번 포스트에서는 RESTful API를 설계할 때 지켜야 할 핵심 원칙들을 정리해볼게요. ✅ 1. 자원(Resource)은 명사로, URI는 단수 or 복수형 REST에서는 URI가 자원을 나타내야 해요. 즉, 무엇을 조작할지를 나타내는 거죠. 예시: ❌ GET /getUser ✅ GET /users/1 자원의 집합은 보통 복수형으로 표현해요. 동작 HTTP 요청 설명..
-
🔗 MSA 환경에서의 통신 방식 비교 (HTTP API vs gRPC vs 메시지 큐)Server 2025. 4. 15. 14:46
🔗 MSA 환경에서의 통신 방식 비교 (HTTP vs gRPC vs 메시지 큐)MSA(Microservices Architecture) 환경에서는 마이크로서비스 간 통신을 위해 다양한 방법을 사용할 수 있습니다. 대표적으로 HTTP/REST, gRPC, Message Queue가 있으며, 각각의 특성과 장단점이 다릅니다.📦 1. HTTP/REST✅ 장점 범용성: 대부분의 언어나 프레임워크에서 지원 학습 곡선이 낮음: 익숙하고 문서화 용이 디버깅 쉬움: curl, Postman 등 도구 사용 가능 브라우저 접근 가능: 호출 및 테스트 용이❌ 단점 속도 느림: JSON은 텍스트 기반이라 오버헤드 큼 Payload 큼: 바이너리보다 크고 파싱 속도 느림 실시간 처리 부적합: 대기 시간 발생⚡ ..
-
[Springboot] 외부 HTTP 호출 Retry와 재처리 전략Server/Spring Boot 2025. 4. 15. 14:28
외부 API를 호출할 때는 항상 실패 가능성을 염두에 두고 안정적인 Retry 정책을 세워야 합니다. 이 글에서는 Spring Boot 환경에서 Resilience4j를 활용한 Retry와 재시도 큐(DB + 스케줄러) 전략을 함께 설명합니다.✅ 1. 어떤 요청에 Retry를 적용해야 할까? Retry 가능한 요청 GET, HEAD, OPTIONS 같은 멱등한 요청 HTTP 5xx 또는 네트워크 예외 (timeout 등) Retry 피해야 할 요청 POST, PUT, DELETE 같은 멱등하지 않은 요청 비즈니스 오류나 중복 처리 위험이 있는 경우 ✅ 2. 어떤 예외/상태코드에 Retry를 걸어야 할까? Retry 권장: Sock..
-
[Mysql] 인덱스 생성 시 고려 사항 (테이블, 쿼리 예제)DB/Mysql 2025. 4. 15. 13:55
📌 MySQL 인덱스 생성 시 어떤 키로 만들어야 할까?아래와 같은 room_message 테이블과 쿼리가 있다고 가정해보겠습니다.CREATE TABLE room_message ( id BIGINT AUTO_INCREMENT PRIMARY KEY, create_date TIMESTAMP(6) NULL, update_date TIMESTAMP(6) NULL, delete_date TIMESTAMP(6) NULL, delete_flag BIT DEFAULT b'0' NULL, send_id BIGINT NULL, ..
-
외래키(FK) 의 제약조건에 대해 알아보자!DB/Mysql 2025. 4. 15. 11:23
🔍 외래 키 제약조건 예시 모음 (ON DELETE / ON UPDATE)아래는 다양한 FOREIGN KEY 제약 조건 조합과 그 작동 방식을 예시로 정리한 것입니다.✅ 예시 1: ON DELETE RESTRICT / ON UPDATE RESTRICT (기본값)FOREIGN KEY (dept_id) REFERENCES department(dept_id)ON DELETE RESTRICTON UPDATE RESTRICT 자식이 참조 중인 부모 row는 삭제/수정 불가 부서가 존재할 때는 해당 부서 직원 삭제 불가✅ 예시 2: ON DELETE CASCADE / ON UPDATE CASCADEFOREIGN KEY (dept_id) REFERENCES department(dept_id)ON DELETE C..
-
[Mysql] Transaction Row Lock 전파되는 경우?DB/Mysql 2025. 4. 15. 11:18
🔐 MySQL 트랜잭션과 외래키(FK) - Row Lock 전파되는 경우?MySQL에서 트랜잭션 중 Row Lock이 걸릴 때, 외래키로 연결된 다른 테이블에도 락이 전파될까?결론부터 말하면, 명시적으로 접근하지 않으면 자동으로 락이 전파되지 않는다.📌 기본 개념MySQL(InnoDB)은 행 단위 잠금(Row-level Locking)을 사용외래키(Foreign Key)로 연결되어 있어도, 관련 테이블의 row에 자동으로 락은 걸리지 않음CREATE TABLE parent ( id INT PRIMARY KEY);CREATE TABLE child ( id INT PRIMARY KEY, parent_id INT, FOREIGN KEY (parent_id) REFERENCES parent(id));..