WebSocket HTTP 통신 차이를 한 문장으로 요약하면 이렇습니다. “HTTP는 매번 문을 두드리고 답을 받은 뒤 문을 닫고, WebSocket은 한 번 문을 열면 닫을 때까지 양쪽이 자유롭게 오간다.” 카카오톡 메시지가 상대방 화면에 즉시 나타나고, 주식 호가가 1초마다 갱신되고, 온라인 게임에서 상대방 움직임이 실시간으로 보이는 것, 이 모든 경험의 뒤에는 HTTP가 아닌 WebSocket이 있습니다. 이 글에서는 두 […]
웹 브라우저 80번 443번 포트는 인터넷을 사용하는 모든 사람이 매일 수십 번씩 거치는 관문이지만, 그 숫자가 왜 하필 80과 443인지 설명할 수 있는 사람은 드뭅니다. 주소창에 https://google.com을 입력할 때 우리는 포트 번호를 적지 않습니다. 그러나 브라우저는 자동으로 443번 포트로 연결을 시도합니다. 이 ‘자동’이 어떻게 이루어지는지, 그리고 왜 하필 그 번호인지를 포트의 탄생 배경부터 HTTP·HTTPS 프로토콜 […]
Apache Kafka 동작 원리를 제대로 이해하지 못한 채 도입하면, 설정 한 줄 차이로 메시지가 유실되거나 브로커가 과부하 상태에 빠지는 상황을 맞이하게 됩니다. 하루에 수천억 건의 이벤트를 처리하는 LinkedIn, Netflix, Uber가 공통으로 선택한 이 플랫폼은 단순한 메시지 큐가 아닙니다. 디스크 기반 순차 I/O, Zero-Copy 전송, 분산 복제 구조가 결합된 분산 이벤트 스트리밍 플랫폼입니다. 이 글에서는 Kafka가 […]
HTTP와 HTTPS의 차이, TLS 동작 원리는 백엔드 개발자와 네트워크 입문자가 반드시 짚고 넘어야 할 핵심 CS 주제입니다. 브라우저 주소창에 자물쇠 아이콘이 뜨고 사라지는 것이 단순한 UI 장식처럼 보여도, 그 뒤에서는 암호화 협상·인증서 검증·대칭키 교환이라는 정교한 메커니즘이 작동하고 있습니다. 이 개념을 제대로 이해하지 못하면 보안 취약점을 코드 레벨에서 인지하지 못한 채 서비스를 배포하게 됩니다. 이 글에서는 […]
Kafka 컨슈머 그룹과 파티션 전략을 잘못 설계하면, 아무리 강력한 서버를 써도 Kafka의 진짜 성능을 절반도 끌어내지 못합니다. “메시지가 쌓이는데 소비가 따라가지 못한다”, “컨슈머를 늘렸는데 처리량이 그대로다”라는 상황이 바로 파티션 설계 실패의 전형적인 증상입니다. Kafka의 병렬 처리 핵심 단위는 파티션이며, 파티션과 컨슈머 그룹의 관계를 정확히 이해하고 설계해야 비로소 처리량을 선형적으로 끌어올릴 수 있습니다. 이 글에서는 기초 […]
웹 페이지를 열거나 파일을 다운로드할 때, 데이터가 전송되기도 전에 눈에 보이지 않는 사전 작업이 이루어집니다. 바로 3-Way Handshake입니다. 한국어로 하면 “세 번의 악수”인데, 왜 두 번도 네 번도 아닌 정확히 세 번이어야 할까요? 이 질문은 CS 기술 면접의 단골이기도 하지만, 그 이상으로 네트워크 통신의 신뢰성이 어떻게 보장되는지를 꿰뚫는 핵심 질문입니다. SYN 패킷 하나가 인터넷을 건너는 […]
서울에서 뉴욕 서버로 메시지를 보내면 150밀리초 만에 도착합니다. 이 짧은 시간 동안 데이터는 수십 개의 라우터를 건너고, 바닷속 광케이블을 통과하며, 수백 번의 경로 판단을 거칩니다. 패킷이 인터넷에서 이동하는 방식은 단순히 “A에서 B로 전송된다”가 아닙니다. 데이터는 패킷이라는 작은 조각으로 분리되어 각자 최적의 경로를 찾아 독립적으로 이동하고, 목적지에서 다시 조립됩니다. 이 과정에 IP 라우팅, TTL, NAT, ARP, […]
Spring Boot Kafka 연동은 백엔드 개발자라면 한 번은 반드시 거쳐야 할 실습 과제입니다. 마이크로서비스 아키텍처가 보편화되면서 서비스 간 비동기 통신 수단으로 Kafka를 도입하는 사례가 폭발적으로 늘고 있기 때문입니다. 처음 연동을 시도할 때 설정 파일 한 줄 차이로 연결이 안 되거나, Producer는 보내는데 Consumer가 받지 못하는 상황에 막히기 쉽습니다. 이 글에서는 로컬 환경 구성부터 실제 메시지 […]
백엔드 시스템을 설계하다 보면 반드시 마주치는 질문이 있습니다. “Kafka와 RabbitMQ 중 무엇을 써야 할까?” 둘 다 메시지 브로커라고 불리지만, 내부 동작 방식과 강점이 완전히 다릅니다. 잘못 선택하면 성능 병목이나 운영 부담으로 이어지므로, 구조적 차이를 제대로 이해하고 결정해야 합니다. 이 글에서는 두 기술의 핵심 차이를 개념부터 실전 선택 기준까지 단계별로 정리합니다. 목차 1. 메시지 큐란 무엇인가 […]
“카프카 쓰는 프로젝트에 들어가게 됐는데, Topic이 뭐고 Partition이 뭔지부터 모르겠어요.” 처음 Kafka를 접하면 낯선 용어들이 한꺼번에 쏟아집니다. Kafka Topic Partition Offset은 Kafka의 모든 동작이 시작되는 핵심 개념 3종 세트입니다. 이 세 가지의 관계를 제대로 이해하지 못하면 Kafka로 무언가를 만들 수는 있어도 왜 이렇게 설계되어 있는지, 왜 파티션 수를 신중하게 정해야 하는지, 왜 오프셋 커밋이 중요한지를 […]
초당 수백만 건의 이벤트를 처리하는 넷플릭스, 링크드인, 우버의 데이터 파이프라인 한가운데 Kafka가 있습니다. Apache Kafka의 Producer·Consumer 동작 원리를 이해하면 왜 Kafka가 단순한 메시지 큐를 넘어 “이벤트 스트리밍 플랫폼”으로 불리는지가 보입니다. 메시지가 어떻게 파티션에 쌓이고, 컨슈머 그룹이 어떻게 부하를 나누며, 오프셋이 왜 장애 복구의 핵심인지를 코드와 다이어그램으로 완전히 풀어드립니다. 2025년 3월 출시된 Apache Kafka 4.0은 10년 […]
Elasticsearch란 무엇인지, 이름은 들어봤지만 “그냥 빠른 검색 DB 아닌가요?”라고 넘겼던 분들이 많습니다. 실제로 쿠팡의 상품 검색, 네이버의 뉴스 검색, 슬랙의 메시지 검색, 깃허브의 코드 검색 뒤에는 모두 Elasticsearch가 있습니다. 단순한 데이터베이스가 아니라, 수억 건의 데이터 속에서 밀리초 단위로 원하는 정보를 찾아내는 분산 검색 엔진입니다. 이 글에서는 Elasticsearch가 왜 필요한지부터 내부 동작 원리, 실전 쿼리 작성법까지 […]
ELK Stack 아키텍처가 무엇인지 들어봤지만 막상 설명하려면 말문이 막히셨나요? “Elasticsearch는 검색 엔진이고, Logstash는 파이프라인이고, Kibana는 대시보드인데… 이게 어떻게 연결되는 거지?”라는 의문, 처음 공부할 때 누구나 갖습니다. 수백만 건의 로그가 쏟아지는 운영 환경에서 “언제 어디서 무슨 오류가 났는지”를 grep 명령어로 찾는 것은 한계가 있습니다. ELK Stack은 분산된 여러 서버의 로그를 한 곳에 모으고, 실시간으로 검색하며, 시각화 […]
Apache와 Nginx 의 차이는 웹 개발자와 인프라 엔지니어라면 반드시 정리해야 할 핵심 비교입니다. 두 서버 모두 전 세계 웹 트래픽의 절대다수를 처리하는 양대 산맥이지만, 내부 작동 방식과 강점이 근본적으로 다릅니다. “Nginx가 Apache보다 빠르다”는 말은 절반의 사실입니다. 상황에 따라 Apache가 더 적합한 경우도 분명히 존재하기 때문입니다. 1995년 탄생한 Apache와 2004년 C10K 문제를 해결하기 위해 등장한 Nginx […]
쿠키 세션 JWT 차이는 백엔드 개발자 면접에서 가장 자주 등장하는 인증 관련 질문입니다. 단순히 “쿠키는 브라우저에 저장되고, 세션은 서버에 저장되고, JWT는 토큰 방식입니다”라는 한 줄 답변으로는 중급 이상 평가를 받기 어렵습니다. HTTP가 왜 무상태(Stateless) 프로토콜인지, 그래서 인증 정보를 어떻게 유지하는지, 각 방식이 보안·확장성·구현 복잡도에서 어떤 트레이드오프를 갖는지까지 연결해서 설명할 수 있어야 합니다. 이 글에서는 쿠키·세션·JWT의 […]
“VM이랑 Docker가 비슷한 거 아닌가요?” 개발을 처음 배우는 분들이 가장 많이 하는 질문 중 하나입니다. 둘 다 ‘격리된 환경에서 앱을 실행한다’는 목표는 같지만, 작동 방식은 근본적으로 다릅니다. Docker VM 차이를 제대로 모르면 Docker를 써야 할 때 VM을 쓰거나, 그 반대의 선택을 하게 됩니다. 이 글에서는 VM과 Docker의 구조적 차이부터 성능·보안·이식성 비교, 실전에서 어느 것을 선택해야 […]
Redis 캐시 전략을 제대로 설계하지 않으면, 캐시가 있는데도 DB에 쿼리가 쏟아지거나, 트래픽이 몰리는 순간 캐시와 DB의 데이터가 달라져 결제 금액이 잘못 표시되거나, 로그인 상태가 갑자기 풀리는 장애를 겪게 됩니다. “Redis 쓰면 빠르다던데”라는 말만 믿고 도입했다가 캐시 스탬피드(Cache Stampede), 데이터 불일치, 세션 유실 같은 장애를 경험하는 팀이 적지 않습니다. Redis는 단순한 속도 부스터가 아닙니다. 올바른 캐시 […]
네트워크 장애 유형을 정확히 모르면, 문제가 생겼을 때 어디서부터 손을 대야 할지 막막해집니다. 실무에서는 단순한 케이블 불량부터 복잡한 라우팅 오류까지 다양한 장애가 예고 없이 발생합니다. 이 글에서는 IT 담당자와 네트워크 엔지니어가 현장에서 가장 자주 마주치는 장애 유형을 원인·증상·해결 방법으로 나누어 체계적으로 정리합니다. 이 글 하나로 장애 대응 시간을 확실히 줄일 수 있습니다. 목차 1. 네트워크 […]
백엔드 서버를 인터넷에 직접 노출하는 서비스는 거의 없습니다. 대부분의 프로덕션 환경에서 외부 요청은 먼저 Nginx 리버스 프록시를 거쳐 내부 애플리케이션 서버로 전달됩니다. “그냥 Node.js나 Django를 직접 80포트에 올리면 안 되나요?”라는 질문을 하는 개발자가 적지 않습니다. 기술적으로는 됩니다. 하지만 보안, 성능, 확장성, 유지보수성 측면에서 Nginx를 앞단에 두는 것이 압도적으로 유리합니다. 이 글에서는 리버스 프록시의 개념부터 Nginx가 […]
Nginx 리버스 프록시 설정은 현대 웹 아키텍처의 핵심 기술입니다. 전 세계 상위 1만 개 웹사이트의 절반 이상이 Nginx를 사용하며, 넷플릭스·깃허브·에어비앤비 같은 대형 서비스들도 Nginx를 프론트 레이어로 사용합니다. 단순히 “설치하면 된다”는 수준을 넘어서, location 블록 매칭 우선순위, upstream 로드밸런싱 알고리즘 선택 기준, 캐시 키 설계, Rate Limiting 전략까지 — 이 내용들을 정확히 알아야 프로덕션 환경에서 Nginx를 […]