학습기록3 Scale-up을 적용한 무상태 웹 계층에서의 세션 불일치 문제 사용자가 늘어남에 따라 웹 계층은 수평적 규모 확장을 하게 된다. 하지만, HTTP는 무상태 프로토콜로 사용자가 어느 웹 서버로 접속하느냐에 따라서 세션 데이터가 불일치하는 문제가 발생할 수 있을 것이다. "이 문제에 대해 어떻게 해결해야 하나?"에 대해 알아보았다. 우선, 내가 고민한 상황을 그림으로 표현하면 아래와 같다. 사용자가 로그인 등의 작업을 수행하고, 인증을 요청한다. 로드밸런서를 통해 A서버로 인증 요청이 전달되고, A서버는 인증을 완료한 뒤 사용자의 세션 정보를 A서버에 저장한다. 이후, 사용자가 인증이 필요한 서비스를 접속하는데 B서버나 C서버로 전달되면??? -> B, C에는 사용자의 세션 데이터가 없기 때문에 재인증을 해야 할 것이다. 이렇게 데이터 정합성 문제가 발생한다. 그럼 이.. 2023. 7. 5. 사용자 수에 따른 규모 확장성 사용자 수가 증가함에 따라 시스템 구조에 어떤 변화를 줘야 하는지에 대해 알아보고자 정리를 한다. 해당 내용은 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」 1장 내용이다. 내용을 정리하면서, 중간중간 이해가 어려운 부분에 대해서 다른 포스팅으로 정리하며, 내 머릿속에도 설계에 대한 사고력을 확장시켜 나가고자 한다. 본 내용은 단일 서버부터 시작하여 사용자 수에 따른 시스템 변화를 알아본다. 1. 단일 서버 1. 사용자는 도메인명을 이용하여 웹 사이트에 접속한다. 때문에 DNS 질의를 통해 주소변환 과정을 거친다. 2. DNS 조회 결과로 IP주소가 반환. 3. 해당 IP주소로 요청을 보내면 4. 요청을 받은 웹 서버가 클라이언트에게 응답을 반환한다. 2. 데이터베이스 분리 사용자가 늘어남에 따라.. 2023. 6. 30. 데이터 동시성 제어의 목적과 유형(Lock과 트랜잭션 격리수준) 동시성 제어 데이터베이스는 공유를 목적으로 하기 때문에 가능한 많은 트랜잭션을 동시에 수행시켜야 한다. 하지만, 동시에 수행함으로써 같은 데이터를 공유한다면 데이터의 일관성이 훼손될 수 있다. 그래서 동시에 다양한 트랜잭션의 데이터 접근을 제어하기 위한 DBMS 기능이 바로 동시성 제어인 것이다. 각 트랜잭션이 동시에 같은 데이터에 접근하는 경우는 아래 세 가지가 있을 것이다. T1(작업종류) T2(작업종류) 발생 가능한 문제 읽기 읽기 없음 읽기 쓰기 - Dirty Read(잘못된 값 읽기) - Non-Repeatable Read (반복 불가능 읽기) - Phantom Read(유령데이터 읽기) 쓰기 쓰기 갱신손실 첫 번째 상황은 데이터 변경의 여지가 없으므로 아무 문제도 발생하지 않는다. 두 번째 상.. 2023. 3. 13. 이전 1 다음