전체 글 79

DispatcherServlet의 역할: 요청이 들어와서 응답이 나갈 때까지의 여정

Spring MVC로 웹 애플리케이션을 개발하다 보면 "DispatcherServlet"이라는 이름을 한 번쯤 들어보셨을 겁니다. Controller만 잘 작성하면 알아서 동작하니까 굳이 알 필요가 있나 싶을 수도 있습니다. 하지만 이 녀석이 어떻게 동작하는지 알면, 에러가 발생했을 때 어디서 문제가 생겼는지 파악하기가 훨씬 쉬워집니다. 오늘은 HTTP 요청이 들어와서 응답이 나갈 때까지 어떤 일이 벌어지는지 따라가 보겠습니다.DispatcherServlet이 뭔가요? DispatcherServlet은 이름 그대로 "배달하는(Dispatch) 서블릿"입니다. 쉽게 말하면 모든 요청을 가장 먼저 받아서 적절한 곳으로 배달해주는 중앙 관제탑 같은 역할을 합니다.비유를 하나 들어보겠습니다.큰 회사의 안내 데스..

Spring Bean의 생명주기(Lifecycle) - 객체 생성부터 소멸까지

Spring을 사용하다 보면 "Bean이 언제 생성되고 언제 사라지는 걸까?"라는 궁금증이 생길 때가 있습니다. 특히 데이터베이스 연결이나 네트워크 소켓처럼 애플리케이션 시작 시 미리 연결해두고, 종료 시 안전하게 끊어야 하는 리소스를 다룰 때 이 생명주기를 정확히 이해하는 것이 중요합니다.처음 Spring을 배울 때는 그냥 @Component나 @Service를 붙이면 알아서 다 해주겠거니 했는데, 실제로 운영 환경에서 리소스 누수 문제를 겪고 나서야 생명주기의 중요성을 깨닫게 되었습니다.Spring Bean의 생명주기란?Spring Bean은 스프링 컨테이너가 관리하는 자바 객체입니다. 일반적인 자바 객체는 new 키워드로 생성하고 참조가 사라지면 GC(Garbage Collector)가 알아서 정리..

DI(의존성 주입)과 IoC(제어의 역전): 왜 우리가 직접 new를 안 쓸까?

Spring을 사용하다 보면 자연스럽게 @Autowired나 생성자 주입을 쓰게 됩니다. 그런데 문득 생각해보면, 왜 우리가 직접 new로 객체를 생성하지 않는 걸까요? 이미 익숙하게 사용하고 있지만, 한 번쯤 개념을 정리해두면 좋을 것 같아서 글을 써봅니다.의존성(Dependency)이란?먼저 "의존성"이 무엇인지부터 짚어보겠습니다.public class OrderService { private PaymentProcessor paymentProcessor = new PaymentProcessor(); public void processOrder(Order order) { paymentProcessor.pay(order.getAmount()); }} 위 코드에서 OrderSe..

NoSQL 빅데이터 세상으로 떠나는 간결한 안내서 - 어떤 상황에 어떤 NoSQL을 사용해야 할까?

지난 포스팅에서 관계형 데이터베이스의 한계와 NoSQL이 등장하게 된 배경을 살펴보았습니다. 클러스터 환경에서의 확장성 문제, 객체-관계 불일치, 그리고 빅데이터 처리 요구사항들이 NoSQL 등장의 주요 원인이었습니다. 이제 중요한 것은 "NoSQL을 써야 한다"가 아니라 "어떤 NoSQL을 언제 써야 하는가"입니다. NoSQL은 하나의 기술이 아니라 다양한 데이터 모델을 가진 여러 기술의 집합이기 때문입니다. '빅 데이터 세상으로 떠나는 간결한 안내서(NoSQL Distilled)' 책에서는 NoSQL을 크게 네 가지 유형으로 분류하고, 각각의 특징과 적합한 사용 사례를 상세히 설명합니다. 이번 포스팅에서는 실제 개발 현장에서 "이런 요구사항이 있을 때 이 NoSQL을 선택하면 좋다"는 관점에서 각..

독서 정리 2025.08.29

HTTPS 요청 처리 과정: 브라우저에서 서버까지

브라우저 주소창에 https://www.google.com을 입력하고 엔터를 누르면, 컴퓨터와 네트워크에서는 복잡한 처리 과정이 시작됩니다. 소프트웨어, 하드웨어, 그리고 네트워크가 어떻게 협력하여 웹페이지를 안전하게 가져오는지 단계별로 살펴보겠습니다.1단계: DNS 조회 - 도메인을 IP 주소로 변환하기 모든 것은 사용자의 키보드에서 시작됩니다. Enter 키가 눌리는 순간, 운영체제(OS)는 키보드로부터 전기적 신호(하드웨어 인터럽트)를 받아 현재 활성화된 프로그램, 즉 웹 브라우저에게 키 입력이 발생했음을 알립니다. 브라우저는 이 입력을 해석하고, 사용자가 'https://www.google.com'으로 이동하길 원한다는 것을 인지합니다. 하지만 컴퓨터는 'https://www.google.com..

NoSQL 빅데이터 세상으로 떠나는 간결한 안내서 - NoSQL 왜 등장했을까?

