Jay's <Devlog />
Wait a moment...
Wait a moment...
이번 글에서는 WWW 2026에 발표된 “Iterative Semantic Reasoning from Individual to Group Interests for Generative Recommendation with LLMs” 논문을 정리한다. 이 논문에서 제안하는 모델의 이름은 ISRF(Iterative Semantic Reasoning Framework)다. 핵심 아이디어를 먼저 한 문장으로 정리하면 다음과 같다. 사용자가 직접 보여준 행동만으로 관심사를 모델링하는 데서 그치지 않고, 상품의 의미를 추론한 뒤 의미적으로 비슷한 사용자 집단의 행동까지 ...
Large-batch training이 높은 학습 정확도에도 테스트 성능이 낮아지는 이유를 sharp·flat minima와 mini-batch gradient noise 관점에서 정리한다. Local minimum에 대한 오해와 논문의 실험 결과도 함께 살펴본다.
깊은 신경망이 잘 학습되지 않는 원인을 Sigmoid 포화와 Vanishing Gradient 관점에서 살펴본다. 순전파와 역전파의 분산 보존 조건을 통해 Xavier 초기화 공식이 도출되는 과정과 실제 효과를 정리한다.
최근 연구실에서 양자 커널과 관련된 연구를 진행하고 있다. 양자 역학 등 양자에 대해서 많은 것들을 알고 있지 않아, 어려움이 따르지만 Low Level 단에서 부터 하나씩 파악하며 정복해나가려고 한다. 양자 머신러닝은 단순히 코드를 돌리는 것이 아니라, 고전 데이터를 양자 공간으로 쏘아올린 뒤, 다시 고전적인 정답으로 끌어내리는 과정이다. 그 과정에 대해서 데이터가 어떠한 변화를 거치는 지 확인해보고자 ...
기존 Docker 컨테이너로 운영하던 Jenkins를 K3s(Kubernetes) 환경으로 마이그레이션한 과정을 정리합니다. Docker 볼륨 데이터를 PV로 이관하는 방법, 권한 문제 해결, 그리고 Helm Chart 적용 시 계정 병합 이슈를 다룹니다.
Next.js와 WordPress를 활용한 홈서버 기술 블로그 구축기. Docker Hairpinning으로 인한 ETIMEDOUT 해결 방법부터 Jenkins 병렬 빌드, 이미지 최적화를 통한 Lighthouse 성능 개선까지, 실제 운영 환경에서의 트러블슈팅 과정을 공유합니다.
지난 4편까지 우리는 쿠버네티스 위에 웹 서버를 띄우고(Deployment), 외부에서 접속(Ingress)하는 것까지 성공했다. 이제 Stateless(상태가 없는) 애플리케이션은 얼마든지 운영할 수 있다. 하지만 데이터베이스(DB)처럼 데이터가 계속 저장되어야 하는 애플리케이션이라면 이야기가 달라진다. 파드는 언제든 죽을 수 있고, 파드가 죽으면 그 안에 있던 파일도 함께 증발한다. 마지막 5편에서는 데이터를 영구적으로 저장하는 Volume(볼륨) 시스템과, 환경 설정값을 코드에서 분리하는 ConfigMap에 대해 ...
지난 3편에서 Deployment를 사용해 Nginx 파드(Pod) 3개를 띄우는 데 성공했다. kubectl get pods를 쳐보면 Running 상태로 아주 잘 돌아간다. 하지만 문제가 하나 있다. 접속할 수가 없다. 파드에도 IP(10.42.x.x 등)가 있긴 하지만, 이 IP는 클러스터 내부에서만 통용되는 사설 IP다. 외부의 내 노트북 브라우저에서는 이 IP로 접근할 방법이 없다. 오늘은 굳게 닫힌 쿠버네티스 클러스터에 문을 달고, 도메인 ...
지난 2편에서 쿠버네티스의 뼈대(아키텍처)를 살펴봤다. 마스터 노드가 명령을 내리고 워커 노드가 일을 한다는 구조는 이해했다. 이제 내 홈서버(k3s)에 실제로 애플리케이션을 띄워볼 차례다. 그런데 막상 도커에서 쓰던 것처럼 “컨테이너를 띄운다”라고 하지 않고, 쿠버네티스에서는 자꾸 “파드(Pod)를 띄운다”고 한다. 도대체 파드는 뭐고, 왜 컨테이너를 한 번 더 감싸서 쓰는 걸까? 그리고 튜토리얼들을 보면 왜 파드를 직접 만들지 말고 ...
나는 빠른 년생이라, 19살에 대학에 입학하였다. 당시 물리학과에 입학을 하였으나, 내 주변적인 요인들이나, 기타 등등의 요인으로 물리라는 학문 자체에 대해 흥미를 잃기 시작했다. 3학년에 들어가며 물리학은 나의 길이 아니라 생각하였고, 여러 분야(건축, 전기, IT 등)를 고민하던 중 당시에 재미있게 들었던 수업인, 전산 물리학이나 코딩 관련된 수업으로 IT 업계에 발을 들이게 되었고 지금까지 오게 되었다. 지금와서 ...
재테크를 하다 보면 “계란을 한 바구니에 담지 말라”는 말을 수없이 듣습니다. 하지만 막상 실천하려면 “주식 말고 뭘 사야 하지?”라는 막막함이 앞서죠. 저 역시 그랬습니다. 예금은 금리가 아쉽고, 주식은 파란불이 뜰 때마다 심장이 철렁했으니까요. 그래서 작년부터 포트폴리오의 안정성을 위해 ‘채권’을 조금씩 모으기 시작했습니다. 오늘은 제가 직접 채권을 매수하며 공부했던 내용들, 그리고 실제로 어떤 점이 좋았는지를 기록해보려 ...
지난 포스팅에서 K3s 위에 Bitnami Helm 차트를 이용해 PostgreSQL Master-Replica HA(고가용성) 환경을 구축했다. 구축만 해놓고 “잘 되겠지”라고 믿는 것은 엔지니어의 자세가 아니다. 이번에는 PostgreSQL의 표준 벤치마킹 도구인 pgbench를 사용하여 실제로 부하를 줘보고, 1) 읽기 분산이 제대로 되는지, 2) 오토스케일링(HPA)이 동작하여 성능이 향상되는지 검증해 본 과정을 기록한다. 이 과정에서 겪었던 WAL 로그 누락 이슈와 HPA 설정 ...
홈 서버를 운영하다 보면 기능 구현에 집중하느라 보안은 뒷전이 되기 쉽다. 최근 Ubuntu 24.04.3 LTS로 서버를 세팅하고 K3s와 각종 Docker 컨테이너를 올리면서 서비스 확장에만 열을 올렸는데, 문득 로그인 화면(MOTD)을 보고 보안 점검의 필요성을 느꼈다. 이번 포스팅에서는 ss 명령어로 현재 열려있는 포트를 분석하고, UFW(Uncomplicated Firewall) 설정과 함께 Cloudflare – 공유기(NAT) – 서버로 이어지는 3중 방어 체계가 ...
지난 1편에서는 도커의 한계를 넘어 쿠버네티스를 도입해야 하는 이유에 대해 정리했다.홈서버에 구축한 k3s 클러스터에 접속해 kubectl get nodes 명령어를 입력하면 Ready 상태의 노드가 조회된다. 겉보기엔 단순한 서버 한 대 같지만, 내부에서는 수많은 컴포넌트들이 유기적으로 통신하며 시스템을 지탱하고 있다. 이번 편에서는 쿠버네티스 클러스터가 어떻게 구성되어 있는지, 그 아키텍처(Architecture)를 살펴보려고 한다. 이 구조를 이해해야 나중에 트러블슈팅을 할 ...
최근 집에 구비해놓은 미니 PC를 활용해 홈서버를 구축하고 있다.단순히 도커(Docker)만 띄워서 쓸까 하다가, 기왕 하는 거 요즘 대세인 쿠버네티스(Kubernetes)를 제대로 활용해보자 싶어 가벼운 버전인 k3s를 설치했다. 그런데 막상 클러스터를 구축하고 나니, Gemini를 활용하거나 웹 서치를 통해 돌아가게는 만들었지만, “이게 왜 돌아가는지” 명확히 설명하기가 어려웠다. 그래서 이번 기회에 쿠버네티스의 A to Z를 기초부터 탄탄하게 정리해 보려고 ...
지난 주에, 유독 하늘이 맑아서 확인해보니, 반짝거리는 별이 있었다.그래서, 어플을 통해 확인을 해보니 목성이라는 것을 확인했고 몇 달만에 행성 관찰을 해볼까 싶어서 망원경으로 관측을 하게 되었다. 관측 장소: 서울 영등포구 옥상관측 시간: 21:00 ~ 23:00관측 대상: 달, 목성카메라: 아이폰 15 Pro Max 천체 망원경은 지난 번에 아버지가 선물로 사주신 Celestron의 Omni AZ 102 망원경이다. 102mm ...
최근 미니피씨에 K3s를 구축하고 서비스를 올리는 작업을 진행 중이다. DB는 가장 익숙한 PostgreSQL을 선택했는데, 단순히 파드 하나 띄우는 것(Standalone) 말고, 읽기 부하 분산과 가용성을 위해 Master-Replica(Primary-ReadReplica) 구조를 잡고 싶었다. Cloud 환경이었다면 EBS나 블록 스토리지로 뚝딱했겠지만, 맨땅에 헤딩하는 온프레미스 환경이라 스토리지부터 Helm 설정까지 꽤나 삽질을 했다. 그 과정과 최종 설정을 기록해둔다. 🏗️ 목표 아키텍처 1. Primary용 ...
안녕하세요! 오늘은 최근 사내 배포 파이프라인을 고도화하며 겪은 경험을 공유해 보려고 합니다. DevOps 엔지니어로서 가장 고민되는 지점은 언제나 “어떻게 하면 개발자들이 인프라를 몰라도 편하게 배포할 수 있을까?” 인 것 같습니다. 기존에 우리는 ArgoCD의 App of Apps 패턴을 사용하고 있었는데, 유연성은 좋았지만 서비스가 늘어날수록 관리 포인트가 비대해지는 문제가 있었습니다. 이를 해결하기 위해 ApplicationSet을 도입했고, 그 결과 ...
최근 개인적으로 운영 중인 미니 PC(Ubuntu 환경) 서버에서 갑작스럽게 504 Gateway Time-out 에러가 발생했다. 단순한 Nginx 설정 오류나 포트 바인딩 문제라고 생각하고 접근했으나, 로그를 파헤쳐 보니 등골이 서늘해지는 보안 공격(RCE) 시도였다. 이번 글에서는 Next.js 프로젝트에서 발생한 504 에러의 진짜 원인을 찾고, 실제 해킹 시도 로그를 분석하여 보안 패치를 적용한 과정을 기록한다. 1. 증상: 갑작스러운 504 ...
미니 PC를 홈 서버로 세팅하던 중, 물리 메모리(RAM)는 16GB인데 시스템(Linux)에서는 12GB만 인식하는 현상을 발견했다. 이를 해결하기 위해 하드웨어 예약 메모리(Hardware Reserved) 원인을 분석하고, 서버 운영 안정성을 위해 Swap 메모리를 확장 및 커널 파라미터(Swappiness)를 튜닝한 과정을 기록한다. 1. 문제 상황 및 원인 분석 1-1. 현상 free -h 명령어로 메모리 상태를 확인했을 때, 물리 메모리 16GB 중 ...
운영 중인 서버의 Ubuntu LTS 버전 지원 기간이 끝나간다는 알림을 받은 적이 있는가? 시스템을 최신 버전으로 즉시 마이그레이션 하는 것이 정석이겠지만, 레거시 환경이나 복잡한 의존성 문제로 인해 당장 업그레이드가 불가능한 경우가 많다. 이때 필요한 것이 바로 Ubuntu ESM(Expanded Security Maintenance) 이다. 오늘은 Ubuntu 시스템의 ‘소프트웨어 생명 연장 플랜’이라 불리는 ESM의 역할과 적용 방법에 대해 정리한다. ...
이번 글은 네트워크 쪽을 다루려고 한다. 네트워크에 완전 전문가가 아니기에, 전문가가 보기에 적절치 못한 비유가 있을 수도 있지만 참고만 해주면 감사하겠습니다. (많은 태클은 언제나 환영입니다.) 기본적으로는 아래와 같은 플로우로 흘러가게 된다. 사실 하나씩 생각해보면 상당히 쉽다. 실제로는 Nginx에서 SSL 인증서를 적용하고, jay-gemini.com으로 들어와도, 특정 URL 조건에서는 WordPress 인 8080 포트로 향하게 하는 등 조금 더 ...
아직은 주니어 개발자이고, 개인적으로 프로젝트를 진행할 때 사용되는 클라우드 비용은 솔직히 부담스러웠다. 그래서 편하게 마음껏 사용하기 좋은 미니PC를 하나 구입하고, 24시간 돌려서, 호스팅 비용 ‘0 원’으로 나만의 홈 서버를 구축하기로 했다. 1. 왜 미니PC를 구축하는 것인가? 클라우드가 아닌 물리적인 서버를 두는 데에는 여러 가지 이유가 있었다. 이유 1. 비용 부담 클라우드에서 비용을 산정하는 것은 큰 ...
🧐 문제 상황 Nginx를 리버스 프록시로 설정하여 http://jenkins.jay-gemini.com 주소로 Jenkins에 접속했을 때, 페이지의 전체적인 레이아웃은 깨지지 않았지만 특정 기능(예: 다크 모드 테마)의 CSS 파일이 로드되지 않는 문제가 발생했습니다. 브라우저의 개발자 도구(F12) 네트워크 탭을 확인했을 때, 아래와 같은 에러가 기록되었습니다. 🔬 원인 분석: 잘못된 리소스 URL 에러 메시지를 보면 문제의 원인을 명확히 알 수 있습니다. 브라우저가 ...
✅ 개요 이 문서는 개인 서버(미니 PC)에 Let’s Encrypt를 사용하여 무료 와일드카드 SSL 인증서(*.jay-gemini.com)를 발급받고, Nginx 웹서버에 적용하는 전체 과정을 기록합니다. 이 과정을 통해 HTTP 프로토콜을 HTTPS로 전환하여 통신을 암호화하고 보안을 강화할 수 있습니다. 💡 사전 준비물 🚀 발급 및 적용 절차 1단계: Certbot 설치 Certbot은 Let’s Encrypt 인증서를 자동으로 발급하고 갱신하는 데 사용되는 클라이언트입니다. ...
목표: Windows에서 Linux 서버로 전환 1. Ubuntu Server 설치 과정 요약 ✅ 준비물 🚀 설치 절차 2. 설치 후 문제 해결: 디스크 전체 용량 인식 ⚠️ 문제 상황 🔧 원인 분석 🛠️ 해결 과정 ✅ 최종 결과 확인 결론: 루트(/) 파티션의 Size가 466G로 표시되는 것을 확인. SSD의 전체 저장 공간을 정상적으로 모두 사용할 수 있게 ...