용어 사전

해설에 자주 나오는 용어를 한 문장씩 풀었습니다. 해설 본문에서 점선이 밑에 깔린 용어를 누르면 여기로 옵니다.

가용성Availability
요청했을 때 응답을 받을 수 있는 정도.
격리 수준Isolation Level
동시에 도는 트랜잭션이 서로의 중간 상태를 얼마나 볼 수 있는지 정해 둔 단계.

논블로킹Non-blocking
부르면 곧바로 돌아오는 방식. 준비가 안 됐으면 기다리지 않고 그렇다고 알린다.

동기화Synchronization
여러 흐름이 같은 자원을 건드릴 때 순서를 맞춰 어긋나지 않게 하는 일.
동시성Concurrency
여러 일을 시간이 겹치게 다루는 성질. 번갈아 돌리든 실제로 같이 돌리든 둘 다 해당한다.

런타임Runtime
프로그램이 실행되는 동안. 실행을 받쳐 주는 환경을 가리키기도 한다.
로드 밸런서Load Balancer
들어온 요청을 여러 서버로 나눠 보내는 중간 장치.
롤백Rollback
트랜잭션의 변경을 되돌려 없던 일로 만드는 일.

메인 스레드Main Thread
화면을 그리고 사용자 입력을 받는 스레드. 여기가 막히면 화면이 멈춘다.
멱등성Idempotency
같은 요청을 여러 번 보내도 결과가 한 번 보낸 것과 같은 성질.

백오프Backoff
실패한 요청을 곧바로 다시 보내지 않고 기다렸다 보내는 방식. 반복 실패마다 대기를 늘리는 것이 흔하다.
병목Bottleneck
전체 속도를 혼자 결정해 버리는 가장 느린 구간.
비동기Asynchronous
결과를 기다리지 않고 다음 일을 진행하는 방식. 결과는 나중에 받는다.

샤딩Sharding
데이터를 기준에 따라 여러 서버로 나눠 담는 일.
서브쿼리Subquery
쿼리 안에 들어 있는 또 하나의 쿼리.
세션Session
서버가 사용자를 기억하려고 서버 쪽에 두는 상태.
소켓Socket
프로그램이 통신할 때 쓰는 창구. 운영체제가 열어 주고 여기에 읽고 써서 주고받는다.
스레드Thread
프로세스 안에서 명령을 실행하는 흐름. 한 프로세스의 스레드들은 메모리를 공유한다.
스케줄러Scheduler
다음에 무엇을 실행할지 고르는 구성 요소.
스키마Schema
표와 열이 어떤 모양인지 미리 정해 둔 구조.
스택Stack
나중에 넣은 것을 먼저 꺼내는 자료구조. 함수 호출 기록을 쌓는 메모리 영역도 이 이름을 쓴다.
시간 복잡도Time Complexity
입력이 커질 때 걸리는 시간이 어떻게 늘어나는지 나타낸 것.
실행 계획Execution Plan
옵티마이저가 고른 실행 방법을 보여 주는 것. 인덱스를 탔는지 여기서 본다.

연결 리스트Linked List
각 원소가 다음 원소의 위치를 들고 줄줄이 이어지는 자료구조.
오버헤드Overhead
본래 하려던 일 말고 그 일을 하려고 덤으로 드는 비용.
옵티마이저Optimizer
같은 질의를 어떤 순서와 방법으로 실행할지 고르는 데이터베이스 구성 요소.
원자적Atomic
중간이 없는 성질. 끝까지 된 것이거나 아예 안 된 것으로만 보인다.
이벤트 루프Event Loop
할 일을 큐에서 하나씩 꺼내 실행하는 반복 구조.
이진 탐색Binary Search
정렬된 데이터에서 가운데와 비교해 범위를 반씩 줄여 가며 찾는 방법.
인덱스Index
표 전체를 읽지 않고 원하는 행을 찾게 해 주는 자료구조. 대신 쓸 때마다 같이 갱신해야 한다.
인스턴스Instance
클래스로 실제로 만들어 낸 것 하나.
일관성Consistency
어디서 읽어도 같은 값이 보이는 성질. 트랜잭션에서 말할 때는 규칙이 깨지지 않은 상태를 가리켜, 두 뜻이 다르다.

조인Join
두 표를 공통된 열로 이어 하나의 결과로 만드는 연산.
지연 시간Latency
요청을 보내고 응답이 오기까지 걸린 시간.
직렬화Serialization
메모리 속 객체를 저장하거나 전송할 수 있는 형식으로 바꾸는 일.

처리량Throughput
정해진 시간에 처리해 낸 양.

