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

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

전체보기 241

Route53, CloudFront, S3로 운영 콘솔 도메인 라우팅하기

AWS 실전 운영 시리즈 10/12운영 콘솔을 AWS에 올릴 때 배포만큼 중요한 것이 도메인 라우팅이다.React SPA를 S3에 올리고 CloudFront를 붙이면 화면은 열릴 수 있다. 하지만 실제 운영에서는 도메인이 여러 개 생긴다.프론트엔드 도메인API 도메인CloudFront origin 도메인디버깅용 직접 접근 도메인도메인은 단순 주소가 아니다.사용자가 어디로 들어오고, CloudFront가 어떤 origin을 보고, WAF가 어디에 붙고, API가 어떤 경로로 백엔드에 도달하는지 결정하는 인프라 설계 요소다.문제 상황운영 콘솔은 크게 두 종류의 트래픽을 가졌다.첫째, React SPA 정적 파일을 가져오는 프론트엔드 트래픽이다.사용자-> console.example.com-> CloudFro..

월마감 전에 정산 담당자가 확인해야 할 것들

정산 업무에서 가장 부담스러운 시점은 월마감 직전이다.평소에는 거래가 들어오고, 환불이 반영되고, 수수료가 계산되고, 파트너별 지급액이 쌓인다. 그런데 월마감이 가까워지면 이 모든 것이 한 번에 “확정 가능한 상태인지” 확인해야 한다.문제는 월마감 체크가 생각보다 자주 사람의 기억에 의존한다는 점이다.“환불은 다 반영됐나?”“예외 거래는 빠진 게 없나?”“수수료율은 이번 달 기준이 맞나?”“파트너별 지급액은 검토했나?”“차단해야 할 거래는 없나?”이런 질문이 매달 반복된다면 체크리스트가 필요하다.월마감은 계산보다 확인에 가깝다월마감은 새로운 계산을 많이 하는 단계라기보다, 이미 계산된 결과가 확정 가능한지 확인하는 단계에 가깝다.그래서 월마감 전에 봐야 할 것은 단순히 총액이 아니다.거래 데이터가 모두 ..

작은 AWS 시스템의 다음 확장 후보들

AWS 실전 운영 시리즈 9/12작은 운영 콘솔을 만들 때 처음부터 모든 AWS 기능을 켤 필요는 없다.RDS Proxy, WAF, X-Ray, ECS Fargate, Reserved Concurrency, Request Validation, DLQ 같은 것들은 모두 유용하다.하지만 처음부터 다 넣으면 시스템이 과해진다.중요한 것은 지금 쓰지 않더라도, 어떤 조건이 되면 검토할지 적어두는 것이다.현재 구조에서 출발하기작은 운영 콘솔은 다음 정도로 시작할 수 있다.React SPA-> S3 + CloudFront-> API Gateway-> Lambda-> S3 / RDS일부 잦은 API-> EC2 + Docker-> RDS이 구조는 충분히 현실적이다.하지만 규모나 요구사항이 바뀌면 추가할 후보들이 생긴다..

아이의 속도를 기다리는 일

Volume 01. 나와 아이의 내면얼마 전 저녁, 거실에서 아이가 기타를 치는 소리를 들었다.요즘 아이는 기타에 재미를 붙였다. 유튜브 영상을 틀어놓고 코드를 따라 잡아보기도 하고, 같은 부분을 몇 번씩 반복하기도 한다. 아직 소리가 매끄럽지는 않다. 손가락이 줄 위에서 조금 늦게 움직이고, 박자가 어긋나고, 어떤 코드는 눌린 듯 안 눌린 듯 흐릿하게 울린다.그런데 아이는 한 곡을 오래 붙잡기보다, 이 곡을 조금 치다가 어느새 다른 곡을 켜놓고 있다. 방금 전까지 연습하던 곡은 아직 끝까지 가보지도 않았는데, 새로운 영상이 열리고 다른 멜로디가 흘러나온다.그 모습을 보고 있으면 나는 한마디 거들고 싶어진다.“그 부분은 이렇게 해야 하는 거 아니야?”“매일 조금씩 연습해야 늘지.”“먼저 하던 곡을 끝까지..

AWS 리소스 이름과 배포 정보를 문서화해야 하는 이유

AWS 실전 운영 시리즈 8/12AWS 콘솔에는 리소스가 많다.Lambda, API Gateway, S3 bucket, CloudFront distribution, IAM role, EC2 instance, ECR repository, CloudWatch log group.처음 만든 사람은 어디에 무엇이 있는지 안다.하지만 시간이 지나거나 담당자가 바뀌면 리소스 이름을 찾는 것부터 일이 된다.그래서 AWS 리소스 이름과 배포 정보는 반드시 문서화해야 한다.문제 상황운영 콘솔은 여러 AWS 리소스를 사용했다.정적 파일을 저장하는 S3 bucket데이터를 저장하는 S3 bucketCloudFront distributionAPI Gateway REST APILambda functionLambda LayerIA..

