콘텐츠로 이동

Ch.1 커리큘럼과 키워드 정리

< 어떻게 공부할 것인가


이 강의의 구조

24개 챕터, 7개 파트로 구성된다. 각 파트가 다루는 영역은 다음과 같다.

파트 챕터 영역
Part 1 Ch.1~6 기초 체력 - OS, 프로세스, 스레드, 네트워크
Part 2 Ch.7~9 AI 도구와 CS의 접점
Part 3 Ch.10~12 자료구조와 알고리즘의 실무
Part 4 Ch.13~16 데이터베이스 깊게 보기
Part 5 Ch.17~19 캐시와 성능 최적화
Part 6 Ch.20~22 소프트웨어 설계와 아키텍처
Part 7 Ch.23~24 보안과 마무리

파트 간의 관계를 그림으로 보면 이렇다:

graph TB
    P1["Part 1: 기초 체력<br/>OS, 프로세스, 네트워크"]
    P2["Part 2: AI와 CS<br/>프롬프트, 코드 리뷰"]
    P3["Part 3: 자료구조/알고리즘<br/>List vs Set, B-Tree"]
    P4["Part 4: 데이터베이스<br/>ORM, Index, Transaction"]
    P5["Part 5: 캐시/성능<br/>Redis, Bottleneck"]
    P6["Part 6: 설계/아키텍처<br/>SOLID, 테스트, Docker"]
    P7["Part 7: 보안/마무리<br/>OWASP, 종합"]

    P1 --> P2
    P1 --> P3
    P3 --> P4
    P1 --> P4
    P4 --> P5
    P1 --> P6
    P6 --> P7
    P5 --> P7
    P2 -.->|AI 활용은 전 파트에 걸쳐| P7

Part 1에서 쌓은 기초(OS, 프로세스, System Call 등)가 이후 모든 파트의 토대가 된다. 그래서 Part 1을 "기초 체력"이라고 부른다.

2주에 한 번, 총 48주 과정이다. 주차별 주제는 대략 이렇다 (변경될 수 있다):

주차 파트 주제
1~2주차 Part 1 Ch.1 왜 CS를 공부해야 하는가
3~4주차 Part 1 Ch.2 로그를 뺐더니 빨라졌어요? (1) - System Call과 커널
5~6주차 Part 1 Ch.3 로그를 뺐더니 빨라졌어요? (2) - CPU Bound와 I/O Bound
7~8주차 Part 1 Ch.4 프로세스와 스레드, 진짜로 이해하고 있는가
9~10주차 Part 1 Ch.5 동시성 제어의 기초 - Mutex에서 Deadlock까지
11~12주차 Part 1 Ch.6 네트워크 기초 - 3-way handshake를 넘어서
13~14주차 Part 2 Ch.7 AI가 코드를 짜주는 시대, 왜 CS를 알아야 하는가
15~16주차 Part 2 Ch.8 AI에게 좋은 지시를 내리기 위한 CS 키워드 사전
17~18주차 Part 2 Ch.9 AI가 만든 코드 리뷰하기 - 뭘 봐야 하는가
19~20주차 Part 3 Ch.10 contains()를 쓰지 마세요 - 자료구조 선택의 기준
21~22주차 Part 3 Ch.11 정렬과 검색, 그리고 인덱스의 원리
23~24주차 Part 3 Ch.12 트리, 그래프, 그리고 실무에서 만나는 구조들
25~26주차 Part 4 Ch.13 JPA를 써서 DB를 모른다고요? - SQL과 ORM의 관계
27~28주차 Part 4 Ch.14 인덱스를 안 걸어놓고 Redis를 설치했습니다
29~30주차 Part 4 Ch.15 Transaction과 Isolation Level
31~32주차 Part 4 Ch.16 DB 성능 튜닝의 실무
33~34주차 Part 5 Ch.17 느리니까 Redis 붙이고 생각해볼까요?
35~36주차 Part 5 Ch.18 Local Cache vs Remote Cache vs 계층 캐시
37~38주차 Part 5 Ch.19 성능이 안 나오네, Replica를 200개로 늘려볼까요?
39~40주차 Part 6 Ch.20 소프트웨어 공학의 핵심 - 관심사의 분리
41~42주차 Part 6 Ch.21 테스트를 짜라고 했더니 전부 Mocking입니다
43~44주차 Part 6 Ch.22 분산 시스템의 기초 - Docker부터 시작하자
45~46주차 Part 7 Ch.23 보안은 남의 일이 아니다
47~48주차 Part 7 Ch.24 종합 - 내가 만든 서비스를 처음부터 끝까지 분석하기

Ch.1 키워드 정리

이번 챕터에서 등장한 키워드를 정리한다. Ch.1은 기술 챕터가 아니므로 메타 키워드(학습과 사고 방식에 관한 키워드) 위주다.

본문에서 맛보기로 언급된 기술 키워드들(Sliding Window, Connection Pool, N+1, Virtual Thread, I/O Bound 등)은 이후 해당 챕터에서 자세히 다룬다. 지금은 "이런 게 있구나" 정도로만 보면 된다.

Computational Thinking (컴퓨팅 사고)

