profile
뭐라도 해보자
post-thumbnail

멀티 서버 환경에서의 동시성 제어

# 분산락이란 여러 대의 서버나 프로세스가 동시에 같은 공유 자원에 접근할 때, 데이터 충돌을 막기 위한 방법이다. 낙관적 락과 비관적 락은 DB에서, `synchronized`는 JVM에서 동작한다면, 분산락은 여러 서버가 공유할 수 있는 외부 저장소를 두고 여기

2026년 9월 29일
·
0개의 댓글
·

Java의 동시성 제어

앞서 살펴본 낙관적 락과 비관적 락은 DB에서의 동시성 제어 방법이다. Java 애플리케이션에서도 여러 Thread가 하나의 자원을 동시에 접근하면서 동시성 문제가 발생할 수 있는데, Java에서는 synchronized 키워드를 통해 이러한 동시성 문제를 제어할 수

2026년 9월 25일
·
0개의 댓글
·

낙관적 락과 비관적 락

앞선 글에서 낙관적 락과 비관적 락을 각각 적용해 보았다.낙관적 락은 충돌이 드물 것이라고 가정하고, 일단 작업을 진행한 뒤 저장하는 시점에 충돌 여부를 확인하는 방식이다.반대로 비관적 락은 충돌이 발생할 가능성이 높다고 가정하고, 데이터를 조회하는 시점부터 다른 트랜

2026년 9월 24일
·
0개의 댓글
·
post-thumbnail

비관적 락 (Pessimistic lock)

충돌이 잦을 거라고 가정하고, 다른 트랜잭션이 해당 데이터를 동시에 변경하지 못하도록 락을 획득하고, 필요한 경우 다른 트랜잭션이 락이 해제될 때까지 대기하게 한다.SELECT ... FOR UPDATE처럼 조회 시점에 row를 잠근다.이는 낙관적 락과 반대로 "선 차

2026년 9월 23일
·
0개의 댓글
·
post-thumbnail

낙관적 락 (Optimistic Lock)

If data conflicts are rare, a strategy where data is read without placing any physical locks."충돌은 드물게 일어날 것"이라는 가정을 전제로 하는 전략이다. 그래서 미리 락을 걸어 접근을 막는 대

2026년 9월 22일
·
0개의 댓글
·

Spring batch

