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

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

개발자성장 31

운영 복잡도를 비용처럼 계산하기

기술 실무 설계 시리즈 7/8클라우드 비용은 숫자로 보인다.월 몇 달러, 인스턴스 비용, Lambda 호출 비용, S3 저장 비용처럼 계산할 수 있다.하지만 운영 복잡도는 잘 보이지 않는다.배포할 때마다 사람이 확인해야 하는 절차, 장애 때마다 찾아야 하는 로그, 헷갈리는 도메인, 수동으로 맞춰야 하는 설정도 모두 비용이다.작은 운영 도구에서는 이 보이지 않는 비용을 더 중요하게 봐야 할 때가 있다.비용은 돈만이 아니다기술 선택을 할 때 클라우드 비용만 비교하면 판단이 좁아진다.예를 들어 어떤 구조가 월 비용은 조금 싸지만 다음을 요구한다면 실제로는 비쌀 수 있다.매번 수동 배포복잡한 서버 패치장애 때마다 콘솔 검색문서 없는 환경 변수사람이 직접 정리해야 하는 파일원인을 찾기 어려운 로그사람의 시간도 비..

처음부터 완벽한 공통화를 하지 않은 이유

기술 실무 설계 시리즈 6/8비슷한 운영 콘솔을 여러 개 만들면 공통화 욕구가 생긴다.같은 React를 쓰고, 비슷한 레이아웃을 쓰고, API 호출 방식도 비슷하다면 공통 패키지를 만들고 싶어진다.하지만 처음부터 완벽한 공통화를 하는 것이 항상 좋은 선택은 아니다.특히 도메인이 다른 운영 도구에서는 중복 제거보다 책임 경계가 더 중요할 때가 있다.공통화가 매력적인 이유공통화에는 분명한 장점이 있다.중복 코드가 줄어든다.UI 일관성이 생긴다.API 에러 처리 방식이 통일된다.배포 스크립트를 재사용할 수 있다.새 콘솔을 만들 때 속도가 빨라질 수 있다.그래서 비슷한 화면이 두세 개 생기면 바로 공통 라이브러리를 만들고 싶어진다.하지만 공통화는 공짜가 아니다.너무 이른 공통화의 문제아직 요구사항이 안정되지 않..

장애 영향 범위를 줄이는 콘솔 분리 전략

기술 실무 설계 시리즈 4/8관리자 페이지를 만들다 보면 모든 기능을 하나로 합치고 싶어진다.공통 레이아웃을 쓰고, 로그인도 한 번만 만들고, 메뉴만 추가하면 될 것처럼 보인다.하지만 화면이 비슷하다고 같은 애플리케이션이어야 하는 것은 아니다.사용자, 데이터 원천, 권한, 배포 주기, 장애 영향 범위가 다르면 콘솔을 나누는 편이 더 안정적일 수 있다.하나로 합치면 생기는 장점하나의 관리자 페이지로 합치면 장점이 있다.공통 레이아웃을 재사용할 수 있다.인증 처리가 한 곳에 모인다.배포 단위가 하나다.메뉴 이동이 쉽다.초기 개발이 빠를 수 있다.작은 규모에서는 이 장점이 크게 보인다.그래서 처음에는 통합 관리자가 자연스러워 보인다.하지만 책임이 섞인다문제는 시간이 지나면서 나타난다.서로 다른 업무가 같은 애..

내부 도구에서 충분히 좋은 설계를 판단하는 기준

기술 실무 설계 시리즈 2/8내부 운영 도구를 만들 때 가장 어려운 질문 중 하나는 이것이다.어디까지 설계해야 충분한가?너무 단순하게 만들면 나중에 운영 문제가 생긴다.반대로 처음부터 대규모 서비스처럼 만들면 개발 속도와 유지보수 비용이 과해진다.내부 도구에는 내부 도구에 맞는 "충분히 좋은 설계" 기준이 필요하다.완벽한 설계는 목표가 아니다운영 도구는 대개 제한된 시간 안에 만들어진다.대규모 사용자 트래픽보다 특정 업무를 안정적으로 처리하는 것이 목표다.그래서 완벽한 설계보다 중요한 것은 다음이다.업무를 막지 않는가문제가 생겼을 때 복구 가능한가담당자가 바뀌어도 이해할 수 있는가변경이 필요한 곳이 좁은가지금 규모에서 운영 부담이 과하지 않은가완벽함보다 복구 가능성이 더 중요할 때가 많다.기준 1. 사용..

작은 관리자 페이지도 아키텍처가 필요한 이유

기술 실무 설계 시리즈 1/8관리자 페이지는 종종 작게 시작한다.목록 하나, 상세 화면 하나, 상태 변경 버튼 하나. 처음에는 단순 CRUD처럼 보인다.그래서 "이 정도는 그냥 만들면 되지 않을까?"라고 생각하기 쉽다.하지만 실제 운영에 쓰이는 관리자 페이지는 생각보다 빨리 복잡해진다. 인증, 권한, 배포, 캐시, API, 파일 다운로드, 장애 대응, 데이터 원천 같은 문제가 화면 뒤에 붙기 시작한다.작은 관리자 페이지에도 아키텍처가 필요한 이유는 규모 때문이 아니다.업무가 그 도구에 의존하기 때문이다.사용자 수보다 업무 중요도가 중요하다운영 도구는 사용자가 많지 않을 수 있다.하루에 몇 명만 쓰는 화면일 수도 있다.하지만 그 몇 명이 매일 중요한 업무를 처리한다면 시스템의 중요도는 낮지 않다.예를 들어..

작은 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이 구조는 충분히 현실적이다.하지만 규모나 요구사항이 바뀌면 추가할 후보들이 생긴다..

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