전체 글 18

고유하면서도 랜덤한 7자리 인코딩을 찾아가는 여정 // Base62, 선형식, XORShift, Feistel Cipher

URL Shortner 웹사이트 제작 중에 있습니다.프로젝트의 목적은 다음과 같습니다.첫 번째로는 스터디의 취지에 따라 초당 쓰기 요청 1,000건과 초당 읽기 연산 10,000건의 트래픽을 10년간 안정적으로 감당하는 대규모 시스템을 직접 설계하고 구현하는 것이고요.두 번째는 URL Shortner라는 도메인에 대한 경험과 인사이트를 얻어가는 것이었습니다.이 중 저는 도메인 로직을 설계하면서 고민하고 공부하면서 얻은 부분들 중 글로 남기면 좋을 만한 내용이 있어서 관련해서 적어보게 되었습니다.대규모 시스템 설계에 대한 내용도 쓸 이야기들이 있는데.... 시간이 되면 다음에 꼭 작성하기로..... 🔍 목차# 00. 변환값의 자릿수# 01. 변환 로직해쉬 함수Base-62# 02. Id 스크램블링 여정..

Ideas 2025.11.02

구조화된 llm 응답받기: Langchain Structured Output

그동안 블로그 쓸 겨를이 없었고,앞으로도 조오금 바쁠 것 같은데 괜히 글 하나 끄적이고 싶어서 몇 달 전에 다뤘던 내용에 대해 짧게 공유해 보겠습니다. 🔍 목차# 00. 배경 및 문제 상황# 01. with_structured_output()# 02. Tool Calling # 00. 배경 및 문제 상황 RAG 웹 애플리케이션 작업 중이었습니다.LLM 컴포넌트에서 생성한 응답을 백엔드에서 받아 비즈니스 로직을 처리하고 프론트엔드로 전달해 응답에 따른 맞춤 UI를 렌더링해야 하는 상황이었는데, 문제는 LLM이 생성해 주는 응답은 하나의 긴 문자열이라는 것이었습니다. few_shot 프롬프팅을 통해 LLM이 json 형태의 구조화된 응답을 강요한다고 하더라도 결국 응답을 전달받는 클라이언트 쪽에서 역직렬화..

LLM 2025.10.05

쿼리 지옥 JPA의 N+1 문제를 둘러싼 오해

동료 분들이랑 대화를 하다가 JPA의 N+1 문제에 대한 이야기가 나왔습니다.사실 그동안은 N+1 문제에 대해 제대로 탐구해보지는 않았고, 면접 단골 문제라기에 그저 암기해 둔 수준에 불과했습니다.근데 대화를 하다 보니까 각자 정확한 문제 정의부터, 원인, 해결 방법까지 이해하고 있는 게 서로 조금씩 다르더라고요.혹시 제가 이해하고 있는 바가 틀릴 수도 있겠다는 생각과 명확하게 정리를 해놓고자 하는 마음에 가볍게 자료들을 찾고 있었는데, 아래와 같이 저를 헷갈리게 하는 말들이 너무 많았습니다. "`LAZY` 때문에 N+1 문제가 발생한다.""`EAGER` 때문에 N+1 문제가 발생한다.""`EAGER`가 N+1 문제를 해결하는 방법이다.""`EAGER`로 로딩하면 `JPQL` 사용 시 N+1 문제가 발생..

Spring 2025.08.26

@Transactional 메서드에서는 Synchronized 동기화가 통하지 않는다?!?!?

소소하게 진행 중인 프로젝트에서 예상과 다르게 동작하는 부분이 있었는데요, 원인을 파악하고 문제를 해결해 가는 과정에서 새롭게 알게 된 내용들이 있어서 또 짧은 글 남기게 되었습니다. 🔍 목차# 00. 배경# 01. 실험 과정 및 문제 직면# 02. @Transactional은 프록시 기반 AOP# 03. 동기화를 하면서 원자성도 보장하기# 04. 지표 비교 # 00. 배경 단일 프로세스 멀티 스레드 환경에서 동시에 요청을 보내 레이스 컨디션을 유발시키고 자바 수준에서 처리할 수 있는 여러 가지 동기화 방법들(Synchronized, ReentrantLock, StampedLock 등)을 적용해 보는 시간을 가지고 있었습니다. 사실 이렇게 자바 수준에서 적용하는 Lock들은 결국 단일 프로세스 내에서의..

Spring 2025.08.19

전략 패턴 적용기 + 스프링에서 List로 빈 주입하기

1학기때는 한 주에 글 하나씩 작성하는 걸 목표로 했었는데 앞으로 그렇게까지는 못하지 않을까 싶습니다.소소하게 시작한 프로젝트에서 새로 알게 된 내용들을 정리해 놓으면 좋겠다 싶어서 오랜만에 짧은 글 남기게 되었습니다. 🔍 목차# 00. 배경# 01. 전략 패턴# 02. 전략 패턴 적용기# 03. 팩토리와 함께 사용하기 + List로 빈 주입하기 # 00. 배경 동시성 문제를 해결하는 전략이 다양하게 있습니다. 저는 스프링 애플리케이션 분산 네트워크 환경에서 동시성 문제를 유발하고 jvm락, db락, redis 락 등 다양한 방식으로 해결해 보고 여러 메트릭을 측정하거나 장단점을 비교해 보는 소소한 프로젝트를 시작했는데요.처음에는 각 전략에 대해 요청을 받는 핸들러를 전략 별로 두어야겠다 생각을 했습..

