본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

전체 글205

AWS 관리형 키와 고객 관리형 KMS 키 선택: 정책·수명주기·복호화 확인 서비스가 지원하는 키 종류를 먼저 확인한 뒤, 정책과 키 수명주기를 직접 통제해야 하는지로 선택하세요. 고객 관리형 키는 통제 범위가 넓어지는 만큼 비용과 운영 책임도 생깁니다. 암호화를 켰다는 사실만으로 복구 가능한지까지 확인된 것은 아닙니다.원인: 키의 소유와 운영 책임을 구분하지 않는다AWS 문서는 고객 관리형, AWS 관리형, AWS 소유 키를 구분합니다. 고객 관리형은 계정에서 만들고 관리하는 키입니다. AWS 관리형은 연동 서비스가 계정에서 생성·관리하며, AWS 소유 키는 계정의 키 목록에서 직접 관리하는 유형이 아닙니다. 선택 가능한 조합은 사용하는 서비스에서 다시 확인해야 합니다.검토 질문관리형부터 검토고객 관리형 검토서비스 기본 운영으로 충분한가지원 옵션 확인추가 통제 필요성 확인키 정.. 2026. 10. 22.
SNS와 EventBridge 선택: 구독 알림과 이벤트 라우팅을 구분하는 순서 같은 메시지를 여러 구독자에게 알리는 것이 중심이면 SNS를, 여러 이벤트의 내용과 출처에 따라 처리 대상을 나누는 것이 중심이면 EventBridge를 먼저 검토하세요. 단, SNS도 본문 필터를 지원하므로 “본문을 검사하면 무조건 EventBridge”라는 기준은 맞지 않습니다.원인: 알림 대상과 처리 규칙을 한 질문으로 섞는다“메시지를 전달한다”만으로 제품을 정하면 수신 방식과 운영 책임을 놓칩니다. SNS는 토픽을 구독한 엔드포인트에 알림을 전달하는 모델이고, EventBridge는 이벤트를 받아 조건에 맞는 대상으로 연결하는 이벤트 버스 모델입니다. 기존 큐의 Standard/FIFO 선택과는 다른 설계 단계입니다.먼저 적을 요구검토 출발점추가 확인여러 구독자로 알림 전달SNS구독 프로토콜·실패.. 2026. 10. 22.
Git unrelated histories 해결: 원격 주소와 공통 조상부터 확인 refusing to merge unrelated histories는 두 이력의 공통 조상을 찾지 못한 상황에서 나타날 수 있습니다. 먼저 저장소·원격 주소·비교 대상이 맞는지 확인하세요. 의도적으로 독립된 이력을 합치는 경우에만 --allow-unrelated-histories를 검토하고, 원본 보존과 충돌 검토를 먼저 준비합니다.원인: 같은 파일이 있어도 같은 커밋 이력은 아니다로컬과 원격에서 각각 새 저장소를 초기화했거나 다른 저장소를 연결하면 파일 이름이 비슷해도 이력이 독립적일 수 있습니다. 오류를 없애기 위해 곧바로 강제 푸시하거나 .git을 삭제하면 보존해야 할 기록을 잃을 수 있습니다.상태우선 확인피할 조치원격 주소 불일치저장소 선택무조건 병합이력 제한 가능clone 범위독립 이력 단정독립.. 2026. 10. 21.
Docker Compose 달러 기호가 사라질 때: 보간과 컨테이너 셸 구분 Compose의 변수 경고나 빈 문자열이 보이면 먼저 값을 바꾸는 주체가 Compose인지 컨테이너 안의 셸인지 구분하세요. Compose 단계에서 문자 그대로의 달러 기호를 넘기려면 $$를 사용할 수 있지만, 이후 셸이 그 문자를 다시 해석하는지는 별도 문제입니다.원인: YAML을 읽는 단계와 명령 실행 단계를 혼동한다Compose는 설정의 달러 변수 표현을 해석할 수 있습니다. 정의되지 않은 변수에 기본값도 없으면 경고 후 빈 문자열로 바뀔 수 있습니다. 애플리케이션이 실행되기도 전에 값이 달라지는 상황입니다. 컨테이너 환경변수에 같은 이름이 있다는 이유만으로 Compose가 그 값을 알 것이라고 가정하지 마세요.관찰확인 위치다음 판단변수 미정의 경고Compose 입력출처·기본값달러 그대로 전달 필요.. 2026. 10. 21.
CloudFront Functions와 Lambda@Edge 선택: 네트워크·본문·실행 시점 확인 짧은 URL 변경이나 헤더 정리는 CloudFront Functions부터 검토합니다. 외부 네트워크 조회, 요청 본문 접근, 원본 요청·응답 이벤트가 필요하면 Lambda@Edge의 지원 범위를 확인하세요. 요청마다 실행할 코드와 캐시를 놓쳤을 때 실행할 코드를 먼저 구분해야 합니다.혼동의 원인: 엣지에서 실행한다는 말만 보고 고른다두 기능 모두 CloudFront 요청 흐름에 코드를 연결하지만 같은 실행 환경은 아닙니다. URL 하나를 바꾸는 작업과 외부 권한 서버의 응답을 기다리는 작업은 필요한 자원이 다릅니다. 먼저 입력 정보, 호출 대상, 실행 시점을 한 줄씩 적어 보세요.필요 동작검토 후보주의짧은 URL·헤더 변경Functions런타임 제한외부 네트워크 조회Lambda@Edge지연·실패 처리요.. 2026. 10. 21.
SQS Standard와 FIFO 선택: 순서 보장 범위와 중복 처리 방지 구분 메시지 순서가 업무 결과를 바꾸지 않고 중복 처리를 견딜 수 있으면 Standard가 후보입니다. 주문·계정처럼 같은 대상 안의 순서가 중요하면 FIFO와 메시지 그룹을 검토하세요. FIFO를 선택해도 소비자의 재처리와 데이터베이스 부수 효과까지 자동으로 한 번만 실행된다고 가정하면 안 됩니다.혼동의 원인: 전달 순서와 업무 완료를 같은 것으로 본다큐에 들어간 순서, 소비자가 받은 순서, 데이터베이스에 반영한 순서는 별개입니다. 예를 들어 한 주문의 생성과 취소가 뒤바뀌면 문제가 생길 수 있지만 서로 다른 주문의 처리 순서는 중요하지 않을 수 있습니다. 큐 이름을 고르기 전에 이 경계를 정해야 합니다.조건후보별도 검증독립 작업Standard중복·순서 변화대상별 순서 필요FIFO그룹 경계외부 API 부수 .. 2026. 10. 21.