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

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

전체 글 227

결국 아이에게 건네고 싶은 말

Volume 01. 나와 아이의 내면이 글들을 쓰기 시작한 건, 아이에게 뭔가 대단한 말을 남기고 싶어서가 아니었다.처음에는 그저 매일 반복되는 집 안의 장면들이 마음에 걸렸다. 숙제 앞에서 지친 아이, 옆에서 함께 날카로워지는 아내, 그 사이에서 무슨 말을 해야 할지 몰라 서성이는 나. 부모로서 더 좋은 답을 알고 있는 사람처럼 굴고 싶었지만, 사실 나도 자주 몰랐다.그래서 하나씩 적어보기 시작했다.AI 앞에서 정답을 빨리 얻는 것보다 먼저 자기 생각을 세우는 일이 왜 중요한지. 카톡 화면에 남은 몇 줄의 말만으로 아이의 관계 전체를 단정할 수 없다는 것. 아침마다 반복되는 준비물과 시간의 문제 뒤에는 아이의 느슨함뿐 아니라 부모의 불안도 함께 있다는 것. 내가 지쳤을 때 그 피로가 가족에게 어떻게 새..

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

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

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

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

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

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

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

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

WAF는 어디에 붙어 있고, 어디까지 보호하는가

AWS 실전 운영 시리즈 12/12WAF를 붙였다고 해서 시스템 전체가 자동으로 보호되는 것은 아니다.WAF는 어디에 연결되어 있는지에 따라 보호 범위가 달라진다.CloudFront에 WAF를 붙이면 CloudFront를 통과하는 요청은 검사할 수 있다. 하지만 CloudFront를 우회하는 API Gateway나 origin 직접 접근 경로는 별도 보안 정책이 필요하다.이 차이를 이해하지 못하면 "WAF가 있으니 안전하다"고 착각할 수 있다.문제 상황운영 콘솔 앞단에는 CloudFront가 있었다.프론트엔드 SPA는 CloudFront를 통해 S3에서 제공되었다.API 일부도 CloudFront를 거쳐 origin API 서버로 전달되었다.여기에 사무실 IP만 허용하는 WAF 정책을 붙일 수 있다.구조..

CloudFront Custom Origin 앞에 별도 API 도메인을 둔 이유

AWS 실전 운영 시리즈 11/12CloudFront를 S3 앞에 붙이는 구성은 익숙하다.하지만 CloudFront를 EC2나 API 서버 앞에 둘 때는 조금 다른 문제가 생긴다.CloudFront의 Custom Origin에는 origin domain name이 필요하다. 운영 중인 API 서버가 EC2 IP로만 접근 가능하다면, CloudFront origin으로 쓰기 위해 별도의 도메인을 만들어야 할 수 있다.이 글은 API용 CloudFront 앞뒤에 왜 도메인을 두 개 만들었는지 정리한 것이다.문제 상황운영 콘솔에는 상주 API 서버가 있었다.이 서버는 대시보드와 분석 API처럼 짧고 잦은 요청을 처리했다.사용자는 다음 도메인으로 API를 호출하게 하고 싶었다.api.example.com그리고 ..

문이 열리기 전에도 기준은 조금 생긴다

퇴사와 이직 준비 시리즈 9/9아직 문이 열린 것은 아니다.합격 소식을 받은 것도 아니고, 다음 회사가 정해진 것도 아니다. 가족에게 모든 상황을 설명한 것도 아니고, 지금 회사에서의 마지막 일정이 분명하게 정리된 것도 아니다.그런데도 이 기록을 여기서 한 번 닫아보려고 한다.처음 이 시리즈를 시작했을 때는 답답함이 컸다.하나님께서 다음 일을 준비해두셨을 것이라는 믿음은 있었지만, 실제 하루는 분주했다. 공고를 보고, 이력서를 고치고, 지원하고, 기다리고, 불합격을 보고, 다시 공고를 봤다.뭔가 하고는 있는데 앞으로 가고 있는지 잘 모르겠는 시간이었다.지금도 결과가 생긴 것은 아니다.하지만 처음과 완전히 같지는 않다.적어도 무엇을 계속해야 하는지, 무엇을 내가 붙들 수 없는지, 어떤 말은 내 말이 아닌지..

오늘 할 수 있는 준비와 내가 통제할 수 없는 결과

퇴사와 이직 준비 시리즈 7/9이직 준비를 하다 보면 해야 할 일이 끝없이 나온다.업무와 프로젝트를 정리해야 한다. 최근 회사에서 발생한 이슈 중 내가 경험으로 가져갈 수 있는 것도 남겨야 한다. 회사에 있을 때만 확인할 수 있는 자료나 맥락도 정리해야 한다. 포지션에 맞는 공고를 찾고, 공고에 맞게 이력서를 다시 보고, 제출하고, 기다려야 한다.그리고 이 과정을 반복해야 한다.글로 쓰면 단순한데, 실제로는 꽤 지친다.처음에는 해야 할 일이 보이면 움직이면 된다고 생각했다. 그런데 시간이 지나면서 조금씩 알게 된다. 내가 열심히 할 수 있는 영역과, 아무리 붙들어도 바꿀 수 없는 영역이 계속 섞여 있다는 것을.그 둘을 구분하지 못하면 하루가 쉽게 흐려진다.내가 해야 하는 일은 분명히 있다지금 내가 해야 ..

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

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