캐시Cache
느린 곳에서 가져온 것을 가까운 곳에 잠깐 두는 저장소.
커널Kernel
운영체제의 핵심부. 하드웨어와 자원 접근을 통제한다.
커밋Commit
트랜잭션의 변경을 확정해 반영하는 일.
컨테이너Container
앱과 실행 환경을 묶어 격리해 실행하는 단위. 커널은 호스트와 공유한다.
컨텍스트 스위칭Context Switching
CPU가 실행 대상을 바꾸는 일. 이전 상태를 저장하고 다음 상태를 복원한다.
컴파일러Compiler
코드를 다른 형태로 번역하는 프로그램. 기계어로 바꾸는 것이 흔하지만 바이트코드나 다른 언어로 옮기기도 한다.
콜백Callback
나중에 불러 달라고 미리 넘겨 두는 함수.
쿠키Cookie
서버가 브라우저에 맡겨 두는 작은 데이터. 그 사이트에 요청을 보낼 때마다 같이 실려 간다.
쿼리Query
데이터베이스에 무엇을 달라고 던지는 질의문.
클로저Closure
자기가 만들어진 자리의 변수를 계속 들고 다니는 함수.

트랜잭션Transaction
전부 반영되거나 전부 취소되거나, 둘 중 하나여야 하는 작업 묶음.

패킷Packet
네트워크로 보내려고 잘라 놓은 데이터 한 덩이. 앞머리에 주소가 붙는다.
페이지 폴트Page Fault
접근한 가상 주소를 지금 매핑으로는 처리할 수 없어 운영체제가 끼어드는 일. 페이지가 메모리에 없어 디스크에서 끌어오는 경우가 대표적이다.
포트Port
한 기기 안에서 어느 프로그램으로 갈지 가르는 번호.
폴링Polling
바뀐 것이 있는지 주기적으로 물어보는 방식.
프로세스Process
실행 중인 프로그램 하나. 운영체제가 메모리와 자원을 따로 떼어 준다.
프로토콜Protocol
주고받는 형식과 순서를 미리 맞춰 둔 약속.
프록시Proxy
클라이언트와 서버 사이에서 요청을 대신 전달하는 중간 서버.

해시Hash
임의 길이의 입력을 고정 길이 값으로 바꾸는 함수. 같은 입력은 늘 같은 값이 나온다.
해시 테이블Hash Table
키를 해시해 나온 자리에 값을 두는 자료구조. 평균적으로 한 번에 찾는다.
핸드셰이크Handshake
통신을 시작하며 서로 준비와 조건을 맞추는 절차. TCP 연결과 TLS 암호 협상이 이것이다.
Heap
실행 중에 만들어지는 데이터를 두는 메모리 영역. 우선순위 큐를 만드는 자료구조도 같은 이름을 쓴다.

A

ACK
잘 받았다고 알리는 응답. TCP는 이것으로 도착을 확인한다.
API
프로그램끼리 주고받기로 정해 둔 창구. 안이 어떻게 생겼는지 몰라도 정해진 형식으로 부르면 된다.
B-Tree
디스크 읽기 횟수를 줄이도록 넓고 얕게 만든 트리. 데이터베이스 인덱스가 주로 쓴다.
CSRF
로그인된 사용자의 권한을 빌려 본인이 의도하지 않은 요청을 보내게 만드는 공격.
DB
데이터베이스. 데이터를 구조를 갖춰 담고 찾게 해 주는 시스템.
DNS
도메인 이름을 IP 주소로 바꿔 주는 시스템.
DOM
브라우저가 HTML 문서를 객체 트리로 만들어 둔 것. 스크립트는 이것을 고쳐 화면을 바꾼다.
GC
더는 쓸 수 없게 된 메모리를 런타임이 알아서 회수하는 일. 가비지 컬렉션.
JVM
자바 바이트코드를 실행하는 가상 머신. 자바가 어디서나 도는 이유다.
QUIC
UDP 위에 얹은 전송 규약. HTTP/3이 이것을 쓴다.
SQL
관계형 데이터베이스에 무엇을 달라고 적는 언어.
TCP
순서와 도착을 확인해 주는 인터넷 전송 규약. 연결을 맺고 시작한다.
TLB
가상 주소를 물리 주소로 바꾼 결과를 담아 두는 하드웨어 캐시.
TLS
주고받는 내용을 암호화하는 프로토콜. HTTPS의 S가 이것이다.
TTL
데이터가 유효한 기간. 지나면 버리고 다시 받아 온다. IP 헤더에도 같은 이름이 있는데 그쪽은 시간이 아니라 거칠 수 있는 구간 수다.
UDP
확인 절차 없이 빠르게 보내는 전송 규약. 유실을 감수한다.
XSS
남이 심은 스크립트가 내 페이지에서 실행되게 만드는 공격.

본문 335편에서 3편 이상 등장한 용어만 실었습니다. 빠졌거나 틀린 것은 GitHub 이슈로 알려 주시기 바랍니다.