문제를 CS 개념으로 분해하고, 각 구성 요소를 체계적으로 분석하여 해결하는 사고방식이다.

"서버가 느리다" -> "CPU Bound인가? I/O Bound인가? Connection Pool인가?" 이런 식으로 문제를 쪼개는 능력.

이후 교육학 연구에서 4단계 모델로 구체화되었다: 분해(Decomposition), 패턴 인식(Pattern Recognition), 추상화(Abstraction), 알고리즘 디자인(Algorithm Design).

출처: Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35. 4단계 모델은 Google for Education 등의 후속 교육학 연구에서 정리된 것이다.

Keyword (키워드)

CS 개념을 지칭하는 용어. 검색과 AI 활용의 출발점이다.

"서버 느림"이 아니라 "connection pool exhaustion"을 아는 것이 키워드를 아는 것이다.

이 강의 전체가 키워드를 쌓아가는 과정이다.

WORD size

CPU가 한 번에 처리하는 데이터의 기본 단위 크기.

32비트 CPU는 4바이트, 64비트 CPU는 8바이트.

구조체 정렬(struct alignment)에 영향을 주며, 이를 모르면 크로스 플랫폼 환경에서 데이터가 깨질 수 있다.

JD (Job Description)

채용 공고에 명시된 직무 요구사항.

JD에는 도구(Python, AWS 등)가 나열되지만, 면접에서는 그 도구 아래에 깔린 CS 원리를 물어본다.

키워드 연관 관계

Ch.1의 키워드는 아직 기술적 연결이 아니라, 학습 구조에 대한 것이다.

graph LR
    KW["Keyword<br/>(키워드)"]
    CT["Computational<br/>Thinking"]
    WS["WORD size"]
    JD["JD"]

    KW -->|"키워드를 알아야<br/>분해할 수 있다"| CT
    KW -->|"키워드를 모르면<br/>검색도 못 한다"| JD
    KW -->|"키워드를 모르면<br/>생기는 일의 예시"| WS

    style KW fill:#f9f,stroke:#333

여기까지의 지도 (누적)

위의 "키워드 연관 관계"가 이번 챕터 의 연결이라면, 아래는 Ch.1부터 지금까지 도메인별로 쌓인 키워드다. 빈 레인은 앞으로 그 챕터에서 채워진다 — 다 채워지는 과정이 곧 이 강의의 지도다. (이번 챕터에서 추가된 키워드는 굵게.)

도메인 누적 키워드 (등장 챕터)
OS·실행 — (Ch.2에서 시작)
동시성·트랜잭션 — (Ch.5에서 시작)
자료구조·알고리즘 — (Ch.10에서 시작)
DB·캐시·튜닝 — (Ch.13에서 시작)
네트워크·분산 — (Ch.6에서 시작)
설계·AI·품질·보안 Computational Thinking·CS 키워드(1)

Ch.2부터는 기술 키워드가 본격적으로 등장하면서, 이 그래프가 폭발적으로 커진다.

Ch.1에 나온 "예고편 키워드"의 챕터 매핑

Ch.1 본문에서 설명 없이 등장했거나 짧게 스친 큰 키워드들이, 어느 챕터에서 코드·측정과 함께 증명되는지 정리한다.

키워드 첫 등장(Ch.1) 증명되는 챕터
System Call, print() 내부 03 연관어 그래프 Ch.2 — k6로 print 유무 성능 측정
I/O Bound · CPU Bound · GIL · async 오해 01 (AI 프롬프트), 02 (Virtual Thread) Ch.3 — asyncio / Thread / Process 비교 측정
Memory Layout · OOM · Stack Overflow 01 (결국 CS로 회귀) Ch.4
Mutex · Deadlock · Race Condition 02 (Virtual Thread / synchronized 언급) Ch.5
TCP/IP · Connection Pool · TIME_WAIT 01 (주니어 A/B, 면접 질문) Ch.6
Virtual Thread · Pinning 원리 02 (사례 섹션) Ch.4~5 (Thread/OS 관점)
N+1 쿼리 · Index · ORM 01 (AI 프롬프트) Ch.13~14
WORD size · 구조체 정렬 01 (오프닝 에피소드) Ch.4 (Memory Layout 맥락)
Timezone · 인코딩 류 데이터 함정 02 (백엔드 평행 에피소드) (별도 챕터 없음, 키워드 인식만)

Ch.1에서 한 약속("키워드를 모르면 검색도 AI도 못 쓴다")은 위 챕터들에서 실제 코드 + 측정 + 수치로 갚는다.

다음에 이어지는 이야기

Ch.1에서는 코드를 한 줄도 치지 않았다. 다음 챕터부터는 다르다.

Ch.2에서는 print() 한 줄이 왜 비싼지를 직접 증명한다. FastAPI 서버에 print를 넣은 것과 뺀 것의 성능 차이를 k6로 측정하고, 그 차이가 왜 발생하는지를 System Call과 커널 레벨까지 파고든다.

지금부터 본격적으로 시작한다.


< 어떻게 공부할 것인가

Ch.2 로그를 뺐더니 빨라졌어요? (1) - System Call과 커널 >