전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
Infra/Aws

CloudFront SaaS Manager로 SaaS 고객사 커스텀 도메인 연결하기 (멀티테넌트 CDN 구축)

CloudFront SaaS Manager로 고객사 커스텀 도메인 100개 받아내기B2B를 운영하다 보면 반드시 만나는 요구사항이 있다. "우리 회사 도메인으로 서비스를 띄워달라".이 글은 그 요구를 CloudFront SaaS Manager로 푸는 방법을, 개념부터 실제 API 값까지 정리한 것이다. 문제: 커스텀 도메인은 왜 어려운가헬프센터(도움말 문서) 서비스를 운영한다고 하자. 지금은 이렇게 서빙한다.https://help.example-saas.com/acme # 고객사 Ahttps://help.example-saas.com/globex # 고객사 B 고객사 요구는 이렇다.https://docs.acme.com # 고객사 A 자기 도메인https://..

Infra/Aws

AWS SES + SNS + SQS로 이메일 발송·결과 추적 파이프라인 만들기

AWS SES로 대량 이메일 발송 인프라 만들기 — SES · SNS · SQS 조합 정리1만 명 규모 캠페인 메일을 보내고, 수신자별로 실제 전달됐는지까지 추적하는 인프라를 AWS 관리형 서비스만으로 구성한 기록입니다. 1. SES (Simple Email Service)AWS의 이메일 전송/수신 서비스다. 도메인을 인증해 두면 대량 메일과 트랜잭션 메일을 발송할 수 있다.트랜잭션 이메일 = 사용자 행동으로 자동 발송되는 메일. (회원가입 인증, 비밀번호 재설정, 주문 확인 같은 것) 마케팅 캠페인(대량 발송)과 성격이 다르다. SMTP 서버를 직접 운영하지 않아도 되는 게 핵심 가치다. IP 평판 관리, 반송 처리, 수신 서버와의 협상 같은 걸 AWS가 대신해준다. 반드시 알아야 할 것: sandbo..

LangChain/LangGraph

LLM API에 개인정보 그대로 보내고 있지 않나요?

LLM API에 개인정보를 그대로 보내지 않는 법 — PII 마스킹하기LLM 기능을 붙일 때 모델 품질만큼 중요한 게 개인정보 보안이다. 프롬프트에 실린 이름·전화번호·주민등록번호는 그대로 외부 공급자 서버로 나간다. -->어디서, 어떻게 걸러야 하는지 정리한다. PII 마스킹이 왜 필요한가LLM API 호출은 외부로 데이터를 내보내는 행위다. 사내 DB 조회와 성격이 완전히 다르다. 이름, 전화번호, 이메일, 계좌번호, 주민등록번호가 프롬프트에 그대로 실리면 이런 일이 생긴다.외부 LLM 공급자 서버로 원문이 전송된다API 요청 로그·에러 로그·캐시에 원문이 남는다공급자 측 데이터 보존 정책에 종속된다 (예: OpenAI API 기본 보존 최대 30일)OWASP 생성형 AI 보안 가이드에서 주요 위험으..

트러블슈팅

GitHub Actions "Canceling since a higher priority waiting request exists" 원인과 해결

들어가며어느 날 팀에서 이런 제보가 들어왔다. "CI는 성공했는데 배포가 안 됐어요. 이미지가 그대로예요." CI 로그는 성공, 이미지도 ECR에 잘 올라가 있었다. 그런데 클러스터에 떠 있는 파드는 예전 이미지 그대로였다. 중간 어딘가에서 배포 단계가 실패되어 신규 이미지로 배포가 되지 않았다. ➡️ 원인은 GitHub Actions의 concurrency 설정 한 줄이었다. 배경: GitOps 배포 파이프라인구축한 CI/CD 파이프라인 구조는 아래의 형태였다.서비스 레포 CI ├─ 이미지 빌드 & ECR push └─ repository_dispatch 이벤트 발송 ↓매니페스트 레포 (k8s-manifests) └─ "Update Image Tag" 워크플로우 └─ va..

AI

부산 DIVE 2026 — AI/DATA 해커톤을 AI Native하게 완주한 기록

