개발하면서 마주친 문제와 인프라 운영 중 겪은 시행착오를 기록합니다. 기술 문서와 강의에서 배운 내용도 함께 정리해, 필요할 때 다시 찾아볼 수 있는 개발 노트로 남깁니다.
게시물
전체 45편2026
SBOM — 소프트웨어 자재명세서와 CycloneDX Gradle 플러그인
26분SBOM 은 "이 소프트웨어에 어떤 부품(라이브러리)이 어떤 버전으로 들어 있나"를 기계가 읽을 수 있게 적은 목록이다. Spring Boot + Gradle 이면 CycloneDX 플러그인 한 줄…
DICOM Worklist 통신 이해하기
28분MWL은 C-FIND로 촬영 예약을 조회한다. TCP 연결, AE Title과 서비스 협상, 실제 검색 조건을 구분하면 요청과 응답의 구조를 이해할 수 있다.
RAG 기초 이해하기
10분RAG는 질문과 관련된 자료를 검색하고, 그 내용을 LLM에 함께 전달해 답변의 근거로 활용하는 방식이다. 벡터 검색으로 자료를 찾는 과정과, 찾은 자료를 바탕으로 답변을 만드는 과정을 나누어 이해…
정규화와 코사인 유사도 — 방향을 비교해 추천하기
10분두 벡터의 길이를 각각 1로 맞춘 뒤 내적하면, 길이 차이의 영향을 없애고 방향이 얼마나 비슷한지 비교할 수 있다. 이 값이 코사인 유사도이며, 사용자 취향과 콘텐츠 특징을 비교하는 추천 점수로 활…
벡터의 내적과 추천 점수
7분내적은 두 벡터의 대응하는 항목을 곱해 모두 더한 숫자 하나를 구하는 연산이다. 수량과 단가로 합계 금액을 구하거나, 관심도와 주제 점수로 추천 점수를 구하는 데 사용할 수 있다.
벡터의 변화량과 유클리드 거리
6분변화량은 각 항목의 차이를 담은 벡터이다. 벡터의 길이는 원점에서 그 벡터의 끝점까지의 거리이고, 두 점 사이 거리는 차이 벡터의 길이이다.
감사 로그를 설계하고 구축하며 고민한 것들
12분기존 서비스에는 Logger로 남기는 파일 로그가 있었지만, 변경이나 조회 이력을 따로 기록하는 기능은 없었다.
pnpm과 npm, 무엇이 다르고 언제 선택하면 좋을까?
3분npm과 pnpm의 차이는 패키지 파일의 재사용 방식과 의존성을 노출하는 구조에 있다. 프로젝트의 요구와 팀의 실행 환경을 기준으로 선택하고, 버전과 lock 파일을 함께 관리한다.
WinSW — 실행 파일을 윈도우 서비스로 등록하기
12분아무 실행 파일이나 윈도우 서비스로 감싸주는 래퍼. 설정이 exe 옆 XML 한 장이라 git으로 관리되고, 그게 레지스트리에 설정을 묻어두는 NSSM과의 결정적 차이다.
SARIF — 보안 스캐너 결과의 공통 언어
7분도구마다 다른 결과 형식을 표준 JSON 하나로 통일해서, 도구 N개 × 소비처 M개였던 변환 코드를 N+M으로 줄인다.
Semgrep — 코드를 패턴으로 읽는 SAST 엔진
8분grep은 코드를 글자로 보고 Semgrep은 문법 트리로 본다. 그래서 규칙을 정규식이 아니라 찾고 싶은 코드 그 자체로 쓴다.
코틀린 컴파일러 플러그인 (all-open, no-arg)
24분코틀린 클래스는 기본이 final이고 기본 생성자도 없다. 그런데 Spring은 상속으로 프록시를 만들고 JPA는 빈 객체를 만들어 리플렉션으로 채운다. all-open과 no-arg 플러그인이 이…
Cornerstone3D 첫 렌더 검은 화면 (Apple GPU · ANGLE Metal)
7분Cornerstone3D 뷰포트가 첫 렌더에서만 통째로 검게 나오는 현상. render()·resize()를 같은 크기로 몇 번 불러도 안 살아나고, 캔버스 크기가 실제로 바뀔 때만 복구된다. 마운…
Cornerstone3D 로 JPG·PNG 까지 렌더링하기
16분Cornerstone3D는 DICOM 로더만 기본으로 준다. JPG·PNG를 같은 뷰어에서 보려면 이미지 로더(주소 → 픽셀)와 메타데이터 프로바이더(이 영상이 몇 픽셀인지) 두 개를 직접 등록해야…
Cornerstone3D 시작하기 — 개념·기본 사용법·뷰포트 종류
12분Cornerstone3D는 브라우저에서 의료영상을 그리는 렌더링 라이브러리다. <img> 와 달리 원본 픽셀 값을 그대로 들고 있어서 윈도잉·계측·3D 재구성이 된다. 핵심은 네 가지 — image…
Expo
11분Expo는 React Native로 앱을 만들 때 필요한 것들을 미리 묶어놓은 도구 모음이다. React Native의 대체재가 아니라 그 위에 얹히는 층으로, 네이티브 프로젝트(Xcode/Andr…
DESIGN.md: AI 에이전트에게 디자인을 설명하는 파일 하나
8분CLAUDE.md가 에이전트에게 "이 프로젝트에서 일하는 법"을 알려주듯, DESIGN.md는 "이 프로젝트가 어떻게 생겨야 하는지"를 알려주는 파일 포맷이다. 위쪽에는 정확한 값(색상·타이포 토큰…
KotlinLLM: 실행 중에 LLM이 코드를 짜서 끼워넣는 IntelliJ 플러그인
9분"이 변환은 LLM이 알아서 구현해줘"라고 코드에 한 줄 적어두면, 앱을 실행하다가 그 지점에서 막혔을 때 LLM이 실제 데이터를 보고 코드를 짜서 실행 중인 앱에 즉시 끼워넣고, 그 코드는 프로젝…
AI 시대, 코프링은 살아남을 수 있을까?
7분AI 에이전트가 개발 주체가 되는 시대에는 언어의 표현력보다 에이전트가 빠르게 이해·실행·검증·복구할 수 있는 시스템이 중요해진다. 코프링(Kotlin+Spring)의 생존은 열린 도구 생태계(LS…
OAuth로 소셜 로그인 흐름 이해하기
3분소셜 로그인은 외부 서비스가 확인한 사용자 정보를 우리 서비스의 회원과 연결하는 과정이다. OAuth 2.0과 OIDC의 역할, 토큰의 용도, 로그인 상태를 관리하는 위치를 구분해 살펴본다.
Spring SseEmitter로 알림을 보내고 연결 관리하기
4분Spring MVC의 SseEmitter로 서버에서 이벤트를 보내고, 연결 종료와 재연결을 관리하는 방법을 정리한다. 요청 대기와 실제 전송의 차이, 하트비트와 이벤트 복구에 필요한 조건도 살펴본다…
값 객체(Value Object)
8분같은 연산을 가변 객체와 불변 객체로 각각 구현해 비교한다.
참조 객체와 값 객체 - 작은 클래스 만들기
6분→ 다음 시간: 값 객체를 이용해 참조 객체의 복잡성을 낮추는 방법.
조합 메소드로 run 메소드 리팩토링하기
6분리팩토링의 첫 단계는 비슷한 목적의 코드를 묶고 그 위에 주석을 다는 것.
메서드 추출 리팩토링
4분섞여 있을 때의 문제 (게임 클래스 run 메서드 예시)
ECS 배포·롤백
4분myapp 운영 배포 파이프라인(GitHub Actions → ECS Rolling)과 자동/수동 롤백 절차. 인프라 현황은 운영 인프라 현황, 셋업은 ECS Fargate 셋업 가이드, 문제는 E…
ECS Fargate 셋업 가이드
36분Spring Boot / Next.js 서비스를 ECS Fargate에 운영 배포하기 위한 재현 가능한 SOP. myapp-be(BE), myapp-fe(FE)를 실제로 셋업한 경험을 바탕으로 정리…
ECS 트러블슈팅
10분ECS Fargate 셋업·운영에서 마주친 함정과 해결책 종합. 셋업은 ECS Fargate 셋업 가이드, 인프라 현황은 운영 인프라 현황, 배포/롤백은 ECS 배포·롤백.
사용할수록 똑똑해지는 AI 비서 OpenClaw 대항마 Hermes Agent, 윈도우 VMware 환경에서 설치 가이드
10분Hermes Agent는 Nous Research가 개발하여 GitHub에 오픈소스로 공개한 고급 자율형 AI 에이전트다. 사용자의 서버나 노트북에서 항상 실행되면서, 사용할수록 스스로 학습하고 성…
Long Polling vs SSE vs WebSockets vs QUIC Simply Explained
7분이 영상은 두 기계 간의 데이터 교환을 위한 4가지 기법—Long Polling, Server-Sent Events(SSE), WebSockets, QUIC—을 각각의 동작 원리, 실제 코드 데모,…
DDD 개념 정리
21분개인적으로 공부하며 이해한 DDD 핵심 개념 레퍼런스.
DDD 그거 그렇게 하는 거 아닌데 #우아콘2024 #우아한형제들
9분발표자는 우아한형제들 소속 8년차 서버 개발자 박재성으로, 우아한테크코스에서 코틀린 강의를 담당하고 있다. 7년간 도메인 주도 설계(DDD)를 독학하고 팀에 전파하면서 쌓은 경험을 공유하는 자리다.
배달의 민족 주문~! ServerSentEvents로 실시간 알림 전송하기 우아콘2025
10분발표자는 배달의민족 주문접수 채널 팀의 한우석이다. 이 팀은 수십만 파트너(가맹점)가 주문을 빠르게 처리할 수 있도록 돕는 프로그램을 개발한다. PC, 앱, 안드로이드 포스 등 다양한 환경을 지원한…
BFF는 언제 필요할까? 화면에 맞는 API 만들기
3분BFF는 특정 클라이언트에 맞게 여러 API의 데이터를 조합하는 백엔드 계층이다. 데이터 조합의 반복과 요구사항 차이가 추가 운영 비용보다 큰지 살펴보고 도입을 결정한다.
I Tested GPT 5.5 vs Opus 4.7 What You Need to Know
6분OpenAI가 새 플래그십 모델 GPT 5.5를 출시했다. 코드명은 "Spud". 이전 버전은 GPT 5.4였으며, GPT 5.5는 OpenAI의 "가장 스마트하고 직관적인 모델"로 포지셔닝됐다. …
AI 코딩 그렇게 하는 거 아닌데 - 켄트 백 (40년차)
4분TDD(테스트 주도 개발)와 XP(익스트림 프로그래밍)를 만든 40년 경력의 전설적인 개발자. 그런 그도 Claude를 이용해 활발히 개발하고 있다. 그런데 그런 대가조차도 AI 코딩을 잘못 사용하…
MSA API Gateway와 라우팅
3분MSA에서 클라이언트는 서비스마다 다른 주소로 직접 요청하지 않는다. API Gateway 하나가 진입점이 되고, URL prefix를 보고 어느 서비스로 보낼지 결정한다.
[10분 테코톡] 모찌의 의존성 주입
5분우아한테크코스 7기 모찌의 발표. 목차는 Intro → DI → DIP → 마무리 순서로 진행된다.
[10분 테코톡] 미미의 좋은 API 설계하기
6분우아한테크코스 백엔드 7기 미미의 발표. 목차는 주제 선정 이유 → API 개념 → GitHub API 설계 원칙 → 성능 최적화와 API 분리의 관계 → 마무리 순서로 진행된다.
Spring OAuth2 Client
14분Spring Security가 제공하는 OAuth2 Authorization Code Flow 구현체.
Oauth
4분리소스 소유자(사용자 또는 서비스)가 자신의 자원에 대한 접근 권한을 제3자에게 위임하기 위한 인가(Authorization) 프로토콜.
접근제어(RBAC, ABAC)
2분인증(Authentication)이 완료된 후, 특정 리소스에 대한 접근 권한이 있는지 확인하는 절차
암복호화
3분암복호화
가상 스레드와 논블로킹 IO
8분Thread가 I/O를 기다리지 않는다. 서버 내부의 thread 관리 방식이지, 유저에게 response를 나중에 준다는 뜻이 아니다.
2023
원티드 프론트엔드 프리온보딩 인턴쉽 회고록
5분인턴쉽을 진행하면서 많은것을 느껴 이 회고록을 작성해본다.