#storage
노트 12개
Frontend › Web
IndexedDB브라우저에 내장된 출처별 트랜잭션 키-값 데이터베이스의 API. 버전으로 스키마를 바꾸는 upgradeneeded, 객체 저장소·키·인덱스·키 범위·커서로 저장하고 찾는 법, 자동 커밋되는 트랜잭션의 함정과 오류 처리, 다른 탭과의 버전 충돌, 그리고 네이티브 개념이 idb 래퍼에서 어떻게 보이는지 정리한다.
Frontend › Web
PWA 오프라인 데이터와 저장소 관리URL로 요청하는 자산은 Cache Storage에, 검색·조합할 구조화 데이터는 IndexedDB에 둔다. 저장소 할당량은 출처 단위로 묶이고 StorageManager.estimate()로 확인한다. 브라우저는 압박이 생기거나 오래 쓰지 않으면 데이터를 지우므로 persist()로 영속 저장을 요청하고, 지워진 뒤에도 앱이 온라인에서 다시 뜨게 만든다. 데이터를 뒤에서 최신으로 유지하는 백그라운드 동기화 계열 API도 정리한다.
Backend › Architecture
고전 분산 시스템 설계: GFS, MapReduce, Bigtable, Chubby, Dynamo구글의 GFS·MapReduce·Bigtable·Chubby와 아마존의 Dynamo 논문이 남긴 설계 아이디어를 정리했다. 단일 마스터와 큰 청크, 계산을 데이터 쪽으로 보내기, 정렬된 맵과 LSM 저장, 굵은 락과 시퀀서, 일관된 해싱·벡터 시계·느슨한 정족수 같은 기법이 HDFS·Spark·HBase·Cassandra·ZooKeeper 같은 오픈소스로 어떻게 이어졌는지까지 다룬다.
Backend › Architecture
사진 공유 서비스 설계: 메타데이터, 저장, 샤딩Instagram 같은 사진 공유 서비스의 설계다. 요구 사항과 규모 추정(하루 사진 200만 장, 10년 저장량), 미디어 파일과 메타데이터를 나눠 저장하는 구조, 테이블별 크기 계산, 느린 업로드가 읽기를 막지 않게 읽기·쓰기 서버를 나누는 이유, 복제로 파일을 잃지 않는 법, PhotoID 기반 샤딩과 홀짝 티켓 서버로 ID 만들기, CDN 배포를 다룬다.
Backend › Database
블록·파일·오브젝트 스토리지저장 시스템의 세 갈래인 블록·파일·오브젝트 스토리지를 비교하고, 오브젝트 스토리지의 쓰임새, 복제 대신 패리티로 내구성을 얻는 이레이저 코딩, 큰 파일을 조각내 올리는 멀티파트 업로드를 정리했다.
Backend › Database
와이드 컬럼 DB와 대규모 메시지 저장: Cassandra·ScyllaDBCassandra·ScyllaDB 같은 와이드 컬럼 DB는 파티션 키로 데이터를 노드에 나누고 파티션 안을 클러스터링 키로 정렬해 둔다. 파티션 키·클러스터링 키 모델, 조절 가능한 일관성, LSM 트리 저장 엔진, Cassandra와 ScyllaDB의 차이를 정리하고, 수조 건 메시지를 저장할 때 생기는 핫 파티션을 데이터 서비스 계층의 요청 병합으로 막는 방법과 로컬 SSD와 네트워크 디스크를 RAID로 묶어 디스크 지연을 줄이는 방법을 다룬다.
Backend › Database
DB 내부 구조: 쿼리 실행과 인덱스 자료 구조SQL 한 문장이 파서·옵티마이저·실행기·버퍼 관리자·트랜잭션·잠금 관리자를 거쳐 처리되는 흐름, Oracle을 예로 본 엔진의 메모리(SGA·PGA)·백그라운드 프로세스·파일 구성과 테이블스페이스→세그먼트→익스텐트→블록의 논리 저장 구조, 그리고 DB가 데이터를 찾는 데 쓰는 자료 구조(B-트리, LSM 트리, 해시, 스킵 리스트, 역색인, R-트리 등)를 정리했다. B-트리는 읽기에, LSM 트리는 쓰기에 강하다.
Computer Science › Computer Architecture
메모리 계층 구조레지스터부터 디스크까지 속도·용량·가격이 다른 저장 장치를 계층으로 묶는 구조(계층별 지연 시간의 자릿수)와 RAM의 종류(SRAM·DRAM의 셀 구조, DRAM의 행·열 접근 타이밍과 순차 접근이 빠른 이유, NUMA), 칩을 병렬·직렬로 이어 만드는 기억장치 모듈, 하드 디스크·플래시 메모리(셀 원리, NOR·NAND, SSD와 FTL), RAID(작은 쓰기 문제), 연관 메모리.
Computer Science › Operating System
디스크 관리와 스케줄링디스크 구조(섹터·논리 블록), 포맷팅·파티셔닝과 부팅 과정, 접근 시간 구성, FCFS·SSTF·SCAN·C-SCAN·N-SCAN·LOOK 디스크 스케줄링, 스왑 공간과 RAID.
DevOps
쿠버네티스 저장소와 설정: PV·PVC, ConfigMap, Secret파드가 죽어도 남는 저장소를 요청하는 PV·PVC와 접근 모드·회수 정책, StorageClass의 동적 프로비저닝과 CSI, emptyDir·hostPath 같은 볼륨 유형, 그리고 설정과 비밀 값을 이미지 밖에서 넣는 ConfigMap·Secret의 주입 방식, Secret의 실제 보안 수준, 외부 비밀 저장소 연동, 변경이 파드에 반영되지 않는 이유와 해결법을 정리한다.
DevOps
Docker 네트워크와 볼륨Docker 네트워크 드라이버(bridge·host·none·overlay·macvlan)의 동작, bridge 네트워크의 veth·NAT 원리, 사용자 정의 네트워크와 내장 DNS, 포트 공개(-p)와 EXPOSE의 차이, 컨테이너 간 통신 제한, 그리고 볼륨·바인드 마운트·tmpfs의 차이와 볼륨 수명·드라이버·읽기 전용 마운트, 이미지 층을 저장하는 스토리지 드라이버를 정리한다.
Tools › Chrome DevTools
DevTools Application 패널: 저장소·서비스 워커Application 패널은 매니페스트·서비스 워커·캐시 저장소(PWA), Local/Session Storage·IndexedDB·쿠키, 저장소 지우기, bfcache 테스트, 추측 규칙(prefetch·prerender) 디버깅, 프레임 보안 정보를 한곳에서 보고 고치는 곳이다. 무엇을 확인하려 할 때 어느 탭을 열고 무엇을 보는지 정리한다.