AI Native로 해커톤 참가하기 — 부산 DIVE 2026 참가기들어가며"짧은 시간 안에 AI로 어디까지 만들 수 있을까?" 이 질문 하나를 확인해보고 싶어서 부산 DIVE 2026 해커톤에 참가했다. 가능하면 혼자 나가보고 싶었지만 2~4명 제한이 있어서 친구 한 명과 둘이 팀을 꾸렸다. 목표는 명확했다. 기획 → 디자인 → 개발 → 결과물 제출(발표 자료, 결과서)까지 전 과정을 최대한 AI Native하게 처리하기. 혼자 나가고 싶었던 이유는 하나의 서비스가 만들어지는 과정을 전부 경험해보고 싶었기 때문이다. 내 주 기술은 백엔드/인프라지만, AI를 통해 기획·디자인·프론트엔드까지 작업해 보고 높은 퀄리티로 만들어 보고 싶었다. (참고로 반응형 모바일 뷰를 디자인부터 프론트 개발까지 해본 건 이..

트러블슈팅

LLM API 호출에서 ALB 504가 뜨는 이유 — idle timeout을 늘리는 게 답이 아닌 경우

LLM 응답이 60초를 넘으면 504가 뜬다 — 타임아웃을 늘리는 대신 요청을 쪼갠 이야기LLM을 붙인 기능을 운영에 올리면 거의 반드시 만나는 문제가 있다. 로컬에서는 잘 됐다가, 배포하면 오래 걸리는 요청에 대해서 504 Error 가 뜬다.504 ERROR란 (Gateway Timeout) 에러로, 사용자의 요청을 처리하는 중간 서버(프록시, 로드 밸런서 등)가 실제 데이터를 가진 서버로부터 정해진 시간 안에 응답을 받지 못해 발생하는 문제를 의미한다. 우리 서비스에도 AI가 메일 답장 초안을 생성해주는 기능이 있었다. 짧은 스레드 내용은 20~30초면 끝나는데, 메일이 여러 건 쌓인 스레드를 통합해서 초안을 만들면 70초까지 걸렸다. 그리고 60초 이상이 걸리는 요청에서 504 에러가 발생하면서..

트러블슈팅

Gmail API에서 Google Group 주소로 메일 보내기: send-as alias와 From 헤더 정리

Gmail API에서 Google Group 주소로 메일을 보낼 수 있을까?서비스에서 메일 발송 기능을 만들다 보면 이런 요구가 자주 나온다.로그인한 개인 계정이 아니라, 팀 공용 그룹 주소로 메일을 보내고 싶다. 예를 들어 담당자는 member@company.com으로 로그인했지만, 파트너에게 보이는 발신자는 support@company.com 또는 sales@company.com 같은 그룹 주소였으면 하는 경우다. 겉으로 보면 단순해 보인다. From만 그룹 주소로 바꾸면 될 것 같다. 하지만 Gmail API와 Google Group의 구조를 보면 이 요구는 두 가지 개념을 분리해서 봐야 한다.실제로 Gmail API를 호출하는 인증 주체수신자에게 표시되는 MIME From 주소 결론부터 말하면, ..

Infra/Aws

AWS ALB에서 SSE와 WebSocket 연결이 끊기는 이유: idle timeout과 heartbeat 정리

ALB 환경에서 SSE와 WebSocket 연결이 자꾸 끊긴다면 먼저 봐야 할 것SSE(Server-Sent Events)나 WebSocket을 운영 환경에 올리면 종종 비슷한 증상이 나온다. 로컬에서는 잘 붙는데, 배포 후에는 몇십 초에서 몇 분 사이에 연결이 끊긴다. nginx의 proxy_read_timeout을 길게 늘여도 해결되지 않고, 프론트엔드에서는 간헐적으로 재연결이 반복된다. 이 문제는 애플리케이션 코드보다 앞단 인프라의 커넥션 수명 정책에서 시작되는 경우가 많다. 특히 AWS ALB(Application Load Balancer)를 쓰고 있다면, idle_timeout을 제대로 이해하지 못한 상태에서 SSE나 WebSocket을 붙이는 순간 장애가 반복된다. 이 글은 "ALB 뒤에서 오..

kylo
오늘도 열심히 - BE