본문 바로가기

전체 글

(242)
Round Robin의 한계와 Least Connections: 한글 생성 시스템에 L7 로드밸런서를 도입한 이유 들어가며 서비스를 운영하다 보면, 잘 돌아가고 있던 시스템이 어느 순간 더 이상 잘 돌아가지 않는 순간을 맞이하게 됩니다.회사에서 운영하던 한글(HWP) 자동 생성 시스템도 그랬습니다. 초기에는 요청이 많지 않아 큰 문제 없이 동작했지만, 사용자가 늘고 동시에 처리해야 하는 요청이 증가하면서 점점 병목이 드러나기 시작했습니다. 기존 한글 생성 시스템은 요청을 하나씩 순차적으로 처리하는 동기식 구조였습니다. 앞선 요청이 끝나야만 다음 요청을 처리할 수 있었고, 여러 사용자가 동시에 요청을 보내는 순간 모든 요청이 직렬로 쌓이게 되는 구조였습니다. 특히 한글 생성은 Windows 환경에 종속적이고, COM 기반 자동화를 사용하며 작업마다 소요 시간이 크게 달라서 하나의 요청이 예상보다 오래 걸리는 경우, 뒤..
레디스 - 캐시 전략 패턴 https://lob-dev.tistory.com/77 Redis : Cache Strategy pattern이 글은 특정 구현에 종속되는 내용을 제외한 이론 위주의 정리 글입니다. 그림에는 Redis가 표시되어 있지만 Ehcache, Memcached, Hazelcast, Caffeine Cache 등 다양한 구현체로 이를 구현할 수 있습니다. Readlob-dev.tistory.com본 게시글은 위 게시글을 정리하여 쓴 글입니다.Look Aside Cache 서비스에 사용자 조회 요청이 들어오면 우선 Cache에 저장된 데이터가 있는지 확인하는 전략이다. 초반 Cache 성능 향상 및 트래픽 급증 대비를 위해 (Cache miss 감소) cache warm up을 수행하는 것이 좋다. 이 방식은 Ca..
TLB란 무엇인가? 1. TLB란 무엇인가?TLB (Translation Lookaside Buffer) 는 페이지 테이블의 일부를 캐싱해두는 하드웨어 캐시 메모리 CPU는 메모리 접근 시 다음 단계를 거친다.가상주소 -> 페이지 테이블 탐색 -> 물리 주소메모리 접근을 여러 번 하므로 느리다. 그래서 CPU 근처에 TLB를 두어 변환 결과를 캐싱한다. 2. TLB를 쓰면 왜 빨라지나요?TLB가 없으면 매번 페이지 테이블을 메모리에서 탐색해야 한다.페이지 테이블 탐색은 보통 2~3회 이상의 메모리 접근이 필요하다. TLB 사용 시,최근에 변환했던 주소 매핑이 TLB에 저장TLB Hit 시, 변환 과정 생략 -> 바로 물리주소 접근메모리 접근 1회로 끝남. 3. MMU란 무엇인가요?MMU (Memory Management U..
쿠키와 세션의 차이 쿠키(Cookie)와 세션(Session)의 차이저장 위치클라이언트(브라우저)서버보안성낮음 (노출 가능)높음 (서버 관리)속도빠름 (로컬에 있음)느림 (서버 접근 필요)만료 시점설정된 시간 후 자동 만료브라우저 종료 or 세션 타임아웃사용 목적사용자 정보 유지, 자동 로그인로그인 상태 유지, 사용자 인증 관리 세션 방식의 로그인 과정(1) 클라이언트 -> 서버: ID/PW 전송(2) 서버 : 사용자 인증 성공 -> 세션 생성(3) 서버 : 세션 ID 발급 -> 쿠키에 담아 클라이언트로 전송(4) 클라이언트 : 이후 요청 시 쿠키에 세션 ID 포함(5) 서버 : 세션 ID 확인 -> 해당 사용자 정보 로드 -> 인증 유지 HTTP의 특성 — StatelessHTTP는 Stateless(무상태성) 프로토콜서..
Schema가 무엇인가요? Schema란 무엇인가?스키마는 데이터베이스의 전체 구도(설계도)를 의미한다.데이터가 어떤 구조로 저장되고, 어떤 관계를 가지며, 어떤 제약 조건이 있는지를 정의한 논리적 구조이다. Schema의 3계층 구조 이 개념은 DB를 논리적/물리적 독립성을 위해 세 단계로 나눈 모델이다. 외부 스키마(External Schema): 사용자나 응용 프로그램이 보는 DB의 일부분(View), 사용자별 맞춤 뷰 제공 (학생은 성적만, 교수는 반 전체 성적)개념 스키마(Conceptual Schema): DB 전체의 논리적 구조, 모든 데이터와 관계 정의, 전체 DB의 논리적 설계(엔티티, 관계 등 ERD 수준)내부 스키마 (Internal Schema): 데이터가 실제로 물리적으로 저장되는 방식, 물리적 저장구조 정..
트래픽이 높아질 때, DB는 어떻게 관리를 할 수 있을까 트래픽이 높아질 때 DB가 겪는 문제트래픽이 많아질수록 DB는 다음과 같은 부하를 받습니다. 1. 동시 커넥션 (Connection) 증가여러 클라이언트가 동시에 DB에 연결을 시도할 때 발생하는 문제DB는 요청마다 세션과 스레드를 생성하여 요청을 처리한다.동시 사용자가 많아질수록 DB가 관리해야 할 세션/스레드가 기하급수적으로 늘어난다.CPU 스레드 컨텍스트 스위칭이 잦아져 오버헤드 증가각 커넥션마다 메모리를 차지일정 커넥션 수가 넘으면 DB가 Connection Queue에 대기시킴 -> 지연 발생2. 쓰기/읽기 I/O 부하디스크와 메모리 간의 입출력 처리 속도가 한계에 부딪히는 현상. 트래픽이 폭주하면 디스크 I/O 큐가 꽉 차면서 병목이 생긴다.HDD 환경에서는 랜덤 I/O 속도가 급격히 떨어진다..
DB Locking에 대하여 DB Locking이란?Locking은 여러 트랜잭션이 동시에 같은 데이터를 읽거나 쓸 때, 데이터의 일관성을 보장하기 위해 DB가 데이터 접근을 제어하는 메커니즘이다. Lock의 종류Shared Lock(S-Lock): 읽기만 가능한 Lock. 여러 트랜잭션이 동시에 공유 가능Exclusive Lock(X-Lock): 쓰기 Lock. 해당 데이터에 대한 다른 접근(읽기/쓰기) 모두 차단Intention Lock: 상위 테이블 단위에서 하위 레벨 Lock 설정을 하기 위한 신호Row-level Lock: 특정 행에만 걸림(PostgreSQL, InnoDB)Table-level Lock: 전체 테이블 단위로 걸림 Optimistic Lock vs Pessimistic LockOptimistic Lock: ..
왜 SAGA 패턴이랑 2PC 기법을 쓸까? https://azderica.github.io/01-architecture-msa/ [Architecture] MSA : SAGA 패턴이란 - Azderica[Architecture] MSA : SAGA 패턴이란 Posted 22. December 2020. 7 min read. MSA : SAGA 패턴의 정의과 종류 이전에 MSA 개념에 대해 잡아보았습니다. 오늘은 MSA를 듣다보면 꼭 듣게 되는 SAGA 패턴에 대해 공부해보겠azderica.github.iohttps://kadensungbincho.tistory.com/125 Two-Phase Commit이란? (2PC)HDFS(하둡분산파일시스템) 주요 개념 및 아키텍쳐 HDFS는 하둡 환경에서 분산 파일 시스템 기능을 담당하는 하둡의 주요 모..