매일 밤 12시, 서버가 죽는 이유 (Stack vs Heap)
잘 돌아가던 Node.js 서버가 매일 밤 12시만 되면 'Heap Out of Memory'를 뱉으며 죽었습니다. 원인은 전역 변수에 쌓인 데이터 더미였죠. 이 디버깅 과정을 통해 배운 Stack과 Heap의 차이, 그리고 메모리 누수를 막는 방법을 정리했습니다.

개발과 기술에 대한 이야기를 기록합니다.
잘 돌아가던 Node.js 서버가 매일 밤 12시만 되면 'Heap Out of Memory'를 뱉으며 죽었습니다. 원인은 전역 변수에 쌓인 데이터 더미였죠. 이 디버깅 과정을 통해 배운 Stack과 Heap의 차이, 그리고 메모리 누수를 막는 방법을 정리했습니다.

서버가 보내는 신호등. 200번대는 성공, 400번대는 네 탓, 500번대는 내 탓.

HTTP는 엽서라서 우체부가 내용을 훔쳐볼 수 있습니다. HTTPS는 봉투에 밀봉해서 보내는 기술입니다.

Request하면 Response가 옵니다. 하지만 기억상실증(Stateless)이 있어서 1초 전에 누구였는지 기억 못 합니다. 그래서 쿠키라는 메모지를 만들었습니다.

내가 숨으면 포워드(VPN), 서버가 숨으면 리버스(Nginx). 누가 대리인을 고용했는가?

직접 가기 껄끄러울 때 프록시가 대신 갔다 옵니다. 내 정체를 숨기려면 Forward Proxy, 서버를 보호하려면 Reverse Proxy. 같은 대리인인데 누구 편이냐가 다릅니다.

넷플릭스 국가 뚫는 용도가 전부는 아닙니다. 해커들이 우글거리는 공용 네트워크에서 '나만의 안전 터널'을 뚫는 기술.

세션 저장 안 하고도 로그인 유지. 서버가 토큰만 검증하면 끝. Base64 인코딩된 JSON의 정체. 왜 stateless가 확장성에 좋은지.

공유기 하나로 온 가족이 인터넷을 쓰는 비결. 하나의 공인 IP 뒤에 숨은 수많은 사설 IP들. 네트워크 주소 변환의 마법.

카페 와이파이 연결할 때 IP 주소 수동 설정 안 하죠? DHCP 서버가 자동으로 빈 IP를 찾아서 임대해줍니다. DORA 과정으로 2시간짜리 IP 임대계약 체결하기.

www.naver.com을 치면 일어나는 일. Recursive Query부터 Root 서버의 역할, DNS 레코드 타입(A, CNAME, MX), TTL, 그리고 DNS 캐시 포이즈닝 공격까지 심층 분석합니다.

IP는 이사 가면 바뀌지만, MAC 주소는 바뀌지 않습니다. 주민등록번호와 집 주소의 차이. 공장 출고 때 찍히는 고유 번호.

TCP의 흐름 제어, 혼잡 제어, 3-Way Handshake부터 UDP의 홀 펀칭, 헤더 구조 비교, 그리고 게임 개발자를 위한 Nagle 알고리즘과 TCP_NODELAY 옵션까지.

TCP는 예의 바릅니다. 본격적인 대화를 시작하기 전에 '들려?', '어 들려. 너는 들려?', '어 나도 들려' 하고 인사를 세 번이나 나눕니다.

학교에서는 OSI 7계층을 배우지만, 실제 인터넷은 TCP/IP 4계층으로 돌아갑니다. 이론과 실제 차이.

왜 데이터를 보내는 7단계나 필요할까요? 피자 배달 비유, 허브/스위치/라우터 하드웨어, 그리고 각 계층별 대표 공격(ARP Spoofing, SYN Flood, XSS)과 방어법까지.

이메일 주소가 맞는지 검사하려고 if문 100줄을 짤 것인가? 암호문 같은 기호들이 주는 강력함.

무식하게 다 해보기(Brute Force)는 너무 느립니다. 가다가 '이 길은 아닌가 봐' 싶으면 과감하게 돌아오는 용기. N-Queen 문제가 대표적입니다.
마시멜로 실험 실패? 미래를 생각하지 않고 당장 눈앞의 이익만 쫓는 알고리즘. 하지만 때로는 그게 정답일 때가 있습니다.

이름이 멋있어서 쫄았나요? 사실은 '기억하기(Memoization)'일 뿐입니다. 피보나치 수열을 예제로 DP의 마법을 체험해봅니다.
