CS 기초 & 아키텍처 가이드
CS 기초 & 아키텍처 영역은 특정 언어나 프레임워크에 매이지 않는 컴퓨터과학(Computer Science)의 근본 원리를 다룹니다. 자료구조와 알고리즘처럼 모든 개발 분야의 밑바탕이 되는 지식과, 시스템을 크게 설계하는 아키텍처 감각을 함께 기릅니다.
학습 순서
기초는 컴퓨터과학 전반(자료 표현, 운영체제, 네트워크, 데이터베이스의 원리)을 조망하는 데서 시작해, 자료구조와 알고리즘(Data Structures and Algorithms)으로 문제를 효율적으로 푸는 방법을 익힙니다. 이 지식을 코딩 테스트 형태로 훈련하고 싶다면 리트코드(LeetCode) 학습 주제로 실전 문제 풀이 감각을 다질 수 있습니다.
자료구조와 알고리즘을 다진 뒤에는 시스템 설계(System Design)로 대규모 서비스를 어떻게 구조화하는지 배우고, 소프트웨어 설계·아키텍처(Software Design & Architecture) 원칙과 소프트웨어 아키텍트(Software Architect)로서 갖춰야 할 의사결정 역량으로 이어갑니다. 스칼라(Scala)·러스트(Rust) 같은 언어는 함수형 프로그래밍이나 메모리 안전성처럼 CS 기초 개념을 실제 언어 설계에서 확인하고 싶을 때 참고할 수 있습니다.
지금까지 설명한 흐름을 한눈에 정리하면 [그림 1]과 같습니다.
[그림 1] CS 기초 & 아키텍처 로드맵 구성도
먼저 읽을 문서
CS 기초 영역의 핵심 개념을 작은 예제와 그림으로 먼저 확인하고 싶다면 다음 위키 문서를 참고할 수 있습니다.
- 프로세스와 스레드 구분하기: 독립된 메모리를 갖는 프로세스와 메모리를 공유하는 스레드의 차이를 이해하고 동시성과 병렬성을 구분합니다.
- 스택과 힙 메모리 나눠 보기: 함수 호출에 따라 쌓이고 비워지는 스택과 동적으로 할당되는 힙의 차이를 이해하고 메모리 관리 원리를 살펴봅니다.
- URL을 입력하면 일어나는 일: DNS와 TCP: 브라우저가 주소를 IP로 바꾸는 DNS 조회부터 3-way 핸드셰이크와 TLS를 거쳐 HTTP 요청이 도달하는 과정을 짚어 봅니다.
- HTTP 요청과 응답: 클라이언트와 서버가 웹 자원을 주고받는 요청·응답 메시지 구조와 상태 코드의 역할을 다룹니다.
- 트랜잭션으로 변경 묶기: 여러 데이터 변경을 단일 작업 단위로 묶고 COMMIT과 ROLLBACK으로 원자성을 보장하는 원리를 다룹니다.
- DB 인덱스가 조회를 빠르게 하는 이유: 전체 테이블 스캔과 B-트리 인덱스 탐색의 비용 차이를 비교하고 인덱스 동작 원리와 설계 주의점을 알아봅니다.
- 자료구조 선택의 첫걸음: 순서 보존, 중복 허용, 키 조회 방식에 따라 리스트·집합·딕셔너리 중 알맞은 자료구조를 고르는 기준을 다룹니다.
- 시간 복잡도와 Big-O 읽기: 입력 크기 증가에 따른 연산 횟수의 변화를 Big-O로 분석하고 리스트와 집합의 탐색 비용 차이를 확인합니다.
학습 주제
| 학습 주제 | 다루는 내용 |
|---|---|
| 컴퓨터과학 | 컴퓨터과학 전반의 핵심 개념 조망 |
| 자료구조와 알고리즘 | 효율적인 문제 해결을 위한 자료구조·알고리즘 |
| LeetCode | 코딩 테스트 실전 문제 풀이 |
| 시스템 설계 | 대규모 서비스 아키텍처 설계 |
| 소프트웨어 아키텍트 | 시스템 전체를 조망하는 아키텍트 역량 |
| 소프트웨어 설계 및 아키텍처 | 설계 원칙과 아키텍처 패턴 |
| Scala | JVM 기반 함수형·객체지향 언어 |
| Rust | 메모리 안전성을 보장하는 시스템 프로그래밍 언어 |
다른 영역과의 연결
배운 아키텍처 지식을 실제 서버 구조에 적용하고 싶다면 백엔드 가이드를, 관리자로서 시스템 의사결정을 다루고 싶다면 커리어 & 직무 가이드의 엔지니어링 매니저 학습 주제를 함께 참고할 수 있습니다.
이 로드맵에서 읽을 지식 문서
- SoC란 무엇인가 — 스마트폰과 라즈베리파이의 핵심 두뇌
단일 실리콘 칩에 CPU·GPU·NPU·메모리 컨트롤러를 통합한 SoC의 개념, 분리형 PC 및 MCU와의 차이점, 스마트폰과 엣지 기기에서 SoC를 쓰는 이유를 알아봅니다.
- MCU 레지스터 메모리 맵과 GPIO 직접 제어
라이브러리 함수 아래 숨겨진 메모리 맵 주소와 GPIO 레지스터 직접 제어의 핵심 원리를 알아봅니다.
- MCU 인터럽트와 NVIC 우선순위 처리
폴링이 입력을 놓치는 원인을 짚고 인터럽트의 기본 동작 원리, 우선순위 선점 및 안전한 핸들러 작성 규칙을 알아봅니다.
- 문장 전체를 한눈에 보는 트랜스포머와 어텐션
순차 처리의 한계를 극복하고 문장 전체의 단어 간 연관성을 한 번에 파악하는 트랜스포머(Transformer)와 셀프 어텐션(Self-Attention)의 핵심 원리를 살펴봅니다.
- 오픈북 시험과 암기: RAG와 파인튜닝의 차이
사내 문서와 최신 지식을 AI 시스템에 연결할 때 RAG(오픈북 시험)와 파인튜닝(암기 시험)의 구조적 차이, 비용, 선택 기준을 비교합니다.
- 토큰과 컨텍스트 창으로 LLM의 기억 이해하기
글자 수와 토큰의 차이, 대화가 길어질 때 앞 내용을 잊어버리는 컨텍스트 창의 구조적 원리와 슬라이딩 윈도우 관리법을 알아봅니다.
- 스택과 힙 메모리 나눠 보기
함수 호출에 따라 쌓이고 비워지는 스택과 동적으로 할당되는 힙의 차이를 이해하고 메모리 관리 원리를 살펴봅니다.
- 시간 복잡도와 Big-O 읽기
입력 크기 증가에 따른 연산 횟수의 변화를 Big-O로 분석하고 리스트와 집합의 탐색 비용 차이를 확인합니다.
- 프로세스와 스레드 구분하기
독립된 메모리를 갖는 프로세스와 메모리를 공유하는 스레드의 차이를 이해하고 동시성과 병렬성을 구분합니다.
- DB 인덱스가 조회를 빠르게 하는 이유
전체 테이블 스캔과 B-트리 인덱스 탐색의 비용 차이를 비교하고 인덱스 동작 원리와 설계 주의점을 알아봅니다.
- URL을 입력하면 일어나는 일: DNS와 TCP
브라우저가 주소를 IP로 바꾸는 DNS 조회부터 3-way 핸드셰이크와 TLS를 거쳐 HTTP 요청이 도달하는 과정을 짚어 봅니다.
- 자료구조 선택의 첫걸음
순서, 중복 허용 여부, 조회 방법을 기준으로 리스트·집합·딕셔너리를 선택합니다.
- 트랜잭션으로 변경 묶기
여러 데이터 변경을 한 처리 단위로 묶고 COMMIT과 ROLLBACK의 차이를 확인합니다.
- HTTP 요청과 응답
요청과 응답 메시지를 읽고 브라우저가 웹 자원을 가져오는 흐름을 확인합니다.