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

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

개발자성장 25

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

자동화가 실패했을 때 사람이 복구할 수 있게 만들기

자동화 워크플로우 시리즈 8/8자동화의 목표는 사람이 하지 않아도 되는 일을 줄이는 것이다.하지만 좋은 자동화는 사람을 완전히 배제하지 않는다.오히려 실패했을 때 사람이 어디를 보고, 무엇을 다시 실행하고, 어떤 상태로 되돌릴 수 있는지 준비해둔다.자동화는 언젠가 실패한다. 네트워크가 끊길 수 있고, API가 실패할 수 있고, 스크립트 제한에 걸릴 수 있고, 원천 데이터가 잘못될 수도 있다.그래서 자동화 시스템에는 수동 복구 경로가 필요하다.문제 상황스프레드시트 기반 자동화 흐름은 여러 계층을 지난다.폼 제출-> 스프레드시트 기록-> Apps Script 실행-> API 호출-> Lambda 처리-> S3 JSON 저장-> 화면 반영이 중 하나만 실패해도 화면 데이터가 갱신되지 않거나, 공개 데이터가 오..

Google Forms를 입력 도구로 인정하기

자동화 워크플로우 시리즈 2/8운영 시스템을 만든다고 하면 입력 화면부터 직접 만들고 싶어진다.회원 인증을 붙이고, 신청 폼을 만들고, 검증 로직을 넣고, 데이터베이스에 저장하고, 관리자 화면에서 조회하게 만드는 방식이다.하지만 모든 입력 흐름에 직접 만든 화면이 필요한 것은 아니다.특히 외부 사용자가 간단한 신청 정보를 제출하는 업무라면 Google Forms 같은 도구가 충분히 좋은 입력 도구가 될 수 있다.문제 상황외부 사용자가 특정 기간에 신청 정보를 제출해야 하는 업무가 있었다.입력 항목은 정해져 있었고, 제출량은 폭발적으로 많지 않았다. 운영자는 제출된 내용을 확인하고, 이후 상태를 관리해야 했다.이 상황에서 선택지는 두 가지였다.첫 번째는 신청 화면을 직접 만드는 것이다.두 번째는 Googl..

운영 자동화는 어디서 시작해야 할까

자동화 워크플로우 시리즈 1/8운영 자동화를 시작할 때 가장 먼저 떠올리는 것은 도구다.폼을 만들까, 스프레드시트를 쓸까, 관리자 페이지를 만들까, 자동화 스크립트를 붙일까, 아니면 처음부터 데이터베이스와 백엔드를 갖춘 시스템을 만들까.하지만 자동화는 도구에서 시작하면 자주 실패한다.먼저 봐야 할 것은 업무 흐름이다.누가 입력하고, 누가 확인하고, 어떤 기준으로 상태가 바뀌고, 결과가 누구에게 공개되는지부터 정리해야 한다. 그다음에야 어떤 도구가 충분한지 판단할 수 있다.문제 상황신청을 받고, 내부에서 확인하고, 일정이나 결과를 공개하는 업무가 있었다.처음부터 완전한 백오피스 시스템을 만들 수도 있었다. 로그인, 신청 화면, 관리자 화면, 상태 관리, 데이터베이스, 알림, 공개 페이지를 모두 직접 구현하..

리포트 시스템을 다시 설계한다면 볼 것들

데이터와 리포트 설계 시리즈 8/8작은 운영 콘솔의 리포트 시스템은 단순하게 시작할 수 있다.job table을 만들고, worker를 비동기로 실행하고, 결과 파일을 object storage에 저장한다.이 정도면 많은 내부 도구에는 충분하다.하지만 시간이 지나면 다시 검토할 지점들이 생긴다.좋은 설계는 처음부터 모든 것을 넣는 것이 아니라, 나중에 무엇을 볼지 알고 시작하는 것이다.현재 구조기본 구조는 다음과 같다.POST /api/reports-> job 생성-> worker 비동기 실행-> 파일 생성-> object storage 업로드-> job 완료-> polling으로 상태 확인이 구조는 단순하고 이해하기 쉽다.하지만 작업량이 늘거나 실패 대응이 중요해지면 개선 후보가 생긴다.1. 전용 Qu..

운영 콘솔의 리포트 기능은 왜 생각보다 어려운가