Design Pattern 2025.08.07

"Attention is All You Need" Transformer(트랜스포머) 아키텍처 살펴보기

과제랑 프로젝트랑 시험 준비까지 하면서 조금 바쁘네요...그래서 이번 주는 기말고사 범위에 있는 Transformer 아키텍처에 대해 정리하는 것으로 날먹 한 번 하겠습니다. Transformer는 사실 오늘 작성할 포스트의 챕터 하나하나만 따로 별도의 글로 작성해야 할 정도로 깊고 넓은 분야의 LLM 모델입니다.그런데 이번 포스트에서는 트랜스포머의 자세한 부분까지 구체적으로 뜯어 파헤치기보다는 시험에 나올 정도로만 전반적인 흐름과 구성요소를 살펴보는 느낌으로 알아보겠습니다. 🔍 목차00. Transformer?기존 RNN 기반 모델의 한계Transformer 구성 요소01. Perceptron과 MLPPerceptron?Perceptron으로 푸는 논리게이트와 XORMLP (Multi Layer P..

LLM 2025.06.13

JVM 메모리 구조와 동작 과정 파헤쳐보기!

후다닥 공부한 내용 정리하고 과제 ,시험준비, 다음 주 코테 벼락치기하러 가겠습니다... 🔍 목차00. JVM Overview01. JVM Architecture Class Loader Runtime Data Area Execution Engine JNI (Java Native Interface) & Native Method Library02. Runtime Data Area Method Area Heap Java Stack PC Register Native Method Stack # 00. JVM Overview Java의 등장 이전에 웹 애플리케이션 생태계에서는 문제가 하나 있었습니다.OS나 CPU가 지원하는 스펙에 따라 컴파일 플랫폼에서는 제대로 동작하는 애플리케이션이 타겟 플랫폼에서는 동작하지..

Java 2025.06.04

파이썬의 AOP? 데코레이터에 대해 알아보기 + 데코레이터를 활용해 있어보이게 로깅하기

진행 중인 학교 프로젝트 중 API 호출이나 DB 상호작용 등에 있어서 로그를 남기면 좋겠다고 생각했습니다.프로젝트를 본격적으로 시작하기 전 파이썬에 대해 공부를 할 때 봤던 데코레이터가 생각이 나서 이걸 활용해서 로깅 체계를 구축해 보면 좋지 않을까 해서 다시 한번 데코레이터에 대해 학습하고 직접 적용해 보는 시간을 가졌습니다. 🔍 목차00. Decorator?01. Decorator가 왜 필요할까?02. 데코레이터의 문법기본 문법데코레이터에 매개변수 받기데코레이터 여러 개 지정데코레이터 중복 지정03. 데코레이터로 로깅하기 # 00. Decorator? 파이썬의 데코레이터를 알아가기 전에 decorator의 사전적 의미를 먼저 살펴보겠습니다. decorator1.실내 장식자2.장식하는 사람3.칠·도..

Python 2025.05.28

데이터베이스 I/O와 스캔 메커니즘

학부생인 아는 분이랑 온라인 스터디 같이 하다가 나눈 얘기가 있습니다.그분이 학교 축제에 츄가 왔는데, 츄가 본인을 보면서 환하게 웃어줬다면서 너무 좋아하시는 거예요.거의 뭐 사랑에 빠진 것처럼 푹 빠져있으시길래 제가 얘기해 드렸죠.그거 츄가 님을 인덱스 스캔한 게 아니라 풀 테이블 스캔 하는 중이었는데 마침 님이 그 테이블에 있었던 거라고. 인트로에 쓸 말이 없어서 쓸데없는 얘기 좀 해봤고요.그런 의미에서 이번 포스트에서는 데이터베이스의 I/O 작업과 데이터 스캔 메커니즘에 대해 알아보도록 하겠습니다. 🔍 목차00. 데이터베이스 저장 구조01. Sequential Access vs Random Access02. Single Block I/O vs Multi Block I/O02. Table Full..

Database 2025.05.20

컨트롤러 요청/응답 가로채기, 스프링 인터셉터(Interceptor)

취미로 계속 만지고 있는 사이트에서 일별 사용자 수를 모니터링할 수 있으면 좋겠다고 생각했습니다.여러 가지 방법이 있겠지만 저는 프론트에서 GA를 붙이는 방법과 백엔드에서 직접 DB에 로깅을 하는 방법 두 가지를 시도했습니다.DB에 직접 로깅하는 방식에 대해 고민하고 알아보면서 공부하게 된 스프링 인터셉터에 대해 정리하고자 글을 남겨놓게 되었습니다. 🔍 목차00. Interceptor?01. Interceptor 구조 / 동작 흐름02. HandlerInterceptor 메서드03. Interceptor 등록 방법04. Interceptor vs Filter # 00. Interceptor? 인증·인가, 로깅 등 스프링에 매핑된 모든 핸들러 요청에 대해 일관적인 처리를 해야 할 때가 있습니다. 이..

Spring 2025.05.13