
RAM vs ROM: 껐다 켜면 왜 데이터가 날아갈까? (완전정복)
DRAM의 누설 전류부터 ECC, HBM, 그리고 실제 성능 벤치마크(fio, sysbench)까지. 단순한 비유를 넘어 메모리의 모든 것을 파헤치는 개발자 필독 가이드.

DRAM의 누설 전류부터 ECC, HBM, 그리고 실제 성능 벤치마크(fio, sysbench)까지. 단순한 비유를 넘어 메모리의 모든 것을 파헤치는 개발자 필독 가이드.
맥북 배터리는 왜 오래 갈까? 서버 비용을 줄이려면 AWS Graviton을 써야 할까? 복잡함(CISC)과 단순함(RISC)의 철학적 차이를 정리해봤습니다.

AI 시대의 금광, 엔비디아 GPU. 도대체 게임용 그래픽카드로 왜 AI를 돌리는 걸까? 단순 노동자(CUDA)와 행렬 계산 천재(Tensor)의 차이로 파헤쳐봤습니다.

빠른 SSD를 샀는데 왜 느릴까요? 1차선 시골길(SATA)과 16차선 고속도로(NVMe). 인터페이스가 성능의 병목이 되는 이유.

LP판과 USB. 물리적으로 회전하는 판(Disc)이 왜 느릴 수밖에 없는지, 그리고 SSD가 어떻게 서버의 처리량을 100배로 만들었는지 파헤쳐봤습니다.