데이터와 리포트 설계 시리즈 1/8운영 콘솔에서 리포트 기능은 단순해 보인다.사용자는 조건을 선택하고 버튼을 누른다. 잠시 뒤 엑셀 파일을 내려받는다.겉으로 보면 "조회해서 파일로 만들면 되는 기능"처럼 보인다.하지만 실제로 만들어보면 리포트 기능은 단순 조회 API와 다르다. 데이터 조회, 집계, 파일 생성, 작업 상태, 저장, 다운로드, 실패 처리까지 함께 설계해야 한다.버튼 하나 뒤에 있는 일들사용자는 하나의 버튼을 본다.[리포트 다운로드]하지만 시스템 내부에서는 여러 단계가 이어진다.요청 파라미터 검증-> 작업 생성-> 데이터 조회-> 집계 또는 가공-> 엑셀 파일 생성-> 파일 저장-> 작업 상태 갱신-> 다운로드 URL 제공이 중 하나라도 실패하면 사용자는 파일을 받지 못한다.그래서 리포트 기..

문서가 개인 브랜딩이 되는 순간

문서화와 인수인계 시리즈 9/9기술 블로그를 쓰려고 하면 종종 막막해진다.무엇을 써야 할지, 어디까지 공개해도 되는지, 이미 다른 사람이 더 잘 설명한 기술을 다시 써도 되는지 고민하게 된다.그럴 때 가장 좋은 재료 중 하나가 내가 실제로 남긴 실무 문서다.HANDOVER, 아키텍처 문서, ADR, 용어집, 트러블슈팅 가이드, 배포 가이드에는 내가 어떤 문제를 겪었고 어떻게 판단했는지가 들어 있다.이 문서들이 쌓이면 단순 기록을 넘어 개인의 일하는 방식을 보여주는 자산이 된다.기술 블로그는 지식 자랑이 아니다기술 블로그를 단순히 "내가 아는 것을 설명하는 공간"으로 보면 부담이 커진다.이미 공식 문서가 있고, 더 깊은 전문가의 글도 많다.하지만 실무 글의 가치는 다른 곳에 있다.내가 어떤 조건에서 어떤 ..

내부 문서를 블로그 글로 바꾸기 위한 익명화 체크리스트

문서화와 인수인계 시리즈 8/9실무에서 만든 문서는 좋은 블로그 재료가 된다.아키텍처 문서, HANDOVER, 트러블슈팅 가이드, 배포 가이드, 용어집에는 실제 경험이 들어 있다. 검색해서 만든 글보다 훨씬 구체적이고, 판단의 흔적이 남아 있다.하지만 내부 문서를 그대로 공개하면 안 된다.실제 회사명, 도메인, 리소스 이름, API 경로, 인증 방식, 장애 날짜, 운영 데이터가 노출될 수 있다. 그래서 공개 글로 바꾸기 전에 익명화 과정이 필요하다.공개할 수 있는 것과 없는 것먼저 구분해야 한다.공개해도 좋은 것은 보편적인 판단 기준이다.왜 콘솔을 분리했는가왜 S3와 CloudFront를 썼는가왜 Lambda와 상주 서버를 나눴는가왜 job table로 비동기 작업을 관리했는가왜 CORS를 Gateway..

배포 가이드는 명령어 모음이 아니다

문서화와 인수인계 시리즈 7/9배포 가이드를 쓰다 보면 명령어만 나열하기 쉽다.npm run buildaws s3 sync build/ ...aws cloudfront create-invalidation ...물론 명령어는 필요하다. 하지만 배포 가이드가 명령어 모음으로 끝나면 위험하다.좋은 배포 가이드는 "무엇을 실행할지"뿐 아니라 "언제 실행하고, 무엇을 조심하고, 어떻게 확인하고, 실패하면 어떻게 되돌릴지"를 설명해야 한다.문제 상황운영 콘솔 배포에는 여러 종류가 있었다.React SPA 빌드 후 S3 업로드CloudFront 캐시 무효화Lambda 함수 코드 업데이트Lambda Layer 유지EC2의 Node API 서버 배포Google Apps Script 배포API Gateway stage 배..

트러블슈팅 문서는 장애가 난 뒤 쓰면 늦다

문서화와 인수인계 시리즈 6/9장애가 나면 사람은 급해진다. 어디를 봐야 할지 기억나지 않고, 이전에 해결했던 문제도 다시 검색하게 된다. 로그 위치를 찾다가 시간을 쓰고, 같은 명령어를 다시 조합한다.그래서 트러블슈팅 문서는 장애가 난 뒤 쓰면 늦다.물론 실제 장애를 겪은 뒤 보강되는 부분은 있다. 하지만 최소한 자주 발생할 수 있는 증상과 확인 순서는 미리 정리해두는 것이 좋다.문제 상황운영 콘솔에서 반복적으로 나올 수 있는 문제는 대체로 정해져 있다.화면이 로딩되지 않는다.API 호출이 CORS 오류로 실패한다.데이터가 갱신되지 않는다.다운로드 작업이 끝나지 않는다.Lambda가 timeout 된다.DB 연결이 실패한다.배포했는데 이전 화면이 계속 보인다.이런 문제는 원인이 하나가 아니다. 화면이 ..