레버리지

45살에 다시 읽는 레버리지2024년에 "레버리지"를 읽고 쓴 글을 다시 읽었다.그때 내가 붙잡았던 문장은 이것이었다.레버리지는 나의 비전에 집중할 시간을 최대화하고, 단순 작업과 시간 낭비를 철저하게 배제하는 것에서 시작된다는 말.다시 읽어보니 결국 핵심은 하나였다.더 전략적으로, 더 체계적으로 일해야 한다는 것.그냥 바쁘게 사는 것이 아니라, 내가 정말 중요하게 생각하는 일에 시간을 써야 한다는 것.나의 삶에서 가장 중요한 것은 무엇인가책을 읽고 가장 먼저 적어두었던 질문은 이것이었다.나의 삶에서 가장 중요한 것은 무엇인가.이 질문은 단순하지만 쉽지 않다.내가 해야만 하는 일.나의 자존감과 목적의식을 고취시키는 일.나와 다른 사람을 차별화할 수 있는 일.매달릴 가치가 있는 일.이런 일을 먼저 찾아야 ..

삶/책과 리뷰 2026.06.23

하루 5분, 뇌력 낭비 없애는 루틴

책을 읽고 2년 뒤 다시 쓰는 인풋과 아웃풋예전에 "하루 5분, 뇌력 낭비 없애는 루틴"이라는 책을 읽고 쓴 글을 다시 읽었다.그때 나는 40대 2년 차라고 적어두었다. 그런데 벌써 45살이 되었다. 책을 읽고 느낀 것을 글로 남긴 지 2년이 지났고, 시간은 생각보다 빠르게 지나갔다.그때 그 책을 읽고 내가 붙잡았던 문장은 이것이었다.인풋은 반드시 아웃풋을 전제로 해야 한다고.회의를 하든, 인터넷 기사를 읽든, 뉴스를 보든, 책을 읽든, 예능 프로그램을 보든, 무엇인가를 내 안에 넣었다면 반드시 밖으로 꺼내는 과정이 있어야 한다고 적었다. 책을 읽고 단순히 "좋았다"에서 끝내지 않으려고 남긴 글이었다.지금 다시 읽어도 그 생각은 틀리지 않았다.다만 2년이 지난 지금은 조금 더 무겁게 다가온다.그때는 "앞..

삶/책과 리뷰 2026.06.22

EC2 + Docker가 ECS보다 나았던 작은 규모의 선택

AWS 실전 운영 시리즈 7/12컨테이너를 운영한다고 하면 ECS나 EKS를 먼저 떠올릴 수 있다.AWS에서 컨테이너를 운영하는 표준적인 방법이고, 오토스케일링과 배포 관리에도 강하다.하지만 모든 컨테이너 워크로드에 처음부터 오케스트레이션이 필요한 것은 아니다.작은 운영 콘솔의 상주 API 서버라면 EC2 한 대에 Docker로 운영하는 방식이 더 단순할 수 있다.문제 상황운영 콘솔 일부 API는 Lambda보다 상주 서버가 더 적합했다.이 API들은 다음 특성이 있었다.대시보드 조회처럼 짧고 잦은 요청DB connection pool 유지 필요내부 인증 쿠키 처리낮은 지연 시간 필요무거운 배치 작업과 분리 필요Lambda만으로 처리하면 cold start와 DB connection storm이 걱정되었..

CloudWatch 로그만으로 문제 구간 좁히기

AWS 실전 운영 시리즈 6/12운영 중 문제가 생기면 가장 먼저 보는 것은 로그다.하지만 로그가 있다고 해서 바로 원인을 알 수 있는 것은 아니다.중요한 것은 어떤 순서로 볼 것인가다.React SPA, CloudFront, API Gateway, Lambda, 애플리케이션 서버, 데이터베이스가 이어진 구조에서는 증상을 계층별로 나눠 봐야 한다.문제 상황운영 콘솔에서 사용자가 이렇게 말할 수 있다.화면이 안 떠요.데이터가 안 바뀌어요.다운로드가 계속 기다려요.버튼을 눌렀는데 아무 일도 안 일어나요.어제는 됐는데 오늘은 안 돼요.이 말만 듣고 원인을 알 수는 없다.브라우저 문제일 수도 있고, CloudFront 캐시 문제일 수도 있고, API Gateway 설정 문제일 수도 있고, Lambda 오류일 수..

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..