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

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

서버리스 7

서버리스만으로 부족했던 운영 콘솔 백엔드 설계

운영 콘솔 아키텍처 시리즈 6/9서버리스는 운영 부담을 크게 줄여준다. 트래픽이 없을 때 비용이 거의 없고, 갑작스러운 요청도 자동으로 확장된다. 그래서 운영 콘솔을 만들 때 모든 API를 Lambda로 만들고 싶어질 수 있다.하지만 모든 요청이 Lambda에 잘 맞는 것은 아니다. 반대로 모든 요청을 상주 서버로 처리하는 것도 답은 아니었다.문제 상황운영 리포트 콘솔에는 성격이 다른 API가 섞여 있었다.하나는 대시보드나 목록 조회처럼 짧고 자주 호출되는 API다. 내부 운영자가 화면을 이동할 때마다 호출되고, 응답은 빠를수록 좋다. 내부 인증 쿠키를 확인하고, RDB 커넥션 풀을 사용해 여러 집계 쿼리를 실행한다.다른 하나는 리포트 생성처럼 드물지만 오래 걸리는 API다. 사용자가 버튼을 누르면 수 ..

Lambda Function URL 대신 API Gateway를 선택한 이유

운영 콘솔 아키텍처 시리즈 5/9Lambda를 HTTP로 호출하려면 가장 단순한 방법은 Lambda Function URL이다. 별도 게이트웨이 없이 함수에 HTTPS URL을 붙일 수 있다. 작은 API라면 이 방식이 충분할 때도 많다.그런데 운영 콘솔의 API 앞에는 API Gateway를 뒀다. 단순히 "원래 그렇게 하니까"가 아니라, 브라우저 기반 콘솔에서 필요한 운영 기능을 한곳에서 처리하기 위해서였다.문제 상황운영 콘솔 API는 브라우저에서 호출된다. 정적 SPA는 console.example.com에서 서빙되고, API는 api.example.com 또는 클라우드 API 도메인에서 제공된다. 이 순간 CORS가 발생한다.또한 API는 하나의 엔드포인트가 아니었다. 동기화, 조회, 리포트 생성..

서버리스, 상주 서버, 정적 호스팅을 나누는 기준

기술 실무 설계 시리즈 3/8운영 도구를 만들 때 백엔드를 어떻게 구성할지 고민하게 된다.모든 것을 Lambda로 만들까?EC2나 ECS 같은 상주 서버를 둘까?React SPA는 서버에서 서빙해야 할까?이 질문에는 하나의 정답이 없다.요청의 성격에 따라 실행 모델을 나누는 것이 더 현실적이다.먼저 워크로드를 나눈다기술을 고르기 전에 작업을 분류해야 한다.운영 콘솔에는 보통 다음 종류의 작업이 섞여 있다.정적 화면 제공짧고 잦은 조회 API인증과 쿠키 처리오래 걸리는 파일 생성이벤트성 동기화월별 통계 적재이 작업들은 같은 실행 모델을 요구하지 않는다.정적 화면은 S3와 CloudFront가 잘 맞는다.짧고 잦은 API는 상주 서버가 나을 수 있다.드물고 무거운 작업은 Lambda worker가 적합할 수..

API Gateway OPTIONS MOCK으로 CORS 비용 줄이기

AWS 실전 운영 시리즈 5/12브라우저에서 API를 호출할 때 CORS 오류를 만나면 당황스럽다.서버는 멀쩡한 것 같은데 브라우저가 요청을 막는다. Postman에서는 되는데 화면에서는 안 된다.운영 콘솔처럼 React SPA와 API 도메인이 분리된 구조에서는 CORS가 설계 요소다.특히 JSON 요청이 많다면 preflight OPTIONS 요청을 어떻게 처리할지 정해야 한다.CORS preflight란 무엇인가브라우저는 다른 origin으로 특정 요청을 보내기 전에 OPTIONS 요청을 먼저 보낼 수 있다.이 요청을 preflight라고 한다.예를 들어 다음 조건에서는 preflight가 발생한다.Content-Type: application/jsonAuthorization 헤더 사용PUT, DE..

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 코드 자체는 크지 않았다.하지만 엑..

GAS + Lambda로 정산 데이터 자동 수집, 가공, 리포트 발송하기

🪙 정산 자동화 시리즈 #2GAS + Lambda로 정산 데이터 자동 수집, 가공, 리포트 발송하기1️⃣ 목표이 단계에서는 다음을 자동화하여 정산 보고 프로세스를 구축한다:✅ 매일/매주 거래 데이터 자동 수집✅ 카테고리별 수수료율, 반품/환불 데이터 자동 가공✅ 엑셀 리포트 생성 및 자동 이메일 발송✅ Slack/메일 보고 자동화2️⃣ 아키텍처 개요구조 설명사용자 → Google Sheets 메뉴 클릭GAS → Lambda URL로 action, params 전송Lambda:DB 조회Excel 리포트 생성SES 이메일 발송사용자 → Slack/메일로 보고 받음Google Apps Script (GAS): 시트 기반 유저 인터페이스, Lambda 호출, Slack 연동AWS Lambda + EventBr..