StudyDad Loop 제품을 만들며 배운 운영과 설계를 기록합니다.

FamBlend를 중심으로 실제 구현, 운영 메모, GitHub 포트폴리오를 연결해 쌓아가는 StudyDad의 작업 기록입니다.

AWS 15

API Gateway REST API와 HTTP API 선택 기준

AWS 실전 운영 시리즈 4/12AWS API Gateway에는 크게 REST API와 HTTP API가 있다.HTTP API는 더 가볍고 저렴하고 빠르다. 그래서 새로 만들 때는 HTTP API가 먼저 떠오를 수 있다.하지만 항상 HTTP API가 정답은 아니다.운영 콘솔처럼 브라우저 기반 SPA, 여러 endpoint, CORS preflight, API Key, 요청 검증, MOCK 응답 같은 요소가 중요하다면 REST API가 더 나을 수 있다.문제 상황운영 콘솔의 프론트엔드는 별도 도메인에서 동작했다.API는 Lambda를 통해 제공되었고, 여러 path와 method가 있었다.필요한 것은 단순히 Lambda를 HTTP로 호출하는 것만이 아니었다.path별 라우팅CORS preflight 처리O..

Lambda 배포 파일을 가볍게 만든 이유

AWS 실전 운영 시리즈 3/12Lambda는 배포가 단순하다.코드를 zip으로 묶고 update-function-code를 실행하면 된다.하지만 Python Lambda에서 엑셀 생성 라이브러리나 데이터베이스 드라이버를 함께 넣기 시작하면 배포 파일이 금방 무거워진다.작은 코드 하나를 고쳤을 뿐인데 매번 큰 zip 파일을 만들고 올려야 한다면 배포가 느려지고 실수 가능성도 커진다.그래서 Lambda Layer를 사용해 함수 코드와 의존성을 분리했다.문제 상황운영 콘솔에는 리포트 파일을 생성하는 Lambda가 있었다.이 함수는 단순 API 응답만 하는 것이 아니라 다음 작업을 했다.데이터베이스 조회엑셀 파일 생성object storage 업로드작업 상태 갱신Python 코드 자체는 크지 않았다.하지만 엑..

CloudFront 캐시는 성능 기능이 아니라 운영 기능이다

AWS 실전 운영 시리즈 2/12CloudFront를 처음 쓸 때는 캐시를 성능 기능으로만 생각하기 쉽다.사용자 가까운 엣지에서 파일을 제공하니 더 빠르다. 트래픽이 줄고, origin 부하도 줄어든다.맞는 말이다.하지만 운영 콘솔에서 CloudFront 캐시는 성능 기능이면서 동시에 운영 기능이다.캐시 정책에 따라 배포 반영 속도, 데이터 최신성, 장애 대응 방식이 달라지기 때문이다.문제 상황React SPA를 S3에 올리고 CloudFront로 서빙했다.정적 파일은 잘 캐시되었고, 화면 로딩도 빨랐다.그런데 운영 중에는 이런 질문들이 생겼다.배포했는데 왜 이전 화면이 보일까?JSON 데이터가 바뀌었는데 왜 화면에 반영되지 않을까?어떤 파일은 오래 캐시해도 되고 어떤 파일은 짧게 해야 할까?매번 inv..

React SPA를 S3와 CloudFront에 올릴 때 먼저 정해야 할 것들

AWS 실전 운영 시리즈 1/12React로 만든 관리자 페이지를 배포할 때 꼭 애플리케이션 서버가 필요한 것은 아니다.빌드가 끝난 React SPA는 결국 HTML, JavaScript, CSS, 이미지 같은 정적 파일이다. 이 파일들은 Node 서버나 Nginx가 없어도 S3와 CloudFront만으로 충분히 서빙할 수 있다.하지만 "S3에 올리면 끝"이라고 생각하면 운영 중에 여러 문제를 만난다.HTTPS, 커스텀 도메인, SPA 라우팅, 캐시 정책, 배포 후 무효화, 데이터 파일 보호 같은 것들을 미리 정해야 한다.문제 상황운영 콘솔은 React SPA로 만들었다.사용자는 많지 않았지만, 내부 업무에 매일 쓰이는 화면이었다. SEO는 중요하지 않았고, 서버 사이드 렌더링도 필요하지 않았다.이런 조..

AWS EC2에서 Docker 빌드 중 “no space left on device” 오류 해결기

AWS EC2에서 Docker 빌드 중 “no space left on device” 오류 해결기최근 AWS EC2 인스턴스에서 Docker 이미지를 빌드하는 과정 중, 예상치 못한 디스크 용량 부족 문제를 겪었습니다.이번 글에서는 문제 원인 파악부터 EBS 볼륨 확장 및 파티션 조정, 파일시스템 리사이즈까지 진행한 과정을 단계별로 정리해 보겠습니다.문제 상황: Docker 빌드 중 “no space left on device” 오류 발생Docker 빌드 중 다음과 같은 에러 메시지를 확인했습니다.error Error: ENOSPC: no space left on device, copyfile '/frontend/.cache/yarn/v6/npm-plotly-js-1.58.5-.../world_110m...