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과 커널 레벨까지 파고든다.
지금부터 본격적으로 시작한다.