KR_CS지식 - somaz94/DevOps-Engineer GitHub Wiki
- DOM (Document Object Model): HTML을 파싱하여 생성한 트리 구조
- CSSOM (CSS Object Model): CSS를 파싱하여 생성한 트리 구조
- Render Tree: DOM + CSSOM을 결합한 렌더링용 트리
- AST (Abstract Syntax Tree): JavaScript 코드를 파싱한 추상 구문 트리
- Construction: HTML/CSS/JS 파싱 및 Render Tree 생성 단계
- Operation: Layout, Painting, Composition을 수행하는 렌더링 단계
- Critical Rendering Path (CRP): 브라우저가 HTML, CSS, JavaScript를 화면의 픽셀로 변환하는 일련의 단계
- MSA (Microservices Architecture): 애플리케이션을 독립적인 작은 서비스로 분리하는 아키텍처
- Loosely Coupled: 서비스 간 의존성을 최소화한 느슨한 결합 구조
- 3-Tier Architecture: Presentation, Application, Data 3개 계층으로 구성된 전통적 아키텍처
- Clean Architecture: 비즈니스 로직과 외부 인터페이스를 분리한 계층형 아키텍처
- Saga Pattern: 분산 트랜잭션을 이벤트 기반으로 처리하는 패턴
- Program (프로그램): 디스크에 저장된 정적 실행 파일
- Process (프로세스): 실행 중인 프로그램 인스턴스 (독립적 메모리 공간)
- Thread (스레드): 프로세스 내의 경량 실행 단위 (공유 메모리)
- IPC (Inter-Process Communication): 프로세스 간 통신 메커니즘
- Context Switching: CPU가 실행 중인 프로세스/스레드를 전환하는 작업
- Race Condition: 여러 스레드가 공유 자원에 동시 접근하여 결과가 불확정적인 상태
- Deadlock: 두 스레드가 서로의 락을 기다리며 무한 대기하는 상태
- Stack (스택): LIFO (Last In First Out) 후입선출 자료구조
- Queue (큐): FIFO (First In First Out) 선입선출 자료구조
- Push/Pop: 스택의 삽입/삭제 연산
- Enqueue/Dequeue: 큐의 삽입/삭제 연산
- Call Stack: 함수 호출 정보를 저장하는 스택 구조
- StatefulSet: 상태를 가진 애플리케이션을 관리하는 K8s 오브젝트
- Stateless Application: 내부 상태를 유지하지 않는 애플리케이션
- Persistent Volume (PV): 영구 저장소
- Headless Service: ClusterIP가 None인 서비스 (StatefulSet에서 사용)
- Ordinal Index: StatefulSet Pod의 순서 번호 (0, 1, 2, ...)
- GitOps: Git을 단일 진실 공급원으로 사용하는 운영 방식
- Declarative: 시스템의 원하는 상태를 선언하는 방식
- Imperative: 시스템에 수행할 명령을 지시하는 방식
- Reconciliation: 선언된 상태와 실제 상태를 일치시키는 프로세스
- ArgoCD: Kubernetes용 GitOps CD 도구
- Flux: CNCF의 GitOps 도구
- Synchronous Processing (동기 처리): 작업을 순차적으로 완료하는 방식
- Asynchronous Processing (비동기 처리): 작업을 백그라운드에서 독립적으로 처리하는 방식
- Blocking: 작업 완료까지 다음 작업이 대기
- Non-blocking: 작업 완료를 기다리지 않고 즉시 반환
- Event Loop: JavaScript의 비동기 처리 메커니즘
- Clean Architecture: 비즈니스 로직과 외부 인터페이스를 분리하는 계층형 아키텍처
- Entities: 핵심 비즈니스 규칙 계층 (가장 내부)
- Use Cases: 애플리케이션 비즈니스 로직 계층
- Interface Adapters: Use Case와 외부 시스템 간 변환 계층
- Frameworks & Drivers: 가장 외부 계층 — DB, 웹 프레임워크, 디바이스 드라이버
- WAS (Web Application Server): 비즈니스 로직과 동적 콘텐츠를 처리하는 서버
- VPC (Virtual Private Cloud): 클라우드 상의 격리된 가상 네트워크
- PrivateLink: AWS의 프라이빗 연결 서비스
- VPC Peering: VPC 간 직접 연결
- Private Access: 인터넷 없이 GCP 내부에서 연결하는 방식
- Service Mesh: 마이크로서비스 간 통신 관리 계층 (Istio, Linkerd)
브라우저가 URL 입력부터 화면 출력까지 거치는 과정: DNS 조회 → TCP/TLS 연결 → HTTP 요청 → HTML 파싱(DOM) → CSS 파싱(CSSOM) → JS 실행 → Render Tree → Layout → Paint → Composite 순으로 동작한다. CSS와 JS는 파서를 블로킹하므로 defer/async 속성으로 최적화한다.
→ 상세 보기
애플리케이션을 독립 배포 가능한 작은 서비스로 분리하는 아키텍처. 서비스 간 통신은 REST/gRPC(동기) 또는 Kafka/RabbitMQ(비동기)를 사용하고, DB는 서비스별로 분리(Database per Service)한다. 모놀리식 대비 독립 배포·확장이 가능하지만 운영 복잡도가 높아진다.
→ 상세 보기
도메인을 IP로 변환하는 분산 계층 시스템. 클라이언트는 Recursive DNS에 질의하고, Recursive DNS가 Root → TLD → Authoritative DNS 순서로 조회한 후 결과를 반환한다(Recursive Query). TTL 동안 캐시에 저장되어 이후 요청은 1 RTT로 처리된다. A, AAAA, CNAME, MX, TXT 등의 레코드 타입을 지원한다.
→ 상세 보기
프로세스는 독립된 메모리 공간을 가진 실행 단위(Isolation), 스레드는 프로세스 내 공유 메모리를 사용하는 경량 실행 단위(Concurrency)다. 프로세스 간 통신은 Pipe, Message Queue, Shared Memory, Socket 등 IPC를 사용한다. 멀티스레딩에서는 Race Condition을 Mutex로, Deadlock은 Lock Ordering으로 방지한다.
→ 상세 보기
스택은 LIFO 구조로 함수 호출 스택, DFS, Undo/Redo에 활용된다. 큐는 FIFO 구조로 BFS, 작업 스케줄링, 메시지 큐(Kafka/RabbitMQ)에 활용된다. 모든 기본 연산은 O(1). 우선순위 큐는 Heap으로 구현하며 삽입/삭제가 O(log n)이다.
→ 상세 보기
Stateless는 Deployment로 관리하며 Pod가 상호 교환 가능하다. Stateful은 StatefulSet으로 관리하며 Pod마다 고유 ID(mysql-0, mysql-1)와 전용 PVC를 보유한다. Headless Service(clusterIP: None)로 Pod IP를 직접 반환하여 Master/Slave 구분이 가능하고, Pod 재시작 후에도 DNS 이름이 유지된다.
→ 상세 보기
GitOps는 Git을 단일 진실 공급원으로 사용하여 인프라를 선언적으로 관리하는 방식이다. ArgoCD는 Git 저장소를 지속적으로 폴링하여 Desired State와 Actual State를 비교(Reconciliation Loop)하고, 차이 발생 시 자동으로 Sync한다. selfHeal: true로 수동 변경을 자동 복구하고, 롤백은 git revert만으로 가능하다.
→ 상세 보기
클린 아키텍처는 계층을 Entities → Use Cases → Interface Adapters → Frameworks & Drivers 순으로 구성하여 비즈니스 로직을 UI·DB·프레임워크와 독립적으로 유지한다. 전통적 3-Tier는 Presentation → Application → Data로 구성되며, Spring Boot·Django 같은 현대 프레임워크는 앱 서버를 내장하여 WAS 경계가 흐려졌다.
→ 상세 보기
AWS 3-Tier: Route 53 → ALB/EKS → RDS/ElastiCache (PrivateLink). GCP 3-Tier: Cloud DNS → GKE LB/Ingress → Cloud SQL/Memorystore (Private Access). 동기 처리는 Blocking/순차 실행(단순·순서 보장), 비동기 처리는 Non-blocking/동시 실행(높은 처리량·백그라운드 작업)에 적합하다.
→ 상세 보기