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

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

전체 글 206

레버리지

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

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

번아웃은 갑자기 오지 않았다

며칠 전, 거실에서 내 목소리가 갑자기 커진 적이 있다.아이에게 화를 낸 것은 아니었다. 아내에게 화를 낸 것도 아니었다. 다른 일 때문에 마음이 잔뜩 올라와 있었고, 통화를 하거나 메시지를 확인하는 과정에서 나도 모르게 언성이 높아졌다. 말끝에는 평소 아이 앞에서 잘 하지 않으려던 거친 말까지 섞였다.거실에는 아이도 있었고 아내도 있었다.순간 분위기가 어색하게 가라앉았다. 아이는 자기 하던 일을 계속하는 척했고, 아내도 별말을 하지 않았다. 그런데 나는 알 수 있었다. 방금 내 목소리가 이 공간을 한 번 흔들고 지나갔다는 것을.그날 밤, 마음이 오래 불편했다.아이에게 직접 화를 낸 것은 아니니 그냥 넘어갈 수도 있었다. 하지만 그건 조금 비겁한 정리처럼 느껴졌다. 가족이 함께 있는 공간에서 갑자기 높아..

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는 중요하지 않았고, 서버 사이드 렌더링도 필요하지 않았다.이런 조..