'빅 데이터 세상으로 떠나는 간결한 안내서(NoSQL Distilled)'라는 책의 내용을 정리해두는게 좋을것 같아 블로그에 포스팅 하기로 결정하였습니다. NoSQL 왜 등장했을까?어떤 상황에 어떤 NoSQL 을 사용해야하는가?로 나누어 올리도록 하겠습니다. 관계형 데이터베이스가 지배하던 시절 오랫동안 데이터를 저장한다고 하면 당연히 관계형 데이터베이스(RDBMS)를 사용하는 게 기본이었습니다.새 프로젝트를 시작할 때 고민이라곤 어떤 관계형 데이터베이스를 쓸지 정도였죠. 회사에 이미 계약된 벤더가 있다면 그런 고민조차 필요 없었습니다.1990년대에 객체 데이터베이스가 잠깐 도전장을 내밀었지만, 크게 성공하지 못했습니다. 관계형 데이터베이스는 계속해서 독보적인 위치를 유지했죠.관계형 데이터베이스가 오래 ..

독서 정리 2025.08.07

AI 웹소설 - AI 에게 웹소설을 써달라고 부탁해보았다.

평소 취미가 웹소설을 읽는 것인데, 예전에 AI가 웹소설을 어느 정도 수준으로 쓸 수 있을까 궁금해서 실험을 해본 적이 있습니다. 하지만 그때는 실망스러운 결과물을 받았습니다. 최근 다양한 AI를 사용하며 각각의 강점이 다르다는 걸 체감하면서, 이 강점들을 조합해 웹소설을 써보면 어떨까 생각했습니다.직접 AI에게 명령을 주며 결과물을 얻어보니, 단일 AI로 작성했을 때보다 확연히 나은 결과물이 나왔다는 느낌이 들었습니다. 이 실험 과정을 블로그에 공유하고자 합니다.실험 개요목표: AI 도구들의 강점을 활용해 웹소설 1화를 완성하기활용 AI: Claude, GPT-4, Gemini, Grok소요 시간: 약 2시간단계별 진행 요약AI로 진행하는 실험이니만큼, 진행 방식도 AI에게 맡겨보자는 생각으로 Clau..

IT 관련 기타/AI 2025.05.15

JVM 가비지 컬렉션: 객체 생사 판단과 메모리 정리 알고리즘

JVM(Java Virtual Machine)은 메모리를 효율적으로 관리하기 위해 가비지 컬렉션(Garbage Collection)을 수행합니다. 이는 더 이상 사용되지 않는 객체를 찾아 메모리를 회수하는 과정입니다. 해당 글에서는 JVM이 객체의 생사를 판단하는 방법과 메모리를 정리하는 알고리즘을 설명합니다.1. 객체의 생사 판단JVM은 프로그램에서 더 이상 참조되지 않는 객체, 즉 '죽은' 객체를 식별하여 정리 대상으로 지정합니다. 이를 판단하는 두 가지 주요 알고리즘은 다음과 같습니다.1.1 참조 카운팅 (Reference Counting)설명: 각 객체에 참조 횟수를 기록하는 카운터를 유지합니다. 객체가 참조될 때 카운터를 증가시키고, 참조가 끊기면 감소시킵니다.판단 기준: 카운터가 0이 되면 해..

개발언어/Java 2025.05.14

JVM 메모리 구조

자바 가상 머신(JVM)은 자바 프로그램을 실행할 때 메모리를 효율적으로 관리합니다. 자바 개발자는 메모리 관리를 직접 하지 않아도 되지만, 메모리 누수나 오버플로 같은 문제가 생기면 JVM의 작동 방식을 알아야 해결할 수 있습니다. 이 글에서는 JVM이 메모리를 어떻게 나누고 사용하는지 설명합니다. JVM은 메모리를 두 가지로 나눕니다:스레드마다 따로 가지는 영역 (스레드 프라이빗)모든 스레드가 함께 사용하는 영역각 영역의 역할과 특징을 하나씩 알아보겠습니다.1. 스레드마다 따로 가지는 메모리 영역스레드마다 독립적인 메모리 공간은 각 스레드가 작업할 때 필요한 데이터를 저장합니다. 다른 스레드와 간섭 없이 안전하게 관리됩니다.1) 프로그램 카운터 (PC 레지스터)역할: 현재 스레드가 실행 중인 명령어의..

개발언어/Java 2025.05.13

GPT 에게 물어본 나

최근 유튜브에서 쇼츠 영상을 보다가 아래와 같은 영상을 봤습니다."내가 너와 상호작용한 모든 내용을 바탕으로 내 사고 패턴과 의사 결정 방식, 무의식적인 편향, 반복적으로 드러나는 '약점'이나 맹점'을 상세히 분석해줘. 그리고 각 항목에 대해 나에게 필요한 조언을 구체적으로 적어줘. 5000자 이상" 예전에 지피티한테 나에 대해 말해줘라는 질문이 유행이였던 적이 있었는데 그때 보다 좀 더 디테일한 질문이 유행하나 보다란 생각과 함께 나도 해봐야겠다라고 생각이 들었습니다. 모델은 o3 를 통해서 질문했는데 유료로 사용한 기간이 2년이 넘다보니 꽤나 상세한 분석을 해주는것 같아서 아래처럼 공유해봅니다.1. 사고 패턴 전반특징구체적 관찰필요한 조언체계화 지향문제를 단계별로 쪼개고 “정답 → 피드백 → 다음 ..

IT 관련 기타/AI 2025.04.22