Java로 구현한 Virtual Host 기능과 Host 헤더 이슈 해결기

필자는 Java 및 웹 개발 학습의 일환으로 간단한 HTTP 서버를 직접 구현해보며 웹 서버의 기본 구조와 요청 처리 방식을 익히고자 했다. 특히 가상 호스트(Virtual Host) 기능을 통해 하나의 서버에서 여러 도메인 요청을 분기하는 로직을 직접 구현하면서, 실무에서 자주 접하게 될 네트워크 및 서블릿 처리 흐름을 체득하고자 하였다. 해당 기능을 구현하던 중 Java의 HttpURLConnectionHost 헤더를 덮어써서 발생한 테스트 이슈를 경험하였다. 이를 해결하는 과정에서 교훈을 얻어 Virtual Host 개념 및 구현 내용을 정리하고, 그 과정에서 마주한 문제와 해결 방법을 함께 공유하고자 작성하였다.


Spring Batch - 배치 작업과 스케줄러 연동하기

다수의 시스템에서는 대용량 데이터 처리, 정기적인 리포트 생성, 데이터 마이그레이션 등 주기적으로 실행해야 하는 작업들이 많다. 필자 역시도 인턴십 등 서비스 개발을 진행하며 이러한 작업들을 마주하곤 했다. Spring 생태계에서는 이런 반복적인 작업들을 효율적으로 처리하기 위한 도구로 Spring Batch와 Scheduler를 제공한다. 본 글에서는 Spring Batch의 핵심 개념을 소개하고, 이를 Scheduler와 어떻게 효과적으로 연동할 수 있는지 실제 경험을 바탕으로 설명하고자 한다.


Java ConcurrentHashMap - 동시성 제어의 이해

최근 면접을 준비하며 자료구조와 스레드, 동시성 등을 공부하면서 멀티스레드 환경에서의 데이터 처리에 대해 이해하고자 관심을 갖게 되었다. 특히 여러 스레드가 동시에 접근하는 Java에서는 데이터 구조를 다룰 때 더욱 각별한 주의가 필요하다. 이러한 문제를 해결하기 위해 등장한 Java의 ConcurrentHashMap의 내부 동작에 대해 자세히 알아보려 한다.


Pagination