분류 전체보기 (29) 썸네일형 리스트형 SSL 인증서 ERR_CERT_DATE_INVALID 오류 해결 안녕하세요! 오늘은 갑자기 발생한 SSL 인증서 오류를 해결한 경험을 공유해드리려고 합니다.개발 중이던 웹사이트에 접속하려는데 갑자기 ERR_CERT_DATE_INVALID 오류가 뜨면서 접속이 안 되더라구요. Let's Encrypt를 사용하고 있어서 자동 갱신이 잘 되고 있다고 생각했는데... 뭔가 이상했습니다.문제 발견먼저 OpenSSL로 실제 서버가 제공하는 인증서를 확인해봤어요.echo | openssl s_client -connect ai-server.projectbuildup.io:443 -servername ai-server.projectbuildup.io 2>/dev/null | openssl x509 -noout -dates결과가 이랬습니다: notBefore=Aug 7 00:56:1.. Spring @Async 환경에서 MultipartFile "파일을 찾을 수 없음" 에러 해결하기 Spring Boot에서 파일 업로드 기능을 구현하던 중, 비동기 처리를 위해 @Async 어노테이션을 사용했을 때 다음과 같은 에러가 발생했습니다.java.io.FileNotFoundException: /tmp/tomcat.xxx/work/Tomcat/localhost/ROOT/upload_xxx.tmp (No such file or directory)또는java.lang.IllegalStateException: The temporary upload location is not valid문제 발생 원인 1. HTTP 요청 생명주기와 MultipartFileSpring에서 MultipartFile은 HTTP 요청의 생명주기에 의존합니다.HTTP 요청 시작 → MultipartFile 임시 저장 → 요청 .. 2년 묶은 블로그를 다시 운영하다! 블로그를 다시 쓰기로 마음을 먹은 건 저번주 수요일 사내세션에서 동료와 이야기를 나눈 후 였다.우리 회사는 취준, 이직에 대한 이야기를 터놓고 나누는 편이다.대표님께서 회사의 목표 중 하나는 동반성장이고, 회사는 더 나은 커리어를 위한 도약이라고 생각해주면 좋을 것 같다고 하셨다. 물론 프로젝트 진행 중에는 회사의 이익과 성장을 위해서 분석하고 연구하는 것에 몰두해야 하지만, 그것이 전부가 되지는 않기를 바라는 대표님의 따뜻한 배려랄까.물론 어느정도 선은 있겠지만!어쨌든 그래서 항상 감사하다고 생각한다. 사실은 대표님이 대학교 학과 선배인데, 그래서 내 커리어적인 고민을 궁금해하시고 진지하게 해결해주시려고 투자해주신다.예를 들어서 사수가 없는 나를 위해서 굉장한 개발자가 대표님으로 계신 스타트업 기업에 .. AWS 인스턴스 스토어(ephemeral0)로 EBS 용량 한계 극복하기 지난 글에서 "이 모델이 진짜 8GB 디스크 환경에서 돌아갈 수 있을까"에 대한 실험을 진했했습니다.결론은 Stable Diffusion API 컨테이너를 돌리려면 최소 20~30GB 이상 여유가 필요하다는 점이었습니다.문제는 EBS를 크게 잡으면 비용이 올라간다는 것이죠.그런데 AWS에서 이미 무료로 제공하는 디스크 공간이 있다는 사실, 알고 계셨나요?바로 인스턴스 스토어(Instance Store), 여기서는 ephemeral0라는 이름으로 나타납니다.이 디스크 공간을 사용해서 8GB 환경에서 Stable Diffusion 모델을 결국 돌릴 수 있었습니다!인스턴스 스토어란?EC2 호스트 물리 서버에 직접 연결된 로컬 NVMe/SSD 디스크EBS보다 I/O 속도가 빠르지만, 인스턴스 Stop/Termi.. EBS 최소 볼륨 실험기 & gp3로 전환한 이유 “이 모델이 진짜 8GB로 돌아갈 수 있을까?”라는 질문에서 시작된 실험. 그리고 비용, 성능, 탄력성을 모두 고려해 gp3로 갈아탄 이야기. 실험 배경: EBS 볼륨 너무 크게 쓰고 있진 않을까?Stable Diffusion 기반 API를 운영하면서, 모델 구성 요소는 이미 EFS에 분리 저장한 상태였다.그렇다면 애플리케이션 서버가 직접 사용하는 EBS는 꼭 125GiB까지 필요할까?현재 서버는 g4dn.xlarge 타입인데, 여기에 다음 두 가지 스토리지가 기본으로 붙는다:루트 디스크 (EBS) — 기본 125GiB (수정 가능)ephemeral0 (임시 스토리지) — 디폴트로 제공하지만 실제로 EBS를 얼마나 쓰는지, 그리고 어디까지 줄여도 안정적으로 운영할 수 있는지는 확인이 필요했다.그래서 시.. 🐳 Stable Diffusion API Docker 패키징: 로컬 모델 조립 → 컨테이너화까지 Stable Diffusion 모델 구성요소를 로컬에서 조립한 다음, 이를 Docker 기반 API 서버로 패키징한 과정을 정리했다. 작업 배경앞선 포스팅에서 from_pretrained() 없이 로컬에 저장된 모델 구성 요소들만으로 Stable Diffusion 파이프라인을 조립했다. 그리고 이후에는 이 모델들을 EFS에 저장하고 API 서버에서 직접 로딩하는 구조로 개선했다. 이제 남은 건 이 환경을 실제 운영에 적합한 형태로 포장하는 일. 즉, Docker 컨테이너로 패키징해서 어디서든 실행 가능하게 만드는 것이었다.Dockerfile 구성패키징 대상은 다음과 같다:FastAPI 기반 API 서버 코드 (main.py)Stable Diffusion 구성 요소를 로드하는 로직requirements.t.. EFS에 모델 구성요소 저장하고, 컨테이너에서 불러오는 구조로 전환하기 컨테이너 재빌드 없이 모델을 안정적으로 불러오기 위해, EFS에 모델 구성요소를 저장하고 Docker에서 직접 마운트하는 구조로 전환했다. 왜 이 작업이 필요했을까?이전까지는 모델 구성 요소들을 로컬에 저장하고, 컨테이너 안에서 로드하는 구조였다. 이 방식도 잘 작동하긴 했지만, 다음과 같은 불편함이 있었다:컨테이너를 새로 빌드하거나 다른 인스턴스에서 실행할 경우 모델을 다시 복사해야 함모델 파일 용량이 수 GB 단위라 이미지 용량도 불필요하게 커짐장기적으로 여러 서버에서 공유하려면 중앙 저장소가 필요함그래서 Amazon EFS(Elastic File System)를 활용하기로 했다. EC2 인스턴스에 EFS 마운트먼저 EFS를 EC2 인스턴스에 /mnt/efs 경로로 마운트했다. 이후 Stable Di.. PyTorch 모델 저장 시 ModuleNotFoundError 오류 해결기: pickle과 버전 호환의 함정 모델을 저장하고 다시 불러오기만 했을 뿐인데 에러가 났다. 그 원인은 다름 아닌 pickle이었다.🧩 문제는 환경의 “미묘한 차이”였다Stable Diffusion 기반 API 서버를 개발하는 과정에서 .pth 파일로 저장한 모델을 불러오는 도중 다음과 같은 오류를 만났다.ModuleNotFoundError: No module named 'diffusers.models.unets' 흥미로운 점은 같은 서버에서 저장한 모델임에도, Docker 컨테이너에서 실행했을 때 이 오류가 발생했다는 것이다. 알고 보니 로컬 환경과 컨테이너 내부의 라이브러리 버전이 미묘하게 달랐고, 바로 그 차이로 인해 모델을 제대로 불러올 수 없었던 것이다.왜 이런 일이 발생했을까?# 저장 시[UNet2DConditionModel.. 이전 1 2 3 4 다음