매일 새벽 수백만 건의 결제 정산, 대량 이메일 발송, 로그 집계처럼 정해진 시간에 대량의 데이터를 처리해야 할 때 REST API로는 감당이 안 된다. 이런 상황을 위한 게 Spring Batch다.Spring Batch는 대용량 데이터를 일괄 처리(Batch Pro

2026년 5월 17일
·
0개의 댓글
·

Spring SSE구현

프로젝트를 구현하는 중, OpenAI API와의 채팅 기능을 개발하게 되었다. 실시간으로 AI 응답을 스트리밍해야 했고, 자연스럽게 WebSocket과 SSE 중 하나를 선택해야 하는 상황에 놓였다. 결론적으로 SSE를 선택했다. 이 글에서는 WebSocket과 SSE

2026년 4월 18일
·
0개의 댓글
·
post-thumbnail

OAuth2로 구글로그인 구현하기

현재 프로젝트에서 구글 로그인과 일반 로그인을 같이 사용하려고 한다.또, 해당 프로젝트에서는 Access Token + Refresh Token의 JWT 인증 방식을 사용하고 있어, 이에 맞춰야 했다.클라이언트가 구글에 로그인을 요청한다.구글이 인가 코드를 반환한다.클

2026년 4월 15일
·
0개의 댓글
·

CustomOAuth2User 구현하기

프로젝트를 구현하면서 OAuth2를 사용하기로 결정한 후, 어떻게 인증을 구현할 것인지 고민했다.우선 이 방식에서는 기존에 사용하던 UserDetails 구현체인 CustomUserDetails를 그대로 사용하는 것이 적절한지 고민이 되었다.결론적으로,OAuth2 로그

2026년 4월 13일
·
0개의 댓글
·

로컬 MySQL 포트 충돌 해결기

Spring Boot 프로젝트에서 Docker Compose로 MySQL을 띄우고 연결하려 했는데, 아래 에러가 계속 발생했다.권한 부여(GRANT ALL PRIVILEGES)도 해보고, IP를 172.18.0.2로 직접 지정도 해봤지만 근본적으로 해결되지 않았다.를

2026년 2월 25일
·
0개의 댓글
·
post-thumbnail

Board 프로젝트 - Image 업로드 및 콘텐츠 관리 구조

WYSIWYG 에디터를 프론트엔드에서 사용한다는 가정하에 백엔드를 구현하고자 하니 고민이 생겼다.이미지를 어떻게 처리할까?가장 단순한 방법은 게시글 저장 시 이미지를 함께 전송하는 것이다. 하지만 WYSIWYG 에디터 특성상 사용자는 글을 쓰는 도중에 이미지를 첨부하고

2026년 2월 19일
·
0개의 댓글
·

데이터베이스 보안

데이터베이스 시스템에서는 다양한 사용자가 존재하며, 각 사용자에게 적절한 권한을 부여해야 보안을 유지할 수 있음GRANT: 사용자에게 권한 부여GRANT 명령어를 사용하여 특정 사용자에게 데이터베이스에 대한 접근 권한을 부여할 수 있음각 권한은 SEELCT, INSER

2026년 1월 29일
·
0개의 댓글
·

인덱스 및 데이터 최적화

데이터베이스에서 검색 속도를 향상시키기 위한 자료구조책의 목차처럼, 원하는 데이터를 빠르게 찾을 수 있도록 도와줌특정 컬럼에 인덱스를 생성하면 해당 컬럼을 검색할 때 속도가 크게 향상됨기본적으로 모든 인덱스는 이 두 개념 중 하나에 속함데이터 저장 방식과 검색 방식에

2026년 1월 28일
·
0개의 댓글
·

트랜잭션

트랜잭션

2026년 1월 27일
·
0개의 댓글
·

정규화

정규화를 하지 않으면, 데이터 수정, 삽입, 삭제 시 문제가 발생할 수 있음삽입 이상 (Insertion Anomaly)데이터를 삽입할 때 불필요한 데이터까지 입력해야 하는 문제수정 이상 (Update Anomaly)중복된 데이터가 존재할 경우, 하나만 수정하면 데이터

2026년 1월 26일
·
0개의 댓글
·

데이터베이스 개요

체계적으로 정리된 데이터의 집합으로, 여러 사용자가 데이터를 효율적으로 저장, 검새, 수정, 삭제할 수 있도록 관리하는 시스템일반적으로 데이터베이스는 데이터베이스 관리 시스템(DBMS)을 통해 데이터를 운영하며, 데이터의 무결성과 일관성을 유지하도록 설계됨데이터 VS

2026년 1월 24일
·
0개의 댓글
·

네트워크 보안과 실무

네트워크 보안이 필요한 이유개인 정보 보호사용자 계정, 신용카드 정보 등 중요한 데이터가 보호되지 않으면 유출될 수 있음데이터 변조 방지전송 중 데이터가 변조되지 않도록 보호해야 함\-시스템 다운 방지DDos 공격 등으로 네트워크가 마비되지 않도록 보안이 필요악성 코드

2026년 1월 23일
·
0개의 댓글
·

데이터링크 계층

같은 네트워크 내에서 신뢰성 있는 데이터 전송을 담당즉, 같은 LAN 내에서 장치 간 데이터를 주고 받는 역할을 함데이터링크 계층의 역할네트워크 계층에서 받은 데이터를 프레임(frame)단위로 변환하여 물리 계층으로 전송같은 네트워크 (LAN) 내에서 오류 없이 데이터

2026년 1월 21일
·
0개의 댓글
·

네트워크 계층

데이터를 네트워크를 통해 목적지까지 전달하는 역할을 수행라우팅을 통해 최적으리 경로를 선택하고, IP 주소를 기반으로 패킷을 전달하는 것이 핵심 기능라우터(Router)라우터는 네트워크 간에 데이터 패킷을 전달하고 최적의 경로를 선택하는 역할을 수행라우터는 IP 주소를

2026년 1월 20일
·
0개의 댓글
·

전송 계층

네트워크 통신에서 송신지와 수신자 간의 데이터 전송을 관리하고, 신뢰성과 정확성을 보장하는 역할 수행TCP/IP 4계층 모델과 OSI 7계층 모델에서 공통적으로 정의되며, 데이터가 손실 없이 정확히 전달되도록 다양한 메커니즘을 제공함신뢰성 있는 연결, 데이터 순서 보장

2026년 1월 19일
·
0개의 댓글
·