코드를 작성할 때 실제로 하는 일
Source: Dev.to
Computing, Stripped to Its Core
컴퓨팅을 가장 기본적인 수준으로 보면 단순합니다:
입력 → 변환 → 출력
당신이 사용해 본 모든 시스템—계산기든, 백엔드 API든, 분산 시스템이든—모두 이 패턴을 따릅니다.
머신은 실제로 그 변환을 어떻게 수행할까요?
Everything Is Data (Even Your Code)
컴퓨터 안에는 변수, 함수, 객체가 없습니다—오직 **이진 데이터(0과 1)**만 존재합니다.
당신의 코드(예: if 문, 루프, API 호출)는 머신 명령으로 컴파일되거나 인터프리트되며, 이는 단순히 숫자에 불과합니다.
The CPU: The Real Executor
CPU는 실제로 작업을 수행하는 구성 요소입니다. 간단한 루프를 따릅니다:
가져오기 → 디코딩 → 실행
1. Fetch
메모리에서 다음 명령을 가져옵니다.
2. Decode
그 명령이 의미하는 바를 이해합니다.
3. Execute
연산(수학, 논리, 메모리 접근)을 수행합니다.
Example
다음과 같이 코드를 작성하면:
const sum = a + b;
CPU는 JavaScript를 보지 않습니다. 대신 다음과 같은 작업을 봅니다:
a를 레지스터에 로드b를 레지스터에 로드- 두 값을 더함
- 결과를 저장
이것이 컴퓨팅입니다.
The GPU: Specialized Parallelism
CPU가 범용이라면, GPU는 수천 개의 작은 코어를 사용해 동일한 명령을 서로 다른 데이터 포인트에 동시에 실행하도록 설계되었습니다.
GPU가 주도하는 분야:
- 그래픽 렌더링
- 머신 러닝
- 시뮬레이션
CPU는 복잡한 로직과 분기(branch)를 가진 순차 작업에 최적화된 몇 개의 강력한 코어를 가지고 있습니다.
GPU는 방대한 데이터셋에 동일한 연산을 한 번에 적용하는 대규모 병렬 처리를 위해 설계된 수천 개의 단순 코어를 가지고 있습니다.
What “Transformation” Actually Means
당신이 작성하는 모든 프로그램은 데이터를 변환합니다.
예시
- API → 요청을 응답으로 변환
- 데이터베이스 → 쿼리를 결과로 변환
- 프론트엔드 → 상태를 UI로 변환
그 아래에서는 데이터가 메모리를 통해 이동하고, CPU/GPU에 의해 처리된 뒤 다시 기록됩니다.
Memory Is the Real Battlefield
대부분의 성능 문제는 계산 자체가 아니라 데이터 이동에 있습니다.
- CPU는 빠릅니다.
- 메모리 접근은 느립니다.
시스템 효율성은 다음에 달려 있습니다:
- 메모리에 얼마나 자주 접근하느냐
- 데이터가 어떻게 구조화되어 있느냐
- 데이터를 얼마나 많이 이동시키느냐
From This to Scalable Systems
스케일러블 시스템은 단지 대규모 데이터 변환 파이프라인일 뿐입니다.
- 백엔드 서비스 → 요청을 처리
- 큐 시스템 → 서비스 간에 데이터를 이동
- 데이터베이스 → 구조화된 데이터를 저장하고 검색
대규모 환경에서는 단순히 “요청을 처리”하는 것이 아니라, 데이터가 어떻게 흐르고, 변환되고, 머신에 걸쳐 지속되는지를 관리합니다.
Why This Knowledge Matters
컴퓨팅을 이해하지 못하면 다음과 같은 실수를 할 수 있습니다:
- 데이터를 과도하게 가져오기
- 비효율적인 API 설계
- 메모리 비용 무시
- 동시성 남용
- 성능을 추측만 하고 근거 없이 판단
이해를 갖추면 할 수 있는 일:
- 자연스럽게 확장되는 시스템 설계
- 병목 현상 식별
- 의도적인 트레이드‑오프 수행
The Shift
대부분의 개발자는 “이 기능을 어떻게 만들까?”라고 생각합니다.
보다 뛰어난 개발자는 “데이터가 무엇이고, 어떻게 움직이는가?”라고 생각합니다.
그 차이가 바로 차이점입니다.
Final Thought
컴퓨팅은 마법도, 추상도, 고수준도 아닙니다. 그것은 하드웨어 제약 하에서 데이터가 구조화된 변환을 거치는 과정입니다.
이를 이해하면 당신은:
- 코드를 무작정 작성하는 것을 멈추고…
- …시스템을 의도적으로 설계하게 됩니다.