다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제
개발/Programming
/ 2025. 1. 6.
다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우에는 세션 불일치 문제가 발생할 수 있습니다. 만약 서버 A, B를 관리하고 있을 때, 로드밸런서는 사용자의 요청을 상황에 맞게 A, B 중 한 곳으로 전달합니다. 유효한 로그인 요청이 A 서버로 처음 도착하면 사용자에 대한 세션 정보는 A 서버에 저장됩니다. 이후에 해당 사용자의 또 다른 요청이 로드 밸런서에 도착했을 때, B 서버로 도착하게 되면 사용자의 세션 데이터가 존재하지 않기 때문에 요청이 제대로 처리되지 않습니다. 이를 세션 불일치 문제라고 합니다.세션 불일치 문제는 어떻게 해결할 수 있나요? 🤔세션 불일치 문제는 크게 3가지 방식으로 해결할 수 있습니다. 스티키 세션 방식, 세션 클러스터링 방식, 스토리지 분리 방식입니다.스티키 세션..
데이터베이스 시스템의 동시성 제어 (MVCC, Lock-Based)
개발/DB&SQL
/ 2024. 12. 18.
대표적인 동시성 제어 방식으로 MVCC(Multi-Version Concurrency Control) 와 Lock-Based Concurrency Control이 있습니다.MVCC(Multi-Version Concurrency Control)MVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다. 각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못합니다.또한 읽기 작업 시 잠금을 사용하지 않아 높은 동시성을 제공합니..
[JAVA] 객체복사 방법: 얕은 복사 VS 깊은 복사
개발/Java
/ 2024. 11. 27.
자바에서 객체를 복사할 때 얕은 복사와 깊은 복사라는 두 가지 방식이 있습니다. 먼저 Book과 Author라는 두 클래스를 사용해서 예제를 살펴볼게요. Book은 책의 이름(name)과 저자(author) 정보를 가지고 있고, Author는 저자의 이름을 가지고 있습니다.class Book { private String name; // 책 이름 private Author author; // 저자 public Book(String name, Author author) { this.name = name; this.author = author; } public Book shallowCopy() { // 얕은 복사 return new Book(t..
[SQL] ORACLE UNION과 UNION ALL의 차이
개발/DB&SQL
/ 2024. 11. 20.
SQL 에서 UNION/UNION ALL은 두 개 이상의 조회 결과를 하나로 합치는 연산자입니다. JOIN과의 차이점은 JOIN은 가로 방향으로 합친다면, UNION은 세로 방향으로 합칩니다.이제 UNION과 UNION ALL 두 연산자의 차이를 보겠습니다.SELECT 10 DATA FROM SYS.DUALUNION SELECT 10 DATA FROM SYS.DUALUNIONSELECT 20 DATA FROM SYS.DUAL-----SELECT 10 DATA FROM SYS.DUALUNION ALLSELECT 10 DATA FROM SYS.DUALUNION ALLSELECT 20 DATA FROM SYS.DUAL위 쿼리를 수행하면,UNION은 10과 20으로 2개 데이터만 출력됩니다. 반면, UNION ..
[Spring] @Value Annotation 사용 및 주의사항
개발/Spring&JPA
/ 2024. 11. 14.
@Value Annotation 개요Spring Framework에서 제공하는 @Value 어노테이션은 외부 설정 파일(예: application.properties 또는 application.yml)에서 값을 주입하는 데 사용됩니다. 이 외에도 주로 환경 변수, 시스템 속성 등을 주입할 수 있습니다. 일반적으로 SpEL(Spring Expression Language) 표현식이나 스타일 속성 자리표시자를 사용합니다.사용예시import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Componentpublic class MyComponent { @Value("$..
[SQL] ORACLE CONNECT BY 사용법 (계층형 쿼리)
개발/DB&SQL
/ 2024. 11. 13.
오라클 SQL에서 CONNECT BY 절은 부서 조직도, 메뉴 트리 등 계층적 구조를 만들 때 주로 사용하는 방법이다. 그리고 CONNECT BY 절과 LEVEL을 사용하면 순차적인 데이터를 생성할 수가 있어서, 특정 값만큼 행을 늘리거나 시작일자와 종료일자 사이의 날짜를 채워서 행을 늘리는 등의 가상의 데이터를 만들 때 유용하게 사용할 수 있다. CONNECT BY 절의 사용법은 광범위하기 때문에, 아래는 실무에서 자주 사용하는 예시 몇 가지를 사용하여 설명하였다.계층형 쿼리 조회 하는 법SELECT empno , ename , mgr , job , LEVEL FROM empCONNECT BY PRIOR empno = mgr START WITH mgr IS NULL ..