[Infra] Apache vs Undertow 비교
📌 들어가며 이번 글에서는 웹 개발에서 자주 쓰이는 두 웹 서버 Apache와 Undertow를 비교한다. 둘 다 널리 쓰이지만 성격이 다르다. 서버 한 줄 성격 Apache HTTP Server 역사·안정성·다양한 모듈 Undert...
📌 들어가며 이번 글에서는 웹 개발에서 자주 쓰이는 두 웹 서버 Apache와 Undertow를 비교한다. 둘 다 널리 쓰이지만 성격이 다르다. 서버 한 줄 성격 Apache HTTP Server 역사·안정성·다양한 모듈 Undert...
📌 들어가며 이번 글에서는 대용량 데이터를 다룰 때 필수인 페이징(Paging)을 Spring Data JPA로 구현하는 법을 정리한다. 페이징이란? 대량의 데이터를 작은 단위로 나누어 가져오는 기술. 한 번에 모든 데이터를 가져오는 것보다 효율적이며, 웹에서 페이지별로 보여줄 때 자주 쓰인다. 1. Pageable과 Page Spr...
📌 들어가며 메모리 위의 객체는 프로그램이 종료되면 사라진다. 그런데 이 객체를 파일로 저장하거나 네트워크로 전송하려면 어떻게 해야 할까? 객체를 바이트의 흐름으로 바꿔야 한다. 이 변환 과정이 직렬화(Serialization)이고, 되돌리는 것이 역직렬화(Deserialization)다. [직렬화] 객체 ──► 바이트 스트림 ──► ...
📌 들어가며 이번 글에서는 Spring Data JPA로 데이터를 수정(Update)하고 삭제(Delete)하는 방법을 정리한다. Spring Data JPA는 ORM으로 DB 조작을 편리하게 해주며, CRUD를 간단히 처리할 수 있다. 1. 데이터 수정 (Update) 수정은 조회 → 필드 변경 → 저장의 흐름이다. @Servic...
📌 들어가며 Java를 쓰다 보면 가장 자주 만나는 예외가 NullPointerException이다. 값이 있을 수도, 없을 수도 있는 상황을 null로 직접 다루면 곳곳에 if (x != null) 체크가 흩어진다. 이 문제를 우아하게 다루도록 도와주는 것이 Optional이다. Optional이란? 값이 존재할 수도, 없을 수도 있는 컨테...
📌 들어가며 계층형 애플리케이션을 짜다 보면 엔티티(Entity) ↔ DTO 변환 코드를 끝없이 작성하게 된다. dto.setName(entity.getName()) 같은 반복적인 매핑은 지루하고 실수하기도 쉽다. 이 번거로움을 덜어주는 라이브러리가 ModelMapper다. ModelMapper란? Java에서 객체 간의 매핑을 자동으로 처리...
📌 들어가며 이번 글에서는 패킷을 실제로 나르는 중계 장치 리피터 허브와 스위칭 허브를 정리한다. LAN 케이블이 신호를 어떻게 전달하는지, 두 허브가 패킷을 중계하는 방식이 어떻게 다른지 살펴본다. 중계 장치의 원칙 — 허브·라우터는 데이터의 내용을 보지 않는다. 헤더의 제어 정보만 보고 패킷을 전송할 뿐이다. 송신 순서는 리피터 → 스위치...
📌 들어가며 이번 글에서는 URL과 송수신에 이어, 프로토콜 스택과 소켓이 실제로 어떻게 동작하는지 파고든다. 소켓의 정체부터 TCP 접속(3-way), 데이터 송수신(ACK·윈도우 제어), 연결 종료, IP/이더넷 패킷, UDP까지 다룬다. 소켓이란? 눈에 보이는 실체가 아니라, 프로토콜 스택 내부 메모리에 기록된 제어 정보다. IP·포트·...
📌 들어가며 이번 글에서는 브라우저에 URL을 입력한 순간부터 웹 서버와 메시지를 주고받기까지의 전체 여정을 정리한다. URL 해독 → HTTP 요청/응답 → DNS로 IP 조회 → 소켓 통신으로 이어지는 흐름을 따라간다. URL이란? Uniform Resource Locator — 웹 서버에 어떤 기능(정보 가져오기·보내기)을 요청하는 하나...
📌 들어가며 이번 글에서는 자바 네트워크 프레임워크 Netty를 정리한다. Netty란? 자바 환경에서 네트워크 프로그래밍을 손쉽게 해주는 프레임워크. 고성능·고안정성 프로그램을 만들 수 있다. 순수 소켓 프로그래밍보다 추상화로 훨씬 간결하다. Client ─────────────────────────────────── Server ...