몇 년 전, 주니어 개발자 시절에 AWS에 Redis 서버를 처음 구축하고 운영할 때였습니다. 서비스 점검을 위해 가벼운 마음으로 인스턴스를 재부팅했습니다. 단순한 OS 보안 패치 업데이트였거든요. "잠깐 껐다 켜는 거니까 괜찮겠지? 금방 다시 뜨니까."
그런데 서버가 다시 켜지자마자 고객센터 전화기에 불이 나기 시작했습니다. "갑자기 로그인이 풀렸어요!", "장바구니에 담아둔 물건이 다 사라졌어요!", "작성 중이던 글이 날아갔어요!"
등에 식은땀이 줄줄 흘렀습니다. 원인은 너무나 허무하고 간단했습니다. 제가 사용자들의 세션 정보(로그인 유지 데이터)를 디스크가 아닌 메모리(RAM)에만 저장해두고 있었던 겁니다.
"아니, 내 컴퓨터 바탕화면에 있는 엑셀 파일은 재부팅해도 그대로 있잖아? 왜 서버는 날아가는 거야?"
저는 그때까지도 컴퓨터를 그저 '마법 상자'로만 생각하고 있었습니다. 우리가 당연하게 여기는 "저장(Save)"이라는 행위가 실제 하드웨어 레벨에서 어떤 기적 같은 일을 수행하는지 전혀 몰랐던 거죠.
이 뼈아픈 실수는 저에게 휘발성(Volatility)이라는 컴퓨터의 가장 기초적이고도 잔인한 성질을 각인시켜주었습니다. 오늘은 컴퓨터의 두 가지 기억, RAM(작업 기억)과 ROM/Storage(장기 기억)에 대해, 단순한 비유를 넘어 그 작동 원리부터 성능 벤치마크까지 깊이 있게 파헤쳐보려 합니다.
컴퓨터 가게나 휴대폰 대리점에 가면 흔히 이런 대화가 오갑니다.
손님: "이 갤럭시 폰 메모리가 얼마예요?" 직원: "아, 이거 메모리 256GB라 넉넉합니다. 사진 10만 장도 들어가요."
이 대화에서 '메모리'는 기술적으로 틀린 말입니다. 여기서 말하는 256GB는 엄밀히 말하면 메모리(RAM)가 아니라 스토리지(Storage, 저장소)입니다. 실제 이 폰의 RAM은 기껏해야 8GB나 12GB 정도에 불과할 겁니다.
하지만 공학적으로 이 둘은 "속도"와 "기억력의 지속성"이라는 측면에서 하늘과 땅만큼 차이가 납니다. 개발자라면 이 차이를 명확히 구분해야 합니다. 그렇지 않으면 저처럼 세션을 RAM에 넣고 재부팅하는 대참사를 겪게 되니까요.
이 둘의 관계를 가장 완벽하고 직관적으로 설명하는 비유는 도서관입니다. 여러분이 도서관에서 논문을 쓰고 있는 연구원(CPU)이라고 상상해봤다.
우리가 "엑셀 프로그램을 실행한다"는 건 무슨 뜻일까요? 책장(SSD)에 꽂혀 있는 '엑셀'이라는 책을 꺼내서, 책상(RAM) 위에 펼치는 행위입니다. 이걸 로딩(Loading)이라고 합니다.
우리가 "저장(Save) 버튼을 누른다"는 건? 책상(RAM) 위에서 끄적거린 메모 내용을, 다시 책장(SSD)에 꽂아서 박제하는 행위입니다. 만약 저장을 안 하고 코드를 뽑으면? 책상 위에 있던 메모는 그대로 증발합니다. 책장에 꽂은 적이 없으니까요.
"그냥 RAM도 전원 꺼도 기억하게 만들면 안 되나요? 기술이 부족해서 그런가요?" 물론 기술은 있습니다(MRAM 등). 하지만 속도와 비용의 가혹한 트레이드오프 때문에 지금의 구조가 정착되었습니다.
우리가 PC와 서버에서 주로 쓰는 메모리는 DDR SDRAM입니다. 여기서 'D'가 Dynamic입니다. DRAM은 데이터를 기억하기 위해 커패시터(Capacitor)라는 아주 미세한 배터리(축전기)를 사용합니다.
10문제는 이 커패시터가 완벽한 밀폐 용기가 아니라는 점입니다. 미세하게 구멍이 난 물통과 같습니다.
가만히 놔두면 전자가 조금씩 새어 나갑니다(Leakage). 몇 밀리초만 지나도 1인지 0인지 알 수 없게 되어버립니다.
그래서 메모리 컨트롤러는 1초에도 수십, 수백 번씩 "리프레시(Refresh)"라는 작업을 합니다. "어? 3번 방에 전기가 좀 줄었네? 다시 채워!" 하고 계속 전기를 주입해주는 거죠. 마치 물이 새는 물통에 계속 물을 부어주며 수위를 유지하는 것과 같습니다. 이 과정 때문에 'Dynamic(동적)'이라는 이름이 붙었습니다.
그런데 전원이 꺼지면? 물(전기)을 부어줄 수 없습니다. 그러면 구멍 난 물통은 순식간에 바닥을 드러내고, 데이터는 흔적도 없이 사라집니다. 이것이 바로 휘발성의 물리적 원리입니다.
반면 SSD에 쓰이는 NAND Flash 메모리는 플로팅 게이트(Floating Gate)라는 특수한 구조를 가집니다. 이건 일종의 절연체로 둘러싸인 감옥입니다. 강력한 전압을 걸어서 전자를 이 감옥 안으로 억지로 밀어 넣습니다(터널링 효과). 일단 들어간 전자는 두꺼운 절연체 벽 때문에 밖으로 도망갈 수 없습니다. 전원이 끊겨도 감옥 안에 갇혀 있는 거죠.
하지만 이 "감옥에 억지로 밀어 넣고 빼는" 과정은 물리적으로 시간이 걸립니다. 그리고 벽을 뚫고 지나다니느라 소자의 수명이 닳습니다(SSD 수명 문제, TBW). 결국 "RAM의 초고속 성능"은 "데이터 보존"을 포기한 대가로 얻어진 것입니다.
사실 "책상과 책장" 사이에는 더 많은 단계가 있습니다. 컴퓨터 구조의 핵심인 '메모리 계층 구조'를 정리해본다.
[ CPU Core ]
|
------------------
| Registers | <-- 0.5ns (CPU 주머니)
------------------
|
------------------
| L1 Cache | <-- 1ns (책상 위 메모지)
------------------
|
------------------
| L2 Cache | <-- 4ns (책상 서랍)
------------------
|
------------------
| Main Memory | <-- 100ns (작업 책상)
| (RAM) | ** 휘발성 경계선 **
------------------
|
------------------
| SSD (Flash) | <-- 100,000ns (빠른 책장)
------------------
|
------------------
| HDD (Disk) | <-- 10,000,000ns (지하 서고)
------------------
위로 갈수록 빠르고 비쌉니다. 아래로 갈수록 느리고 싸며 거대합니다. RAM은 SSD보다 약 1,000배 빠릅니다. 그리고 HDD보다는 100,000배 빠릅니다. 우리가 Redis 같은 인메모리 DB를 쓰는 이유가 바로 이 거대한 속도 차이 때문입니다.
단순한 개념을 넘어, 실제 서버 운영이나 튜닝에 필요한 지식들을 정리해봤다.
여러분이 쓰는 노트북 램과 서버실에 들어가는 램은 다릅니다. 서버용은 ECC RAM을 씁니다.
우주에서 날아오는 방사선(Cosmic Rays)이 아주 가끔 메모리 칩을 때리면, 비트 하나가 0에서 1로 바뀌는 비트 플립(Bit Flip) 현상이 일어납니다.
일반 PC에서는 "어? 블루스크린 떴네" 하고 말지만, 금융 서버에서 계좌 잔고 숫자가 바뀌면 큰일 나겠죠.
ECC 메모리는 추가적인 칩을 달아서 이런 오류를 스스로 감지하고 수정합니다.
램을 꽂을 때 1, 3번 슬롯에 꽂으라는 말 들어보셨죠? 이는 메모리 대역폭(Bandwidth)을 늘리기 위함입니다.
앞서 말한 스왑(Swap) 메모리를 얼마나 적극적으로 쓸지 결정하는 커널 파라미터가 vm.swappiness입니다.
0: 웬만하면 스왑 안 씀 (RAM에서 버팀).100: 적극적으로 스왑 사용.60.데이터베이스 서버(MySQL 등)는 반응 속도가 중요하므로, 스왑을 쓰면 성능이 급격히 떨어집니다.
그래서 DB 서버에서는 이 값을 1이나 10 정도로 낮춰서 최대한 물리 RAM을 쓰도록 유도하는 것이 일반적인 튜닝 팁입니다.
단, 0으로 설정하면 OOM Killer가 프로세스를 바로 죽여버릴 수 있으니 주의해야 합니다.
"빠르다"는 건 추상적입니다. 실제로 얼마나 빠른지 숫자로 직접 확인해봤다.
리눅스에서 sysbench와 fio를 이용해 직접 측정한 결과입니다.
sysbench memory --memory-access-mode=seq run
# Output:
# 45321.45 MiB/sec
fio --name=write_test --ioengine=libaio --rw=write ...
# Output:
# BW=2500MiB/s
분석 결과: RAM은 SSD보다 대역폭(Bandwidth) 면에서 약 18배 빠릅니다. 하지만 더 중요한 건 레이턴시(반응 속도)입니다. RAM은 SSD보다 1,000배 빠르게 반응합니다. 이것이 바로 DB가 아무리 좋은 SSD를 써도, 모든 데이터를 RAM(Buffer Pool)에 올리려고 안달이 난 이유입니다.
이제 "RAM은 빠르고 휘발성, Storage는 느리고 비휘발성"이라는 공식도 옛말이 되어가고 있습니다.
AI 시대가 오면서 GPU는 초당 수 테라바이트(TB/s)의 데이터를 먹어치워야 합니다. 기존의 평면적인 DDR 메모리로는 이 속도를 감당할 수 없습니다. 그래서 나온 것이 HBM입니다. DRAM 칩을 12층, 16층으로 수직으로 쌓아 올리고(Stacking), 구멍을 뚫어서(TSV) 엘리베이터처럼 연결한 겁니다. SK하이닉스와 삼성이 목숨 걸고 경쟁하는 이 기술은 "책상(RAM)을 2층, 3층으로 쌓아서 손 닿는 범위를 넓힌 것"과 같습니다.
지금까지는 CPU 하나당 꽂을 수 있는 램 용량이 정해져 있었습니다(슬롯 부족). CXL은 메모리를 외장 하드처럼 꽂을 수 있게 해주는 기술입니다. 더 나아가, 여러 서버가 메모리 풀(Memory Pool)을 공유할 수도 있습니다. "옆자리 동료의 책상이 비었네? 내가 좀 쓰자"가 가능해지는 혁명적인 기술입니다.
인텔은 "RAM처럼 빠른데 Storage처럼 안 지워지는 메모리"인 Optane을 만들었습니다. 이론상 완벽했지만, 너무 비싸고 애매한 포지션 때문에 결국 사업을 접었습니다. 하지만 이 시도는 메모리와 스토리지 사이의 장벽을 허물려는 인류의 노력은 계속될 것임을 보여줍니다.
이 모든 하드웨어 지식을 종합하여 백엔드 설계를 해봤다.
Redis (RAM):
RDBMS (Disk):
크롬 탭 하나하나가 독립된 프로세스(책상 위 구획)를 차지합니다.
useEffect 등의 훅에서 이벤트 리스너를 해제(removeEventListener)하지 않았을 때 발생하는 메모리 누수(Memory Leak)를 조심해야 합니다. 책상을 반납 안 하고 계속 점유하는 좀비 탭을 만드는 꼴이니까요.컴퓨터 구조를 깊이 공부할수록 마주하는 진리는 하나입니다. "공짜 점심은 없다 (There is no free lunch)."
개발자인 우리는 이 제약 조건 속에서 최적의 해를 찾는 예술가들입니다. "이 데이터는 날아가도 되는가? 얼마나 빨리 사용자에게 보여줘야 하는가?" 이 질문에 대한 답이 여러분의 시스템 아키텍처를 결정합니다.
이제 누군가 "재부팅했는데 왜 데이터가 날라갔죠?"라고 묻는다면, 단순히 "램이라서요"라고 하기보단, 하드웨어 엔지니어의 마음으로 설명해주세요.
"당신의 데이터는 작업 책상(RAM) 위에만 있었거든요. 퇴근할 땐 반드시 책장(SSD)에 꽂는 습관을 들이세요."| 구분 | 비유 (도서관) | 물리적 원리 | 접근 속도 (Latency) | 전원 OFF 시 | 용도 예시 |
|---|---|---|---|---|---|
| Registers | 손에 쥔 메모 | CPU 내부 회로 | < 1 ns | 증발 | 연산 중인 값 |
| RAM (Memory) | 작업 책상 | Capacitor (Leaky) | ~100 ns | 증발 (Volatile) | 실행 중 앱, Redis |
| SSD (Storage) | 개인 책장 | Floating Gate (Trap) | ~100,000 ns (0.1ms) | 보존 (Persist) | 파일, DB, OS |
| HDD (Disk) | 지하 서고 | Magnetic Platter | ~10,000,000 ns (10ms) | 보존 (Persist) | 대용량 백업 |
Years ago, as a junior developer, I was running a Redis server on AWS. I rebooted the instance for a routine OS security patch. "It's just a quick restart. No big deal."
But the moment the server came back online, my phone blew up. "I was logged out!", "My shopping cart is gone!", "My draft disappeared!"
I panicked. The cause was ridiculously simple. I had stored all user session data (login cookies) only in Memory (RAM), not on the disk.
"Wait, the files on my desktop don't disappear when I restart my PC. Why did the server wipe everything?"
I had treated the computer as a magic black box. I didn't understand the miracle that happens at the hardware level when we click "Save".
This painful mistake taught me about Volatility—the most basic yet brutal law of computers. Today, we go beyond simple analogies to explore the deep mechanics of RAM (Working Memory) and ROM/Storage (Long-term Memory), covering everything from benchmarks to HBM technology.
In phone stores, you hear this all the time:
Customer: "How much memory does this phone have?" Staff: "This one has 256GB memory. It holds 100,000 photos."
Technically, the staff is wrong. That 256GB is Storage (Flash Memory), not Memory (RAM). The actual RAM is likely only 8GB or 12GB.
But structurally, the difference in "Speed" and "Permanence" is astronomical. Developers must distinguish these two clearly. Otherwise, you end up wiping user data on reboot just like I did.
The best analogy is a Library. Imagine you are a researcher (CPU) working in a giant library.
"Opening Excel" = Taking the 'Excel' book from the Shelf (SSD) and spreading it on the Desk (RAM). This is Loading.
"Clicking Save" = Taking your notes from the Desk (RAM) and filing them back into the Shelf (SSD). If you pull the plug without saving? The notes on the desk evaporate. They were never filed.
"Can't we make RAM that remembers without power?" We can (MRAM), but current technology is locked in a trade-off between Speed and Cost.
We use DDR SDRAM. 'D' stands for Dynamic. DRAM stores bits (0s and 1s) in tiny Capacitors. Think of a capacitor as a microscopic bucket for electricity.
The problem is, these buckets have pinhole leaks.
Electrons leak out naturally. In milliseconds, a 1 becomes a 0.
So, the memory controller performs a "Refresh" cycle dozens of times per second. "Bucket #3 is low! Refill it!" It constantly feeds power to maintain the data. This dynamic maintenance is why it's called DRAM.
When power cuts? No more refilling. The buckets drain instantly. The data vanishes. This is the physics of Volatility.
SSDs use Floating Gates. This is effectively an electron prison surrounded by thick insulator walls. We use high voltage to force electrons into this prison (Tunneling). Once inside, they are trapped. Even without power, they can't escape.
But forcing electrons through walls takes physical time. And it damages the walls (SSD wear/endurance). So, RAM's speed is bought at the price of permanence.
The "Desk vs Shelf" analogy is a simplification. The real hierarchy is a pyramid.
[ CPU Core ]
|
------------------
| Registers | <-- 0.5ns (CPU's Pockets)
------------------
|
------------------
| L1 Cache | <-- 1ns (Desk Memo Pad)
------------------
|
------------------
| L2 Cache | <-- 4ns (Desk Drawer)
------------------
|
------------------
| Main Memory | <-- 100ns (The Desk)
| (RAM) | ** Volatiliy Line **
------------------
|
------------------
| SSD (Flash) | <-- 100,000ns (Fast Shelf)
------------------
|
------------------
| HDD (Disk) | <-- 10,000,000ns (Basement)
------------------
Up: Faster, Expensive, Volatile. Down: Slower, Cheap, Permanent. RAM is 1,000x faster than SSD. This is why we use Redis.
Beyond the basics, here is what performance engineers need to know.
Server RAM is different from Laptop RAM. It uses ECC.
Cosmic rays from space can strike a memory chip and flip a bit (0 -> 1).
On a laptop, it might crash a game. On a bank server, it corrupts a transaction.
ECC RAM has an extra chip to detect and fix these single-bit errors.
Ideally, populate RAM slots 1 and 3. This enables Dual Channel, effectively widening the highway from 1 lane to 2 lanes. More bandwidth means the CPU gets data faster. Servers use Quad (4) or Octa (8) channels.
swappinessSwap is when the OS uses the Disk (Shelf) as fake RAM (Desk) when RAM is full.
The kernel parameter vm.swappiness controls this.
60 (Default): Balances RAM and Swap.1 or 10: Tells Linux "Don't swap unless absolutely necessary."For DB servers (MySQL), we often tune this to 1.
We want the DB to run 100% in RAM. Swapping to disk kills performance instantly (Latency spike).
"Fast" is abstract. Let's look at real numbers from sysbench.
RAM is 18x faster in bandwidth and 1,000x faster in latency. This explains why we desperately try to fit everything into RAM (e.g., Database Buffer Pools). Disk is just too slow.
The classic "Volatile RAM vs Non-volatile Storage" rule is evolving.
In the AI era, GPUs need to digest Terabytes of data per second. Conventional flat DDR memory is too slow and limited. Enter HBM: It stacks DRAM chips vertically (like a skyscraper) and connects them with elevator shafts (TSV). It's like building upwards on your desk to hold more books within arm's reach.
Previously, a CPU was limited to the RAM slots on the motherboard. CXL allows connecting memory like an external hard drive. Servers can even share a Memory Pool. "My desk is full? I'll use the empty space on your desk." This is revolutionizing data centers.
Intel tried to make Optane: "Fast as RAM, Permanent as Storage." It worked, but it was too expensive and failed commercially. However, the dream of "Universal Memory" (MRAM, PRAM) lives on.
Redis (RAM):
RDBMS (Disk):
Why does Chrome eat RAM? Each tab is a process.
This isolates crashes (Sandboxing) but duplicates overhead.
Developers must watch for Memory Leaks.
If your JavaScript code adds event listeners but never removes them (removeEventListener), the browser can't clean up the RAM (Garbage Collection fails). The desk pile grows until the tab crashes.
Architecture is the art of balancing. "There is no free lunch."
Your job is to decide: "Can this data be lost? How fast must it be?"
Next time you explain the lost data to a user, provide the pro answer:
"Your data was sitting on the Working Desk (RAM). Please ensure you file it to the Bookshelf (Save/Disk) before you leave."