
rlaope
estudy
Essentials · 8
Server · 103
- KISS, YAGNI, DRY
- 인증(Authentication), 인가(Authorization)
- Back-End 효율적인 API 명세서 설계방법
- Java Back-End 웹 기술 역사
- Clean Architecture
- OAuth 2.0 개념과 권한 부여 방식 알아보기
- 2023 제 3회 당근마켓 SRE 밋업 후기
- IntelliJ 테스트 커버리지 확인하기
- SOLID 원칙과 각 원칙의 장단점
- Kotlin, JPA가 서로 지향하는 방향의 차이
- Netty
- Netty Thread Model
- Netty Message Flow
- EventLoop, Thread Model, Tuning(ioRatio, epoll)
- ByteBuf, Memory Management
- Netty가 완료된 작업을 식별하는 메커니즘
- Netty Async Flow Control(Future, Promise, Listener)
- EventLoopGroup
- NioEventLoop vs EpollEventLoop
- Netty Native Memroy Tuning, BackPressure
- Reactive Programming
- 우아한 테크 세미나 - 우아한 스프링 배치
- Cache - Eviction, Expiration, Passivation
- Protocol Buffers
- Kafka
- Zookeeper
- PUB/SUB Architecture
- Kafka 리밸런싱
- Kafka Consumer Offset 수동 commit
- Kafka ISR(In Sync Replica)
- Producer 주요 Options
- Kafka Disk I/O (Sequenctial I/O, Page Cache, Zero Copy)
- Kafka Replication 작동 원리
- Kakfa Partition
- State Machine Model
- Kafka Partition
- State Machine Pattern
- 다중 환경에서 세션은 어떻게 공유하고 관리할까?
- 분산 환경 합의 알고리즘 Paxos
- Kernel
- Block IO (Buffer Head, BIO Struct, Scheduler)
- Command nmap
- LXC(Linux Container)
- Linux Performance analysis commands
- uptime
- dmesg
- free
- df
- top
- netstat
- epoll
- Linux File System EXT
- User Space, Kernel Space
- System Call Interface
- buffer_head
- 분산 시스템에서 시간 동기화 문제와 해결 알고리즘
- 분산 시스템 논리적 시계(렘포트 시계, 벡터 시계)
- IDC 이중화 구성으로 DR하기 + Kafka 이중화 예시
- Data Partitioning
- 마이크로서비스 아키텍쳐 (MicroService Architecture)
- 확장 큐브로 보는 마이크로서비스
- MA, MSA, SOA(Service Oriented Architecture), ESB, SOAP
- 서비스 디스커버리를 DNS, 로드 밸런서 방식을 사용하지 않는 이유
- 마이크로서비스 클라이언트 회복성 패턴
- Two Phase Commit
- Saga Pattern
- Event Sourcing
- CQRS
- Transactional Outbox Pattern
- 마이크로서비스 아키텍처 IPC
- 동기 RPI 패턴 응용 통신
- 서비스 디스커버리 Service Discovery
- 비동기 메시지 패턴 응용 통신
- 서비스 메시 Service Mesh
- Istio
- Envoy Proxy Internal Architecture
- xDS Protocol, Control Plane (Istio Pilot)
- Traffic Control & Security mTLS
- Istio Circuit Breaker
- 마이크로서비스에서 분산 트랜잭션 관리하기
- SRE
- SLO, SLI, SLA
- Socket Programming
- Encryption Algorithm, AES256
- Low Level, JVM Async Programming
- 수치 기반 사고(Observability + Capacity Planning)
- Failover Consistency
- Netty Proxy
- TCP SYN/ACCEPT Queue 성능 튜닝
- 외부 연동 시스템 리소스 제약과 쏟아지는 트래픽 대응
- 성능 테스트
- WAL, 분산 시스템 데이터 일관성과 장애 복구 패턴
- 캐시 시스템 설계 이론
- 캐시 시스템 설계 구현
- 캐시 무중단 마이그레이션 (Lazy Migration)
- 장애 지점 식별 및 C/A 시스템 설계
- Distributed Lock 취득 후 master node가 다운되었을때
- 캐시 스템피드 현상 제어 (Distributed Lock, PER)
- 대규모 DB 및 데이터 마이그레이션
- SNAT 포트 고갈, DNS 해상도 지연 문제 해결
- Kafka 파티션 리밸런싱중 발생하는 중복 메시지 처리, 멱등성 보장
- 분산 합의 (Consensus) 알고리즘
- Zookeeper가 Paxos를 기용한 이유
DevOps · 114
- DevOps Engineer
- 도커와 쿠버네티스
- IaaS, PaaS, SaaS 차이
- CI/CD 파이프라인과 구현과정
- 가상머신(Virtual Machine) vs 컨테이너(Container)
- 배포 전략의 종류(롤링/블루 그린/카나리)
- Docker Container
- 컨테이너 제어 명령어
- 컨테이너 관리 명령어
- 이미지 관련 명령어
- 도커 컨테이너를 띄워보자
- 컨테이너 외부 노출
- 컨테이너 애플리케이션 구축
- 도커 볼륨 이용하기
- 도커 네트워크 구조
- 컨테이너 로깅
- 컨테이너 자원 제한
- 도커 이미지 생성
- Docker Swarm
- spring boot 프로젝트를 Docker를 사용해 배포하기
- permission denied while trying .. Docker demon socket 트러블 슈팅
- Docker Engine LXC, libcontainer
- Namespace, Container + runc syscall tracking
- Kubernetes
- Desired State
- 쿠버네티스 구성요소
- 쿠버네티스 API 리소스
- 쿠버네티스의 동작 흐름
- 쿠버네티스 대시보드 토큰 발행 및 접속
- Kubernetes Cluster
- Control Plane
- Pod
- Pod LifeCycle(Phase, Condition)
- Pod의 생명주기, 재시작 정책
- 멀티 컨테이너 파드 디자인 패턴
- Qos Classes
- Node Scheduling
- Probe
- Service - ClusterIP, NodePort, LoadBalancer
- Service - Headless, Endpoint, ExternalName
- ReplicaSet
- Deployment
- DaemonSet, Job, CronJob
- Volume
- ConfigMap, Secret
- Namespace, ResourceQuota, LimitRange
- Cluster Autoscaler, Karpenter
- Kubernetes Scheduler, Controller
- PV, PVC Dynamic Provisioning
- Kubernetes Network
- RBAC, Security Policy
- 애자일(Agile) 방법론
- K8s 배포 전략, Probe
- 클라우드 아키텍처 Cloud Architecture
- Node Components
- 하이브리드 클라우드 Hybird Cloud
- 테스트의 종류 알아보기
- 워크스루와 인스펙션
- TDD란 (테스트 주도 개발)
- 깃허브 액션 GitHub Actions
- AWS(Amazon Web Service)
- EC2(Elastic Compute Cloud)
- EC2의 가격 정책과 타입 종류
- EBS, Instance Store, AMI
- AWS 보안 그룹 Security Group
- AWS ELB (Elastic Load Balancer), Sticky Session
- 오토 스케일링 (Auto Scaling) 구성과 순서도
- VPC(Virtual Private Cloud)와 구성요소
- NAT, NAPT 그리고 AWS NAT Gateway
- AWS 라우팅 테이블 개념과 구성
- 고가용성과 장애내구성, 재해 복구, 확장성과 탄력성
- AWS RDS(Relation Database Service)
- Elastic IP, ENI(Elastic Network Interface)
- System Manager Session Manager
- Amazon Aurora
- AWS Aurora 2nd
- CloudWatch vs CloudTrail
- AWS SES(Simple Email Service)
- AWS SNS(Simple Notification Service)
- AWS SQS(Simple Queue Service)
- AWS SQS 속도와 규모 조정을 위한 최적화 개선
- AWS 클라우드 프론트 CloudFront
- AWS ECR(Elastic Container Registry)
- AWS ELK(Elastic Search Logstash Kibana)
- Bastion 서버로 Private EC2에 접속하는 방법 + Hi-v2 트러블 슈팅
- CloudWatch
- EKS
- EKS VPC CNI
- 파드간 통신 과정
- ALB Contorller
- NLB, ALB 생성과 삭제
- Site to Site VPN
- DX(Direct Connect)
- 모놀리식 아키텍처 (Monolithic Architecture)
- APM(Application Performance Management)
- gRPC, RPC, 작동원리, HTTP API 비교
- RabbitMQ
- Blue/Green Deployment, Architecture
- Nginx
- ELK와 로깅 구성
- Prometheus, Grafana
- Exporter - 모니터링 에이전트
- 블루/그린 배포
- 서버 이중화 구조
- GitOps
- HCL
- Terraform Custom Condition(precondition, postcondition)
- Terraform] 작동 원리
- Terraform dynamic block
- Terraform] state, remote_state, backend
- MicroService Monitoring System (cc. Loki/Grafana)
- Presto
- MSA에서의 Service discovery 패턴
- IAM(Identity and Access Management)
SRE · 51
- Full GC Hang Alert & Task 시스템 최적화 사례
- Pod Pending 상태의 주요 원인
- kube-proxy의 역할
- iptables와 ipvs의 차이
- CNI(Container Network Interface)
- Pod 간 노드 통신 패킷 흐름
- HPA(Horizontal Pod Autoscaler) 동작 원리
- VPA 사용 시 발생할 수 있는 위험 요소
- PDB(Pod Disruption Budget)의 필요성
- Node Pressure(OOM, DiskPressure) 발생 시 동작
- CrashLoopBackOff 원인 분류
- StatefulSet과 Deployment 비교
- Ingress와 Service 비교
- kubelet의 Pod 관리 과정
- Liveness·Readiness·Startup Probe 비교
- containerd의 역할
- OOM Killer 동작 방식
- epoll이 select/poll보다 효율적인 이유
- CPU Load Average 해석
- cgroup의 CPU·메모리 제어 방식
- 파일 디스크립터 고갈 시 나타나는 증상
- TCP TIME_WAIT 증가의 원인
- DNS Lookup Timeout 발생 요인
- Swap 사용이 위험한 이유
- NUMA 구조에서 발생하는 성능 문제
- 스레드 풀 사이즈 산정 원리
- Prometheus Pull 방식의 장점
- Alertmanager의 역할
- p95·p99 레이턴시 차이 분석
- High Cardinality의 위험성
- 로그 수집 시스템 필터링의 필요성
- Jaeger·Tempo의 역할
- OpenTelemetry 구조
- SLO와 SLI 비교
- MTU Mismatch 발생 시 증상
- Retry 폭주(Thundering Herd)의 위험성
- Connection Pool 고갈 증상
- Nginx 502·504 차이
- Slow Query 탐지 방법
- Thread Overflow 발생 원인
- GC Pause 증가의 근본 원인
- 장애 대응 시 우선순위 판단 기준
- Incident Severity 산정 방식
- 롤백 전략 수립 방법
- Blue/Green Deployment vs Canary Deployment
- DNS Failover 구성 방법
- 재발 방지 대책(Runbook 포함) 작성 방법
- Incident Flow: 감지 → Triage → Mitigation → RCA
- Alert Fatigue 감소 전략
- 배포 자동화 시 고려해야 할 안정성 체크
- SLA·Error Budget 적용 방식
Languages · 168
- Java
- 객체지향 프로그래밍
- JVM 메모리 구조 알아보기
- JMM(Java Memory Model)
- JVM 메모리 모델
- JVM Garbage Collection 구조와 동작
- GC의 종류와 각각의 차이점
- 종류별 Garbage Collector 동작 방식
- G1GC - Garbage First Garbage Collector
- Java String Pool
- 객체지향의 4가지 특징
- 객체지향 설계의 5원칙(SOLID)
- 클래스와 인스턴스 개념과 차이
- 생성자, new 객체 생성
- 오버라이딩과 오버로딩
- 다형성 (Polymorphism)
- Date, SimpleDateFormat 현재 날짜, 시간 출력
- 컬렉션 프레임워크 종류와 사용법
- 예외 처리 (Exception)
- RuntimeException & Exception
- HashMap 메소드 및 사용법
- 옵셔널(Optional) 클래스 알아보기
- Web 서블릿(Servlet) 이란?
- StringBuilder 사용법과 주요 메서드
- 래퍼 클래스(Wrapper Class), 박싱 언박싱
- Java Generic
- SocketAdress 클래스 & NetworkInterface 클래스
- Java String, StringBuilder, StringBuffer 차이 알아보기
- POJO (Plain Old Java Object)
- 자바 리플랙션 Reflection 개념과 사용방법
- 자바 익스큐터 java Executors
- java Callable, Future
- 자바 Cleaner, PhantomReference Class
- OutOfMemoryError가 발생했을 때 해결하는 방법
- 자바의 네 가지 참조 유형(Strong, Weak, Soft, Phantom)
- Java 8 Functional Interface
- Java에서 제공하는 기본적인 Functional Interface
- Reactive Streams API, back-pressure
- Cold Publisher & Hot Publisher
- Java AIO
- JDK Proxy, CGLib Proxy
- Hotspot VM, JIT Compiler 그리고 한계
- GraalVM
- Native Image
- 네이티브 이미지의 메모리 최적화
- Java의 예외 생성 비용, 비용 절감 방법
- JVM Warm Up - 배포 직후 Latancy 성능 저하 원인
- JVM Warm Up 적용하기
- ReentrantLock, Condition
- JIT Compiler(c1, c2)
- Native Memory Tracking
- jemalloc
- jemalloc, arena, thread cache, memory fragmentation
- JVM Heap Object Headers on Internals
- JVM safepoint
- Bias Locking, Revocation
- CAS (Compare And Swap)
- vDSO(virtual Dynamic Shared Object)
- Object Header Mark Word
- GC Write Barrier
- Card Table
- Incremental Update
- Parallel GC Tuning
- CMS GC(+튜닝 전략 parallel, cms)
- G1GC
- Evacuation Failure
- G1GC는 왜 Incremental Update가 아니라 SATB를 선택했는가
- Mixed GC
- Concurrent Mark
- G1GC OpenJDK 8 vs 11
- Humongous Object, Mixed GC
- ZGC
- G1GC, ZGC 성능 비교 테스트
- Marked0/1, Good/Bad Color (TODO)
- Parallel GC to G1GC
- TLAB(Thread-Local Allocation Buffer)
- Safepoint, Polling Page
- Reactive Streams
- HotSpot JVM ZGC Barrier, NUMA 메모리 할당 및 Safepoint 동작
- 객체의 생명주기 (생성, 사용, 소멸)
- 자바 Object 클래스의 메소드
- PGO(Profile-Guided Optimization)
- 자바에서 Finalize 메서드의 역할은 무엇일까요?
- JVM이 구현하는 다형성 탈가상화 Devirtualization
- 추상 메서드와 추상 클래스
- JVM의 5가지 메서드 호출 명령어(vtable, itable)
- JMM과 하드웨어 교차점
- JVM Observability 도구별 원리 해부학
- Kotlin
- Kotlin DSL, gradle.kts
- mapOf(), to로 Pair 인스턴스 생성하기
- 코틀린에서의 객체지향 프로그래밍
- 코틀린 함수형 프로그래밍
- 코틀린 컬렉션즈 프레임워크
- 대리자 delegate, by, lazy
- 스코프 함수 (Scope Function)
- Kotlin 시퀀스와 지연 계산 (Sequences and Lazy Evaluation)
- Kotlin 함수형 인터페이스와 SAM 생성자
- kapt와 annotation processor
- 코틀린에서는 왜 Lombok 라이브러리를 사용할 수 없을까?
- Kotlin으로 Spring Framework 사용하기
- data 클래스로 persistence 구현하기
- @JvmField, @JvmStatic 어노테이션
- kotest를 사용해서 테스트 코드 작성하기
- Kotlin 코루틴 (Coroutine)과 동시성 프로그래밍
- 내가 제일 좋아하는 Kotlin의 companion object ❤️
- Kotlin Generics 공변성, 반공변성, 무변성
- Kotlin Generics 스타 프로젝션, reified 자료형
- sortedWith, Comparator 정렬 람다식 예제
- Kotlin runCatching과 Result 타입
- Kotlin에서 Unit과 Nothing의 차이점
- Kotlin에서 싱글톤 클래스를 어떻게 생성할까요?
- companion object와 object의 차이점은 무엇일까요?
- 클래스 외부의 함수(A package-level/ Top-level 함수)
- Kotlin Class, Field vs Property
- Kotlin Delegation으로 결합도 낮추기
- lateinit과 Delegates.notNull<>()로 적절한 null 처리하기
- .close()가 필요한 클래스를 사용할 때, use로 효율적으로 사용하기
- infix, inline function
- Kotlin Sealed Class
- inline fun 함수를 사용해 고차 함수 최적화
- Coroutine
- 코틀린이란 무엇이며 왜 필요한가?
- CoroutineDispatcher
- launch, async
- susepnd fun
- Coroutine Job을 Lazy하게 만들기
- Coroutine Job 상태 관리
- Coroutine Job 상태 변수
- CoroutineContext
- Go Handle, Handler, HandleFunc 이해
- Golang에서의 포인터와 역참조
- Go 데이터베이스 Sqlite3 사용하기
- gorilla/mux를 사용한 REST API 서버
- JavaScript 함수와 함수의 종류
- 객체 Object
- 프로토타입이란?
- 가비지 컬렉션이란?
- 객체 메소드 정리
- 클래스란 무엇일까?
- String Method
- Math 메서드 정리
- 배열 메소드 정리
- 배열 메소드 정리 2
- 데이터 불변성
- 구조 분해 할당
- export 사용법 정리
- import 사용법 정리
- Lodash란 무엇일까?
- JSON 알아보기
- Storage LocalStorage
- 정규표현식 문법 정리
- DOM 이란 무엇일까?
- DOM API와 종류
- Promise 알아보기
- ajax 알아보기
- fetch API 알아보기
- TypeScript
- Class
- Basic_Types 정리
- Constructor(생성자) , 접근제한자 , Getter 와 Setter
- Basic_Function 정리
- 인터페이스 (interface)
- 인터페이스2 (interface2)
- Generic 알아보기
- Component
- GIT 이란? 무엇인가
- Issue
Frameworks · 93
- Node.js
- Npm(Node.js) - 기초 명령어 사용법 정리
- Spring Frameworks MVC
- React
- Controller, Service, Repository
- TypeScript 컴파일러
- IoC(Inversion of Controll)
- conflict - 충돌 해결
- Spring Bean
- git log - 이력확인
- Spring AOP (Aspect Oriented Programming)
- git 기본 명령어 정리 2
- Spring AspectJ
- package.json 생성
- Spring Frameworks' Annotation
- pull request
- Spring JDBC, DataSource
- version
- (Spring Package Structure) - 계층형 vs 도메인형
- 기타 명령어
- Lombok Library
- 깃허브 용어정리
- Spring boot @Builder, Builder Pattern
- 다른사람 Repo 관리
- Spring Frameworks URL Mapping
- 브랜치 Brnach
- Spring Security Access Token & Refresh Token
- 서버 구축하기
- Log 관리, Slf4j Logger
- 원격 저장소
- Jwt (Json Web Token)
- 이전 버전으로 되돌리기 ,
- Spring Validation을 이용한 유효성 검증
- 클래스형 컴포넌트
- Spring boot @ExceptionHandler를 통한 예외처리
- 패키지 설치 / 삭제 명령어
- (Spring boot + Security) SecurityConfig 설정하기
- 함수형 컴포넌트
- Swagger를 활용한 API 문서 자동화
- IoC, DI, Spring Container, Bean 완벽하게 알아보자
- AOP(Aspect Oriented Programming) 대체 뭘까?
- 디스패처 서블릿 Dispatcher-Servlet의 개념과 동작 과정 알아보기
- Servlet Filter, Spring Intercepter 특징과 차이 이해하기
- Kotlin, Spring boot] copy() 깊은복사, 얕은복사 성능상의 이점
- Kotlin, Spring boot] 검색 api에서 find Query vs Internal Function 데이터 처리 효율
- Spring boot Actuator 스프링 부트 액추에이터 API + Spring Cloud를 사용한 예제
- Spring WebFlux, Reactive Stream, R2DBC, Mono, Flux 정복하기
- Springboot에서 데이터베이스 인덱싱 하는 방법
- Spring Test시에 Spring Security인증을 할 수 있는 어노테이션
- Spring 에서의 Connection Pool, HikariCP
- 스프링 부트 배치 Spring boot Batch
- ControllerAdvice는 AOP로 구현되어 있을까? 동작 과정 살펴보기
- ObjectMapper의 동작 방식과 Spring boot가 제공하는 추가 기능들
- 코틀린 테스트 프레임워크 mockk 사용법
- Spring Data Binding, Converter, Formatter
- Spring Resource Interface, Resource 추상화와 구현체
- ResourceLoader, ResourcePatternResolver, ApplicationContext and Resources Paths
- SecurityContextHolderStrategy (ThreadLocal, InheritableThreadLocal, Global)
- Spring Security의 여러가지 Filter
- Mock 테스트와 Stub 테스트의 차이
- Koltin에서 Spring을 실행하기 위한 plugin, dependencies
- Spring boot 내장 웹 서버 톰캣 설정, 다른 내장 웹 서버 설정하는 방법
- Spring ArgumentResolver를 이용한 유연성 있는 파라미터 처리
- Spring Scheduler를 사용해 일정 주기로 동작 수행
- Spring boot 프로젝트 profile 설정하기
- Bean Scope, DL(Dependency Lookup), Provider
- Spring AOP와 다이나믹 프록시를 사용해 트랜잭션 분리하기
- 애플리케이션 로직, 인프라 빈, 컨테이너 인프라 빈
- 빈 스코프와 발생할 수 있는 여러 문제들과 해결 방법
- Spring WebFlux vs MVC, 내부 작동 방식
- Spring Batch 기술적 트레이드 오프
- Spring Batch 데이터 일관성 관리
- Spring Data JPA와 @Transactional
- Spring Data JPA 동작 원리
- Spring AOP Advice 순서 제어 방법
- Spring Data JPA @Modifiying
- High Performance Hibernate, @NaturalId
- JPA Entity equals(), hashcode() overriding
- 영속성 컨텍스트
- 플러시 (flush)
- 객체와 테이블 매핑
- 데이터베이스 스키마 자동 생성
- Hibernate 하이버 네이트, Spring Data JPA
- 임베디드 타입, @Embedded, @Embeddable, @AttributeOverride
- @Query 어노테이션에서 FK로 객체를 찾는 방법
- JPA N + 1 문제 해결 방법 및 실무 적용
- 일반 조인(Join)과 패치 조인(Fetch Join)의 차이
- 일반 조인 Join은 언제 사용될까?
- JPA Propagation 트랜잭션 전파 단계
- 프록시(Proxy)와 지연 로딩
- OSIV(Open Session In View)
- 벌크 수정, 삭제 연산과 영속성 컨텍스트
- Spring @Transactional 트랜잭션 바인딩과 Auto-Commit
Domain Driven Design · 11
- DDD(Domain Driven Design) 도메인 주도 설계 알아보기
- Domain-Driven-Design] 바운디드 컨텍스트 (Bounded-Context)
- 도메인 주도 설계 애그리거트(Aggregate) 알아보기
- 응용 서비스와 표현 영역 (presentation, application)
- 여러 애그리거트가 필요한 기능과 도메인 서비스(응용 서비스와의 차이)
- 애그리거트 트랜잭션 관리 (선점,비선점,오프라인 잠금)
- 도메인 모델과 바운디드 컨텍스트
- 시스템 간 강결합(high coupling) 문제
- 이벤트 (Event), 핸들러 (Handler), 디스패처 (Dispatcher)
- 동기 이벤트 처리 문제, 비동기 이벤트 처리
- CQRS (Command Query Responsibility Segregation)
DataBase · 79
- What is DataBase?
- DataBase Mangement System
- MySQL Query문 정리
- DDL(데이터 정의어)
- 키(Key)의 개념 및 종류
- ORM의 개념과 종류, 활용 방안
- 트랜잭션과 ACID
- 데이터베이스 정규화(Normalization)
- 데이터베이스 성능을 위한 Index와 동작원리
- 리플리케이션(Replication) vs 클러스터링(Clustering)
- DataBase Sharding (분산처리)
- 데이터베이스 CAP 이론
- 데이터 모델링과 데이터 성질에 따른 DB 종류
- 데이터베이스의 커넥션 풀 (Connection Pool CP)
- 데이터베이스 옵티마이저 Optimizer
- 옵티마이저의 최적화와 목표 그리고 한계
- 데이터베이스에서의 클러스터 (Cluster)
- Clustering (Active Clustering, Standby Clustering)
- 엔터티(Entity), 속성(Attribute), 관계(Relation)
- 식별자 Identifier 종류와 분류체계
- 데이터베이스 정규화 Normalization
- 데이터베이스 반정규화 Denormalization
- DDL(CREATE, ALTER, DROP, TRUNCATE)
- DML(INSERT, UPDATE, DELETE, SELECT), TCL(COMMIT, ROLLBACK)
- DCL(GRANT, REVOKE) 실습, 사용자 생성
- WHERE 조건절 지정 실습
- ORDER BY로 데이터 정렬하기 실습
- GROUP BY, 집계함수로 데이터 그룹별 집계
- Join 연산 (INNER JOIN, OUTER JOIN)
- INNER JOIN & OUTER JOIN SQL
- 날짜(DATE) 함수를 사용한 실습 + DUAL 테이블
- REPLACE() 함수로 데이터 수정하기 실습
- SUBSTR() 함수를 사용한 문자 데이터 자르기
- UPPER(), LOWER() 함수를 사용한 대소문자 구분
- 숫자함수 ROUND(), TRUNC(), CEIL()
- SQL 윈도우 함수 (WINDOW FUNCTION)
- 계층형 쿼리(START WITH, CONNECT BY PRIOR, SIBLINGS BY)
- SQL NULL 관련 함수 - NVL, NVL2, NULLIF, COALESCE
- 프로시저와 트리거의 차이점
- NoSQL vs SQL
- MongoDB
- Document Database
- MongoDB 트레이드 오프 (vs RDB)
- MongoDB - CRUD
- MongoDB 샤딩
- MongoDB 데이터 복구(UNDO, REDO)
- Redis
- Redis 효율적인 서버 구성
- Redis 메모리 관리, 최적화 방안
- Redis Fragmentation Ratio
- Redis Distributed Lock, RedLock
- Redis Cluster
- Redis Distributed Lock, Spring Boot Example
- Redis 다중 명령에 대한 원자성 보장 방법
- Redis Architecture
- Redis Replication
- Redis Failover시 데이터 손실 방지 방법
- Redis important fact about replication
- Redis INCR
- Redis Serialization Sync
- 데이터베이스 부하분산(파티셔닝, 샤딩, 레플리케이션) 개념
- 데이터베이스 파티셔닝
- 파티셔닝 종류와 분할 기준
- VARCHAR vs TEXT
- Transaction Serializability
- Transaction Recoverability
- 전문 검색 인덱스
- 커버링 인덱스
- MMR, BKA
- MySQL 8.0 InnoDB Locking
- Pessmistic Lock, Optimistic Lock
- LSM Tree
- B+Tree
- LIKE 쿼리 검색 성능 개선, Full-Text Search
- 분석 함수를 활용해 쿼리 성능 높히기
- Deadlock
- MySQL, MyISAM, InnoDB Storage Engine
- MySQL WAL
- InfluxDB
Design Pattern · 22
Network · 85
- IP(인터넷 프로토콜)
- TCP & UDP
- PORT & DNS
- URI
- 웹 브라우저 요청 흐름
- 모든것이 HTTP
- 클라이언트 서버 구조
- Stateful, Stateless
- HTTP 메시지
- 비 연결성 (connectionless)
- HTTP API를 만들어보자
- HTTP 메서드 - GET, POST
- HTTP 메서드 - PUT, PATCH, DELETE
- HTTP 메서드의 속성
- 클라이언트에서 서버로 데이터 전송
- HTTP API 설계 예시
- HTTP 상태코드 소개
- 2xx - 성공
- 3xx - 리다이렉션
- 4xx - 클라이언트 오류, 5xx - 서버 오류
- HTTP 헤더 개요, 표현
- 협상, 전송 방식
- 일반 정보, 특별한 정보
- 인증, 쿠키
- 캐시 기본 동작
- 검증 헤더와 조건부 요청
- 캐시와 조건부 요청 헤더
- 프록시 캐시, 캐시 무효화
- 네트워크의 기초 알아보기
- 네트워크 프로토콜 정리
- 인터넷 작동 원리
- HTTP에 대해 알아보기
- DNS와 작동 원리
- 도메인 네임이란?
- 브라우저 동작 원리
- 호스팅이란 무엇일까?
- HTTP 메서드 알아보기
- RESTful API 의미와 설계규칙
- 네트워크 계층별 프로토콜
- 아파치 톰캣 (Apache Tomcat)
- 네트워크 웹 통신의 흐름
- 웹 캐시(프록시 서버)
- CDN (Content Delivery Networks)
- P2P(peer-to-peer network)
- 스위치와 라우터, 스위칭과 라우팅
- 인바운드(Inbound)와 아웃바운드(Outbound)
- 회선교환 방식과 패킷교환 방식
- IP/IP Packet, 패킷 전달, 한계
- OSI 7계층과 TCP/IP 4계층
- TCP/IP Packet, TCP vs UDP
- 웹 캐시 Web Cache
- 캐시 검증 헤더(ETag, If-None-Match)
- L2, L3, L4 & L7 스위치
- 웹소켓(WebSocket), HTTP와의 차이
- SSL(Security Socket Layer), TLS(Transfer Layer Security)
- 메시지 큐(Message Queue, MQ) 개념
- 서브넷팅 & 슈퍼넷팅 개념 및 쉬운 계산 방법
- 3-way / 4-way Handshake
- VLAN, Trunk/AccessPort
- 캐시 검증 헤더, Last-Modified, If-Modified-Since
- VLAN(.v2)
- SSL Handshake
- 라우터 Router
- DHCP(Dynamic Host Configuration Protocol)
- TCP Header
- TCP 세션 유지 Keepalive
- TCP Flag, ECN
- QoS 3가지 수행 모델 (Best Effort, IntServ, DiffServ)
- Token Ring, Ethernet
- Network 회선, VPN, DWDM
- Network Components
- MAC, IP Address, Subnetting
- Gateway, Subnet
- Switch In Action
- TCP State Machine, Concept
- HTTP TCP Keep-Alive
- HTTP Keep-Alive Concept
- File Descriptor in Network(cc. KeepAlive)
- BGP(Border Gateway Protocol) Peering
- IPSec
- TCP SYN Cookie
- TCP Window Size, MSS, SACK Permmited
- TCP Congestion Control
- Loss-based 알고리즘 Reno & CUBIC
- 현대적 네트워크, 차세대 혼잡제어 BBR & QUIC
Operating System · 35
- 꼭 알아야 할 기본 CS 지식
- 멀티 스레드와 멀티 프로세스
- CPU 스케줄링이란
- 런타임과 컴파일타임
- OS의 스와핑 Swapping
- HTTP 메서드
- 가상 메모리 Virtual Memory System
- OS] 운영체제 구조와 원리
- 뮤텍스(Mutex)와 세마포어(Semaphore)
- 스레드와 동시성
- 데몬(daemon) 프로세스의 정의
- 응용SW_2( 컴퓨터 시스템 일반 학습지 )
- 컴퓨팅 시스템 Computing System
- 페이지 교체 알고리즘 FIFO, LRU, LFU, MFU, NUR
- 메모리 단편화 Fragmentation
- 하이퍼바이저 Hypervisor
- 스핀락, 뮤텍스, 세마포어 + 뮤텍스 vs 이진 세마포어
- 컴파일러 최적화
- IPC(Inter Process Comunication)
- Process Memory Structure
- 캐시 메모리 구조와 작동 방식
- Memory - Address, Contiguous allocation, MMU
- Paging, Fragmentation, TLB
- UDS, 0000.sock
- Parity bit, Pararell Paritiy, Hamming Code
- Process Architecture
- MMU, TLB, Page Table
- NUMA
- NUMA (Kernel Level)
- Page Cache, Buffer Cache
- inode(index node)
- CPU Out-of-Order Execution, Barrier, Happens-Before
- Copy-on-Write (CoW)와 fork()의 메모리 최적화
- CAS와 ABA 문제
- Lock-free 및 STM(Software Transactional Memory)
Data Structure · 23
- 선형 리스트
- 연결 리스트
- 스택 stack
- 큐 queue
- 트리 Tree
- 이진 탐색 트리 Binary Search Tree
- Abstract Syntax Tree
- Parse Tree
- AVL(Adelson-Velsky and Landis) Tree
- Red-Black Tree: 레드 블랙 트리
- B-Tree
- B-Tree의 데이터 삭제
- 그래프 graph
- 깊이 우선 탐색(DFS , Depth-Fist Search)
- 너비 우선 탐색(BFS, Breadth-First Search)
- 자료구조와 알고리즘
- 너비 우선 탐색(BFS)
- 깊이 우선 탐색(DFS)
- 그리디 알고리즘
- 프림 알고리즘
- 다익스트라 알고리즘
- 벨만 포드 알고리즘
- 플로이드 와샬 알고리즘
AI · 83
- One-Hot Encoding, 다중공선성
- 과대적합, 과소적합
- 가중치w, 편향b
- 하이퍼 파라미터
- 회귀 모델 성능평가 지표
- 로지스틱 회귀분석 이론
- 훈련세트 데이터 스케일 문제, 전처리
- scikit-learn
- 서포트 벡터 머신
- 신경망 Perception
- Tensor 차원
- GPU 아키텍처
- CUDA
- 연산자 융합, 양자화
- TensorRT
- LLM Architecture
- LLM Agent 아키텍처
- 검색 증강 생성(RAG) 고도화 전략
- 이미지 특징점 추출 Feature Extraction
- ORB(Oriented FAST and Rotated BRIEF)
- CNN(Convolution Neural Network) 기반 특징 추출
- LSH(Locality-Sensitive Hashing)
- Elasticsearch Indexing & Vector Search
- 객체 탐지 (Object Detection)
- 검색 시스템 정량적 평가 지표 (IR Metrics & Evaluation)
- Metric Learning & CLIP
- 근사 검색 알고리즘, HNSW (ANN & FAISS)
- Elasticsearch 8.x Native Vector Search와 하이브리드 아키텍처
- AI 모델 경량화 및 추론 가속 (ONNX & TensorRT)
- AI 서빙 아키텍처 (Triton Inference Server & Dynamic Batching)
- Triton Inference Server
- vLLM
- LLM Gateway와 다중 모델(SaaS & Self-hosted) 통합 라우팅
- 모듈형 RAG 파이프라인 및 통합 인터페이스 설계
- AI Agent 도구화(Tooling) 및 동적 프롬프트·컨텍스트 관리 플랫폼
- RAG 및 Agent 서빙 파이프라인
- LLM/Agent 정량적 Evaluation 시스템
- 멀티 테넌트(Multi-tenant) LLM 플랫폼 환경과 자원 격리
- 모델 경량화 및 추론 지연 시간 최적화 파이프라인 (ONNXRuntime, TensorRT)
- Triton Inference Server config.pbtxt 튜닝
- vLLM 엔진 PagedAttention 기반 메모리 최적화
- 코어 추론 엔진과 통신하는 고성능 비동기 API 레이어 구현
- Continuous Batching 알고리즘
- Nesight Systems, PyTorch Profiler VRAM 메모리 병목 프로파일링
- LiteLLM 프록시 서버 구성
- 테넌트별 요청 분리 권한 인가 미들웨어 개발
- Token Bucket 기반 Rate Limiting
- Noisy Neigbor 차단 로직 구현
- 지연 없이 프롬프트 토큰 사용량을 로깅하는 관측성 파이프라인
- LLM API 응답 가공
- LangGraph 기반 Agent DAG
- RNN에서 Attention까지 발전 과정
- Checkpointing 적용
- Self-Attention, Multi-Head Attention
- Stateless 프로토콜에서 Agent 문맥 식별 라우터
- Positional Encoding, Encoder-Decoder
- BERT, GPT
- SFT, Policy Learning
- Off-policy Distillation과 Teacher-Student 학습
- On-policy SFT와 Rejection Sampling Fine-Tuning
- Preference Optimization: DPO 계열
- Online RL: PPO, GRPO, RLVR
- Self-Distillation과 Iterative Self-Improvement
- Policy Distribution와 On-Policy / Off-Policy
- LLM Model Tuning
- Transformer와 Causal LM 구조 이해
- Tokenizer와 Context Length
- Pretraining Objective와 Loss 이해
- Base Model, Instruct Model, Chat Model
- Continual Pretraining과 Fine-tuning 차이
- Pretraning Data와 SFT Data 구분
- Hermes Agent, Agent Memory Layer
- OpenWeight Model(Kimi, GLM, Qwen, DeepSeek) 고고학
- DeepSeek
- Qwen
- GLM
- Kimi
- LLM 추론 서빙 엔진 SGLang 리서치
- Agent Long Term Memory System
- QWEN 모델 분석
- Kimi 모델 분석
- DeepSeek V4.1 Flash 분석
- SIFT, SURF
AI/MLOps · 22
- CPU와 GPU의 설계 철학 차이
- GPU 스레드 실행 모델
- GPU 내부 메모리 계층 구조
- CUDA, Tensor Core
- HBM, Roofline 모델
- PCIe 레인 구조, GPUDirect Storage, NUMA Optimization
- NVLink, NVSwitch
- ZeRO Optimizer (DeepSpeed, FSDP)
- Transformer 추론 실행 구조 이해
- LLM Serving Benchmark와 성능 지표
- KV Cache와 Batching 최적화
- Quantization과 Multi-GPU Parallelism
- Production Model Serving과 Capacity Planning
- Agent 구성요소와 State Model 설계
- Tool Calling과 MCP 기반 Tool 설계
- Durable Execution과 Workflow 복구
- GPU 하드웨어와 성능 모델
- SGLang 서빙 실전 케이스북
- 모델 아키텍처별 서빙 플레이북
- 병렬화 전략 - TP, PP, EP, DP
- GPU 위에 모델이 뜨는 과정
- 분산 서빙과 통신