본문 바로가기

분류 전체보기49

Spring Boot 소셜 로그인 (이메일 인증, 카카오, DB 라우팅) 소셜 로그인 구현이 그냥 라이브러리 가져다 쓰면 끝나는 줄 알았습니다. 실제로 해보니 OAuth2 흐름 처리부터 JWT 연동, 이메일 인증, 심지어 DB 서버까지 이원화해야 한다는 걸 뒤늦게 깨달았습니다. 이 글은 Spring Boot 환경에서 이메일 인증과 카카오 소셜 로그인, 그리고 마스터/슬레이브 DB 라우팅까지 한 번에 구성하면서 제가 직접 부딪힌 것들을 정리한 내용입니다.이메일 인증, 생각보다 막히는 구간이 많습니다이메일 인증 기능을 처음 붙였을 때 가장 먼저 막힌 건 메일 서버 설정이었습니다. 직접 메일 서버를 구축하려 했는데, 스팸 차단 정책 때문에 대부분의 발신이 막혀버렸습니다. 결국 Gmail SMTP를 쓰는 방향으로 선회했고, 이 과정에서 앱 비밀번호 발급이 필수라는 걸 알게 됐습니다... 2026. 6. 12.
Spring 예외처리 (전역처리, BaseException, BaseResponse) 처음 Spring 프로젝트를 만들 때 예외 처리를 Controller마다 try-catch로 일일이 감쌌던 기억이 납니다. 어느 순간 코드가 길어지면서 "이걸 왜 매번 반복하지?"라는 생각이 들었고, 그때부터 전역 예외 처리 구조를 하나씩 개선해 나갔습니다. 이 글은 그 과정을 단계별로 정리한 기록입니다.전역처리와 BaseException으로 중복 코드 없애기처음 해봤던 방식은 Service 계층에서 예외를 던지고, Controller에서 try-catch로 받는 전통적인 자바 방식이었습니다. 기능 자체는 돌아가긴 했는데, API 엔드포인트가 5개, 10개로 늘어나면서 각 Controller 메서드마다 동일한 try-catch 블록이 반복되는 게 눈에 거슬렸습니다. 같은 코드를 복붙하고 있다는 건 뭔가 .. 2026. 6. 12.
Docker CI/CD (원격 데몬, GitHub Actions, 무중단 배포) 저도 처음에는 코드 수정할 때마다 서버에 직접 접속해서 git pull 하고 빌드하고 컨테이너 재시작하는 걸 당연하게 여겼습니다. 그런데 이번에 GitHub Actions와 Docker를 연동해서 자동 배포 파이프라인을 직접 구성해보고 나서, 그 생각이 완전히 바뀌었습니다. 한 번 세팅해두면 push 한 번으로 배포까지 끝난다는 게 이렇게 편한 일인지 몰랐습니다.도커 데몬을 원격으로 여는 것, 생각보다 간단하지 않았다일반적으로 Docker는 로컬에서만 쓰는 도구라고 생각하는 분들도 있는데, 저는 이번에 dockerd를 원격에서도 제어할 수 있다는 걸 실습하면서 그게 얼마나 강력한 기능인지 직접 느꼈습니다.dockerd란 Docker Daemon의 줄임말로, 컨테이너 생성, 이미지 관리, 네트워크 설정 등.. 2026. 6. 11.
쿠버네티스 컨트롤러 (Auto Healing, Deployment, Ingress) 파드(Pod)를 직접 만들면 장애가 나도 쿠버네티스가 알아서 살려준다고 생각하는 분들이 많습니다. 실제로 처음 공부할 때 저도 그렇게 알고 있었는데, 직접 실습해 보니 파드를 단독으로 띄우면 노드가 죽었을 때 그냥 그대로 사라집니다. 이걸 보고서야 컨트롤러(Controller)가 왜 존재하는지 체감이 됐습니다. 컨트롤러를 통해 파드를 관리해야 Auto Healing, 버전 롤백, 오토스케일링 같은 기능이 비로소 작동합니다.Auto Healing과 ReplicaSet이 실제로 하는 일컨트롤러의 핵심 역할 중 하나는 Auto Healing입니다. 여기서 Auto Healing이란 특정 노드에서 파드가 죽거나 노드 자체가 다운됐을 때, 컨트롤러가 이를 감지해 다른 노드에서 파드를 자동으로 다시 실행하는 기능입.. 2026. 6. 11.
쿠버네티스 볼륨 (PVC, Longhorn, MetalLB) 쿠버네티스를 처음 공부하면서 가장 머리가 아팠던 부분이 바로 스토리지였습니다. 컨테이너가 죽으면 데이터가 날아간다는 걸 처음 직접 경험했을 때, 솔직히 이건 예상 밖이었습니다. 파드를 재시작했더니 아무것도 없는 깨끗한 상태로 돌아와 있는 것을 보고 '이게 왜 이러지?' 싶었는데, 그게 컨테이너의 휘발성 스토리지 특성이었습니다. 이 글은 그 문제를 어떻게 풀어나갔는지, 그리고 실제로 가상머신 3대에 Longhorn을 올려보면서 알게 된 것들을 정리한 내용입니다.컨테이너 데이터가 사라지는 이유와 볼륨의 세 가지 선택지컨테이너는 기본적으로 휘발성 스토리지를 씁니다. 쉽게 말해 컨테이너를 끄면 그 안에 저장된 데이터도 같이 사라지는 구조입니다. 처음엔 왜 이렇게 설계했을까 의아했는데, 생각해보면 컨테이너는 원래.. 2026. 6. 11.
MSA 쿠버네티스 배포 (ConfigMap, Service Mesh, 포트포워딩) 쿠버네티스로 MSA 환경을 처음 구성해보려는 분들, 혹시 "배포는 됐는데 서비스끼리 왜 못 찾지?" 하고 막막했던 적 없으셨습니까? 저는 있습니다. Gateway가 Eureka를 못 찾아서 30분을 헤맸고, 그제야 ConfigMap 설정을 빠뜨렸다는 걸 알았습니다. 이 글은 그 삽질의 기록이기도 합니다.ConfigMap과 Eureka로 서비스 연결하기MSA 환경에서 쿠버네티스에 여러 서비스를 올리다 보면, 설정값을 어디에 어떻게 넣어야 할지 바로 헷갈리기 시작합니다. 환경변수를 Pod 스펙 안에 직접 하드코딩해두면, 값 하나 바뀔 때마다 이미지를 새로 빌드해야 하는 상황이 옵니다. 실제로 제가 처음 실습할 때 그렇게 했다가, DB 비밀번호 하나 바꾸려고 이미지를 두 번 다시 빌드한 기억이 납니다.그래서 .. 2026. 6. 10.

소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 자동식단생성 연관 블로그