Archives
All the articles I've archived.
-
고친 코드와 남은 데이터
이미 고쳐진 버그의 수정 이전 피해가 그대로 남아 있던 건에서, 수정 커밋을 볼 때 소급 조치 여부를 함께 확인해야 하는 이유를 정리한다.
-
전수 검색으로 확정했다
짐작으로 사용처를 정했다가 빠뜨린 뒤, 이름과 값과 조립 참조까지 축을 넓혀 전수로 확정한 과정을 정리한다.
-
두 곳에서 같은 모양이 나왔다
코드가 다른 두 프로젝트에서 같은 형태의 문제가 나온 것을 계기로, 공통 원인을 찾아 구조로 막고 그 점검을 다른 프로젝트로 옮긴 과정을 정리한다.
-
전부를 멈추는 한 건
한 고객사 제보로 시작한 건이 전 고객사 장애였던 사례에서, 파싱 실패 하나가 파티션 전체를 막는 구조와 세 층의 조치를 정리한다.
-
조건이 겹쳐서 진단이 어려웠다
세 조건이 겹칠 때만 나던 오류를 인위적으로 재현하고, 조건을 하나씩 빼 보며 고칠 자리를 정한 과정을 정리한다.
-
중지했는데 팔린다
멱등하지 않은 재시도가 우리 DB에 흔적 없는 외부 상품을 만들어 낸 구조와, 재시도가 안전하려면 무엇이 필요한지 정리한다.
-
적히지 않은 전제 위의 관찰
로그 레벨 한 단계가 관찰의 절반을 지운다는 것을 대조군으로 확인하고, 관찰 결과에 전제를 함께 적기로 한 과정을 정리한다.
-
빌드가 돈다고 있는 것은 아닌 키
CI가 서명 빌드를 계속 성공시키는데도 조직이 원본 키를 갖고 있지 않았던 건에서, 동작 확인과 보유 확인을 가르는 방법을 정리한다.
-
정답이 하나인 일은 코드가 한다
언어 모델에 수치를 맡겼을 때 나온 여섯 종류의 결함을 전수로 확인하고, 코드와 모델의 경계를 판정 가능성으로 그은 근거를 정리한다.
-
규칙에 예외가 다섯 있었다
스키마 규칙의 예외를 찾아 정리하다가 예외 목록을 조건으로 바꾸고, 규칙이 아예 없는 자리까지 드러난 과정을 정리한다.
-
그 방식이면 멈추는 시간이 없었다
400만 건 테이블에 컬럼을 추가하면서 무엇이 잠기고 무엇이 안 잠기는지 확인하고, 사본에서 시간과 공간을 미리 잰 과정을 정리한다.
-
부분 업데이트라고 믿은 PUT
스펙상 경로만 다른 두 API 버전이 부분 갱신과 전체 교체로 갈렸던 건과, 엔드포인트를 갈아탈 때 확인할 항목을 정리한다.
-
반드시 보존하라던 12기가의 실체
반드시 보존이라는 라벨이 붙은 12기가를 열어 20메가로 줄이면서, 라벨과 사실의 거리와 0건 검사의 유효성 확인을 정리한다.
-
로그가 없을 때의 시간 근거
감사 로그가 없는 상태에서 트랜잭션 경계로 생성 실패와 생성 후 유실을 가른 과정과, 확정 불가를 기록하는 방법을 정리한다.
-
건너뛸 줄 알았던 자리가 내리고 있었다
부적격 처리가 건너뛰기가 아니라 연동 해제였던 건과, 0건인 필터를 넣을지 가르는 기준을 정리한다.
-
할 일이 없으면 침묵하는 감시
처리 대상이 0건이면 지표를 하나도 내보내지 않는 계측을 리뷰하면서, 하트비트가 성립하는 두 성질과 감시 키를 어디서 얻어야 하는지 정리한다.
-
0건이 증명하는 것은 무엇인가
그 상태값이 0건이니 안전하다는 근거가 왜 틀렸는지 코드로 확인하고, 0건이 실제로 보증하는 범위와 시점 의존적인 모수 문제를 정리한다.
-
같은 값을 바꾸는 두 경로, 결과는 다르다
화면에서 고치는 것과 DB에서 직접 고치는 것이 편의의 차이가 아니라 부수효과의 차이였다는 것을, 정식 경로의 코드를 읽고 확인한 과정을 정리한다.
-
결과를 만든 확인 행위
파일이 있는지 확인하려고 호출한 주소가 없으면 만들어 주는 경로였던 건을 계기로, 조회가 대상을 바꾸는 경우들과 확인 전에 물어야 할 것을 정리한다.
-
거의 안 여는 자리가 있었다
코드 정리 순서를 정하려고 파일별로 여는 빈도와 참조 횟수를 세어 보고, 자주 여는 곳과 안 여는 곳을 다르게 다룬 과정을 정리한다.
-
스스로를 봉인하는 되먹임 없는 경로
대량 전환 작업에서 외부 경유와 DB 직접 수정 중 무엇을 고를지 판단하면서, 빠른 경로가 함께 없애는 검증 채널을 어떻게 계산했는지 정리한다.
-
찾다가 관련 API 둘을 더 발견했다
필요한 API 하나를 찾다가 주변의 둘을 발견하고 셋을 성격에 맞게 나눠 쓴 과정과, 규격 목록을 주기적으로 훑어 새 기능을 놓치지 않는 방법을 정리한다.
-
다른 종류를 같게 다룬 처리
성격이 다른 항목을 한 목록에 두고 우선순위를 정하려다 막힌 뒤, 종류를 나누고 각각 다른 기준과 시간 배분을 적용한 과정을 정리한다.
-
우회할 수 있는 차단
도구 이름으로 건 차단이 다른 도구로 그대로 통과한 사례들을 모아, 조건을 대상에 걸어야 하는 이유와 정당한 우회를 다루는 방법을 정리한다.
-
기록해 뒀는데 왜 또 걸렸나
같은 함정을 열한 번 기록하고도 매번 다시 걸린 이유를 분석해, 기록이 재발을 막지 못하는 조건과 반복 횟수에 따른 대응을 정리한다.
-
15만 건을 막은 조건 하나
부정으로 쓴 상태 조건이 일어나지 않는 전이를 전제하면서 15만 건의 동기화를 영구히 막았던 건과, 상태 조건을 쓸 때 확인할 항목을 정리한다.
-
근거 네 가지가 같은 것을 가리켰다
로그와 시점과 코드와 재현이라는 네 종류의 근거가 각각 무엇을 말하는지 나누고, 어긋나는 근거 하나가 가장 중요한 신호가 되는 이유를 정리한다.
-
데이터를 숨긴 짧은 조회 최적화
커버리지가 100%인데 결과가 빠져 있던 건에서, 조회 단계의 절단과 파서가 안 보는 구조가 오류 없이 부분 결과를 만드는 방식을 정리한다.
-
해결 방법이 셋이라 골라야 했다
외부 API 실패에 대응하는 방법이 셋 나왔을 때 무엇을 기준으로 고를지 정하고, 결국 선택이 아니라 순서 문제였다는 것을 확인한 과정을 정리한다.
-
경보가 울리지 않는 실패
4년간 300회 넘게 반복된 실패가 화면에는 정상으로만 보였던 건을 계기로, 실패가 신호를 내지 않는 구조들과 감시 대상을 무엇으로 잡아야 하는지 정리한다.
-
규칙이 적용될 범위를 좁혔다
한 프로젝트에서 나온 규칙을 전부에 적용했다가 안 맞는 곳을 만나면서, 규칙의 전제와 적용 범위를 함께 적는 방식으로 바꾼 과정을 정리한다.
-
vee-validate 4 + zod: 로그인 버튼이 아무 반응 없을 때
vee-validate 4와 zod를 함께 사용할 때 로그인 버튼이 아무 반응 없이 실패하는 문제의 원인과 해결 방법을 정리한다. boolean 필드의 initialValues 함정이다.
-
Android SMS 릴레이 앱에서 MMS를 SMS처럼 PDU 파싱하면 생기는 문제
Android에서 MMS_RECEIVED intent를 등록하고 SMS와 동일한 PDU 파싱 로직을 적용하면 silent data corruption이 발생한다. 올바른 MMS 수신 방법을 정리한다.
-
그 가드가 실제로 막는 것
개인 대화에서만 되게 막았다고 생각한 운영자 전용 명령이 공개 그룹에서 그대로 돌았던 건을 통해, 가드가 실제로 무엇을 거르는지 확인하는 방법을 정리한다.
-
LiteLLM Proxy 폴백 구조를 4단에서 2단으로 줄인 이유
LiteLLM Proxy의 모델 폴백 구조를 4단 캐스케이드에서 2단으로 단순화하고, N개 API 키의 RPM/RPD를 균형 분배한 과정을 정리한다.
-
NHN KCP 본인인증을 Laravel에 통합한 구조
NHN KCP 휴대폰 본인인증을 Laravel 프로젝트에 통합한 아키텍처를 정리한다. 요청-결과 분리 패턴과 CI/DI 처리 방식을 다룬다.
-
App Store에서 앱이 삭제됐을 때 — 실전 대응 가이드
App Store에서 앱이 제거되었다는 알림을 받았을 때의 원인 파악, 대응 절차, 복원 방법을 정리한다.
-
Linux 서버 4대의 환경을 통일한 과정
아키텍처가 다른 Linux 서버 4대(x86, ARM)의 사용자, SSH, Docker 경로, 홈 디렉토리를 통일한 과정을 정리한다.
-
Hello World
isdnetworks 개발 블로그의 첫 번째 글이다.
-
PHP-FPM Docker 컨테이너가 시작 직후 종료를 반복하는 문제
PHP-FPM Docker 컨테이너가 'ready to handle connections' 출력 후 exit code 0으로 즉시 종료되며 Restarting 상태를 반복하는 문제의 원인과 해결 방법을 정리한다.
-
PHP 7.2 범용 Docker 이미지에 어떤 PECL 확장을 넣을 것인가
WordPress, Laravel, CI, 쇼핑몰, 거래소, AI 서비스를 하나의 PHP 7.2 Docker 이미지로 지원하기 위한 PECL 확장 선정 과정을 정리한다.
-
Claude Code guard hook이 우회되는 경우와 대응
Claude Code의 PreToolUse hook으로 파일 수정을 차단했지만, Write 도구로 우회되는 문제와 에이전트 자동화에서 발생하는 오분류 문제를 다룬다.
-
13개 Docker 프로젝트 구조를 표준화한 과정
모노레포 내 13개 Docker wrapper 프로젝트의 구조를 7단계에 걸쳐 표준화한 과정을 정리한다. .gitattributes, .gitignore, build.sh, deploy 스크립트 통일 사례다.
-
Docker host 모드에서 VPN 트래픽이 전달되지 않는 문제 해결
Docker host 모드로 IPsec VPN 서버를 운영할 때 연결은 되지만 트래픽이 전달되지 않는 문제의 원인과 해결 과정을 정리한다.
-
범위를 넓히는 조용한 실패
배열이 비었는데 루프가 한 번 돌면서 빈 값이 파괴적 명령의 인자가 된 건을 분석하고, 실패가 오류로 드러나지 않고 다음 단계로 흘러가는 구조를 정리한다.
-
통과했지만 아무것도 검증 못 한 테스트
부수 효과를 막으려다 검증 대상까지 가짜로 대체한 테스트와, 완료가 아니라 예정을 세고 있던 검증 패턴을 나란히 놓고 통과의 신뢰 조건을 정리한다.
-
오류의 시작 시각과 멈춘 시각
예외는 29시간 전부터 있었는데 처리가 멈춘 것은 다음 날 오후였던 건에서, 원인 시각과 장애 시각을 따로 재야 전환점이 보인다는 것을 정리한다.
-
컴퓨터과학과 중퇴 개발자의 15년
컴퓨터과학과를 중퇴하고 개발자로 15년을 보낸 경험을 돌아본다. 학위 없이 실력으로 인정받기, 프리랜서와 정규직 사이의 선택, 작은 회사에서의 CTO 역할에 대한 회고다.
-
BigQuery Legacy SQL 종료 — Standard SQL 전환 가이드
Google Cloud BigQuery에서 Legacy SQL 지원이 종료된다. Legacy SQL과 Standard SQL의 차이점과 마이그레이션 방법을 정리한다.
-
같은 블록 안의 확인은 확인이 아니다
덮기 전에 확인한다는 규칙을 알고도 어긴 건을 분석해, 규칙이 문면으로 지켜지고 실행 패턴에서 무력화되는 구조와 그것을 막는 순서 설계를 정리한다.
-
AI가 화이트칼라를 대체할 때 — Citrini Research 분석 리뷰
Citrini Research의 "The 2028 Global Intelligence Crisis" 보고서를 개발자 관점에서 리뷰한다. Ghost GDP, SaaS 붕괴, 에이전트 간 거래 등 AI가 화이트칼라 노동 시장에 미칠 충격을 분석한다.
-
바꿔도 안 바뀌던 설정
설정 파일을 바꾸고 캐시를 다시 만들고 값 조회까지 했는데도 옛 경로로 나가던 건에서, 확인을 바꾼 자리가 아니라 쓰이는 자리에서 해야 하는 이유를 정리한다.
-
Windows IKEv2 VPN 클라이언트 설정과 Policy Match Error 해결
Windows에서 IKEv2 VPN 클라이언트를 설정하는 과정과, 연결 시 발생하는 Policy Match Error의 원인 및 해결 방법을 정리한다.
-
AWS 보안 긴급점검 세미나 — 핵심 정리
AWS 보안 긴급점검 세미나에 내용을 정리한다. IAM, 네트워크, 데이터 보호, 인시던트 대응의 핵심 체크리스트를 다룬다.
-
마이그레이션 뒤의 일괄 갱신
이관 직후에 난 오류를 이관 탓으로 보고 조사를 시작했다가, 생성 시각과 갱신 시각의 대조로 원인이 그 뒤의 일괄 갱신이라는 것을 확정한 과정을 정리한다.
-
RK3588 NPU로 로컬 LLM 서버를 포기한 이유
RK3588 NPU(RKLLM)를 활용한 로컬 LLM 서버 구축 시도와 포기까지의 과정, 그리고 클라우드 API 전환 결정을 정리한다.
-
Claude Code 프로젝트 설정 구조 — 실전 사례
Claude Code의 .claude 폴더를 활용한 프로젝트 설정 구조를 실전 사례로 소개한다. CLAUDE.md, rules, hooks, context, skills, agents 구성을 다룬다.
-
되돌리니 멎었다, 그런데 원인은 모른다
되돌려서 증상이 멎었다는 사실이 원인을 확정해 주지 않는다는 것을, 기능 세 개가 묶인 배포를 되돌린 건에서 정리한다.
-
Google Cloud OpenTelemetry 자동 활성화 — 영향과 대응
Google Cloud에서 OpenTelemetry 통합을 자동 활성화하겠다는 안내를 받았을 때, 영향 범위를 확인하고 대응하는 방법을 정리한다.
-
공짜가 아닌 읽기 전용
조회만 했는데 요금이 발생하고 DB가 멈추고 값이 로그에 남은 사례들을 모아, 읽기 작업을 시작하기 전에 확인할 항목을 정리한다.
-
카페24 앱스토어 정책 변경 대응 — 제재 강화와 API 버전 업그레이드
카페24 앱스토어의 운영정책 위반 제재 강화, PII 보호 요구, API 버전 업그레이드에 대응하는 방법을 정리한다.
-
Temu 파트너 플랫폼 API 연동기 — 20건의 이메일 스레드가 말해주는 것
Temu 파트너 플랫폼 API 연동 과정에서 겪은 온보딩, 인증, Taxonomy 검증, 기술 이슈를 정리한다. 드롭쉬핑 플랫폼과의 연동 사례다.
-
한 건이 실패하면 배치 전체가 죽는 구조
92건을 처리하는 배치가 한 건의 예외로 멈춘 건을 계기로, 실패를 항목 단위로 격리하는 방식과 격리하면 안 되는 자리를 가르는 기준을 정리한다.
-
읽은 코드와 도는 코드
코드에서 찾은 결함을 운영 상태로 보고할 뻔한 건을 계기로, 읽은 코드와 실제로 도는 코드가 갈리는 경우들과 단정하기 전에 확인할 항목을 정리한다.
-
Gemini API 모델 마이그레이션 — 반복되는 Deprecation 알림 대응
Google AI Studio에서 Gemini API 모델 마이그레이션 요구 알림이 반복될 때, 체계적으로 대응하는 방법을 정리한다.
-
Go + Python 혼합 마이크로서비스에서 장애 격리 패턴 적용기
이커머스 자동화 플랫폼의 마이크로서비스에 Circuit Breaker, Bulkhead, Dead Letter Queue 등 장애 격리 패턴을 적용한 실전 경험을 공유한다.
-
드롭쉬핑 플랫폼을 마이크로서비스로 설계한 과정
이커머스 자동화 플랫폼을 8개의 마이크로서비스로 분해하고, Go와 Python을 혼합 적용한 아키텍처 설계 과정을 정리한다.
-
도매 API 연동 시 Rate Limit 분산 전략
도매 API의 분당/일일 요청 제한을 효율적으로 관리하기 위한 분산 전략과 재시도 패턴을 정리한다.
-
인덱스가 아니라 N+1
느린 목록 화면의 원인을 인덱스로 짐작하고 있다가 한 페이지에 나가는 쿼리 수를 세어 방향을 바꾼 과정과, 개선 순서를 비중으로 정한 근거를 정리한다.
-
백지에서 시작한 새 레코드
교환을 반품으로 수기 전환한 건에서 수거 정보가 유실돼 실물과 시스템 상태가 어긋난 사례를 추적하고, 전환의 성공과 처리의 완료를 가르는 확인 지점을 정리한다.
-
레거시 PHP 프로젝트를 인수받으면 가장 먼저 하는 것들
CodeIgniter 1.x~3.x, Laravel 5.x 시대의 레거시 PHP 프로젝트를 인수받았을 때 가장 먼저 확인하고 정리해야 할 항목들을 실무 경험 기반으로 정리한다.
-
AWS RDS 디스크 풀 장애 대응 — 연속 ALARM에서 배운 것
AWS RDS에서 disk_running_out ALARM이 연속 5회 발생한 장애 상황의 원인 분석, 즉시 대응, 재발 방지 조치를 정리한다.
-
GitHub 2FA 잠금 — 복구 절차 가이드
GitHub 2단계 인증(2FA) 잠금 상태에서 계정을 복구하는 절차와, 재발 방지를 위한 설정을 정리한다.
-
고치다 발견한 다른 결함
조사 도중에 발견한 별개의 문제를 지금 고칠지 적어 둘지 가르는 기준과, 그렇게 쌓인 목록을 실제로 처리되게 만드는 방법을 정리한다.
-
프록시 주소는 레코드가 있어야 산다
저장소에 파일이 있는데도 외부에서 이미지가 깨진 건을 추적하면서, 프록시 주소가 DB 행에 의존한다는 사실과 옛 레코드 삭제 작업이 갖는 전제 조건을 정리한다.
-
AWS RDS MySQL 8.0 표준 지원 종료 — 마이그레이션 가이드
AWS RDS MySQL 8.0이 2026년 7월 31일에 표준 지원 종료된다. 마이그레이션 옵션, 호환성 확인, 실행 계획을 정리한다.
-
마켓플레이스 계정정보 외부 노출 알림 대응
마켓플레이스에서 계정정보 외부 노출 관련 안내를 받았을 때의 대응 절차와 확인 사항을 정리한다.
-
iOS 앱 심사 리젝 대응 — 실전 사례
iOS 앱 심사에서 리젝을 받고 수정 후 재제출해 통과하기까지의 과정을 실전 사례로 정리한다.
-
중지된 채로 있지 않는 중지
중지한 상품이 마켓에서 되살아나는 경로 셋을 시계열 대조로 찾고, 감사 기준을 상태 하나에서 3중 대조로 바꾼 과정이다.
-
접근 경로의 제약을 적어 둔다
간헐 타임아웃과 다중 인용 오염을 원인 규명 대신 우회로 처리하고, 그 제약과 미완료 규모를 기록으로 남긴 과정이다.
-
Docker Hardened Images — 도입 검토와 판단 기준
Docker Hub의 Hardened Images가 무엇인지, 기존 Official Images와 어떻게 다른지, 도입 여부를 판단하는 기준을 정리한다.
-
GitHub Actions 과금 체계 변경 — 무엇이 달라지나
GitHub Actions의 과금 체계 변경 내용과 기존 워크플로우에 미치는 영향, 비용 절감 방법을 정리한다.
-
삼성 갤럭시 숨겨진 시스템 메뉴 접근법
삼성 갤럭시 기기의 숨겨진 시스템 메뉴에 ADB를 통해 접근하는 방법을 정리한다. HiddenMenu, ServiceMode, Band 설정 등을 다룬다.
-
주석이 왜 뺐는지 적어 뒀다
화면에 항목이 없다는 문의를 의도적 생략을 적어 둔 주석 하나로 몇 분 만에 판정하고, 안내와 확장 비용까지 함께 답한 과정이다.
-
NHN KCP 표준인증창 보안강화 — 모바일 PU 방식 변경 대응
NHN KCP 휴대폰 본인확인 서비스의 표준인증창 보안강화에 따른 가맹점 조치사항과 모바일 PU 방식 변경 대응을 정리한다.
-
반쪽만 꺼진 가드
DB는 바뀌고 전송은 막힌다.
-
틀려 있던 주석
주석을 믿고 동작을 잘못 이해한 뒤 표본으로 오류율을 재고, 없앨 주석과 남길 주석을 가른 과정이다.
-
축이 다른 것과 제약을 깨는 것
제약 위반으로 보이던 것이 축이 다른 것이었고, 끊어진 참조는 원본과 대조해 누락인지 원본 결함인지 먼저 가른 과정이다.
-
두 갈래로 갈린 같은 관용구
같은 일을 하는 두 방식이 섞인 이유를 시기 차이에서 찾고, 통일할 값이 있는 것만 골라 점진적으로 옮긴 과정이다.
-
조용함과 깨짐 사이
대량 재전송을 검토하다 실제 파손 규모를 먼저 재서 0.34퍼센트임을 확인하고, 복구 대신 로그 수정이 진짜 산출물임을 정리한다.
-
안 쓴다를 확인하는 두 축
좁은 범위 검색의 0건을 안 쓴다로 읽지 않고 호출부와 대입 지점 두 축으로 확인해, 운영 DB 조작을 하지 않기로 한 근거를 세운 과정이다.
-
정리가 전송 성공에 매달려 있다
정리하려는 대상이라서 정리가 안 되는 순환을 구 경로 코드에서 확인하고, 구경로와 신경로의 기능 비대칭을 정리한다.
-
Google Play 앱 정책 위반 알림 대응 — 한꺼번에 8건 받았을 때
Google Play에서 앱 정책 위반 알림을 한꺼번에 여러 건 받았을 때의 확인 절차와 대응 방법을 정리한다.
-
인프라 탓이 아니었던 지연
배치가 느린 원인을 인프라에서 찾다가 계측 로그로 서버 시간을 분리해 구조적 특성임을 확인하고, 고칠 수 있지만 안 한다고 적은 과정이다.
-
증거가 되는 다이제스트
직접 호출 검증이 막힌 내부 전용 서비스에서 이미지 다이제스트 3자 대조로 배포를 증명하고, 그 검증의 한계까지 명시한 과정이다.
-
하나로 보이는 두 문제를 갈라내기
메모리를 늘려도 절반만 나아진 것을 덜 고쳤다로 읽지 않고 두 번째 원인을 찾아, 종료 사유로 원인을 가르는 방법을 세운 과정이다.
-
도움말이 낡는 자리
서버 하나의 코드와 설정과 배포 스크립트를 한자리에 놓고 교차 대조해, 한 파일만 봐서는 찾을 수 없는 불일치 다섯을 찾아낸 과정이다.
-
CloudWatch 알람 노이즈 줄이기 — SNS 토픽 필터링 실전
CloudWatch 알람이 SNS를 통해 과도하게 발송될 때, 알람 노이즈를 줄이는 실전 방법을 정리한다. 이커머스 연동 서비스의 사례를 다룬다.
-
서명과 경계
외부 API 문답 83건을 전수 검토해 얻은 넷을 정리하고, 오류 메시지가 원인을 안 가리키는 항목일수록 전수 검토가 필요한 이유를 남긴다.
-
OpsNow360 유료 전환 시 기능 제한 해제 요청 절차
AWS 리셀러 계약 갱신 후 OpsNow360의 유료 기능 제한 해제를 요청한 과정과, FinOps 도구 운영 시 주의할 점을 정리한다.
-
아무것도 못 찾아도 성공을 반환하는 명령들
검증 스크립트의 판정이 항상 한쪽으로만 나온 원인을 명령별 종료 코드 규칙에서 찾고, 검사가 실제로 가르는지 확인하는 방법을 정리한다.
-
컬렉션마다 다른 규칙
한글 파일명을 교정해 달라는 요청의 전제를 요청 하나로 확인해, 일괄 적용이 정상 이미지 수백만 건을 깨뜨린다는 결론에 이른 과정이다.
-
세 조건을 항상 같이 걸었다
41곳에 흩어진 조회에서 필수 조건 셋 중 하나가 빠진 다섯 곳을 찾고, 자동으로 붙이되 빼는 자리를 한 곳으로 좁힌 과정이다.
-
상태 컬럼으로 센 잘못된 분류
주문 상태 하나로 세다가 부분 취소를 놓쳤고, 조합 판정으로 분류하다 항목이 전부 취소된 채 살아 있는 주문 412건을 발견한 과정이다.
-
통계로 읽은 내 문제 기록
몇 년치 문제 기록을 개별 사건이 아니라 전체로 세어 반복 원인을 찾고, 반복될수록 조사가 얕아지는 경향까지 확인한 과정이다.
-
프로젝트마다 다르던 환경 변수
같은 뜻의 값이 프로젝트마다 다른 이름을 쓰고 있어서 스크립트를 옮길 때마다 깨지던 것을, 대응표와 이행 경고로 정리한 과정이다.
-
KISA 홈페이지 계정정보 보안조치 요청 — 실무 대응
한국인터넷진흥원(KISA)에서 홈페이지 계정정보 보안조치 요청을 받았을 때의 확인 사항과 대응 절차를 정리한다.
-
HPE Instant On으로 소규모 사무실 네트워크 구축하기
HPE Networking Instant On을 사용해 소규모 사무실 네트워크를 구축하고, 클라우드 기반 모니터링과 알림을 설정한 과정을 기록한다.
-
선택자 대신 순회하고 매칭한다
안정적인 선택자가 없는 표에서 순회와 매칭으로 값을 뽑고, 셀 순서와 추정치 표기와 재현 확인까지 절차로 남긴 과정이다.
-
레거시 MariaDB 서버 업그레이드 사전 조사 체크리스트
운영 중인 레거시 MariaDB 서버를 업그레이드하기 전에 반드시 확인해야 할 항목들을 체크리스트 형태로 정리한다.
-
AWS 리셀러 통합 빌링 계약 갱신 — 할인율 협상 실무
AWS 리셀러(MSP) 통합 빌링 계약 갱신 시 할인 조건 재협상, OpsNow360 연계, 계약서 변경 프로세스를 실무 관점에서 정리한다.
-
시각 없는 상태값
아무 기록이 없는 과거 일괄 조치를 상태값과 타임스탬프의 불일치로 재구성하고, 세는 방법이 결과를 바꾼다는 것을 정리한다.
-
검증 순서를 읽어 화면에 반영했다
외부 API 오류가 상세 없이 돌아오던 것을, 규격의 검증 순서를 읽어 화면 입력 순서에 반영하고 어디까지 미리 막을지 정한 기록이다.
-
경로가 둘일 때의 게이트
연장 작업이 실패한 줄 알았으나 애초에 생성되지 않았고, 같은 기능의 두 경로가 서로 다른 게이트를 가진 구조를 정리한다.
-
잘못이 아니라 설계였던 중복 업로드
중복으로 보이던 412건이 설계였고 기준을 좁히자 진짜 중복이 드러났으며, 상대 쪽 덮어쓰기 순서까지 확인한 과정이다.
-
변환본 둘, 규칙 둘
이미지가 작다는 민원의 원인을 마크업이 아니라 원본 해상도와 변환 규칙 차이에서 찾고, 선택지 셋을 영향과 함께 넘긴 과정이다.
-
없는 것을 만들어 내던 조회
존재 확인이 항상 참을 돌려주던 원인을 조회가 대상을 생성하는 구조에서 찾고, 부작용 있는 조회를 전수로 정리한 과정이다.
-
게이트만으로 안 되는 결정
조건 분기를 찾고 설명이 완성된 줄 알았다가 호출부를 읽고 이론을 철회하고, 대신 미래 위험을 기록으로 남긴 과정이다.
-
수집원마다 렌더링 방식을 잰다
브라우저가 필요하다고 짐작하던 수집원들을 직접 요청해 재고, 브라우저의 역할을 쿠키 공급원으로 줄인 과정이다.
-
2단계 중간의 정지
갱신 실패로 오진했던 1만 9천여 건이 실은 연동 해제 2단계 중 1단계에서 멈춘 상태였고, 그 지문을 게이트로 만든 과정이다.
-
떼어 놓고 얻은 통과의 한계
한 단계를 떼어 내 통과시킨 것을 무죄 증거로 삼아 이틀을 잃고, 떼어 내며 바꾼 조건을 하나씩 되돌리는 방법을 세운 과정이다.
-
상위만 옛것을 가리키던 상태
두 화면의 금액이 다른 문의를 정책 데이터가 아니라 상품의 참조에서 풀고, 이관이 참조를 안 옮기는 패턴을 정리한다.
-
네 번 따로 적힌 같은 결함
증상이 달라 보이던 장애 넷의 원인이 같았고, 기록 형식을 맞춰 모아 세니 반복 결함 넷이 드러난 과정이다.
-
센티널은 코드로 강제한다
실데이터와 센티널이 같은 키스페이스를 쓰는데 충돌 방지가 주석뿐이었고, 그 충돌이 예외가 아니라 침묵으로 나타나는 구조를 정리한다.
-
매핑표를 먼저 완성한다
코드 체계 이전에서 값을 하나씩 바꾸는 대신 매핑표를 먼저 완성하고, 1대1이 안 되는 것과 추정한 것을 나눠 적은 과정이다.
-
도착률 대비 처리량으로 잰다
프로세스 수만 보고 워커 축소를 답으로 냈다가 도착률과 처리량을 실측해 결론을 뒤집고, 조건이 바뀌면 반대가 맞는다는 것까지 정리한다.
-
링크 없음과 미응답의 구분
자동 판정으로 뽑은 미응답 목록을 표본 교차검증에서 뒤집고, 신호와 의미를 가르는 매칭 규칙을 세운 과정이다.
-
한 이미지의 다중 앱 지원 여부
비슷한 이미지 넷을 공통 층으로 묶되 한 이미지에 여러 앱을 넣지 않기로 하고, 그 선택이 보안 갱신까지 바꾼 과정이다.
-
정렬 옵션이 없는 조회
수정 시각 정렬이 없어 4만 건을 받던 것을, 다른 이름의 API와 필드 선택과 해시 비교로 단계별로 줄인 과정이다.
-
다른 키를 먼저 세어 본다
특정 불가로 남아 있던 잔여 8건을 옆 컬럼의 카디널리티 한 번으로 풀고, 매칭용 키와 판별용 키를 나눈 과정이다.
-
수만 건을 한꺼번에 바꾸지 않고 나눠서 하는 법
수만 건 재전송을 웨이브로 나누면서 대상 고정과 응답 불신과 실패 사유 분류까지 절차로 굳힌 과정이다.
-
알려진 버그부터 검색한다
설정을 몇 시간 뒤진 뒤에야 공개 이슈를 검색해 여섯 개가 겹쳐 있음을 확인하고, 조사 순서를 바꾼 과정이다.
-
플랫폼마다 다른 식별자 타입
한 대에서 먹힌 처방을 나머지 여섯 대에 퍼뜨리기 전에 조건을 확인해, 결론이 수정 없음으로 끝난 조사다.
-
언어판마다 다른 문서 목록
한 언어판만 보고 기능이 없다고 판단해 이틀을 우회한 뒤, 규격 파일과 갱신 날짜로 문서를 대조하는 절차를 세운 과정이다.
-
값 하나에 테이블 여섯
일괄 보정 전에 정식 수정 경로가 건드리는 테이블을 전수 추적해 여섯으로 확정하고, 직접 SQL 대신 커맨드를 고른 근거를 정리한다.
-
프로젝트마다 다른 방식과 표준
배포 방식이 제각각인 프로젝트 넷을 방식이 아니라 조건으로 통일하고, 조건을 못 채우는 하나는 그 사실을 기록으로 남긴 과정이다.
-
단일 요청과 동시성이라는 두 축
타이밍 창이 없다고 반박했다가 반문 한 줄로 조건이 바뀌면서 결론이 정반대가 된 조사다.
-
읽기 패턴 재사용으로는 안 된다
기존 패턴 재사용으로 잡았던 작업이 쓰기 경로 부재로 신규 구현이 되면서, 코드와 권한과 정책과 캐시가 함께 가야 했던 과정이다.
-
스케줄이 없다고 기능이 없는 것은 아니다
정리 대상으로 올린 기능이 cron에 없어 죽은 것으로 보였다가 다른 실행 경로에서 살아 있던 것을 확인하고 판정 기준을 고친 기록이다.
-
롤링 저장소를 동결한다
마이너 고정 트리가 없는 부가 저장소를 아카이브 스냅샷으로 동결하고, 주소 유효성과 설치 패키지 존재를 각각 검증한 과정이다.
-
반복되는 급한 조치
반년간 반복한 수동 조치를 시간으로 환산해 근본 수정 비용과 비교하고, 조치 횟수 자체를 지표로 삼은 과정이다.
-
추가는 안전하고 변경은 아니다
매핑 작업을 추가와 변경으로 가르고, 포괄적 분류의 매핑 가능 여부를 네 건 대조로 판정한 기준을 정리한다.
-
설치와 셸 통합의 분리
우클릭 메뉴가 안 나오는 것을 설치 실패로 오해했다가, 파일 유무로 미제공과 미적용을 가르는 절차를 정리한 과정이다.
-
이관이 빠뜨린 부속 레코드
한 업체 문제로 보이던 연동 실패가 이관된 132개 업체 전원의 문제였고, 그 사실이 보정 계획 전체를 바꾼 과정이다.
-
미결을 닫고 다음으로 갔다
미결을 남긴 채 다음 문서로 넘어갔다가 그 위에 쌓인 것이 전부 흔들린 뒤, 무엇을 닫고 무엇을 진행할지 가르는 방법을 정리한다.
-
성공이 아니었던 성공 목록
일괄 API가 처리하지 않은 건을 성공 목록에 담은 것을 청크별 되읽기로 잡아내고, 그 건을 어떻게 분류할지 정한 과정이다.
-
작업 공간 둘의 통합 여부
전부 합치거나 전부 나누는 대신 무엇을 합칠지를 갈라서 도구만 합치고 자료와 자격 증명은 나눈 과정이다.
-
멱등은 전제 위에 선다
멱등 로직이 이미 있는데도 매번 재업로드가 일어난 이유를 추적해, 식별자가 매번 바뀌면 멱등이 원리적으로 성립하지 않는다는 것을 정리한다.
-
중간에 받은 지적의 자리
진행 중에 받은 지적을 이미 한 것이 아까워 넘겼다가 결국 더 큰 비용을 치른 뒤, 판단 순서를 정한 과정이다.
-
같은 것을 가리키던 식별자 셋
내부 키와 화면 번호와 API 입력값이 전부 다른데 조사에 쓴 값을 그대로 회신에 넣었다가 상대가 못 찾은 건을 정리한다.
-
WHERE에 들어간 결론
검증 쿼리의 조건에 검증하려는 결론을 넣어 순환논증이 된 건과, 결과가 가설과 일치할 때가 더 위험한 이유를 정리한다.
-
상태를 안 바꾸던 컨슈머
외부 처리는 끝났는데 우리 상태만 요청으로 남아 있던 건을 단계별로 그려서, 빠진 마지막 단계와 그 단계의 주인을 찾은 과정이다.
-
제외를 적용하고 센다
다음 검증 대상을 고르려고 규모를 다시 세면서, 제외 조건을 넣기 전과 후가 완전히 다른 그림을 보여 준 건을 정리한다.
-
예외를 다 흡수하려던 표준 모델
여섯 채널의 주문을 한 모델로 담으려다 필드가 스물여덟 개가 된 뒤, 공통과 예외를 나누고 무엇이 공통인지를 세어서 정한 과정이다.
-
주 계정을 기준으로 잡은 구조
최상위 계정을 어떻게 다룰지 정하고 나니 역할 분리와 권한 축소와 퇴사 절차까지 그 결정에서 따라 나왔다.
-
문서에 없는 제약의 출처
공식 문서에 없고 Q&A에만 있는 제약들을 전수로 훑어 정리하면서, 사전 검증에 반영할 것과 운영 문서에 넣을 것을 갈랐다.
-
터널 앞에는 L4를 쓴다
프록시 통합 설계의 초기 가정 둘이 착수 전 읽기 전용 조사에서 모두 뒤집힌 과정과, 인바운드와 아웃바운드를 가르는 기준을 정리한다.
-
만들어진 적 없는 미연동
화면의 미연동 라벨이 실패가 아니라 작업 없음을 뜻한다는 것을 코드로 확인하고, 질문의 전제까지 바로잡은 과정이다.
-
기간 없는 미처리 집계의 과대
화면 이름만 아는 상태에서 테이블을 찾아 들어가 기간 조건 없는 미처리 집계가 레거시로 부풀려져 있음을 확인한 과정이다.
-
넓힌 catch가 여는 안쪽
예외 범위를 넓히는 한 줄짜리 패치의 2차 검토에서 새 실행 경로와 진단 코드의 자멸과 패치의 자기 재현 셋을 찾은 과정이다.
-
고급 기능의 도입 시점
떠오른 기능 다섯을 나중에 넣기 어려운 것과 아닌 것으로 갈라 둘만 지금 넣고, 안 넣은 것의 종료까지 관리한 과정이다.
-
마켓마다 다른 중지의 뜻
상태 불일치 3만 7천 건을 채널별로 갈라 원인이 셋 다 다르고 매핑 누락은 0건임을 확인해, 백로그로 읽지 않기로 한 과정이다.
-
피해 반경은 부분집합이다
8일치가 다 깨진 것 아니냐는 지적에 대상 조건을 읽고 모집단을 정의해, 36만 건 중 0.08퍼센트로 좁힌 과정이다.
-
이미 두 겹이던 검증
새 기능에 붙일 검증을 짜기 전에 기존 범위를 읽어 열두 개를 안 짜고, 대신 정해야 할 정책 하나를 찾아낸 과정이다.
-
인프라 정의에서 떼어 놓은 코드
인프라 정의에 들어 있던 배포를 떼어 내면서 경계를 바뀌는 빈도로 정하고, 나눈 뒤 드러난 의존과 되돌리기 순서까지 정리한 과정이다.
-
재생성을 막은 스킵 조건
같은 주소를 다시 넣어도 스킵 조건에 걸려 아무 일도 안 일어나던 것을 외부 경유로 풀고, 폭 문제의 원인은 가정과 달랐던 과정이다.
-
전수 조사로 확정한 현재 상태
비용 절감 요청을 목록 만들기부터 시작해 아무도 몰랐던 자원과 다른 계정과 안 쓰는 접근 권한까지 정리한 과정이다.
-
그대로 둔 기본값의 비용
검색 조회 상한을 기본값으로 두어 비용과 결과 품질이 함께 나빴던 것을 고치고, 기본값을 쓰는 자리를 전부 훑은 과정이다.
-
한 단계 더 거쳐 조인한다
조인 결과 0건을 없다는 뜻으로 읽고 결론 낼 뻔했다가 스키마를 확인해 정반대 결과를 얻은 과정이다.
-
코드 추정보다 앞선 DB 사실
코드로 좁혀지지 않던 두 후보를 생성 시각과 갱신 시각이 같다는 사실로 가르고, 복구의 선행 조건까지 확정한 과정이다.
-
개발용처럼 보이는 이름의 운영 DB
이름만 보고 개발용으로 판단해 운영 DB를 건드릴 뻔한 뒤, 이름 대신 실체를 확인하는 목록과 맡길 것의 경계를 정한 과정이다.
-
0이 아니었던 슬롯
물리 서버 점검에서 슬롯 표기와 진단 필드 부재와 팬 회전율의 의미까지 다섯 가지 장비별 사실을 확인하고 기록한 과정이다.
-
청구서를 나누는 유일한 수단
한 계정에 섞인 네 프로젝트의 비용을 태그로 가르면서, 태그 없이 못 만들게 막고 값까지 제한한 과정이다.
-
꺼낸 순간 낡아 있던 값
큐 메시지에 값을 통째로 담아 낡은 값이 나중에 덮은 사고를 고치면서, 다시 읽을 것과 스냅숏이 맞는 것을 가른 과정이다.
-
설계를 바꾼 과금 구조
싸 보이는 구조가 요금 구조 때문에 반대인 것을 실측으로 확인하고, 과금 단위와 비중으로 줄일 대상을 정한 과정이다.
-
먼저 돌려도 안 줄던 총시간
큰 채널을 먼저 돌려 나머지를 가속한다는 전략의 전제를 실측으로 무너뜨리고, 동시 실행 분산으로 바꾼 과정이다.
-
분리된 입구, 공유된 데이터
운영 서버 한 대를 떼어 시험하려다 큐가 공유된다는 것을 확인하고, 성공하면 원복이 없는 시험은 하지 않기로 한 과정이다.
-
실패가 아니라 안 지워진 표시
취소가 안 된다는 문의를 주문 상태와 취소 상태의 불일치로 표시 문제로 판정하고, 조사 중 드러난 요청 폭주는 따로 분리한 과정이다.
-
바뀐 상태와 나가지 않은 요청
패널티 이의의 근거를 확인하다 우리 시스템이 중지를 안 보낸 것을 찾아, 반영 확인 기준을 내부 상태에서 연동 상태로 바꾼 과정이다.
-
단계 신호였던 0
실행 초반의 작업 0건을 버그로 보고 중단할 뻔했다가 단계 진행 신호임을 확인하고, 진행률 측정을 로그에서 기록 집계로 바꾼 과정이다.
-
빈 프로젝트가 아닌 파일 0개
소스 파일 0개인 프로젝트를 껍데기로 판정했다가 IDE 캐시에서 업무 규칙 237개를 찾고, 재개발의 과제 자체가 바뀐 과정이다.
-
보낼 URL의 부재
추측으로 제시한 링크가 실재하지 않는다는 되물음을 받고 라우터 정의를 확인해, 수정안 대신 결정할 것을 정리한 과정이다.
-
결합키 제거는 교환이다
메모리를 줄이려 결합키를 없애면서 반환 형태 변화와 동점 처리를 확인하고, 그 교환의 방향을 맥락으로 판단한 과정이다.
-
밖에서 다시 받아 채운 값
응답 형식 변경으로 비게 된 식별자 412건을 상대에게 다시 물어 복원하고, 되찾을 수 없는 값과 원인 수정까지 나눠 처리한 과정이다.
-
해소와 통과의 차이
링크 존재만 보던 검사가 전부 통과했는데 실제로는 안 되던 것을 대조군으로 확인하고, 검사별로 무엇을 보는지 표로 적은 과정이다.
-
같은 데로 가는 폴백
폴백이 있는데도 실패가 쌓인 원인이 폴백도 같은 도메인을 쓰기 때문임을 확인하고, 인프라 확인을 코드 수정보다 앞에 둔 과정이다.
-
인증을 시행착오로 시험하지 않는다
잘못된 인증 요청이 계정 전체를 강등시키고 복구가 최대 2주 걸리는 규격을 문답에서 미리 읽어, 시행착오 방식을 안 쓰기로 한 과정이다.
-
표본을 제한하는 보존 기간
만료 설정이 관측 창을 제한한 것을 확인하고, 전제를 반증한 표본이 대표성이 없어 확증도 아닌 상태를 그대로 적은 과정이다.
-
종결이 아닌 잔존 0
7천여 건을 처리해 잔존을 0으로 만들고도 근본 수정이 미배포라 종결이 아님을 유입 건수로 실증하고, 드레인과 수정을 나눠 보고한 과정이다.
-
마킹인가 실제 호출인가
멱등일 것이라는 추정을 실행기 코드로 반증하고, 로그가 외부 응답이라는 사실을 이용해 대량 작업 대상을 좁힌 과정이다.
-
첫 관문 통과와 완료 사이
완료 건수를 판정 기준으로 삼아 전건 성공을 실패로 읽을 뻔한 것을 사유 이동으로 다시 재고, 보류와 실패를 나눠 보고한 과정이다.
-
다섯 번 따로 고친 같은 문제
같은 원인이 다섯 번 따로 기록된 것을 발견하고, 기록에 도달하지 못한 이유와 반복될수록 조사가 얕아지는 경향을 정리한 과정이다.
-
원시 이벤트가 남기는 노이즈
지식 그래프에 쌓인 노이즈 노드를 다섯 종류로 분류하고, 입력과 추출과 정규화와 사후 삭제 중 어디서 막는 것이 싼지를 정리한다.
-
이관이 바꾼 ID와 모르던 밖
내부 이관이 발급한 새 식별자가 외부의 옛 식별자와 충돌한 경위를 추적하고, 대응된 경로와 안 된 경로의 차이까지 확인한 과정이다.
-
버전이 아니었던 버전 필드
상수 목록과 전혀 안 맞는 값 앞에서 목록을 의심하다가 전제를 의심하는 쪽으로 방향을 바꿔, 소스에서 30분 만에 푼 과정이다.
-
하나에만 있던 게이트
브라우저가 CDN으로 직접 간다는 통념을 호출 전수 조사로 확인해, 서버를 걷어내면 조용히 죽었을 경로 셋을 찾아낸 과정이다.
-
동작을 바꾸지 않는 사전 배포
읽기 변경을 현재 데이터에서 발동할 수 없는 조건으로 먼저 배포하고, 쓰기 플래그 하나로 전환해 위험을 카나리 한 대에 가둔 과정이다.
-
계측은 필요한 입도에서 한다
카테고리 매핑 실패를 세려다 결과 객체의 입도가 맞지 않던 것을, 소스를 바꿀지 별도 계측을 붙일지 견줘 정한 기록이다.
-
라벨 말고 관계를 믿는다
요청에 딸려 온 라벨과 데이터가 정반대인 것을 관계 컬럼으로 확인하고, 추측으로 뒤집는 대신 확인을 요청한 과정이다.
-
어느 계층의 중복인가
규모가 안 맞는 집계에서 세고 있던 계층이 다르다는 것을 확인하고, 삭제 대상 기준을 업무 계층 활성 레코드로 바꾼 과정이다.
-
실제 경로를 잡아서 본 것
설정은 새 주소인데 옛 주소로 나가던 원인을 패킷과 대체 경로에서 찾고, 도구를 못 까는 환경에서 코드로 남기는 방법까지 정리한다.
-
규격이 허용하는 문자로 값을 채웠다
애매한 거부 사유를 통과분과 거부분 비교로 좁히고, 뜻을 잃지 않는 치환과 사전 검증으로 거부율을 없앤 과정이다.
-
정체와 적체를 가르는 두 시각
프로세스 상태와 큐 조회로는 안 갈리던 두 채널을 실행 시각과 완료 시각 분포로 가르고, 조치 대상을 하나로 좁힌 과정이다.
-
넘버링 규칙과 그것이 깨진 이유
채널 코드 넘버링이 보이는 규칙과 어긋난 이유를 외부 규격에서 찾고, 규칙을 문서로 남겨 다음 사람이 다시 조사하지 않게 한 기록이다.
-
정책은 이미 코드에 있다
기획 판단으로 넘기려던 사안을 코드 검색으로 선례 둘을 찾아 근거를 세우되, 결정은 열린 채로 남긴 과정이다.
-
계산된 화면 값
저장 컬럼을 고쳤는데 화면이 안 바뀐 원인을 API 응답에서 갈라내고, 표시값과 정산값이 분리된 구조를 확인한 과정이다.
-
누가 부담하나와 어떻게 걷나
처리조건만 보고 이미 고객 부담이라고 안내했다가 지적받고, 귀책이 금전 방향을 정한다는 것을 코드에서 확인한 과정이다.
-
읽을 때 맞출지 쓸 때 갈릴지 정했다
외부 자료의 형태가 여럿인 것을 쓰는 자리마다 가르다가 읽는 자리에서 한 번 맞추는 쪽으로 옮기고, 우리 저장분과 송신분까지 형태를 통일한 과정이다.
-
인코딩된 식별자의 복원
매핑 이력이 없는 오류 9건을 인코딩 역함수로 우리 식별자에 직접 대조하고, 되돌린 식별자의 출처가 네 갈래임을 확인한 과정이다.
-
완료를 되읽는 세 가지
로그 마커와 프로세스 소멸과 기록 집계로 완료를 3중 검증하고, 비싼 검증은 언제 할지 정해서 미룬 과정이다.
-
소요 시간이 유일한 신호다
중복 제거 때문에 성공 응답이 실행과 재사용 둘을 뜻하게 된 상황에서 소요 시간을 판별 신호로 삼고, 반영 방식별로 확인 시점을 나눈 과정이다.
-
힌트가 된 이미 깔린 목록
무엇이 없는지를 하나씩 실행해 찾는 대신 두 서버의 명령 목록 차집합으로 한 번에 뽑고, 판 차이까지 확인한 과정이다.
-
고치기 전의 실패 로그
건수 불일치를 조회 축으로 풀고, 고쳤는데 여전히 실패한다는 관측이 수정 이전 타임스탬프의 로그였음을 확인한 과정이다.
-
양쪽에 똑같이 적용해 대칭으로 맞췄다
저장과 조회의 정규화가 어긋나 값을 못 찾던 것을 한 함수로 묶고, 들어오는 자리에서 한 번 정규화하는 형태로 옮긴 과정이다.
-
속성처럼 쓴 메서드
오류 없이 틀린 값이 나온 원인을 꺼 둔 경고에서 찾고, 켠 뒤 쏟아진 경고를 위험도로 분류해 순서대로 처리한 과정이다.
-
검사가 실제로 검사하고 있는지 확인하는 법
오류 없이 0건이 나온 다섯 사례를 모아, 대조군과 개수 출력과 축 확인으로 검사의 유효성을 재는 방법을 정리한다.
-
왜 껐는지부터 찾는다
주석 처리된 대체 로직을 되살리기 전에 이력에서 끈 이유를 찾아, 같은 로직을 다른 경로에만 적용하기로 한 과정이다.
-
자리마다 따로 한 열거
여러 자리에 흩어진 설정을 한 번에 훑는 대신 자리별로 나눠 열거해, 중복과 관리 주체 없는 자리를 드러낸 과정이다.
-
깨진 것이 아닌 410
깨진 것으로 보이던 410 응답이 실측 메모리에 근거한 의도적 폐기였고, 되살리면 프로세스 전체가 죽는 구조였음을 확인한 과정이다.
-
항상 null을 돌려주는 매퍼
빈 매퍼를 원인으로 잡고 멈출 뻔했다가 자동화 자체의 부재를 찾아내고, 561건이라는 규모와 추론의 강도까지 나눠 보고한 과정이다.
-
되짚을 수 있는 익명
문서에서 특정 서버의 정체를 지우면서 로컬 검색의 사각지대와 소거법 재구성과 개수 표현의 되돌림을 만난 과정이다.
-
밖으로 나가는 컬럼
기록용으로 보이던 컬럼이 실은 양방향 전송 값이었고, 직접 갱신이 화면에서만 맞아 보이는 상태를 만든다는 것을 정리한다.
-
포크가 답이 아닐 때
패치 방식을 포크로 바꾸려다 upstream 구조가 갈라진 것을 확인하고 전환을 접되, 조사 결과와 재검토 조건을 남긴 과정이다.
-
스케줄러가 둘일 때의 필터
수동으로 넣은 작업이 안 도는 원인을 두 실행 경로의 필터 차이에서 찾되, 그것이 이번 관측을 설명하지 못한다는 것까지 구분해 적은 과정이다.
-
grep과 커버리지의 증거
보상 로직의 범위를 키워드 검색이 아니라 호출 트리 전이 추적으로 확정하고 근거의 강도를 밝힌 기록이다.
-
침묵을 고친 뒤의 폭주
만료 없는 상태 영속화가 침묵 버그를 폭주 버그로 바꾼 사례와 짝으로 도입해야 하는 장치를 정리한 기록이다.
-
되살아나지 않는 정체 건
재수집이 코드 경로상 무효임을 먼저 확인하고 복구와 정리를 가른 기록이다.
-
컨테이너 안 파일에 쓰는 코드
로컬 테스트는 전부 통과하고 무상태 배포에서만 틀리는 코드 유형과 그 기록 방식을 정리한 기록이다.
-
계획에 꽂아 둔 깃발
통합 설계 착수 직전에 미검증 가정만 골라 읽기 전용으로 실측하고 리스크와 스펙으로 갈라 낸 기록이다.
-
대체 동작이 기본 로그 수준에 안 보였다
외부 API 실패 시 대체 값으로 넘어가던 동작이 기본 로그 수준에 안 남아 규모를 몰랐던 것을, 수준별로 무엇을 담을지 정해 드러낸 기록이다.
-
지름길 대신 사슬
브라우저로만 확인해 놓친 중간 인증서 누락을 사슬 단위 검증 절차로 바꾼 기록이다.
-
살아 있는 것과 받아 주는 것
헬스체크가 재지 못하는 수용성 축을 구분하고 거부 응답을 지표로 뽑자고 제안한 기록이다.
-
세 번 따로 적힌 같은 함정
같은 함정이 세 문서에 흩어져 있던 것을 한 곳으로 모으고 근본을 고치기까지의 기록이다.
-
이미 빠진 것의 이중 차감
새 필드로 계산식을 넣기 전에 이미 반영된 값인지 대조해 이중 차감을 막은 기록이다.
-
버그로 보이는 조용한 무시
세 계층에서 막는 정상 차단이 아무 피드백도 주지 않아 결함으로 읽히던 구조를 정리한 기록이다.
-
스냅샷과 근본 원인
실시간 관측으로 단정한 병목을 누적 통계와 대조해 뒤집고 관측과 해석과 판단을 나눠 보고한 기록이다.
-
없는 것이 정상일 수 있다
환불 기록이 없다는 관측은 맞고 처리가 안 됐다는 해석이 틀렸던 건을 코드 경로로 확정한 기록이다.
-
만들어지지 않은 작업
재시도가 소용없는 실패가 있다는 것과 상태 값 하나가 두 상황을 뜻하는 문제를 정리한 기록이다.
-
막힌 게 정책일 수 있다
장애로 접수된 문의가 의도된 정책이었고 요청 형태를 바꿔 해소한 뒤 근거 등급까지 나눠 남긴 기록이다.
-
등록 성공이 가린 오설정
조회를 동반하는 작업에서만 드러나는 오설정을 작업 타입별 집계와 대조군으로 확정한 기록이다.
-
소스로 역추적한 주석의 뜻
조건부 안내를 필수 구성으로 읽어 없는 작업을 찾다가 소스로 역추적해 닫은 기록이다.
-
재초기화 뒤 전수 통과 확인
고친 건만 확인하고 끝냈다가 놓친 것을 전수 검사와 무중단 교체로 다시 세운 기록이다.
-
경유와 참조라는 두 질문
좁은 범위 검색으로 낸 결론을 전수 호출부 조사로 다시 세우면서 원래 물음에 없던 답까지 얻은 기록이다.
-
전용 도구가 없으면 접근이 막힌다
콘솔 하나에만 의존하던 조회 경로를 API로 넓히면서 권한 차이와 대체 불가 영역까지 정리한 기록이다.
-
비어 있던 정책 값
외부 요청의 필수 값이 비어 실패한 문제를 앞단 차단과 규격 대조표로 정리한 기록이다.
-
커서 페이징이 남기는 filesort
정렬키와 필터키가 다른 테이블일 때 커서 페이징이 왜 부족한지와 드라이빙 강제가 데려오는 부작용을 정리한 기록이다.
-
조용히 실패하는 것이 제일 비싸다
성공처럼 보이는 실패의 다섯 유형과 그것을 찾아내는 대조 방법을 정리한 기록이다.
-
생성이라는 로그와 실제 갱신
세 번 같은 결론을 냈던 판정을 테이블 직접 조회로 뒤집고, 덮어쓰기 판별 지문과 파급까지 정리한 기록이다.
-
전수 스캔 대신 헤더
몇 시간짜리 전수 점검을 헤더 확인으로 대체하고, 표본 구간이 결론을 바꾼다는 것을 확인한 기록이다.
-
소진된 작업과 재현 불가
꺼내면 사라지는 큐에서 실패한 작업을 재현할 수 없던 문제를 기록과 예약 방식으로 바꾸고 멱등까지 붙인 기록이다.
-
재현 못 하는 걸 다시 쓰지 않는다
본문 정규화 계획을 재직렬화 비동일성 때문에 접고, 원래 목적으로 돌아가 훨씬 좁은 작업으로 바꾼 기록이다.
-
셸이 바꾼 경로와 실패한 호출
특정 셸이 경로 인자를 자동 변환하던 문제를 환경별로 확인하고, 스크립트에서 흡수해 재발을 막은 기록이다.
-
문서와 실제 응답의 어긋남
새 채널 어댑터를 만들기 전에 문서와 실제 응답이 어긋나는 지점을 목록으로 만들어 설계를 확정한 기록이다.
-
아무것도 증명하지 않는 통과
결과 비교 검사기를 넣고 기준선 통과에서 멈추지 않고 음성 시험으로 유효성을 확인한 뒤 순차로 바꾼 기록이다.
-
pending은 오류가 아니다
실패가 예외가 아니라 대기 상태로 남아 영구 정지한 구조를 성공 건과 대조로 찾아내고 대응을 나눈 기록이다.
-
잠긴 것이 아니라 기다리는 중
두 상태 플래그가 서로 다른 경로를 막는다는 것을 확인하고, 추가 작업이 필요 없다는 결론에 이른 기록이다.
-
출력에 남은 해시로 한 복원
지운 브랜치를 출력에 남은 해시로 되살리고, 남는 기간과 되살릴 수 없는 범위까지 정리한 기록이다.
-
인코딩해서 통째로 넘긴 스크립트
여러 계층을 거치며 따옴표가 깨지던 원격 실행을 인코딩 전달로 바꾸고, 임시와 반복의 경계를 정한 기록이다.
-
설치 전에 재는 uid
호스트에 도구를 깔기 전에 데이터 디렉터리와 사용자 번호의 점유 상태를 실측하고, 사후 확인까지 나눈 기록이다.
-
환경 이름은 코드에 있는 걸 쓴다
검사되지 않는 환경 값에 새 이름을 붙였을 때 화이트리스트 분기에서 빠지며 실호출이 나가는 구조를 정리했다.
-
옛 클론과 잃어버린 저장소
내용이 전혀 다른 옛 클론의 삭제 가능 여부를 파일 대조가 아니라 커밋 보존으로 판정한 기록이다.
-
파일 안의 지문
폴더명으로 구조를 판정했다가 두 번 반려된 뒤, 파일 안의 환경 지문으로 대상을 식별한 기록이다.
-
도는 디렉터리와 고치는 디렉터리
멈춘 수집을 찾아가면서 실행 경로를 확인하지 않으면 고쳐도 반영되지 않는 구조를 정리한 기록이다.
-
단방향이 설계다
역전파를 넣어 달라는 요청을 받고 없는 기능이 의도인지 빠뜨림인지를 가른 뒤, 대안과 상신 경로까지 낸 기록이다.
-
조건에 안 걸린 것의 통과
미들웨어의 마지막 분기가 사양이 아니라 빠뜨림이었던 사례와, 매핑과 응답 복원까지 정리한 기록이다.
-
안 나온다와 없다는 다르다
저장소가 둘로 갈린 환경에서 한쪽의 0건을 없다로 답하지 않고, 확인 범위를 명시해 회신한 기록이다.
-
쓰는 길과 읽는 길이 다르다
보낸 상태가 조회에 안 나타나던 건에서 쓰기와 읽기의 경로를 그리고, 필드의 출처를 끝까지 따라간 기록이다.
-
표시된 값과 실제 할당의 대조
화면의 여유와 실제 부족이 어긋난 원인을 컨테이너 한도에서 찾고, 설정과 한도를 맞춘 기록이다.
-
공통 규칙이 잡아먹은 예외
개인정보 마스킹 규칙이 필요한 식별자까지 가리던 문제를 형태별 규칙과 음성 시험으로 좁힌 기록이다.
-
행 대신 집계로 낸 답
통보받은 번호로 행을 못 찾았을 때 물음을 다시 잡고, 최고 시점 하나로 원인 가설을 닫은 기록이다.
-
운영 데이터를 고치기 전에 확인하는 것들
운영 데이터를 직접 고치기 전에 밟는 순서를 대상 선정과 재현 대조와 되돌림과 재조회로 정리했다.
-
한계는 커넥션이 아니라 IO였다
동시 실행의 정합성과 커넥션을 확인한 뒤 진짜 병목을 대용량 읽기에서 찾고, 시간대로 정책을 나눈 기록이다.
-
기본값은 맞았고 로딩이 안 됐다
Laravel 설정 파일을 추가했는데 값이 안 읽히던 것을 부모 프로세스의 설정 캐시에서 찾고, 고칠지 두고 갈지 정한 기록이다.
-
중복 판정을 원문 완전 일치로
정규화한 이름으로 중복을 막다가 다른 상품이 묶인 사례에서, 막는 것과 알리는 것을 갈라 정한 기록이다.
-
스케일링 기준은 액세스 로그에 있다
대수를 정하기 전에 시간대별 부하를 재고, 예약과 추적을 병행하며 지정 가능한 범위까지 확인한 기록이다.
-
캐시를 지우고 재시작하는 것이 답일 때
지우고 재시작으로 풀린 배포 문제의 원인을 캐시 생성 시점에서 찾고, 확인과 기록까지 절차로 만든 기록이다.
-
높이 대신 고정한 아래
계산한 높이가 조건에 따라 어긋나던 화면을 배치 구조로 바꾸고, 동적 높이와 위치 복원까지 다룬 기록이다.
-
지운 DNS와 계속 도는 동작
삭제를 죽음으로 단정한 추론을 실측으로 끊고, 이름 해석 경로가 여럿이라는 것을 확인한 기록이다.
-
범위를 적고 시작하는 스윕
일괄 치환에서 다른 시스템과 문자 단위로 결합된 값을 가려내고, 제외 범위와 이유를 함께 남긴 기록이다.
-
의미의 정본은 코드다
공통 코드를 옮긴 뒤 원본에서 거꾸로 훑어 다섯 가지 어긋남을 찾고, 의미의 정본을 코드로 잡은 기록이다.
-
중복되는 말단 코드
계층 코드의 말단이 트리 전체에서 중복되는 것을 확인하고, 전체 경로로 대조해 신규만 뽑은 기록이다.
-
아무도 강제하지 않으면 안 깨진다
변환 생성 조건을 바꾸기 전에 의존 관계를 세고, 변경의 자유도와 반대 방향의 부담을 함께 확인한 기록이다.
-
모양이 달라도 오는 200
요청이 성공했는데 화면이 비던 원인을 응답 모양에서 찾고, 타입 선언과 실제 응답을 라우트 단위로 대조한 기록이다.
-
알아서 퍼지지 않는 변경
대량 변경 뒤 자동 전파를 전제했다가 커버리지를 재고, 배치의 실제 대상과 발화 조건을 확인한 기록이다.
-
비교할 수 없는 것을 비교하면
조회 스펙과 등록 스펙의 필드를 대조하려다 리소스가 다른 것을 확인하고, 비교 범위를 좁혀 확정한 기록이다.
-
하나씩 빼서 가른 원인
여러 계층을 거치는 느린 응답에서 바깥부터 하나씩 빼며 구간을 좁히고, 재현 조건을 먼저 고정한 기록이다.
-
영향 범위와 활성 건수
영향 범위를 전체 건수 하나로 답했다가 기준별로 다시 세고, 시험과 백업의 기준을 갈라 정한 기록이다.
-
쿼리 하나로 파이프라인 검증하기
두 컬럼 조합으로 실행 여부와 성패를 판정하고, 실패 0이 두 단계를 함께 검증한 구조를 정리했다.
-
도착한다는 전제를 조회로 확인했다
발송 로그가 전부 성공인데 못 받는다는 문의를 응답 확인과 단계 분리로 풀어낸 기록이다.
-
데이터로 가르는 책임 소재
입력 분쟁을 데이터로 판정하기 전에 저장 순서를 코드로 확인하고, 근거를 회신에 함께 적은 기록이다.
-
다른 곳에 있던 방아쇠
취소 코드에 없던 외부 전송의 호출 지점을 역추적하고, 구조적으로 불가능한 건을 회신으로 닫은 기록이다.
-
이름이 같은데 다른 것
같은 이름의 분류가 두 트리에 병존하던 상황에서 이름 기반 판단을 버리고 최소 변경으로 해결한 기록이다.
-
복제가 데려가야 하는 것들
상품 복제에서 무엇까지 복제할지를 정하고, 그대로 두면 안 되는 값과 분류 강제까지 다룬 기록이다.
-
한 겹 대신 여러 겹
화면 한 겹으로 막던 권한을 층마다 다르게 나누고, 두께와 조회 비용을 분리해 다룬 기록이다.
-
고치다 떨어뜨린 검증분
반복 실패의 원인이 대상이 아니라 재작성 과정에 있었던 경위와, 그 뒤에 표준으로 삼은 대조 절차다.
-
게이트가 둘일 때의 절반 통과
내부 상태와 외부 전송을 각각 통제하는 두 플래그를 확인하고, 진단에서 배제한 것까지 남긴 기록이다.
-
검색으로 안 잡히는 잠금
갱신 코드가 없는데 발생하던 잠금 경합의 원인을 제약조건에서 찾고, 진단 순서와 결함의 층을 정리한 기록이다.
-
무엇을 허용해야 하나
허용 목록의 대상을 프록시에서 목적지로 바꾸고, 실제로 막는 계층이 어디인지까지 확인한 기록이다.
-
연동 방향을 먼저 확인한다
이름이 맞아 보이는 연동 후보의 흐름이 반대였던 사례와, 사용 현황을 설정 수가 아닌 이력으로 세게 된 근거다.
-
후처리를 어디에 넣나
두 단계로 나뉜 처리에서 완료 시점을 다시 잡고, 경로마다 다른 갱신 조건을 전제로 쓰는 방법을 정리했다.
-
한 번도 채워진 적 없는 컬럼
이름과 주석이 맞는 컬럼이 실제로는 죽어 있던 사례에서, 사용 여부 판정과 정리 대상 관리 방식을 정리했다.
-
돌아가는 서비스의 컬럼을 암호화하며 정한 순서
서비스를 멈추지 않고 평문 컬럼을 암호화하기 위해 검색 요건과 단계와 키 보관을 각각 나눠서 정한 기록이다.
-
정규식 파싱이 놓치는 설정 형식
설정 값을 정규식으로 뽑을 때 형식 차이가 만드는 빈 값과, 그 빈 값이 기본값으로 동작하는 위험을 정리했다.
-
규격 대조가 배제한 원인 후보
위임 전 규격 대조로 원인 후보 하나를 배제하고, 그 과정에서 결과물의 생성 알고리즘까지 확정한 기록이다.
-
조건을 더해도 인덱스를 못 타는 형태
인덱스가 있는데도 전체를 읽는 조건의 형태를 다섯 갈래로 나누고, 각각의 대응과 확인 순서를 정리한 과정이다.
-
무한 반복이 된 자동 재시작
두 계층이 함께 살리던 컨테이너의 무한 재시작을 정리하면서, 죽는 원인과 상한과 종료 코드까지 함께 다룬 과정이다.
-
목록에 섞여 있던 내부 API
무한 스크롤 때문에 브라우저가 필수라고 보던 설계를 요청 관찰로 뒤집고, 직렬화 제약을 없앤 과정이다.
-
이미지 하나에 서빙 경로 셋
본문에 박히는 이미지 주소가 프록시 경유임을 확인하고, 등록 시점에 고정되는 주소가 만드는 영구 의존과 그 대안을 정리한 과정이다.
-
깨끗한 것과 최신인 것
인계 문서의 워킹 트리 깨끗이라는 관측을 최신으로 읽었다가 낡은 클론임을 확인하고, 승인된 조치를 다시 정한 과정이다.
-
이력이 없는 정상 흐름
환불 이력이 없는 것을 누락이 아니라 미기록으로 설명하고, 이력을 만드는 근본 대응 전에 정산 영향을 먼저 확인한 과정이다.
-
강제한 인덱스가 만든 지연
옵티마이저가 인덱스를 안 쓰는 이유를 매칭 건수로 확인하고, 강제 대신 복합 인덱스로 푼 뒤 강제를 마지막 수단으로 둔 과정이다.
-
설정 옆에 근거를 적는다
기본값에서 바꾼 열 개 설정에 값과 근거를 함께 적고, 태그로 커스텀 항목을 구분해 전수 확인이 되게 만든 과정이다.
-
같은 성공 경로의 다른 응답
결과가 없을 때만 다른 형태를 돌려주던 코드를 고치고, 반환 타입과 결과 객체로 호출부의 확인을 강제한 과정이다.
-
값을 비워도 남는 것
값을 비우면 해결된다는 제안을 105건을 여러 축으로 쪼개 무너뜨리고, 문제가 우리 쪽이 아니라 외부와의 불일치임을 확정한 과정이다.
-
등식을 만드는 중복 제거 위치
백테스트가 다른 신호를 잴 위험을 중복 제거 위치 확인으로 닫고, 그 등식을 깨뜨릴 리팩터링을 주석으로 막은 과정이다.
-
할인 셋, 저장소 셋
할인 세 종류를 가르고 담당자 소속으로 판별하되 판별이 막히는 건은 분포로 우회해, 정상 설정을 지우지 않은 과정이다.
-
음수 재고가 실재한다
재고가 0인지 비교하던 조건을 그대로 옮기려다 음수 재고의 실재를 세어 확인하고, 합계가 실체를 왜곡하는 구조까지 정리한 과정이다.
-
기록을 정정한 실측
기존 문서의 분류 개수와 식별자에 대한 비판이 실측과 달랐던 것을 확인하고, 비로그인 검증으로 계정 위험 없이 구조를 확정한 과정이다.
-
옮길 것이 없는 이관
매핑을 컬럼에서 못 찾아 스키마에서 테이블을 검색해 찾고, 73건 중 66건이 옮길 대상 자체가 없다는 것을 확인한 과정이다.
-
조회 경로를 정하는 컬럼
월별 조회 엔드포인트를 설계하면서 컬럼 위치와 인덱스가 조회 경로를 정하고 용도에 따라 기준 축이 갈린다는 것을 확인한 과정이다.
-
청크마다 반복되는 즉시 로딩
메모리를 줄이려 나눈 청크가 쿼리를 다섯 배로 늘린 것을 확인하고, 프레임워크 소스로 호출 순서까지 확정한 과정이다.
-
옮기기 직전 상태의 기록
이관 후 느려졌다는 말에 비교할 값이 없던 경험 뒤로, 옮기기 전 다섯 항목을 재고 그 기록이 되돌릴 때도 쓰인 과정이다.
-
대상마다 다른 저장 자리와 형식
채널마다 다른 것이 열네 곳에 흩어져 있던 것을 한 줄짜리 규격 표로 모으고, 종료된 채널까지 다루는 방법을 정리한 과정이다.
-
채널 이름 하나, 시스템 둘
확인 없이 답했다가 재조사해 한 채널 이름 아래 클라이언트가 둘임을 찾고, 어느 쪽이 사는지는 로그로 확정한 과정이다.
-
뼈대 비교로 공통 뽑기
비슷한 산출물이 여럿이면 뼈대를 비교해 공통을 뽑는다.
-
이름으로 리소스를 판단하지 않는다
자동 감사가 뽑은 정리 후보 셋이 전부 반대였던 것을 정정받고, 감사 결과를 확인 필요 후보로 내는 형태로 바꾼 과정이다.
-
검색 결과와 DB가 다를 때
검색 전용 색인을 따로 두면서 생긴 어긋남의 순간들을 유형별로 다루고, 밀림 감지와 무중단 재색인까지 정리한 과정이다.
-
실제로 읽히던 두 컬럼
연관 다섯 테이블을 같이 고칠 뻔했다가 전송 코드가 읽는 컬럼만 확인하고, 게이트로 오해할 뻔한 플래그까지 확인한 과정이다.
-
같은 증상의 네 가지 모양
취소 대기 292건을 채널과 주문별로 분해해 원인이 셋으로 갈린 것을 확인하고, 대응을 각각 다르게 잡은 과정이다.
-
안정성을 정하는 드라이버 계층
설정 화면만 보고 다 봤다고 한 뒤 드라이버 계층을 빠뜨렸다는 지적을 받고, 워크로드에 따라 권고가 반대인 항목까지 정리한 과정이다.
-
중복을 만드는 철회 후 재요청
주문 중복이라는 문의를 클레임 전이 이력에서 풀고, 코드 미확인 부분을 미검증으로 표시한 과정이다.
-
커밋과 배포 사이
커밋 존재만으로 배포를 판단하지 않고 코드와 이미지 빌드 시각과 외부 실적 세 축을 교차해, 과제 자체를 다시 가른 과정이다.
-
인증처럼 보이는 범위 불일치
등록만 성공하고 수정과 중지만 실패하는 패턴을 조회 범위 불일치로 확정하고, 잠재 대상 1,300여 건까지 센 과정이다.
-
우리 밖에서 끝난 결제
브라우저 복귀에만 의존하던 결제 완료 처리를 서버 통보와 사후 조회까지 세 겹으로 만들고, 대조와 실패 기록까지 붙인 과정이다.
-
unstable에서 패키지 하나만 가져온다
벤더 저장소에 맞는 계열이 없어 불안정 계열을 쓰되 출처 한정 핀으로 번짐을 막고, 그 판단의 근거를 실측으로 붙인 과정이다.
-
컬럼 값과 정책의 대응표
숫자만 있는 컬럼에 딸린 정책을 표로 적으며 코드와의 불일치를 찾고, 정책에 적용 시점을 넣어 과거 재계산까지 맞춘 과정이다.
-
외부 서비스 키의 소유 프로젝트
용도를 모르는 외부 서비스 키 다섯을 앞자리 대조와 사용 기록으로 가려내고, 지우기 전에 막아 보다 숨은 실패를 발견한 과정이다.
-
드롭다운에서 조용히 사라지는 항목
가장 유력한 가설을 컨트롤러와 동일한 쿼리로 배제하고, 원인을 못 찾은 조사도 종결 리포트로 남긴 과정이다.
-
원인을 확정한 시각 뭉침
사전 스냅숏 없이 갱신 시각 분포만으로 전송 기인성을 확정하고, 무사고 실적을 안전 근거로 삼지 않기로 한 과정이다.
-
상태 변경 하나가 만든 수만 건
건별로 맞는 관찰자 동작이 대량 처리에서 건수만큼 반복돼 필요 없는 작업 12만 건을 만든 것을 고친 과정이다.
-
원인이 아니었던 회귀
메모리 초과의 범인으로 지목한 변경이 전체의 8퍼센트뿐임을 실측으로 확인하고, 겨냥할 대상을 비중으로 다시 정한 과정이다.
-
둘을 빠뜨린 하드코딩 목록
한 건 문의에서 시작해 저장소에 없는 일회성 배치의 하드코딩 목록 누락을 찾고, 전사 5천여 건 규모를 확인한 과정이다.
-
저장된 값은 다음 배포용이다
설정 어긋남 검사기가 지금 상태가 아니라 다음 배포 후 상태를 보고 있다는 지적을 받고, 검사가 못 잡는 범위까지 명시한 과정이다.
-
값은 같고 중복은 아닌 것
값이 전부 같아 중복으로 보이던 취소 두 건이 서로 다른 라인의 것이었음을 피벗 매핑으로 확인하고, 앞선 판단까지 정정한 과정이다.
-
다시 돌지 않은 초기화 스크립트
값을 바꿔 재실행을 유도하는 흔한 기법이 통하지 않은 이유를 갱신 방식에서 찾고, 이전 관찰의 한계까지 함께 적은 과정이다.
-
이상이 아니었던 0행
백업 스냅숏에서 나온 예상 밖의 두 값을 각각 확인해 정상임을 밝히고, 그 판단을 반복 배치의 기록으로 남긴 과정이다.
-
설정이 쌓인 층의 지도
고쳐도 안 바뀌던 설정의 출처를 여섯 층으로 그려 찾고, 층마다 무엇을 둘지 정해 겹침을 줄인 과정이다.
-
하위 할인을 지우는 상위 수정
전 필드 복사 전파가 할인 없음까지 전파해 하위 할인을 지우는 구조를 확인하고, 정책을 먼저 정해야 한다는 결론까지 낸 과정이다.
-
프로젝트별 설정 차이를 비교했다
여러 Laravel 프로젝트의 환경 설정을 키 단위로 모아 비교하고, 공통으로 뺄지 그대로 둘지를 정한 기록이다.
-
처음 보는 대형 코드베이스를 읽는 순서
문서 없는 수천 개 파일을 전부 읽을 수 없어서 데이터와 진입점과 한 흐름과 이력과 오류 순으로 읽는 순서를 정한 과정이다.
-
끝난 것과 남은 것의 한자리
끝난 것만 보고해 다 됐냐는 질문에 답을 못 한 뒤, 지금 상태와 되돌림 비용과 완료 예정일을 한 표에 담은 과정이다.
-
맞는 것을 확인하는 헬스체크
후속으로 미뤄 둔 검증이 실은 선행 조건이었다는 지적을 받고, 하나의 엔드포인트로 게이트와 동작 검증과 로그 노이즈를 함께 해결한 과정이다.
-
헬스체크가 닿지 않는 프록시 포트
대상 유형 선택이 클라이언트 IP 보존을 가르고 포워드 프록시에는 일반 헬스체크를 못 보낸다는 것을 확인해, 설계 결정을 줄줄이 정한 과정이다.
-
장애 전환 지연 공식
네 설정값을 하나의 공식으로 묶어 최악 전환 지연을 계산하고, 대칭 설정과 기본 계정 삭제까지 함께 정리한 과정이다.
-
직접 접속이 아니었던 구성
연결 거부를 네트워크 문제로 보고 뒤지다 대상이 호스트 포트를 게시하지 않는다는 것을 확인하고, 인프라의 일관된 패턴을 따른 과정이다.
-
반증된 가설과 막힌 검증 경로
결정적 표본으로 가설을 반증하고 새 가설의 검증 경로마저 막힌 상태를 그대로 기록해, 다음 사람의 할 일을 정한 과정이다.
-
상한을 산술로 계산한다
발동한 적 없는 안전망을 표본과 산술 상한 양쪽으로 확정해 제거하고, 표본 편향을 중간에 잡아낸 과정이다.
-
백로그를 만든 스킵 규칙
애매하면 스킵한다는 안전해 보이는 규칙이 정상 건을 영구 미처리로 만든 것을 과거 성공 사례 조회로 확인한 과정이다.
-
부분 일치가 인덱스를 못 탔다
상품명 부분 일치 검색이 인덱스를 못 타 느리던 것을, 복합 인덱스 조정과 OpenSearch 이관을 비용까지 놓고 견줘 정한 기록이다.
-
채널 라벨과 우리 모델의 거리
가능하다고 답한 정합 전환이 상태 모델의 전제 때문에 불가능함을 확인하고 정정 회신하면서, 라벨 불일치의 처리 방법을 정리한다.
-
비활성화된 버튼을 우회하지 않는다
화면에 없는 기능을 API로 직접 부르려다 이력에서 의도적 비활성화를 확인하고, 그 이유를 백엔드 코드로 검증한 과정이다.
-
SSE 프록시와 WebSocket 프록시의 차이
주기적으로 끊기던 스트리밍 연결의 원인을 다른 프로토콜용 설정 복사에서 찾고, 계층별 타임아웃까지 정리한 과정이다.
-
영역마다 다른 이관 진행
몇 달째 진행 중이던 이관을 영역별 표로 갈라 담당 공백과 임시 연결과 막힌 영역까지 드러낸 과정이다.
-
돌고 있던 폴백
두 테이블을 다 고치려던 것을 응답 계산부를 읽어 하나로 줄이고, 원본을 안 건드리는 것이 안전이라는 점까지 정리한다.
-
코드 체계 교체에 필요한 대응표
단계 수부터 다른 새 분류 체계로 옮기면서 관계 종류를 담은 대응표를 만들고, 전환 뒤에도 그것이 자산으로 남은 과정이다.
-
교집합에 하나뿐인 버전
손으로 쌓인 패치 스택의 이유를 의존 요구 범위의 교집합에서 찾고, 실제 설치로 확정한 뒤 패치를 전부 없앤 과정이다.
-
값과 판정을 같이 고친다
이름 정정 로직을 넣었는데 복구가 안 된 원인을 앞단 판정에서 찾고, 아무것도 없는 대상으로 통과한 사전 실행까지 짚은 과정이다.
-
안 보이는 주문 유형
주문 조회 API가 특정 유형을 아예 반환하지 않는다는 것을 문답에서 찾고, 연동 구조에 미치는 영향까지 정리한 과정이다.
-
저장할 것과 조회할 것
작업 레코드에 값을 담을지 참조만 담을지를 도메인 기준으로 정하고, 참조가 여는 문제까지 다룬 기록이다.
-
토큰이 만료되고 아무도 안 알려 준다
코드가 처리하는 만료와 사람이 처리해야 하는 만료를 갈라 표로 만들고, 달력과 알림으로 나눠 대응한 기록이다.
-
큐를 공유하는 컨슈머
성격이 다른 작업이 한 큐를 공유해 서로를 막던 구조를 소요 시간 기준으로 나누고 그 대가까지 정리했다.
-
조용히 무시되는 설정 키
이름이 비슷한 설정 키 셋 중 조용히 무시되는 것을 쓴 사례에서, 경고 없음이 근거가 안 되는 이유를 정리했다.
-
넘기기 전 확인 목록
만든 것을 넘기면서 확인한 것과 못 한 것을 나눠 적고, 결정의 이유와 함께 돌려 보는 절차까지 붙인 기록이다.
-
두 번 도착한 메시지
처리를 큐로 미루면서 새로 생긴 중복 배달과 순서와 지연 문제를 각각 어떻게 다뤘는지 정리했다.
-
한 곳뿐이던 메시지 중계
중계 한 대의 재시작으로 붙은 서비스가 전부 멈춘 뒤, 견디는 쪽과 복제 범위와 재시작 절차를 정리했다.
-
다음 사람에게 남기는 것
계약이 끝나 넘길 시스템의 인계 문서를 쓰면서 무엇을 어디에 적을지와 다 못 채운다는 전제로 순서를 정한 기록이다.
-
다루지 않은 토큰 만료 시점
토큰 인증으로 바꾼 뒤 만료 시점에 전부 실패한 원인을 정리하고, 선제 갱신과 실패 분류까지 다룬 기록이다.
-
양쪽을 다 읽는 이관
기능을 다른 시스템으로 옮기면서 양쪽 방식 차이를 표로 잡고, 옛 결과와 대조해 무엇을 지킬지 정한 기록이다.
-
아무도 안 보는 보고서
몇 해째 나가던 일일 요약이 읽히는지 확인하고, 알림과 보고서를 갈라 빈도와 내용을 다시 잡은 기록이다.
-
플래그로 시작해 테이블이 됐어야 했다
예외 하나에 컬럼을 만들었다가 조합에 무너진 구조를 테이블로 옮기면서, 전환 시점의 기준을 정한 기록이다.
-
주인이 없는 시스템을 받았을 때
만든 사람이 없는 운영 시스템을 인수하면서 실체를 먼저 세고, 모르는 것을 모른다고 남긴 기록이다.
-
파일이 커지면 깨지는 것들
큰 파일 업로드가 계층마다 걸리는 지점을 한 번에 훑고, 스트림과 분할 업로드와 정리 규칙까지 정리했다.
-
큐 구성이 바뀌자 소비가 멈췄다
인수받은 미디어 시스템에서 큐 구성을 바꾼 뒤 일부 컨슈머가 조용히 멈춘 것을, 문서와 실제 동작을 대조하며 우회한 기록이다.
-
다른 런타임으로 옮길 때 먼저 보는 것
서비스를 다른 실행 환경으로 옮기면서 코드보다 경계가 작업량을 정한다는 것을 확인하고 순서를 세운 기록이다.
-
설정은 같고 노드 조합만 다르다
설정이 같은 세 포트가 존재하는 이유를 상대의 허용 목록 크기에서 찾고, 신규 연동 절차와 전환 제약을 정리했다.
-
계획을 깬 정상 메서드
데이터를 먼저 바꾸고 전송을 나중에 하려던 계획이 서비스 계층의 부수효과로 깨진 이유와 대응이다.
-
메모리를 쓰는 자리
메모리를 많이 쓰는 배치에서 추측한 원인의 기여를 분리해 재고, 계측 도구의 범위와 지표의 뜻까지 정리했다.
-
죽여도 다시 뜬다
스케줄러가 띄우는 배치를 멈추려다 실제 정지 조건과 복구 순서를 다시 잡고, 검색 자체의 오염까지 걸러낸 기록이다.
-
옵티마이저가 안 쓰는 인덱스
컬럼이 인덱스에 들어 있는데도 안 타던 이유를 선두 컬럼에서 찾고, 조회 빈도로 대응을 고른 기록이다.
-
배치가 정상 경로와 같은 상태를 만들어야 한다
서비스 계층을 우회하는 정리 배치를 짜기 전에 정상 경로가 남기는 것을 세고, 계층별 차이까지 맞춘 기록이다.
-
여러 장비에서 유지한 같은 구조
장비마다 다른 경로와 환경 차이를 한 구조로 맞추고, 어긋남을 확인하는 습관과 장비별 역할까지 정리했다.
-
옮길 것의 명시 목록
전부 옮긴다는 말로 시작한 이관에서 빠진 것이 닷새 동안 나온 뒤, 목록을 명령으로 뽑아 다시 세운 기록이다.
-
무상태 환경에서 파일에 쓰면
배포 대기 중인 기능이 컨테이너 안 파일에 값을 저장하고 있던 것을 찾고, 남은 작업을 다시 나눈 기록이다.
-
우리는 중지했는데 저쪽은 판매 중
중지 상태와 실제 반영이 어긋난 원인을 작업 이력에서 찾고, 정리 절차에 성공 확인 단계를 넣은 기록이다.
-
동시에 실패했다고 원인이 같지 않다
여러 거래처가 동시에 실패한 원인을 공통 컴포넌트가 아니라 값의 출처 역추적으로 좁힌 기록이다.
-
스펙과 다른 API에 맞추기
어댑터를 짜기 전에 실제 응답을 여러 번 받아 문서와 어긋나는 지점을 목록으로 만든 과정이다.
-
설정 파일마다의 역할
설정 파일이 여럿일 때 무엇이 이기는지 확인하고, 역할과 비밀 값 처리와 시작 검사를 정리한 기록이다.
-
저장소가 아니었던 도메인
이미지 주소의 도메인을 저장소로 착각해 헤맨 조사에서 확인 순서를 세우고, 두 실패 유형을 갈라낸 기록이다.
-
소유를 가르는 값
이름 규칙으로 소유를 가르던 구조가 깨진 사례와, 소유를 값으로 옮기면서 중간 성격까지 다룬 기록이다.
-
200이 성공을 뜻하지 않는다
오류를 본문에 담아 보내는 외부 인터페이스에 맞춰 검사를 두 층으로 나누고, 한도와 문자까지 확인한 기록이다.
-
같은 거부의 두 원인
같은 오류 메시지 아래 원인이 둘이었던 사례에서 부류별로 나눠 세고 부분 해결을 그대로 보고한 기록이다.
-
상한치는 수요가 아니다
이전 순서를 정할 근거로 속도 제한 설정을 쓰려다 그 값이 무엇을 재는지 확인하고 한계까지 함께 남긴 기록이다.
-
다시 만들면 멀쩡하던 것도 달라진다
전 기간 재생성 결과를 백업과 비교하려다 바이트 비교를 버리고, 구조와 변동폭 두 축으로 판정을 세운 기록이다.
-
처리 단계의 모듈 구성
한 명령에 뭉쳐 있던 영상 처리를 단계로 갈라 어디서 어긋나는지 좁히고, 입력 다양성까지 확인한 기록이다.
-
자동으로 채워지지 않는 데이터
수집 명령을 돌려도 안 늘어나는 값의 출처를 추적해 자동화 경로가 없다는 사실 자체를 설계에 못 박은 기록이다.
-
로그의 경로를 바꾸면 없던 일이 생긴다
경로 일괄 치환의 대상이 코드와 설정뿐인 이유와, 되돌릴 수 없는 치환을 가려내는 순서를 정리했다.
-
로그인과 인증 사이
화면의 로그인과 인터페이스 인증이 분리돼 있던 구조를 확인하고, 계획서의 부정확한 표현을 바로잡은 기록이다.
-
브로커를 완충재로 쓸 때
완충 목적의 큐에서 길이 절대값 알림이 계속 울린 이유와, 관계와 대기 시간으로 지표를 바꾼 과정이다.
-
세션보다 오래 사는 토큰
무상태 인증에서 로그아웃이 성립하지 않는 이유와, 갱신 토큰 분리와 회전으로 그 간극을 다룬 기록이다.
-
체인을 이긴 관계 테이블
연결 체인을 고쳤는데도 옛 자격 증명으로 나가던 원인을 폴백 구조에서 찾고, 점검 순서를 다시 정한 기록이다.
-
블루투스로 장치를 제어하는 앱을 만들며 배운 것
서버를 거치지 않고 앱이 장치와 직접 통신할 때 전제가 어떻게 달라지는지를 다섯 갈래로 정리했다.
-
인용한 목록이 그 목록이 아니다
설정 목록과 실제 순회 대상이 달랐던 사례에서 커버리지 진술을 바로잡고, 감시의 한계까지 정리했다.
-
일곱 달 요청과 한 달치 로그
보존 정책이 조사 범위를 정한다는 것을 확인하고, 확인 불가를 결론으로 적으면서 다른 소스를 찾은 과정이다.
-
컬럼 하나로 답이 안 나온다
정산 반영 여부를 컬럼 하나로 판정하려다 경로가 셋인 것을 확인하고 판정 규칙을 다시 세운 기록이다.
-
들여왔다고 켜진 게 아니다
소프트 삭제가 켜진 줄 알았던 모델이 실제로는 하드 삭제였던 사례와, 우회 삭제 절차를 정리했다.
-
한쪽만 막으면 다른 쪽으로 샌다
전파에 확인 절차를 붙이다 같은 결과를 만드는 둘째 경로를 찾고, 경로를 빠짐없이 세는 방법을 정리했다.
-
표본에 섞인 삭제 표시
무작위 표본이 실제와 다른 값을 낸 이유를 추적하면서 조건이 빠질 자리를 구조적으로 없앤 과정이다.
-
스스로 정할 범위의 경계
다음 할 일을 매번 묻느라 멈추던 시간을 없애기 위해 결정 범위와 목록과 끼어들기 규칙을 정한 기록이다.
-
초기값 상수가 라우팅을 정한다
조건부 삽입 때문에 낡아도 증상이 안 보이던 초기 데이터 상수를 정리하고, 주석을 규칙으로 바꾼 기록이다.
-
방금 넣은 걸 못 읽는다
읽기와 쓰기가 갈린 구성에서 삽입 직후 조회가 간헐적으로 실패한 이유를 세션 단위까지 내려가 확인한 기록이다.
-
부수효과를 원하는지로 도구를 고른다
일괄 정정에서 옵저버 발화가 2차 사고가 되는 구조를 보고, 도구 선택 기준을 전파 의도 하나로 정리했다.
-
검증과 매핑이 다른 필드를 본다
조회 응답을 등록 입력으로 쓸 수 없던 이유와, 코드 추론보다 실제 성공 요청이 권위 있는 답인 근거다.
-
두 곳에 살아 있던 매핑
같은 매핑이 코드와 데이터베이스에 각각 있어 서로 다른 항목을 누락하던 구조와, 그 어긋남을 다루는 방법이다.
-
문서에 없고 동작에만 있는 규칙
외부 반품 연동에서 문서에 없는 규칙을 관측으로 모으고, 그 목록을 다른 사람에게 대조받은 과정이다.
-
부르지 말고 로그로 확인한다
검증용 호출이 비싼 경로를 이미 흐르는 트래픽의 로그로 확인하고, 판정 기준을 먼저 정한 기록이다.
-
이미 있던 길
불가능하다고 답하려던 문의가 데이터 분포를 보고 뒤집힌 과정과, 그 뒤에 남은 활성 여부 확인을 정리했다.
-
억지 대분류와 번호 접두의 배제
미리 만든 대분류가 안 맞아 기타로 몰린 문서 구조를 실제 갈래로 다시 잡고, 번호와 깊이를 정리한 기록이다.
-
망 안에 없으면 제약이 반대가 된다
알림 함수가 어느 망에도 붙어 있지 않다는 사실에서 기능 배치와 보존 기간을 도출한 과정이다.
-
수락했지만 실행은 못 한다
요청을 받는 조건과 처리하는 조건이 갈려 있어 실패가 뒤로 밀리던 구조를 노출 조건까지 올려 맞춘 기록이다.
-
완료가 끝났다는 뜻이 아닐 때
실패 표시만 훑는 전수조사가 놓친 부류를 찾고, 판정을 상태값이 아니라 결과물의 존재로 바꾼 과정이다.
-
착수 전에 미해결을 세어 본다
설계 문서와 코드를 대조해 미해결 여섯 항목을 세우고, 전부 닫지 않고 수직 슬라이스로 착수한 기록이다.
-
이름만으로 판정하지 않은 파일
이름 충돌만 보던 업로드 저장에 내용 해시와 형식 검사와 저장 확인을 순서대로 붙인 과정이다.
-
다시 하려면 무엇이 0이어야 하나
반복 테스트를 위해 중복 검사 조건을 읽고, 참조 역순 삭제와 공유 자원 확인까지 절차로 만든 기록이다.
-
검색이 만든 목록과 요구사항의 거리
옛 시스템의 기능 목록을 코드에서 뽑았을 때 빠지는 것과 남는 것을 로그와 관찰로 메운 과정이다.
-
화면에 없고 전송에는 있던 값
화면 목록과 전송 목록이 각자 다른 조건을 쓰고 있던 사례에서, 잔재를 가르는 기준과 삭제 절차를 정리했다.
-
고정값인 줄 알았는데 매번 다시 만든다
우회안이 기댄 전제를 코드로 확인하다 정반대 사실을 찾고, 그 사실을 이점으로 뒤집어 쓴 과정이다.
-
저장된 필드의 의미를 바꾸면
집계 필드의 의미를 건수에서 금액으로 바꾸는 변경이 과거 데이터에 남기는 문제와 세 선택지를 정리했다.
-
구조만 보고 한 분류의 오류
확장자와 크기로 나눈 분류가 어긋난 이유와, 내용을 읽는 비용을 감당하면서 정확도를 올린 방법을 정리했다.
-
스키마 변경은 코드 배포가 아니다
병렬 배포에서 마이그레이션이 한 그룹에서만 도는 구조를 확인하고, 스키마 적용을 배포에서 분리한 기록이다.
-
확정과 제안의 표시 구분
설계 문서에서 확정과 제안과 미정을 표시로 나누고, 추정과 뒤집힌 결정까지 남긴 기록이다.
-
같은 종류 작업의 같은 모양
여러 건을 각기 다른 형태로 적다가 한 틀로 통일하고, 막힌 것과 결정을 분리해 관리한 기록이다.
-
있다는 것이 맞다는 것은 아니다
이름의 존재만 확인하던 점검이 규격 불일치를 통과시킨 사례에서 검사 축을 나누고, 차이와 결함을 구분한 기록이다.
-
이미 복구돼 있던 상태
실패 기록만 보고 장애로 판단할 뻔한 건에서 재시도 구조를 확인하고, 복구 구간의 가시성 문제를 남긴 기록이다.
-
느린 것이 아니라 줄 선 것
자원에 여유가 있는데 느리던 처리를 순차 구조에서 찾고, 주석의 근거를 실측으로 확인한 기록이다.
-
한 레이어만 보면 답이 안 나온다
내부 상태와 연동 기록이 어긋난 건을 두 레이어로 나눠 보고, 회신 직전 재조회와 근본 대응까지 정리했다.
-
그 NULL이 정말 이상한가
비어 있는 값이 원인처럼 보이던 건에서 정상 건을 대조군으로 세우고, 조치 전 확인 항목을 정한 기록이다.
-
변환은 즉시 끝나지 않는다
요청 안에서 미디어를 변환하던 구조를 큐로 분리하며 중간 상태와 실패 분류와 원본 보관을 어디까지 둘지 정한 기록이다.
-
스토어 심사가 실제로 보는 것
앱 반려 사유가 기능이 아니라 설명과 확인 가능성이었던 경험에서 배포 경로와 일정까지 다시 잡은 기록이다.
-
늦게 대답하는 장치
무선 장치의 응답이 순서와 시간을 보장하지 않는다는 전제로 요청 번호와 타임아웃과 재시도 안전성을 다시 잡은 기록이다.
-
요약 한 줄과 상세 자료
배치 알림의 내용을 받는 사람의 판단 기준에 맞춰 다시 잡고, 긴급도와 중복 억제까지 정리한 기록이다.
-
다시 확인할 때는 다시 재었다
현황 문서를 갱신하면서 전부 다시 재고, 자동 수집과 수기 기록을 나눠 차이 자체를 신호로 만든 기록이다.
-
스트림이 살아 있는지 아는 법
데이터 없음과 연결 끊김이 구분되지 않던 스트림에 주기 신호와 재연결 규칙과 이어받기를 붙인 기록이다.
-
건너뛴 조건의 전체 목록
조용히 건너뛰던 정산 배치에 사유를 남기게 하고, 이유별 집계로 데이터 문제와 처리 방침까지 드러낸 기록이다.
-
인코딩된 이름이 실제 키가 되는 자리
목록 도구가 디코딩해 보여 주는 바람에 판정이 틀렸던 조사에서, 원시 키 확인과 정상화 선택지를 정리했다.
-
파일명이 같아도 경로가 갈린다
복제본 이미지가 안 보이던 원인을 경로 규칙에서 찾고, 완료 판정을 파일 존재까지 넓힌 기록이다.
-
나갔다 오면 사라지던 진행률
실시간 전송 한 채널에 상태 복원까지 얹었다가 재접속마다 화면이 비던 구조를 조회와 갱신으로 나눈 기록이다.
-
확인하려던 요청이 만든 것
존재 확인 요청이 생성을 촉발해 관측이 무효가 된 사례와, 조회의 부수효과를 확인하는 순서를 정리했다.
-
0건 수집이 0건 존재는 아니다
인증 실패가 0건 수집으로 보이던 구조를 고치고, 실패 알림 대신 성공 부재 알림으로 바꾼 기록이다.
-
메시지 하나가 큐를 멈춘다
파싱 실패 한 건이 뒤에 쌓인 전부를 막던 정지를 세 층위로 나눠 고치고, 발효 시점의 성질까지 정리했다.
-
보안 점검 항목을 우리 코드에 대 보면
표준 점검 항목을 우리 코드에 하나씩 대 보면서 걸린 다섯 가지와 그 대응의 맞바꿈을 정리했다.
-
절반을 제외하던 도구
복구 도구가 전부 정상이라고 낸 결과의 범위를 확인하고, 제외된 쪽을 별도 조회와 파싱으로 확인한 기록이다.
-
훅 입력에 없던 작업
훅 스크립트의 전제를 실제 입력으로 검증하다 문서에 없는 제약 셋을 찾고, 조용한 오류의 성질을 정리했다.
-
있었는데 안 찾아본 것
미구현이라는 전제로 착수했다가 이미 도는 배치를 찾고, 없다와 안 된다를 갈라 범위를 다시 잡은 기록이다.
-
한 작업으로 묶는 기준
서버 다섯 대를 한 작업으로 묶었다가 하나에 막혀 전체가 밀린 뒤, 묶고 나누는 기준을 정한 기록이다.
-
한도에 닿기 전에 정리하는 순서
지표 한도가 차서 새 지표가 안 들어가던 상황을 정리하고, 한도 목록과 사전 경고까지 만든 기록이다.
-
프리셋 분해로 얻은 속도
튜닝할 것이 없다고 단정했던 인코딩 설정의 프리셋을 개별 옵션으로 분해해 재고, 그 단정을 정정한 기록이다.
-
인덱스로 좁히고 나서 훑는다
시간 제한에 걸리던 로그 검색을 조건 순서로 풀고, 0을 확증하는 방법과 세대 교체 구조까지 확인한 기록이다.
-
막힌 것이 아니라 시작 안 한 것
구현이 없는 이유를 조사 부족으로 보고 조사 계획을 세우려다, 미착수임을 확인하고 스코프를 다시 잡은 기록이다.
-
메뉴와 코드의 차이
관리 콘솔 커버리지 점검에서 구현 수와 등재 수를 세고, 확인한 것과 세기만 한 것을 나눠 적은 기록이다.
-
요청 생성 이후의 남은 일
접수만 되고 처리가 멈춰 있던 구조에서 대기 감시와 워커 생존 감시를 나눠 붙인 기록이다.
-
전부를 막던 상태 코드 하나
네 채널의 이슈를 한 쿼리로 묶어 두 그룹으로 가르고, 캡처와 실제 상태의 시점 차이까지 확인한 기록이다.
-
로그를 모으는 데 드는 비용
로그 수집을 붙인 뒤 서버가 느려진 원인을 파싱 위치에서 찾고, 보낼 것과 보관 기간과 장애 대응까지 정리했다.
-
큐에 넣는 쪽의 부재
잡 코드가 전부 올바른데 아무것도 안 돌던 이유를 호출부 개수에서 찾고, 도달 가능성을 확인 순서로 만든 기록이다.
-
프로필을 나누자 로그인까지 갈렸다
브라우저 프로필을 나누자 로그인 세션까지 갈린 원인을 저장 위치에서 찾고, 계정 격리를 어디까지 할지 대가를 놓고 정한 기록이다.
-
마이그레이션이 두고 간 이력
이관에서 빠진 이력이 계속되는 수작업을 만든 구조를 확인하고, 증상 대응과 근본 해결을 함께 남긴 기록이다.
-
뒤 클레임을 막은 앞 상태
로그가 비어 있는 실패를 상태 데이터로 추론하고, 수집과 생성을 갈라 절차를 세우면서 추정 표기까지 남긴 기록이다.
-
화면의 삭제가 부르는 것
화면의 삭제 버튼이 다른 계층의 조건부 호출이었던 사례에서, 조용한 실패와 실행 판단의 근거를 정리했다.
-
의도된 차이와 동기화 대상
두 장비의 설치 목록 차이를 맞추려다 용도를 확인하고, 유지할 차이와 동기화 대상으로 나눈 기록이다.
-
새 연동 뒤에도 남은 옛것
정책을 새로 연동하면 끝날 줄 알았던 작업에서 버전 분기를 확인하고, 남은 두 단계를 절차로 만든 기록이다.
-
상대가 보는 하나뿐인 주소
허용 주소 목록을 접속 빈도로 정리하려던 계획이 무너진 이유와, 판단 기준을 코드 경로로 바꾼 기록이다.
-
앱이 실제로 만드는 SQL로 봐야 한다
인덱스를 넣고도 체감이 없던 이유를 실제 생성 쿼리에서 찾고, 거짓 전제와 조건 선택도까지 확인한 기록이다.
-
로그인 계정을 한 곳으로 모으면
시스템마다 흩어진 계정을 한 곳으로 모으면서 남은 계정을 세고, 절차와 확인과 비상 경로까지 정리한 기록이다.
-
묻기 대신 밀어 주기
주기적 조회의 부하와 신선도가 맞바꿈 관계인 것을 확인하고 밀어 주는 구조로 바꾸면서 생긴 문제들을 정리했다.
-
선행 컬럼이 없으면 인덱스가 죽는다
대량 스캔이 붙은 쿼리의 원인을 인덱스 정의와 대조해 찾고, 무중단으로 인덱스를 추가한 기록이다.
-
서비스가 둘이면 나가는 길도 둘이다
같은 상대를 부르는 두 서비스의 나가는 경로가 달랐던 사례와, 정의와 소스와 망 설정을 순서대로 본 기록이다.
-
키가 아니라 인코딩된 값
문의에 적힌 번호가 내부 키가 아니라 인코딩된 값이었던 사례에서, 판별 방법과 묶어 해석한 가정의 위험을 정리했다.
-
기준 미달과 음수는 다르다
카운트가 맞는데도 정의가 어긋나 있던 목록을 샘플 행으로 잡아내고, 목록 검증 절차를 바꾼 기록이다.
-
검증기 둘의 교집합
성격이 반대인 검증 레이어 둘을 확인해 최종 허용 문자를 교집합으로 정리하고, 조건부 생략까지 담은 기록이다.
-
엉뚱한 곳을 고치던 성능 조사
추측으로 최적화했다가 나아지지 않은 뒤 구간별로 재고, 평균 대신 분포를 보게 된 과정이다.
-
도구는 껐고 규칙은 남은 상태
부수 기능을 껐는데도 예상 밖 사용량이 섞인 원인을 패턴 둘로 좁히고, 측정의 한계를 명시한 기록이다.
-
로그 문구가 어느 단계인지 알려준다
긴 로그에서 시작 문구 유무로 실패 단계를 가르고, 무해한 문구를 잡음으로 분류해 패턴표로 남긴 기록이다.
-
같은 내용을 다시 보낸 뒤의 변화
필드의 존재만으로 상태가 바뀌는 인터페이스를 만나 요청 빌더의 기본값을 뒤집고, 필드별 표를 만든 기록이다.
-
가설을 전부 배제한 뒤의 확정
승인은 됐는데 전송 작업이 안 생기던 건에서 네 가설을 배제하고 다른 축을 찾아 정상 방어로 판정한 기록이다.
-
조회 한 번으로 안전한지 정해진다
정산 편입 여부를 판정하는 경로를 규명해 세 테이블 탐색을 한 줄로 줄이고, 확정과 추정을 나눠 남긴 기록이다.
-
한 번 고침에 남은 이력 셋
일괄 보정에서 남길 이력을 정상 경로 건과 대조해 개수와 내용을 맞추고, 이름이 거짓말하는 컬럼까지 확인한 기록이다.
-
화면에만 남은 미처리
연동 장애로 읽히던 문의를 상위 상태 확인으로 표시 문제로 판정하고, 조사 방향과 답변을 함께 바꾼 기록이다.
-
삭제하고 다시 만들면 연결이 끊긴다
옵션 갱신에서 삭제 후 재생성이 하위 데이터를 끊는 구조를 확인하고, 제자리 갱신 규칙으로 바꾼 기록이다.
-
실제로 돌려 본 보안 점검 목록
읽고 답하던 보안 점검 목록에 확인 방법과 통과 기준과 대조군을 붙여 실제로 돌려 본 기록이다.
-
큐가 준 순서와 처리가 끝나는 순서
큐가 순서대로 줘도 결과가 뒤집히는 이유를 정리하고, 파티션과 순번을 함께 두어 막은 기록이다.
-
못 읽는 형식은 변환해서 읽는다
자료 형식을 직접과 간접과 미지원으로 나누고, 변환 경로와 도구 경로까지 표로 정리한 기록이다.
-
한 채널에서 깨진 일반화
표본 몇 개로 세운 추출 방식이 전 채널 확인에서 깨진 과정과, 미확인 항목을 구현 전에 닫은 기록이다.
-
제약이 답변에만 있는 API
공식 문서에 없고 질의응답에만 있던 네 가지 제약을 정리하고, 구현 전에 답변을 훑는 순서를 세운 기록이다.
-
아무것도 가르지 못한 컬럼
이름이 동작을 암시하던 타입 컬럼을 전수로 확인해 라벨임을 확정하고, 실제 동작을 정하는 자리를 함께 남긴 기록이다.
-
옮기면서 다시 짠 분류
파일 이관에서 옛 구조를 그대로 가져오지 않고 분류를 다시 짜면서, 대조와 대응표와 유예 기간까지 정리했다.
-
외주 산출물의 목적과 구성
외주 결과물에서 왜 그렇게 만들었는지가 빠져 있던 경험을 절차로 바꾸고, 계정과 인수 회의까지 포함시킨 기록이다.
-
중간에서 멈추는 DDL 스크립트
재실행 가능한 스크립트와 한 번만 되는 스크립트의 차이를 정리하고, 이름과 경고와 제약 시점까지 다룬 기록이다.
-
규제가 컬럼이 될 때
해외 판매 스키마에서 법적 요건이 컬럼과 별도 테이블로 갈리는 기준과, 성격과 정책을 나눈 설계를 읽은 기록이다.
-
보관물에 남겨야 하는 것
설명 없이 보관된 프로젝트를 읽느라 이틀을 쓴 뒤, 보관 절차에 무엇을 함께 남길지 정한 기록이다.
-
파일 사이 참조 관계
검색으로 안 잡히는 참조를 실행 기록으로 모으고, 안 읽힘과 안 쓰임을 갈라 정리한 과정이다.
-
매뉴얼 앞에 공통 동작을 규정하면
매뉴얼 앞에 공통 동작을 한 번 규정한 구성이 반복과 불일치를 없애는 이유와, 캡처와 규정의 수명 차이를 정리했다.
-
웹 루트 아래의 업로드 폴더
운영 가이드의 디렉터리 구조에서 업로드 경로가 웹으로 열려 있는지 확인하고 정리한 기록이다.
-
모든 테이블의 감사 컬럼 네 개
모든 테이블에 같은 감사 컬럼이 반복되는 구조에서 방법별 트레이드오프를 정리한 기록이다.
-
운영에 올린 SNAPSHOT의 대가
당직자용 운영 가이드를 검토하다가 배포 절차에서 되돌릴 수 없는 구조를 발견한 기록이다.
-
한 테이블에 담은 이벤트 로그
여러 종류의 행동 로그를 한 테이블에 담은 설계에서 얻는 것과 잃는 것을 정리한 기록이다.
-
바꾼 기록과 돌린 기록
배치 설정과 실행 기록을 한 표에 담고 있던 것을 성격에 따라 나눠 정리한 기록이다.
-
다섯 번 고쳐도 그대로인 버전
개정 이력은 쌓이는데 버전이 안 움직이는 설계서를 받아 기준부터 정한 기록이다.
-
나란히 적은 현재와 목표
구조 개선 제안이 안 좁혀지던 것을 현재 상태와 목표를 나란히 적어 풀어낸 기록이다.
-
스크립트 사이의 실행 순서
앞 배치가 끝나기 전에 시작해 실패한 것을 시간이 아니라 순서로 묶어 해결한 기록이다.
-
아무것도 측정하지 않은 0건
로그 검색이 0건이라 안 건드렸다고 판정했다가 그 검사에 판정력이 없었음을 확인한 기록이다.
-
utf8이 아닌 utf8
인계받은 스키마의 문자셋과 인덱스와 제약을 자료가 비어 있을 때 정리한 기록이다.
-
파일명이 유일한 메타데이터일 때
협업 상대와 주고받은 산출물 폴더에서 어느 것이 정본인지 파일명으로 못 가린 기록이다.
-
추천 종류마다 나눈 테이블
추천 영역이 여럿인 화면에서 테이블을 나눌지 합칠지를 조회 패턴으로 정한 기록이다.
-
죽은 런타임의 이름이 남은 API
상용 뷰어를 붙인 짧은 통합 페이지 하나에서 드러난 것들을 정리한 기록이다.
-
인계 문서에서 빠지면 안 되는 것
인계 문서의 목차를 무엇을 적을지가 아니라 없으면 막히는 것으로 잡아 쓴 기록이다.
-
고시가 둘 필요한 카테고리
상품 등록 오류가 개별 정정으로 끝날 일이 아니라 구조적 제약이었음을 확인한 기록이다.
-
반복을 넘어 살아남은 변수
첫 글자에서만 결과가 틀리던 함수의 원인이 조건부로만 갱신되는 변수에 있었던 기록이다.
-
프로젝트별 배포 대상 표
배포 후 한 서버만 옛 코드로 돌던 것을 계기로 배포 대상을 표로 만들어 스크립트가 읽게 한 기록이다.
-
크기가 아니라 개수에 비례한 비용
외부 서비스 요금이 여섯 배로 뛴 원인을 비례 관계부터 확정해서 찾아낸 기록이다.
-
경유 지점 뒤의 전수 추적
옛 중계 서버를 없애기 전에 무엇이 그것을 거쳐 가는지 전부 되짚어 확인한 기록이다.
-
열 개였던 쿼리가 하나였다
반복되는 추출 요청에 쿼리를 하나씩 늘리다가 요청의 축을 적어 보고 파라미터 하나로 줄인 기록이다.
-
누구 책임인지를 나타내는 값을 정의했다
연동 실패가 우리 문제인지 상대 문제인지를 매번 열어 보던 것을 값으로 남기게 바꾼 기록이다.
-
단방향 동기화와 반대편의 0
보조 장비에서 한 설정 변경이 단방향 동기화 때문에 반대편에 반영되지 않았던 기록이다.
-
내가 만들지 않은 시스템을 확장한다는 것
오픈소스 학습관리 시스템 위에 기능을 붙이면서 원본을 안 고치고 확장하는 방법을 정리한 기록이다.
-
등록됐다고 연동된 게 아니다
연동 기능을 손보기 전에 등록과 실제 연동이 다르다는 것을 세 곳을 합쳐 확인한 기록이다.
-
옛 자료의 고유 용어를 정의해 뒀다
문서와 코드에 계속 나오는 그 조직 고유의 말들을 정의해 용어집으로 남긴 기록이다.
-
입력이 다르면 달라지는 코드
옵션 코드 불일치 오류에서 코드가 두 갈래로 만들어진다는 것을 직접 계산해 확인한 기록이다.
-
함께 움직인 두 변수
설정값 하나의 효과를 재려던 측정에서 두 변수가 함께 움직여 단독 효과가 안 나온 기록이다.
-
공용 테이블이 활성 입력처가 아니었다
이름이 딱 맞는 공용 테이블의 값이 낡아 있었고 실제 입력처는 따로 있던 것을 코드로 확인한 기록이다.
-
0은 장애가 아니다
수집 감시 알람의 임계를 잡기 전에 그 지표가 무엇을 세는지부터 확정한 기록이다.
-
문서에 없는 실제 경로를 찾아 적었다
문서에 적힌 경로에 아무것도 없어 실제 경로를 찾아내고 대응표로 남긴 기록이다.
-
저장소가 몇 개인지부터 적었다
인계받은 뒤 코드가 어디 있는지 매번 물어보던 것을 저장소 목록을 만들어 해결한 기록이다.
-
예외를 던지니 호출처가 롤백한다
유령 레코드의 원인 후보 하나를 라이브러리 소스와 호출처 전수 조사로 지운 기록이다.
-
단계가 드러나는 폴더 구조
파일 처리 배치의 진행 상태를 DB가 아니라 파일이 놓인 폴더로 드러나게 바꾼 기록이다.
-
한 경로에만 붙은 가드
이미지가 빈 채로 나간 문제에서 막는 장치가 이미 있었고 한 경로에만 붙어 있던 기록이다.
-
클라이언트가 인코딩해 줘서 되던 것
저장소 키가 인코딩된 문자열 그대로 들어간 것이 운영에서는 왜 정상이었는지 확인한 기록이다.
-
복제 구성을 장비와 같이 적었다
복제가 걸려 있다는 것만 알던 상태에서 전체 구조와 장비 정보를 함께 적어 문서로 만든 기록이다.
-
장비에 맞춰 실행 설정을 조정했다
같은 코드를 올린 두 장비 중 한쪽만 느렸던 원인이 장비를 모르는 기본 설정이었던 기록이다.
-
전수 집계가 한 경로만 검증했다
테이블을 전수 집계해 확정한 목록이 실제로는 한 경로만 검증한 것이었음을 뒤늦게 확인한 기록이다.
-
마이그레이션 원본이 살아 있었다
구버전 식별자를 새 마스터로 잇는 처리가 일부 건에서 안 탔던 원인을 자료 구조에서 확인한 기록이다.
-
판마다 다른 파일 형식
기록 파일을 읽는 배치가 일부 파일에서 실패한 원인이 형식 판이 여럿이었던 데 있던 기록이다.
-
메모리 풀이 하나가 아니었다
빌드 서버의 메모리 경고에서 힙을 키우려다 그것과 빌드가 쓰는 자리가 다름을 확인한 기록이다.
-
같은 기능인데 메뉴가 둘이고 로그인이 달랐다
같은 목록을 보는 화면이 두 곳이었고 각각의 접근 검사가 달랐던 것을 하나로 맞춘 기록이다.
-
미리보기가 다른 테이블을 안 셌다
재계산 미리보기의 금액이 다른 테이블의 금액을 안 세고 있어 이중 계상이 될 뻔한 기록이다.
-
실패한 중지가 삭제 밑에 묻혔다
퇴점 업체 상품에서 실주문이 난 원인이 실패한 중지 위에 삭제가 얹힌 데 있었던 기록이다.
-
번호 네 개가 비어 있었다
특정 항목이 안 들어온다는 얘기에서 수정된 것만 가져오는 조회의 빈틈을 확인한 기록이다.
-
태그가 말해 주지 않는 베이스
런타임 이미지 네 버전 중 일부만 갱신이 실패한 원인이 베이스 배포판의 지원 종료였던 기록이다.
-
등록은 롤백되고 수정은 안 된다
업로드를 외부로 넘기기 전에 실패했을 때 DB가 어떻게 되는지를 실패 주입으로 확인한 기록이다.
-
소스에서 거꾸로 스키마를 그렸다
DB 문서가 없는 시스템을 인계받아 코드와 화면과 자료로 스키마를 거꾸로 그려 문서로 만든 기록이다.
-
외부 시스템의 성공 응답을 그대로 믿지 않게 된 이유
성공 응답을 받았는데 상대 쪽에 반영이 안 된 일이 반복돼 응답을 다루는 방식을 바꾼 기록이다.
-
이력에는 생성이라고 찍혀 있었다
이력에 생성으로 찍힌 것이 실제로는 갱신이었고 그것을 다른 방법으로 확인해 가른 기록이다.
-
두 벌 중 하나 고르기
같은 기능을 하는 코드가 두 벌 있는 것을 비교해 하나로 줄이고 그 경위까지 남긴 기록이다.
-
상하 관계와 문자 규칙을 같이 알아야 했다
계층 구조를 맞게 짰는데도 하위가 안 나온 원인이 문자 처리 규칙에 있었던 기록이다.
-
재시작해도 안 도는 저쪽 카운터
잔여량이 남았는데 한도 초과가 쏟아진 원인이 우리 카운터와 저쪽 카운터의 어긋남이었던 기록이다.
-
받아만 오면 도는 개발 환경
개발 환경 구축에 사흘이 걸리던 것을 받아서 한 번 실행하면 도는 상태로 만든 기록이다.
-
다른 테이블에 부과된 페널티
페널티 면제 요청에서 부과 레코드가 이름이 맞는 테이블에 없어 코드를 정독해 찾은 기록이다.
-
화면 이름과 코드 이름의 통일
화면과 코드와 DB에서 같은 대상을 다른 이름으로 부르던 것을 하나로 맞춰 나간 기록이다.
-
에러 응답에 없는 성공 키
전송 실패 6,406건의 로그가 전부 같은 문구였던 원인이 우리 코드의 예외였음을 확인한 기록이다.
-
실측으로 고른 배치 시각
일배치 시각을 새벽으로 잡으려다 부하 지표를 실측해 통념과 반대라는 것을 확인한 기록이다.
-
모듈 단위 경로 정리
규칙 없이 400줄로 늘어난 경로 목록을 도메인 단위로 묶고 이름 규칙을 검사로 만든 기록이다.
-
되살아나는 세 갈래 경로
중지시킨 것이 다시 살아나는 경로가 셋이라는 것을 이력 그룹핑으로 확인하고 함께 막은 기록이다.
-
다른 층에 있던 고칠 자리
경로 생성기를 갈아 끼우면 될 줄 알았던 문제의 해법이 실제로는 다른 층에 있었던 기록이다.
-
검토를 돌 때마다 결과를 적었다
같은 코드를 여러 번 검토하면서 회차마다 본 범위와 찾은 것을 기록으로 남긴 기록이다.
-
마지막으로 보낸 값의 보관
전송은 성공인데 값이 안 맞는 문의를 마지막 전송값 컬럼 하나로 진단하게 만든 기록이다.
-
조사와 만드는 것을 단계로 나눴다
새 연동에서 조사와 구현을 섞어 하다가 둘을 단계로 나누고 조사 결과를 문서로 남긴 기록이다.
-
건수로 갈리지 않는 것
같은 송장이 두 건에 물린 것이 재입력인지 덮어쓰기인지를 시각과 이력으로 가른 기록이다.
-
보고된 슬롯 수와 실제 장착분
메모리 증설 가능 여부를 조회했더니 시스템이 보고한 값이 이론치였음을 세 소스로 확인한 기록이다.
-
화면으로 못 푸는 상태 가드
재배송 송장이 안 들어가는 건에서 처리 흐름의 상태 가드가 막고 있었음을 확인한 기록이다.
-
앞 단계에서 이미 받아 둔 것
처리 흐름이 느린 원인이 앞 단계에서 확보한 것을 뒤에서 다시 가져오는 데 있었던 기록이다.
-
승인이 거른 열두 건
승인을 눌렀는데 작업이 안 나간 것이 오류가 아니라 필터에 걸러진 결과였음을 확인한 기록이다.
-
작업 완료와 대상 상태의 분리
멈춘 작업을 완료 처리하려다 그것이 대상 상태를 바꾸지 않는다는 것을 미리 확인한 기록이다.
-
급할 때의 경로
서버에서 직접 고친 수정이 다음 배포에서 사라진 뒤 급할 때용 경로를 따로 만든 기록이다.
-
멈춘 상태값과 재수집의 부재
품절 처리가 반영 안 됐다는 문의에서 멈춘 것이 물건이 아니라 상태 컬럼이었음을 확인한 기록이다.
-
화면이 만든 것과의 대조
계정 생성을 스크립트로 처리하기 전에 화면이 만든 레코드 한 건과 대조해 여섯 개 필드를 바로잡은 기록이다.
-
DB 수정이 닿지 않는 경계
정책 값을 DB에서 일괄 수정하면 끝일 줄 알았으나 외부에 이미 등록된 건에는 닿지 않았던 기록이다.
-
실행 위치를 전제한 스크립트
정리 스크립트를 다른 자리에서 돌려 엉뚱한 파일이 지워진 뒤 전제를 없애고 안전장치를 넣은 기록이다.
-
다른 컬럼에 있던 금액
조회한 금액이 0이라 누락으로 볼 뻔했으나 값이 다른 컬럼에 있었던 것을 확인한 기록이다.
-
긴 작업의 결정 범위 긋기
2주짜리 작업에서 매번 묻느라 진행이 안 되던 것을 결정 범위를 먼저 그어 해결한 기록이다.
-
단계적 조인으로 좁힌 실패 원인
일괄 작업에서 실패한 544건의 원인을 세 단계 조인으로 확정하고 처리 방안까지 정한 기록이다.
-
수동 재시도 절차
실패로 멈춘 작업을 다시 돌리는 절차를 원인 제거와 리셋과 단건 실행 셋으로 정리한 기록이다.
-
마스터의 의도와 채널의 상태
같은 대상의 상태 컬럼 두 개가 정반대로 갈린 이유와 그 둘의 용도를 구분한 기록이다.
-
원본 설정을 두고 바꾼 것만 아래에 모았다
기본 설정 파일을 직접 고치던 방식을 별도 파일로 바꾸고 적용 여부 확인까지 만든 기록이다.
-
미등록이라 비어 있다
목록이 전부 공란이라는 문의가 정상 동작이었고 그 원인이 식별자 형식이었음을 확인한 기록이다.
-
다시 돌리는 게 무해하지 않았다
재실행이 무해한지 묻는 반문에서 시작해 멱등성을 확인하고 처리분을 명시적으로 제외한 기록이다.
-
노드가 네트워크와 어긋나면 생기는 일들
직접 운영하는 노드가 네트워크보다 뒤처졌을 때 조용히 틀린 값을 주는 것을 알아채는 방법을 정리한 기록이다.
-
옮겨 온 것은 이름에 출처를 남겼다
다른 저장소에서 가져온 코드의 출처를 못 찾아 헤맨 뒤 이름과 기록에 남기게 한 기록이다.
-
OS 업데이트가 아니라 벤더 도구로
목록에 없다고 최신인 줄 알았던 드라이버가 배포 경로 자체가 달랐다는 것을 확인한 기록이다.
-
개수가 아니라 실패로 판정한다
레코드 개수로 깨졌다고 판정한 건들이 실제로는 정상이었음을 응답 확인으로 바로잡은 기록이다.
-
옛 망 구성을 기록으로 남겼다
코로케이션 망 구성을 바꾸기 전에 문서 대신 실측으로 현재 상태를 그리고, 적용 범위를 정해 두고 바꾼 뒤 대조한 기록이다.
-
부분 수정처럼 보이는 전체 치환
부분 수정으로 보이던 외부 창구가 전체 치환이었고 예외 필드까지 확인해 설계를 바꾼 기록이다.
-
처음 등록되는 경로가 넷이었다
필수 값이 없는 행이 어떻게 들어왔는지 추적해 등록 경로 넷의 검사 차이를 정리한 기록이다.
-
저장소 안에 있다는 것과 추적된다는 것
지워도 된다고 기록된 목록을 삭제 직전에 다시 확인해 추적되지 않은 것을 찾아낸 기록이다.
-
상태를 바꾸면 대상마다 할 일이 생겼다
한 번의 상태 변경이 수천 건의 후속 작업을 만들던 것을 작업 목록과 완료 기준으로 정리한 기록이다.
-
한 축이 아니라 쌍으로 분기한다
문서 처리 분기를 한 축으로 잡으려다 쌍으로 열거하게 된 과정과 조용히 틀리는 위험을 정리한 기록이다.
-
종결 처리가 여러 자리에 걸쳐 있었다
종결을 여러 자리에 반영해야 하던 구조에서 빠지는 곳을 없애고 확인까지 만든 기록이다.
-
값 하나를 바꾸면 여러 테이블이 같이 바뀌어야 했다
같은 값이 여러 곳에 복사돼 있던 것을 지금 값과 그때 값으로 갈라 정리한 기록이다.
-
시작할 때 반드시 거치는 자리를 만들었다
화면마다 넣던 로그인 후 검사를 반드시 거치는 한 자리로 모으고 예외를 명시하게 한 기록이다.
-
검사 통과가 완성이 아니다
형식 검사를 통과했다는 것으로 완료를 보고했다가 실제 화면이 설계와 달랐던 것을 정리한 기록이다.
-
암호화 방식을 바꾸면서 옛 값을 어떻게 할지 정했다
암호화 방식 전환에서 이미 저장된 값을 어떻게 다룰지와 옛 방식을 언제 지울지까지 정한 기록이다.
-
허용만 적어 둔 목록은 아무것도 막지 않았다
허용 규칙만 나열된 접근 제어에서 기본 정책을 확인해야 성격이 정해진다는 것을 소스로 확정한 기록이다.
-
실패한 것을 찾아 원인을 고치고 다시 돌렸다
실패한 처리를 다시 돌리려는데 대상을 못 찾던 것을 상태 기록과 사유 분류로 고친 기록이다.
-
남아 있는 것과 백업된 것
디스크에 남아 있다는 것과 이력에 들어 있다는 것을 혼동하다 산출물의 보존 경로를 다시 정한 기록이다.
-
큰 테이블의 진입점
이억 행 표에서 조건 배치 순서로 스캔 범위를 정하고 단계별 건수로 확인한 기록이다.
-
도구가 안 보일 때 무엇을 볼지 정해 뒀다
어제까지 되던 배포가 명령을 못 찾아 실패한 것을 계기로 확인 순서와 전제 명시를 정한 기록이다.
-
실제 발동 빈도를 검증한다
코드 형태로 지목된 장애 원인이 실제로는 한 번도 발동한 적이 없다는 것을 실측으로 확인한 기록이다.
-
자료가 없어져서 코드에서 되살렸다
백업도 없이 사라진 설정 자료를 코드와 계산 결과에서 거꾸로 되살리고 원인까지 막은 기록이다.
-
처리율 저하가 스톨은 아니다
처리율이 급락한 작업을 멈춘 것으로 오판할 뻔한 것을 갱신 시각과 처리 중 대상으로 판별한 기록이다.
-
제한기가 워커 수만큼 곱해진다
자동 확장을 검토하다 속도 제한기의 단일 인스턴스 전제가 이미 깨져 있던 것을 확인한 기록이다.
-
자동 복구가 매분 돌고 있었다
자동 복구가 문제를 계속 가려서 두 달 동안 몰랐던 것을 횟수 계측으로 드러낸 기록이다.
-
키를 돌려 쓰려면 죽은 키를 걸러야 했다
여러 키를 순서대로 돌려 쓰던 구조가 죽은 키를 계속 쓰던 것을 상태별 처리로 고친 기록이다.
-
전환 전에 확인할 셋
같은 전환 요청이 되고 안 되던 이유를 세 조건과 그 순서로 정리해 진단 절차를 만든 기록이다.
-
노드가 밖에서 안으로가 아니라 안에서 밖으로 붙었다
연결 방향 하나가 방화벽과 인증서와 재시도 주체까지 함께 정한다는 것을 확인한 기록이다.
-
채널마다 매핑이 다르다
새 채널을 기존 분류에 넣었다가 조회가 아예 안 되던 것을 실제 값 대조로 바로잡은 기록이다.
-
정렬 없는 first가 엉뚱한 걸 복원한다
로그만 지워서는 원복이 안 되던 구조와 정렬 없이 첫 행을 잡는 복원의 위험을 정리한 기록이다.
-
비슷해 보이는 엔드포인트 셋
이름으로 고른 대량 처리 창구가 잘못된 선택이었음을 지적받고 본문까지 읽어 확정한 기록이다.
-
지우고 다시 만드는 중에 멈추면 더 나빠졌다
집계 갱신이 중간에 멈춰 화면이 통째로 비던 것을 교체 방식과 사전 검사로 바꾼 기록이다.
-
컨테이너에서 뭘 백업하나
이미지를 교체하기 전에 무엇을 보존해야 하는지를 변경분과 마운트 대조로 확정한 기록이다.
-
뒤에서 도는 것이 한도를 다 써 버렸다
공유 한도를 배경 작업이 다 써서 실시간 조회가 거절당하던 것을 몫 배분과 단일 창구로 고친 기록이다.
-
카나리 전에 다른 채널을 센다
한 건으로 먼저 시험하기 전에 다른 채널로 파급될 수 있는지를 세어 실험 설계를 바로잡은 기록이다.
-
상태를 바꾸는 게터
입력한 금액이 다른 화면에서 0으로 보이던 원인이 계산 게터의 부수효과였음을 확인한 기록이다.
-
플래그 하나를 두 기능이 쓴다
서로 다른 두 어드민 기능이 같은 잠금 컬럼을 쓰고 있어 한쪽 조작이 다른 쪽을 뒤집던 것을 규모까지 세어 정리한 기록이다.
-
없는 레코드를 영원히 기다린다
대응 레코드가 없어 대기 상태로 멈춘 건이 시도 횟수도 안 늘어 신호 없이 남던 것을 정리한 기록이다.
-
24시간 멈추면 안 되는 시스템을 맡는다는 것
밤에도 도는 시스템을 맡으면서 배포와 관측과 시각 처리에서 방법을 바꿔야 했던 것들을 정리한 기록이다.
-
매칭은 양방향으로 확인한다
정산 미매칭 5,987건의 원인이 다섯 겹의 규칙이었고 양방향 확인으로 오염을 막은 기록이다.
-
먼저 뜬 것이 나중에 내려가야 했다
시작 순서만 정해 둔 스크립트가 종료에서 오류를 쌓던 것을 의존 역순과 준비 확인으로 고친 기록이다.
-
경로 하나에 근거 넷
연동이 어느 경로로 나가는지를 네 가지 근거로 확정하고 각각이 막는 반론까지 정리한 기록이다.
-
주석 처리가 폐지는 아니다
옛 시스템에서 주석 처리된 스케줄이 폐지가 아니라 이관이었음을 병존 구조에서 확인한 기록이다.
-
백 초쯤 지나면 끊기던 연결
자료가 흐르지 않는 연결을 중간 장비가 끊던 것을 조건을 좁혀 찾고 주기 신호로 해결한 기록이다.
-
단건 실행은 스코프를 안 거친다
대량 재시도를 설계하며 단건 실행이 워커의 조건을 건너뛴다는 것을 확인하고 목록을 파일로 고정한 기록이다.
-
중간 역할은 어느 쪽에도 없다
부정으로 정의한 권한 판정이 중간 역할을 삼켜 필터가 통째로 사라지던 것을 찾은 기록이다.
-
로컬에서만 붙던 서비스
다른 장비에서 안 붙던 저장소를 듣는 주소부터 확인하고 인증과 방화벽 순서를 정한 기록이다.
-
규칙이 시점에 따라 달랐다
두 사람의 기억이 다 맞았던 이유가 시점 차이였고 그것이 자료의 구멍까지 설명한 기록이다.
-
큐 테이블에서 워커끼리 서로 기다렸다
표를 큐로 쓸 때 워커를 늘려도 처리량이 안 늘던 원인과 잠긴 행을 건너뛰는 방법을 정리한 기록이다.
-
상태에 따라 부를 API가 다르다
상태마다 부를 창구가 다르다는 규칙을 문답 자료에서 찾아 분기와 예외까지 정리한 기록이다.
-
저장소마다 커밋 작성자가 달랐다
작성자 설정이 저장소마다 달라 이력이 섞이던 것을 층별로 확인하고 유입부터 막은 기록이다.
-
한 대만 켜는 것과 한 대에만 나가는 것은 달랐다
한 대에서만 켠 기능이 꺼진 서버에서 문제를 낸 것을 배포 범위와 활성 범위로 갈라 본 기록이다.
-
수동 정리는 세 가지를 맞춘다
정식 경로를 못 쓰는 수동 정리에서 무엇까지 맞춰야 하는지를 두 번의 지적으로 확정한 기록이다.
-
고정된 주소와 지켜볼 수 있는 것
나가는 주소를 고정하라는 요구와 관측 가능성을 한 구성 안에서 함께 만족시킨 기록이다.
-
인과관계를 배제하는 세 단계
오늘 배포 때문이냐는 물음에 답하기 위해 배제를 세 단계로 나눠 근거를 세운 기록이다.
-
배포가 도는데 아무 일도 안 일어났다
옛 갈래 이름을 가리키던 배포가 성공한 채로 아무것도 안 하던 것을 찾고 검증까지 붙인 기록이다.
-
전역 규칙이 하위에도 로드된다
비교 실험 결과에 섞여 든 것이 전역 설정의 개입이었음을 가설 배제로 확정한 기록이다.
-
밖에서 오는 문과 안에서 쓰는 문
밖과 안이 한 경로로 들어오던 구성을 나누면서 열려 있으면 안 되는 경로까지 찾아낸 기록이다.
-
태그가 유일한 비용 손잡이다
통합 청구 환경에서 비용 추적 수단이 태그뿐이라는 정정을 받고 체계와 확인 절차를 세운 기록이다.
-
커밋에 남의 작업이 딸려 들어갔다
공용 작업 폴더에서 커밋이 남의 변경까지 쓸어 간 사고를 되돌리고 구조까지 바꾼 기록이다.
-
그 오류는 우리 것이 아니었다
우리 로그에 찍힌 오류가 상대 응답이었다는 것을 전수 검색으로 확정하고 회신에 근거를 붙인 기록이다.
-
이름을 지운다고 갈리지 않는다
문서에서 이름을 지운 것으로 경계가 갈렸다고 본 상황을 실물 설정과 인증서까지 실측해 확인한 기록이다.
-
포트가 다른데 로그인이 풀렸다
포트로 나눈 두 화면이 서로 로그인을 풀던 원인과 쿠키와 출처 정책의 어긋남을 정리한 기록이다.
-
서비스가 무엇을 하는지 확인하고 껐다
느린 장비를 손보기 전에 실측하고 벤더 서비스를 이름이 아니라 역할로 판별해 정리한 기록이다.
-
매핑 누락인가 원시 오수집인가
대량 재수집이 필요한지를 저장 구조와 정규화 시점으로 판별해 자릿수 다른 비용을 아낀 기록이다.
-
캐시가 개발과 운영에서 반대로 굴었다
캐시 설정이 환경마다 반대라 한쪽에서만 나는 버그가 생기던 것을 키 규칙과 환경 일치로 정리한 기록이다.
-
계산값이던 화면의 날짜
화면에 보이는 날짜가 컬럼이 아니라 계산 속성이라 검색 조건으로 못 쓰던 것을 조인으로 푼 기록이다.
-
한 상대에 인증 체계 셋
만든 사람이 없는 연동에서 같은 상대에 대한 인증 체계 셋을 코드만으로 파악한 기록이다.
-
서버마다 다르던 런타임 버전
같은 코드가 한 대에서만 실패하던 원인을 런타임 판 비교로 찾고 다시 어긋나지 않게 만든 기록이다.
-
검증이 API가 아니라 실행 시점에 있다
변동 폭 제한이 어디서 검사되는지 끝까지 따라가 호출 성공과 반영이 다르다는 것을 확인한 기록이다.
-
복구 가능한 것과 잃은 것
변환본 재생성을 돌리기 전에 원본 존재로 대상을 갈라 헛수고와 오보를 함께 막은 기록이다.
-
껐는데도 새 동작이 남아 있었다
플래그를 껐는데도 값이 안 돌아오던 원인을 읽는 쪽의 갈림과 저장 자리에서 찾은 기록이다.
-
물려받은 실행 방식에 딸린 장치를 안 가져왔다
사람이 지켜보던 배치를 자동으로 바꾸면서 사라진 통제를 코드로 옮겨 넣은 기록이다.
-
팀을 SVN에서 Git으로 옮기며 정한 것들
도구를 옮기는 것보다 브랜치를 어떻게 쓸지 정하는 데 시간이 더 든 이유를 정리한 기록이다.
-
커맨드가 없고 엔드포인트만 있었다
이름으로 찾다 실패한 갱신 경로를 반드시 거치는 지점에서 역추적해 찾아낸 기록이다.
-
브라우저를 닫으니 작업이 중간에 멈췄다
화면에서 돌리던 오래 걸리는 집계를 요청과 처리로 떼어 놓고 재실행 지점까지 정한 기록이다.
-
신뢰할 수 없는 축
오래된 보관본의 세대를 가리려다 수정 시각이라는 축 자체를 못 쓴다는 것을 확인한 기록이다.
-
상태에 머문 것만으로 부과했다
상태 체류만으로 자동 부과하는 구조가 덮어쓰기 설계와 만나 오탐을 만들던 것을 정리한 기록이다.
-
지금 규약과 어긋난 옛 설정
옛 서버의 설정을 통째로 복사했다가 그 서버가 안 맞고 있던 것까지 따라온 것을 정리한 기록이다.
-
대상이 늘면 장비가 늘어야 했다
수집 대상을 늘리기 전에 대상당 자원을 재고 몰리는 시점과 구조를 함께 본 기록이다.
-
성공이 아니었던 200
상태 코드와 업무 결과가 두 층으로 나뉜 응답 규격에서 필드 생략이 호출을 늘리던 것까지 정리한 기록이다.
-
초기화 스크립트가 소스와 어긋났다
인계받은 초기화 스크립트의 공통 코드가 원본 소스와 값·의미·순서 세 가지로 어긋나 있던 것을 정리한 기록이다.
-
초 단위로는 순서를 못 가렸다
시각으로 순서를 가리려다 저장 정밀도와 시계 기준까지 다시 정하게 된 기록이다.
-
다섯으로 수렴한 실패 사유
대량 재전송을 반복하며 실패 사유를 분류해 수렴을 확인하고 로그로 안 잡히는 종류까지 찾은 기록이다.
-
전파가 환불에 매달려 있었다
취소가 밖으로 전파되지 않던 원인이 발행 지점의 전제였고 미발생을 찾는 점검까지 정리한 기록이다.
-
두 갱신이 서로를 기다렸다
간헐적 실패의 원인이 교착이었고 잠금 순서 고정과 선별 재시도로 다룬 기록이다.
-
두 가지를 한 호출 하나
문서에 없는 부수 효과가 딸린 외부 호출을 분리할 수 없어 위험 구간을 줄이는 쪽으로 간 기록이다.
-
100에서 멈추던 목록
목록에 걸린 두 종류의 상한을 구분하고 사용자에게 어떻게 보이는지까지 따져 본 기록이다.
-
공통 기반을 세우니 경계를 다시 그어야 했다
공통 기반을 묶은 뒤 책임 경계가 흐려진 것을 오류 정보와 판 관리와 시험 환경으로 정리한 기록이다.
-
컨테이너가 쓴 파일이 재시작하면 없어졌다
컨테이너 안에 쓰이던 상태를 성격별로 갈라 밖으로 빼고 실제로 지웠다 다시 만들어 확인한 기록이다.
-
장바구니로 보내던 안내
구매 한도를 이전 구매와 합산해 판정하는 흐름에서 세는 시점과 이동 방식의 근거를 따라간 기록이다.
-
버튼 문구가 곧 상태였다
살 수 없는 상태에서 버튼을 숨기지 않고 문구를 바꾸는 설계의 이유를 상태별로 따라간 기록이다.
-
목록 하나에 조회가 수백 번 붙었다
코드에는 조회 하나만 보이는데 화면에서 행마다 조회가 나가던 것을 요청당 쿼리 수로 드러낸 기록이다.
-
기준 자료가 없으니 화면이 통째로 비었다
시험 서버에서 목록이 통째로 비던 원인이 기준 자료 누락이었고 환경 구성 절차까지 정리한 기록이다.
-
인증 해제 조건 넷
성인 인증이 풀리는 네 조건의 성격을 가르고 저장 위치와 관문 위치까지 따져 본 기록이다.
-
공유했는지 확인할 수 없었다
플랫폼마다 공유 검증 가능 여부가 달라 정책이 갈리던 것을 지표 분리까지 포함해 짚어 본 기록이다.
-
한 번에 많이 받으니 더 느려졌다
페이지 크기를 키웠더니 전체 시간이 늘어난 원인을 구간별 측정으로 갈라낸 기록이다.
-
최초 실행을 어떻게 테스트하나
한 번 보면 사라지는 최초 실행 항목을 확인하는 순서와 초기화 비용을 짚어 본 기록이다.
-
넣는 곳과 읽는 곳이 다른 저장소였다
수정이 검색에 반영되지 않던 원인이 색인 배치가 읽는 대상에 있었고 대조 지표까지 세운 기록이다.
-
앞 두 줄이 계속 반복됐다
시험 케이스의 절차 칸에서 앞 두 줄이 계속 반복되는 것이 무엇을 뜻하는지 살핀 기록이다.
-
어디 있었는지를 기억했다
시험 케이스에서 이전 선택을 기억하는 화면들과 그 기준이 어디까지인지 살핀 기록이다.
-
케이스마다 붙어 있던 오프라인 짝
앱 회귀 시험 문서에서 정상 케이스마다 연결이 끊긴 경우가 짝으로 붙어 있던 기록이다.
-
여러 팀이 같이 쓰는 모듈
팀마다 따로 만들던 외부 호출 코드를 하나로 합치면서 코드 밖의 일이 더 길었던 기록이다.
-
만드는 쪽과 처리하는 쪽이 달랐다
정산 대상 몇 건이 빠진 원인이 만드는 시스템과 처리하는 시스템의 경계에 있던 기록이다.
-
결제 수단에 따라 달랐던 약관
시험 케이스의 기대 결과 칸에 적힌 조건에서 약관 노출 구조를 읽어 본 기록이다.
-
옛 판에만 있던 기능
새 화면으로 바꾸고 옛것을 닫았더니 없어진 기능을 찾는 문의가 온 기록이다.
-
같은 조정인데 문구가 둘이었다
결제 화면 시험 케이스에서 같은 수량 조정에 문구가 둘로 나뉜 이유와 등급이 다른 이유를 짚어 본 기록이다.
-
두 칸에 같은 글
버전 이력표의 두 열이 대부분 같은 내용이었고 다른 몇 줄이 진짜 정보였던 기록이다.
-
하위 처리가 상위 권한을 물려받고 있었다
관리자만 써야 하는 기능이 다른 경로로 열려 있던 원인을 권한 확인 위치에서 찾은 기록이다.
-
화면과 서버가 규격이 달랐다
화면에서 입력한 값이 저장되지 않던 원인이 항목 이름의 어긋남이었고 그것을 한 곳으로 모은 기록이다.
-
버전 번호가 성격을 말해 줬다
회귀 시험 문서의 버전별 적용 이력 마흔 건을 훑으며 번호가 담은 정보를 읽은 기록이다.
-
원래 안 재던 곳들
트래킹 요청서 비고에 세 번 반복된 문장 하나가 무엇을 뜻하는지 짚어 본 기록이다.
-
탭 뒤의 두 시스템
두 체계를 합치는 중에 같은 화면이 주소 두 개로 잡혀 있던 이유를 살핀 기록이다.
-
돌리기 전에 읽는 이행 스크립트
넘겨받은 이행 스크립트를 이름만 보고 돌렸다가 읽는 순서와 사전 준비를 다시 잡은 기록이다.
-
순서를 바꾸니 기다리는 시간이 달라졌다
부르는 것을 줄이지 못하는 상황에서 호출 순서를 바꿔 상세 화면을 빠르게 만든 기록이다.
-
스무 곳에 있던 같은 등록 기능
관리자 작업 일정표에서 항목 스무 개가 사실은 같은 기능을 가리키던 것을 확인한 기록이다.
-
단계마다 숫자를 냈다
여러 단계를 묶은 상품 색인 배치에서 어디서 빠졌는지 알 수 없던 것을, 단계별 건수를 남기는 방식과 대사 테이블 방식을 견줘 고른 기록이다.
-
전용 테이블을 공용으로 바꾸는 일
일정표 첫 줄에 놓인 전용 테이블의 공용 전환을 두고 무엇이 따라붙는지 짚어 본 기록이다.
-
빠뜨리지 않는 방법을 먼저 정했다
결제 관련 코드를 전부 찾아야 하는데 찾을 때마다 결과가 달라지던 것을 방법부터 정해 정리한 기록이다.
-
2,217개의 금칙어
이천 개가 넘는 금칙어 목록의 구조와 검사 방식을 살피며 걸리는 지점을 정리한 기록이다.
-
카테고리마다 다른 필수 항목
카테고리마다 필수 항목이 다른 정의표를 받고 항목을 컬럼으로 둘지 자료로 둘지 판단한 기록이다.
-
분류 값마다 뜻을 적어 두었다
뜻을 아는 사람이 없던 주문 유형 코드 열두 가지를 추적해 상수와 코드 표로 남긴 기록이다.
-
열 번 중 하나가 튄 표
열 번 시행한 성능 결과표에서 한 번의 예외가 평균과 개선율을 얼마나 바꾸는지 살핀 기록이다.
-
상태 컬럼의 빈 값에도 뜻이 있었다
상태별 합계가 전체보다 적었던 원인이 상태 컬럼의 빈 값이었고 그 안에 두 가지 뜻이 섞여 있던 기록이다.
-
같은 말이 팀마다 다른 것을 가리켰다
같은 날 같은 것을 세는데 팀마다 숫자가 달랐던 원인이 말의 정의에 있던 기록이다.
-
같은 쿼리가 운영에서만 느렸다
개발에서는 바로 뜨던 조회가 운영에서만 여덟 초 걸린 원인을 실행 계획과 값의 분포에서 확인한 기록이다.
-
조용히 실패하는 연동
며칠치 자료가 상대 쪽에 없다는 연락을 받았는데 우리 로그에는 아무 오류도 없던 기록이다.
-
오래된 코드에 새 패턴 넣기
외부 호출이 제각각인 코드에 공통 모듈을 넣으면서 전면 교체도 방치도 아닌 길을 찾은 기록이다.
-
요청 밖으로 뺀 무거운 계산
주문 등록에 삼 초가 걸리던 것을 구간별로 나눠 보고 취소 여부를 기준으로 무거운 부분을 밖으로 뺀 기록이다.
-
버튼이 다시 활성화됐는데 서버는 계속 돌고 있었다
같은 자료가 두 번씩 들어간 원인이 화면과 서버의 시간 제한 차이였고 접수와 처리를 나눠 고친 기록이다.
-
나가는 길과 돌아오는 길
인계받은 배포 절차서에 돌아오는 길이 없어서 판 보관과 링크 전환으로 그 절반을 채운 기록이다.
-
조회 키가 어느 컬럼인지 정확히 알아야 했다
인덱스가 있는데도 느린 조회에서 실제로 찾는 컬럼과 인덱스가 다르다는 것을 로그로 확인한 기록이다.
-
필드 하나가 늘어서 멈췄다
우리가 아무것도 안 바꿨는데 외부 연동이 실패한 원인이 응답에 늘어난 필드였고 관용 범위를 다시 정한 기록이다.
-
도우미 함수인 줄 알았는데 외부를 부르고 있었다
조회는 빠른데 화면이 느리던 원인이 가벼운 이름의 함수 안에 있던 외부 호출이었고 묶어서 고친 기록이다.
-
들어오는 자리와 실제로 일하는 자리가 달랐다
주소가 가리키는 파일과 실제로 도는 코드가 달라 위치 찾기에만 반나절이 걸렸고 코드가 말하게 고친 기록이다.
-
세지 않아도 되는 것을 세고 있었다
느린 목록 화면에서 전체 건수를 세는 조회가 목록 자체보다 오래 걸리던 것을 화면별로 갈라 정리한 기록이다.
-
지운 캐시가 그 캐시가 아니었다
설정을 바꾸고 캐시를 지워도 화면이 안 바뀌던 원인을 계층을 세어 가며 프로세스 메모리에서 찾은 기록이다.
-
평균이 감추는 것
평균 응답 시간이 절반으로 줄었는데 불만은 그대로였던 이유를 분포와 백분위에서 확인한 기록이다.
-
검색 결과와 DB가 다를 때
검색 색인과 DB가 어긋나 없는 페이지로 가던 문제를 막기보다 아는 쪽으로 풀고 정본을 정한 기록이다.
-
복사한 블록은 갈라진다
같은 로직이 다섯 군데에 복사돼 조금씩 갈라져 있던 것을 비교 로그를 거쳐 하나로 모은 기록이다.
-
목록 하나에 쿼리가 몇 백 번
느린 목록 화면에서 코드 한 줄이 행 수만큼 조회를 만들어 내던 것과 미리 가져오기의 함정까지 확인한 기록이다.
-
남이 그 컬럼을 읽고 있으면 그것이 약속이었다
안 쓰는 줄 알고 없앤 컬럼 때문에 다른 팀 배치가 멈춘 뒤 무엇이 약속인지 목록으로 만든 기록이다.
-
OR로 묶으면 인덱스를 못 탄다
조건이 단순한데도 느린 목록 조회에서 두 컬럼을 묶은 조건이 인덱스를 막고 있던 기록이다.
-
채널마다 처리기가 따로 여덟 개였다
채널마다 따로 있던 여덟 개의 처리 코드를 단계별로 같은 곳과 다른 곳을 세어 갈라 정리한 기록이다.
-
내가 안 쓴 코드베이스 읽기
수년간 쌓인 대형 코드베이스에 합류해 전체를 훑는 대신 요청 하나를 끝까지 따라가며 지도를 만든 기록이다.
-
인수인계 목록이 진짜 문서였다
프로젝트를 마무리하며 자료를 성격별로 갈라 무엇을 남겨야 다음 사람이 이어받는지 정리한 기록이다.
-
자동 복구가 감추는 것
장비가 멈추면 자동으로 다시 띄우는 장치가 문제 자체를 안 보이게 만들어 알림과 상한을 넣은 기록이다.
-
실패한 것만 보면 안 보이는 것
오류 난 표본의 공통점을 원인으로 볼 뻔했다가 정상 표본과 비율로 대조해 조합 원인을 찾은 기록이다.
-
다 보관할 수 없어 무엇을 남길지 정했다
채굴 장비 지표를 초 단위로 InfluxDB에 쌓다가 디스크가 차서 기간별 해상도를 갈라 남긴 기록이다.
-
변화의 부호를 봤다
절대 임계로 걸어 둔 알림이 오탐을 내던 것을 자기 대비 변화와 기대 부호를 보는 방식으로 바꾼 기록이다.
-
큐에 쌓인 것이 두 종류다
작업 큐에 쌓인 대기가 두 종류였고 각각 조치가 반대라 재투입이 아무 소용이 없던 기록이다.
-
한 대뿐이라 손댈 수가 없었다
수집 서버가 한 대라 고칠 것이 있어도 손대지 못하던 상태를 한 대를 더 놓아 풀어낸 기록이다.
-
대수를 늘려도 안 빨라진다
응답이 느린 관리 화면에서 프로세스를 늘려도 안 나아진 원인을 가려낸 기록이다.
-
지표가 안 올라오면 멈춘 건가
그래프가 비어 있는 것이 정지인지 할 일이 없었던 것인지 안 갈리던 감시를 선언 목록과 심장박동으로 고친 기록이다.
-
답은 데이터시트 각주에 있었다
특정 레지스터만 0이 나오던 원인이 데이터시트 각주의 유효 조건이었고 예제 코드에도 같은 답이 있던 기록이다.
-
코드에 적힌 값이 실제 값이 아니다
장비가 예상과 다른 주소로 통신하던 원인이 값의 출처가 넷인 데 있었고 그것을 드러낸 기록이다.
-
붙이면 사라지는 버그
디버거를 붙이면 증상이 사라지는 문제를 대상을 안 건드리는 계측과 링 버퍼로 잡은 기록이다.
-
타임아웃이 네 곳에 있다
큰 응답만 끊기는 문제에서 타임아웃이 한 곳이 아니라는 것을 확인하고 설정 지도를 만든 기록이다.
-
전에 실패한 이력이 처리 방식을 정했다
통신이 복구되면 밀린 자료를 몰아 보내던 것을 실패 이유별로 나누고 속도와 시점을 흩은 기록이다.
-
다 끝났다는 신호가 먼저 왔다
여러 대를 동시에 처리하는 스크립트가 아직 도는 중인데 완료를 알린 원인과 완료 판정을 바꾼 기록이다.
-
시험 환경이 살아 있는 동안 확인했다
현장에 나가면 못 하게 되는 확인을 사무실에 장비가 있는 동안 목록으로 만들어 몰아서 끝낸 기록이다.
-
디스크에 안 쓰고 성공을 돌려준다
저장한 설정이 전원을 껐다 켜면 사라지던 원인이 저장 매체가 flush를 흉내만 내는 데 있던 기록이다.
-
장비에 두 번 보내면
원격 장비에 명령을 내리는 코드에서 응답이 유실됐을 때 재시도가 안전한지를 명령의 성질로 가른 기록이다.
-
값비싼 결론으로 가기 전에
통신이 간헐적으로 끊기는 문제에서 부품 불량을 의심하기 전에 확인 비용으로 순서를 잡은 기록이다.
-
문서 없는 장비의 통신 규격을 덤프로 알아냈다
규격 문서가 없는 장비의 통신을 그대로 떠서 길이 자리와 검사값 규칙을 하나씩 맞춰 본 기록이다.
-
우회부터 만들 뻔했다
라이브러리가 값을 잘못 돌려주는 것을 우회로 넘기려다 이미 고쳐진 판이 있음을 확인하고 순서를 정한 기록이다.
-
계산 시트가 전부 변수였다
장비 수익 계산 시트를 수식 대신 항목 이름만 보고 어떤 구조의 계산인지 짚어 본 기록이다.
-
계정이 아니라 주소 문제였다
외부 연동의 거부 응답이 계정이 아니라 나가는 주소 때문이었고 경유 지점으로 모아 푼 기록이다.
-
흐름표가 말하지 않은 것
매칭 서비스 흐름표를 다 읽고 나서 거기 없는 다섯 가지를 목록으로 대조해 찾아낸 기록이다.
-
내 쪽에서는 보이는데
한쪽에서는 보이고 다른 쪽에서는 안 보이는 상황을 가르려고 확인 정보를 화면에 넣고 배포를 고친 기록이다.
-
매칭의 결말이 셋이었다
매칭 흐름표의 분기가 셋으로 갈리는 이유와 중간 해지·선결제·빈 번호가 남긴 물음을 읽은 기록이다.
-
같은 조회를 매번 손으로 짰다
일주일에 몇 번씩 오는 같은 확인 요청을 매번 손으로 짜다가 스크립트와 공통 조회로 옮긴 기록이다.
-
매칭 서비스의 양쪽
매칭 서비스의 흐름표가 두 벌인 이유와 한쪽에만 있는 화면 셋이 무엇을 말하는지 읽은 기록이다.
-
가끔 나는 것을 잡는 방법
재현이 안 되는 시간 초과를 발생 순간의 정보를 모아 분포로 좁히고 원인 둘을 갈라낸 기록이다.
-
번호 체계가 비대칭을 드러냈다
화면 흐름표의 번호 체계 자체가 설계와 그 안의 비대칭을 담고 있던 기록이다.
-
하겠다고 한 것과 다르게 했다
작업 방법을 말없이 바꿔서 진행했다가 지적을 받고 보고 방식을 다시 잡은 기록이다.
-
배경 절의 숫자들
사업계획서 배경 절에 어떤 숫자가 왜 그 순서로 놓여 있는지 읽어 본 기록이다.
-
도구가 못 다루는 경우가 나왔다
센서 값을 읽는 도구가 새 장비에서 안 되던 것을 조건문 대신 표와 한 벌의 읽기 코드로 푼 기록이다.
-
하나만 멈추고 나머지는 계속 돌았다
계정이 잠긴 것을 한 프로세스만 감지하고 멈춘 사이 나머지가 계속 시도해 잠금이 안 풀린 기록이다.
-
양방향이 바꾸는 것
전력망 자료에 반복되는 양방향이라는 표현이 무엇을 바꾸는지 짚어 본 기록이다.
-
만들기만 하고 잇는 것을 빠뜨렸다
수집 자료를 큰 디스크에 쌓으려던 구조에서 연결 단계가 빠져 자료가 시스템 디스크에 쌓인 기록이다.
-
특허 둘이 같은 폴더에 있었다
새 도메인 조사 폴더에 시장 자료와 특허와 협약서가 함께 들어 있는 이유를 읽은 기록이다.
-
다시 돌렸더니 두 벌이 등록됐다
설치 스크립트를 다시 돌린 뒤 수집이 두 배로 들어온 원인을 찾고 여러 번 돌려도 같은 결과가 되게 고친 기록이다.
-
시험 계획이 코드보다 앞인 이유
표준 산출물 목록에서 시험 문서가 코드보다 앞 번호에 있는 이유를 짚어 본 기록이다.
-
파일이 다 있길래 같은 줄 알았다
두 서버의 파일 목록이 같은데 동작이 달랐던 원인을 해시 비교로 찾고 그 비교를 배포에 붙인 기록이다.
-
전원 없는 중계 보드
개발 항목의 무전원 중계 보드 이름 하나에 담긴 위치와 목적과 제약을 읽은 기록이다.
-
패킷망과 신호망을 잇는다
전력망 자료의 개발 항목에서 두 종류의 망을 잇는 변환기가 경계에서 무엇을 정해야 하는지 읽은 기록이다.
-
같은 쓰기를 두 방식으로 했다
펌웨어 스크립트의 두 분기가 같은 목적에 마운트 복사와 직접 쓰기를 나눠 쓰는 이유를 읽은 기록이다.
-
100%가 안 되면 어디까지 되는지
시험 코드 적용률 100%가 안 되는 상황에서 못 한다로 끝내지 않고 부분별 도달선을 잡은 기록이다.
-
마커를 맨 마지막에 쓴다
펌웨어 설치 스크립트 끝부분에서 완료 마커의 위치와 sync·재부팅·주석 덩어리를 읽은 기록이다.
-
하나 고쳤더니 다음 것이 나왔다
오류를 하나씩 만나며 고치던 것을 실행 전에 필요한 것을 한 번에 훑는 방식으로 바꾼 기록이다.
-
쓰기 전에 지워야 한다
펌웨어 설치 스크립트에서 플래시에 쓰기 전에 지우는 순서와 하드코딩된 파티션 주소를 읽은 기록이다.
-
한 대만 보고 판단했다
수집 서버 네 대 중 한 대만 확인하고 이상 없다고 답했다가 전체를 한 표로 보는 방법을 만든 기록이다.
-
패키지 하나에 보드가 둘이었다
펌웨어 갱신 패키지 하나에 두 보드용이 함께 들어 있고 설치 스크립트가 바이너리 문자열로 판정하는 구조를 읽은 기록이다.
-
정상 종료가 오류로 기록됐다
손으로 종료한 프로그램이 비정상 종료로 기록되던 것을 종료 이유별로 갈라내고 재시작 정책까지 정한 기록이다.
-
늦게 도착하는 센서 값을 다루는 법
현장 장비의 값을 모아 그래프를 그렸는데 값이 순서대로 오지 않아 기준 시각과 요약 시점을 다시 정한 기록이다.
-
시각을 그대로 읽었다가 아홉 시간 어긋났다
오래 도는 트랜잭션을 찾다가 시각을 그대로 읽어 아홉 시간을 잘못 판단하고 시간대 기준을 정리한 기록이다.
-
스택이 다섯 번 바뀐 해
한 해 동안 여러 도메인을 짧게 거치면서 얻은 것과 잃은 것을 정리한 기록이다.
-
실패가 쌓이는데 건마다 대응했다
하루 몇 건씩 오는 수집 실패 알림을 건마다 처리하다가 일주일치를 목록으로 모아 공통 원인을 찾은 기록이다.
-
과제가 끝날 때 남기는 것
과제 결과물을 넘기면서 코드와 문서만으로는 재현이 안 돼 빌드·실행·측정 조건까지 채운 기록이다.
-
둘 중 무엇을 지울지 몰랐다
비슷한 이름의 폴더가 여럿 쌓인 작업 자리를 무엇이 도는지 확인하고 기준을 세워 정리한 기록이다.
-
운영에 손대기 전에 확인하는 것
운영 환경을 급하게 손대야 할 때 매번 생각하지 않아도 되게 확인할 것을 목록으로 만든 기록이다.
-
옮기고 나서 가리키는 것을 안 고쳤다
저장 경로를 다른 볼륨으로 옮긴 뒤 그것을 가리키던 것들이 남아 통계가 빈 기록이다.
-
두 팀이 한 DB를 쓸 때
한 DB를 두 시스템이 함께 쓰면서 생긴 제약과 그 안에서 정한 것들의 기록이다.
-
기술로는 되는데 계약으로 안 됐다
계정을 더 만들어 잘 쓰다가 며칠 뒤 전부 정지된 원인이 계약 조건에 있던 기록이다.
-
핀 하나를 나눠 쓴 대가
핀이 부족해 하나를 두 용도로 쓰게 되면서 소프트웨어가 떠안은 제약과 그 비용을 숫자로 적어 올린 기록이다.
-
폴더를 옮겼는데 옛 경로가 코드에 남아 있었다
수집 파일의 폴더 구조를 바꿨는데 코드와 cron·백업 스크립트에 옛 경로가 남아 있던 기록이다.
-
처음 감시 체계를 세우며
여러 장비의 상태를 모아서 보는 체계를 처음부터 세우면서 정한 것들의 기록이다.
-
지우기 전에 대안이 있는지 봤다
저장소 이력에 들어간 접속 키를 없애야 하는데 그 키로 장치들이 붙어 있던 기록이다.
-
데이터시트를 처음 읽을 때
삼백 쪽이 넘는 칩 문서를 앞에서부터 읽지 않고 필요한 곳부터 찾아 읽은 기록이다.
-
세 집계가 같은 구간을 다시 셌다
주기가 다른 세 집계가 각자 원본을 훑으면서 같은 구간을 반복해 읽던 것을 정리한 기록이다.
-
해 본 적 없는 일의 기간을 잡았다
감이 없는 일에 기간을 잡아야 해서 모르는 부분부터 줄여 간 기록이다.
-
방화벽 규칙을 넣었는데 안 막혔다
방화벽 규칙을 넣었는데 밖에서 계속 붙던 원인을 순서와 도구 계열에서 찾은 기록이다.
-
테스트가 없는 코드를 고칠 때
테스트가 하나도 없는 오래된 코드를 고치기 전에 현재 동작을 고정한 기록이다.
-
기록의 계정으로 사람을 특정할 수 없었다
설정이 바뀐 이력을 봤는데 공용 계정이라 누가 바꿨는지 알 수 없던 기록이다.
-
배포 절차를 문서로 만들며
나만 할 수 있던 배포를 남이 실행할 수 있는 문서로 옮기면서 겪은 것들의 기록이다.
-
배치가 표를 잡고 있었다
자료 저장이 간헐적으로 시간 초과로 실패하던 원인이 같은 시각에 도는 배치였던 기록이다.
-
하드웨어에 디버거를 붙이며
멈춰서 보는 방법과 흘려보내며 보는 방법을 상황에 따라 갈라 쓴 기록이다.
-
재는 주기와 남기는 주기를 나눴다
장치가 매초 보내는 값으로 저장 공간이 차자 재는 것과 남기는 것을 갈라낸 기록이다.
-
연구 과제로 개발할 때
성능 수치가 목표로 정해진 과제에서 일반 개발과 무엇이 다른지 정리한 기록이다.
-
선로에 실제로 흐르는 것을 봤다
보냈다고 찍혀 있는데 서버에 안 들어오던 자료를 중간에서 잡아 확인한 기록이다.
-
현장에 나가서 본 것
실내에서 잘 돌던 장비를 현장에 설치하고 나서 드러난 것들을 정리한 기록이다.
-
로그를 어디서부터 잘라야 하는지
로그를 최근 몇 시간으로 자르니 볼 때마다 숫자가 달라져 기준점을 다시 잡은 기록이다.
-
두 DB를 한 트랜잭션으로 묶고 싶을 때
서로 다른 DB 두 곳에 자료를 넣어야 하는데 한쪽만 성공하는 상태를 다룬 기록이다.
-
사양서를 안 보고 코드부터 짰다
새 센서 값이 계속 이상해서 코드를 고치다가 원인이 사양서에 있었던 기록이다.
-
프레임워크가 구조를 정해 줄 때
폴더와 계층이 정해진 틀에서 일하며 무엇이 편해지고 무엇이 번거로워지는지 잰 기록이다.
-
센서가 값을 안 줄 때를 안 정해 뒀다
읽기에 실패한 것을 값으로 돌려주다가 실제 값과 구분이 안 되던 것을 고친 기록이다.
-
로그를 못 남기는 것을 재기
출력이 비싼 자리에서 무엇을 어떻게 남길지 골라 가며 계측을 붙인 기록이다.
-
설정돼 있길래 되는 줄 알았다
등록돼 있으니 되고 있는 줄 알았던 백업이 석 달 전에 멈춰 있던 기록이다.
-
남의 장비를 역으로 읽기
소스도 만든 곳도 없는 장비의 동작을 안에서부터 알아내는 순서를 정리한 기록이다.
-
눌러도 아무 일이 없는 버튼이 있었다
화면 틀에 남아 있던 동작하지 않는 요소들을 찾아서 정리한 기록이다.
-
웹을 감싼 앱을 만들며
이미 있는 웹 화면을 감싸는 방식으로 앱을 만들면서 경계를 그어 간 기록이다.
-
시도 한 번이 비싼 경우가 있다
외부 연동을 시험하다 계정이 잠긴 뒤 시도 횟수를 아껴 쓰는 방법을 정리한 기록이다.
-
지울 수 없는 데이터를 다루기
기존 기록을 고치지 않고 정정 기록을 쌓는 설계를 처음 다루면서 정리한 기록이다.
-
먼저 읽는 쪽을 바꾸니 조회가 줄었다
오래 걸리던 동기화 배치에서 반복의 기준을 뒤집어 조회 수를 크게 줄인 기록이다.
-
도메인을 옮겨 다녔다
성격이 다른 도메인을 오가면서 무엇이 옮겨지고 무엇이 안 옮겨지는지 정리한 기록이다.
-
직접 만들었는데 이미 방식이 있었다
환경별 설정 값을 넣는 방법을 직접 만들고 나서 도구에 이미 있었음을 알게 된 기록이다.
-
문서 없는 장비 프로토콜 읽기
문서도 소스도 없는 장비와 통신하기 위해 오가는 것을 잡아서 구조를 알아낸 기록이다.
-
기본 상태만 보고 끝냈다
화면을 고치고 확인했는데 접은 상태를 안 봐서 다시 지적을 받은 기록이다.
-
매출을 검증하는 화면을 만들며
우리 집계와 결제 대행사 내역을 비교하는 화면을 만들면서 차이를 다룬 기록이다.
-
확인하려고 넣은 조건이 코드에 남았다
원인을 찾으려고 잠깐 넣은 조건이 지워지지 않고 그대로 로직이 된 기록이다.
-
소켓 서버를 다른 플랫폼으로
로직은 그대로인데 입출력 처리 방식이 달라서 구조 전체가 바뀐 이식 작업의 기록이다.
-
오류만 띄우고 다음 행동을 안 줬다
세션이 끊긴 화면에서 같은 오류만 반복해서 뜨던 것을 유형별 처리로 바꾼 기록이다.
-
DB 앞에 캐시를 두면서 배운 것
같은 조회가 반복되는 자리에 캐시를 두면서 지우는 쪽이 훨씬 어려웠던 기록이다.
-
아무것도 안 고르면 빈칸이 나왔다
선택하지 않은 상태를 표현하지 않아서 목록이 비어 나오던 화면을 고친 기록이다.
-
확률을 코드로 내보내기 전에
확률로 결과가 정해지는 기능을 내보내기 전에 많이 돌려서 확인한 기록이다.
-
하나만 보고 맞다고 했다
화면을 옛 판과 같게 맞추는 작업에서 무엇과 비교했는지가 문제였던 기록이다.
-
처음 관리형 인프라를 썼을 때
장비를 직접 준비하던 방식과 비교해 관리형 인프라가 무엇을 바꿨는지 정리한 기록이다.
-
어디서 정해지는지 몰라 못 바꿨다
설정 파일을 고쳤는데 값이 안 바뀌던 원인을 계층을 따라가며 찾은 기록이다.
-
게임 서버가 몇 시간마다 멎었다 — 원인은 락 순서였다
죽지도 않고 로그도 안 남는데 응답만 멈추던 서버의 원인을 잠금 순서에서 찾은 기록이다.
-
두 테이블이 같은 번호를 썼다
두 테이블이 같은 기본키 값을 쓰고 한쪽만 자동 증가인 설계를 읽어 본 기록이다.
-
밀어 준 값과 조회한 값이 달랐다
바뀐 값을 밀어 주던 방식에서 바뀌었다는 사실만 알리는 방식으로 바꾼 기록이다.
-
관리자 테이블에 컬럼이 둘뿐이었다
관리자 테이블에 아이디와 비밀번호만 있는 것을 보고 무엇이 없는지 유저 테이블과 대조해 읽어 본 기록이다.
-
안 되는데 어디부터 볼지 몰랐다
같은 종류의 문제를 매번 다른 순서로 뒤지다가 확인 순서를 정해 둔 기록이다.
-
선물함이 별도 테이블이었다
지급할 재화를 바로 넣지 않고 선물함 테이블을 거치게 한 설계를 읽어 본 기록이다.
-
이름은 옛 용도를 가리키고 있었다
이름이 가리키는 용도와 실제로 담고 있는 것이 달라진 모델을 정리한 기록이다.
-
유저 테이블에 성격이 다른 컬럼이 섞여 있었다
유저 테이블의 컬럼을 성격별로 갈라 보면서 저장된 기록 값의 의미를 읽어 본 기록이다.
-
같은 것을 여섯 가지 이름으로 부르고 있었다
문서에서 기능을 못 찾은 이유가 같은 것을 여러 이름으로 부르고 있어서였던 기록이다.
-
소셜 동작마다 엔드포인트가 하나씩이었다
연동 인터페이스가 동작마다 하나씩 나뉘어 있는 이유를 명세에서 읽어 본 기록이다.
-
서버마다 빌드 도구 버전이 달랐다
같은 소스인데 내 자리에서 만든 것만 되던 원인이 빌드 환경 차이였던 기록이다.
-
결제에 상태가 셋이었다
결제 인터페이스가 둘로 나뉘고 상태가 셋인 이유를 명세에서 읽어 본 기록이다.
-
대부분 비어 있는 컬럼이 있었다
주문 테이블의 컬럼 상당수가 거의 비어 있던 이유와 그것을 어떻게 다룰지 정한 기록이다.
-
응답에 코드와 사유가 따로 있었다
명세서의 열몇 개 인터페이스가 같은 응답 껍데기를 공유하는 구조를 읽어 본 기록이다.
-
숫자가 안 맞아서 보니 기준이 달랐다
같은 항목을 세는데 두 자료의 숫자가 크게 달랐던 원인을 정의에서 찾은 기록이다.
-
심볼 하나에 행이 셋이었다
같은 설계서 안에서 어떤 값은 문자열로 두고 어떤 값은 행으로 나눈 기준을 읽어 본 기록이다.
-
비어 있는 값이 오류가 아니었다
필터에 안 걸리는 상품들의 유형 값이 비어 있던 이유를 나눠서 확인한 기록이다.
-
무료 슬롯이 일반 슬롯을 가리켰다
같은 테이블 안에서 자기 자신을 가리키는 참조와 0이 없음을 뜻하는 설계를 읽어 본 기록이다.
-
어느 단위의 상태인지 안 적혀 있었다
배송 완료로 보이는데 아직 안 받았다는 문의에서 상태의 단위가 갈리는 것을 확인한 기록이다.
-
검색만을 위한 테이블이 따로 있었다
설계서에서 같은 값을 담은 검색 전용 테이블을 왜 따로 두었는지 읽어 본 기록이다.
-
볼 때마다 같은 구조를 다시 파악했다
문제를 볼 때마다 같은 구조를 다시 확인하던 것을 한 번 정리해 문서로 만든 기록이다.
-
로그에 변동량과 총액이 같이 있었다
로그 테이블에 변동량과 변동 후 총액이 함께 있는 것이 왜 중복이 아닌지 읽어 본 기록이다.
-
포기한 것과 지운 것을 같이 다뤘다
계속 재시도되는 실패 작업을 정리하면서 포기와 삭제를 갈라서 다룬 기록이다.
-
배열을 문자열에 넣어 뒀다
설계서에서 정규화가 안 된 두 자리를 보고 그것이 왜 그렇게 됐는지 읽어 본 기록이다.
-
저장할 때마다 무거운 계산이 돌았다
상품 저장에 사 초가 걸리던 것을 응답에 필요한지로 갈라 밖으로 뺀 기록이다.
-
로그인 하나에 서버가 셋이었다
게임 서버 가이드에서 로그인 절차에 서버 셋이 관여하는 이유를 읽어 본 기록이다.
-
화면 번호로 조회했는데 0건이었다
문의로 받은 사용자 번호로 조회했더니 없다고 나온 원인을 확인한 기록이다.
-
서버를 사는 대신 빌려 쓰기 시작했다 — 처음 한 달의 기록
IDC에 서버를 넣던 방식에서 EC2와 RDS로 옮기며 한 달 동안 겪은 것과 잰 것을 정리한 기록이다.
-
명령 하나에 서버가 멈췄다
세션 수를 세려고 친 명령 하나가 서비스를 멈춰 세운 뒤 그 성질을 정리한 기록이다.
-
두 처리기가 같은 작업을 집었다
보상이 두 번 지급된 원인이 작업을 집는 방식에 있었음을 확인하고 고친 기록이다.
-
화폐인가 자산인가
조사 보고서의 결론을 하나로 쓸 수 없어서 관점을 둘로 나눠 적은 기록이다.
-
올리는 순서가 곧 의존 관계였다
점검 후 전부 올렸는데 접속이 안 되던 원인이 올리는 순서에 있던 기록이다.
-
200을 받고 원본을 지웠다
큐에 넣는 데 성공한 것을 처리 완료로 보고 원본을 지우던 배치를 고친 기록이다.
-
게임 서버에 루프가 둘이었다
서버 라이브러리에서 받는 루프와 처리하는 루프가 나뉘어 있는 이유를 읽어 본 기록이다.
-
만드는 쪽과 처리하는 쪽이 떨어져 있었다
지급이 안 됐다는 문의에서 요청 로그까지만 있고 처리 결과가 없던 것을 정리한 기록이다.
-
파일 하나에 프로세스 하나를 띄우고 있었다
권한을 맞추는 스크립트가 사십 분씩 걸리던 원인이 프로세스 생성 횟수였던 기록이다.
-
포트 번호를 매번 찾고 있었다
규칙 없이 붙은 포트 번호를 매번 문서에서 찾던 것을 대역 규칙으로 정리한 기록이다.
-
거래소가 약한 자리였다
조사 보고서에서 중앙이 없다는 기술의 거래소가 왜 중앙이 되는지 읽어 본 기록이다.
-
운영과 시험이 한 서버에 섞여 있었다
인계받은 환경에서 운영과 시험이 한 인스턴스에 있던 것을 확인하고 나눈 기록이다.
-
볼 때마다 계산할지 미리 계산할지
볼 때마다 계산하던 요약 화면을 미리 계산해 두는 방식으로 바꾸며 따진 것들의 기록이다.
-
수수료 계산이 곱셈 두 번이었다
가정 두 개가 결과를 만든다.
-
사고는 프로토콜에서 안 났다
연표를 만들어 놓고 보니 갈렸다.
-
소수점 여덟 자리
최소 단위가 왜 이렇게 작은가.
-
이미지 처리가 요청을 붙잡았다
저장은 금방인데 응답이 늦었다.
-
설정이 도중에 바뀌어 있었다
여러 사람이 같은 서버를 만지면 내가 아는 상태가 아닐 수 있다.
-
설정을 바꿨는데 아무 일도 안 일어났다
설정 값을 읽는 코드가 없으면 그 값은 아무 효과가 없다.
-
메뉴를 코드에서 찾고 있었다
화면 구성이 코드가 아니라 자료에 있으면 코드를 뒤져도 안 나온다.
-
결제 통지가 두 번 왔다
저쪽이 재시도한 것이었다.
-
확장자와 내용이 달랐다
확장자는 올리는 쪽이 정하는 문자열이다.
-
같은 비밀번호가 파일 세 개에 들어 있었다
같은 값이 여러 곳에 있으면 한 곳만 바꿨을 때 나머지가 남는다.
-
원인이 하나가 아니었다
주문 알림 실패를 고쳤는데도 남아 있던 실패를, 로그조차 없는 두 번째 경로를 찾아 갈라낸 기록이다.
-
한 테이블에 여러 주체 자료가 섞여 있었다
소유 주체를 구분하는 방법이 없으면 남의 자료가 조회에 섞인다.
-
세션을 DB에 넣었다
서버가 둘이 되니 로그인이 풀렸다.
-
고쳤는데 화면이 안 바뀌었다
같은 캐시가 운영에서는 이득이고 개발에서는 수정을 가린다.
-
상대가 실제로 보내는 것을 재서 고정했다
문서와 실제 응답이 다르면 실제를 기준으로 삼는다.
-
쿠폰이 두 번 쓰였다
결제 창을 두 개 열었다.
-
채널마다 형식이 달랐다
대상마다 규격이 다르면 공통 처리와 대상별 처리를 나눈다.
-
전역 값이 계정마다 저장돼 있었다
대상과 무관한 값을 대상별 테이블에 두면 값이 갈라진다.
-
가격 계산이 두 곳에 있었다
화면과 결제가 달랐다.
-
권한이 없어서 버튼이 안 보였다
조건으로 가려지는 화면은 그 조건을 만들어야 확인이 된다.
-
로그인을 하나로 할지 둘로 할지 정했다
로그인을 합칠지 나눌지는 편의와 위험을 재서 정한다.
-
스크립트가 중간에 멈췄고, 백업본이 사라져 있었다
실패하면 멈추는 것과 이미 한 것을 무르는 것은 다르다.
-
파일 이름이 사용자에게서 왔다
다운로드에서 다른 파일이 나왔다.
-
예약 작업이 두 번 돌았다
같은 작업이 겹쳐 돌면 자료가 두 번 처리된다.
-
설정 하나가 없어서 전체가 멈췄다
부가 기능의 설정이 없다고 본체가 죽으면 그건 부가 기능이 아니다.
-
트랜잭션이 이미 끝나 있었다
안쪽에서 트랜잭션을 열면 그 순간 바깥쪽이 확정된다. MySQL 은 중첩을 지원하지 않는다.
-
주문번호를 맞힐 수 있었다
주소에 번호가 그대로 있었다.
-
주소가 가리키는 것이 달라졌다
주소 하나가 한 대를 가리키다 여러 대를 가리키게 되면 전제가 바뀐다.
-
고쳤는데 다른 파일이 이기고 있었다
환경별 설정 파일이 기본 파일을 덮는 줄 알았는데 아예 대체하고 있었다.
-
관계가 한 테이블로 표현되지 않았다
예외가 계속 생기면 자료 구조가 실제 관계와 다르다는 신호다.
-
목록 순서가 볼 때마다 달랐다
정렬이 같은 값끼리는 순서를 보장하지 않는다.
-
쓰던 도구가 없어져서 구조를 다시 봤다
기대고 있던 것이 없어지면 그것에 기댄 구조를 다시 본다.
-
백업은 있었는데 복구를 해 본 적이 없었다
백업이 도는 것과 그것으로 복구되는 것은 다르다.
-
설정 파일이 지워지는 자리에 있었다
지워지는 자리에 둔 설정은 언젠가 없어진다.
-
넘겨받은 코드를 누가 볼지 정했다
넘겨받은 코드는 누가 볼지 정하지 않으면 아무도 안 본다.
-
실패 목록만 있고 이유는 없었다
실패를 한 덩어리로 두면 무엇을 손봐야 하는지 알 수 없다.
-
백업을 두 곳에 뒀다
복구해 보기 전에는 모른다.
-
잘되는 경우만 시험했다
오류 경로는 일부러 만들지 않으면 안 돌아 본다.
-
읽는 코드는 있는데 쓰는 코드가 없었다
값이 안 나오면 읽는 쪽보다 쓰는 쪽이 있는지 먼저 본다.
-
이력 문장이 제각각이라 읽기 어려웠다
이력 문구 형식을 정하지 않으면 나중에 읽을 수 없다.
-
연말 정산은 한 번만 돌아야 했다
되돌릴 수 없는 작업을 처음 맡았다.
-
넉 달 이어진 문제가 근거가 됐다
구조를 바꾸자는 말이 매번 밀리던 것을 넉 달치 실패 기록을 표로 쌓아 숫자로 만들어 통과시킨 기록이다.
-
지적받은 것을 문서에 먼저 반영했다
지적을 코드에만 반영했다가 문서가 낡아 같은 빠짐이 재현된 뒤 문서를 먼저 고치고 저장소에 함께 담게 된 기록이다.
-
이름이 비슷한 표가 둘이었다
한 글자 다른 표가 함께 있어 조회가 조용히 틀리던 것을 찾고 옛 표를 가려내는 방법과 이름 규칙까지 정한 기록이다.
-
다시 처리했는데 지연 목록에 남았다
재발송한 주문이 지연 목록에서 사라지지 않던 것을, 한 행이 두 번의 출고를 담고 있었기 때문으로 확인한 기록이다.
-
같은 곳을 세 번 임시로 막았다
같은 증상을 세 자리에서 따로 막고 나서야 갱신 경로를 한 함수로 모은 기록이다.
-
정리 작업이 끝나지 않았다
지우는 속도가 쌓이는 속도를 못 따라가던 정리 배치를 고치고 DELETE 로는 디스크가 안 줄어드는 이유까지 확인한 기록이다.
-
있으면 안 되는 파일을 찾았다
업로드 폴더에 실행되는 파일이 들어온 것을 확인하고 세 층으로 막으면서 md5sum 대조로 무엇이 바뀌었는지 가려낸 기록이다.
-
배경 작업이 한도를 다 쓰고 있었다
같은 발송 계정의 한도를 여러 곳이 나눠 쓰다 한 곳이 다 쓴 상황을 몫 배분과 발송 조건 수정으로 푼 기록이다.
-
로그인 방식이 배포 형태를 정했다
서버를 늘리자 로그인이 풀리던 문제에서 세션을 어디에 두느냐가 배포 형태를 정한다는 것을 확인한 기록이다.
-
재고가 마이너스인 상품이 팔리고 있었다
품절 배치가 음수 재고를 놓치던 WHERE 조건과 그 음수가 생긴 경쟁 조건을 함께 고친 기록이다.
-
인덱스를 넣었더니 다른 데가 느려졌다
조회를 위해 넣은 인덱스가 대량 INSERT 를 느리게 한 것을 확인하고 넣기 전 절차를 정한 기록이다.
-
관리자와 사용자가 같은 조회를 썼다
관리자와 사용자가 같은 모델 함수를 공유해 한쪽을 고칠 때 다른 쪽이 깨지던 것을 나누고 인덱스까지 정리한 기록이다.
-
로그에 개인정보가 그대로 있었다
print_r 로 요청을 통째로 남기던 로그에서 개인정보를 걸러 내고 이미 쌓인 것과 파일 권한까지 정리한 기록이다.
-
재고를 실시간으로만 맞추려니 어긋난 걸 못 잡았다
즉시 차감만으로 맞추던 재고가 어긋나던 것을 변동 원장과 주기 대조로 잡고 그 대조가 실제로 잡는지까지 확인한 기록이다.
-
알림이 아무도 안 보는 곳으로 갔다
mail() 이 true 를 돌려줘도 도착한 것이 아니라는 것을 반송함에서 확인하고 받는 곳과 수준 구분까지 손본 기록이다.
-
얼마나 두는지를 정하고 나서 지웠다
커진 주문 표를 옮기기 전에 보존 기간을 정하고 CREATE TABLE ... LIKE 로 보관 표를 만든 뒤 건수와 합계를 대조한 기록이다.
-
업로드 폴더에서 나온 낯선 파일
업로드 폴더에 들어온 웹셸을 발견하고 확장자 검사가 왜 뚫리는지 확인한 뒤 실행 자체를 끈 기록이다.
-
조회 스크립트에 삭제를 넣을지 말지
안 쓰는 파일을 찾는 스크립트에 삭제를 넣자는 제안을 두고 사람이 목록을 보는 단계를 남긴 기록이다.
-
재시도가 실패를 가리고 있었다
안쪽에 숨어 있던 재시도가 실패를 성공으로 덮고 있던 것을 시도 횟수 집계로 드러내고 CURLOPT_TIMEOUT 까지 찾아간 기록이다.
-
배포가 업로드 폴더를 지웠다
rsync --delete 가 서버에만 있던 파일을 지운 사고와 -n 만 준 확인 명령이 아무것도 안 본 이유를 정리한 기록이다.
-
설정을 저장소 밖으로 뺐다
저장소에 들어 있던 데이터베이스 접속 정보를 밖으로 빼고 svn:ignore 가 안 막아 주는 부분과 이력에 남은 값까지 정리한 기록이다.
-
두 가지를 한 번에 바꿨다
성능 개선 두 가지를 동시에 적용해 무엇이 효과였는지 모르게 된 것을 나눠 재며 확인한 기록이다. 재는 조건을 고정하는 방법도 함께 정했다.
-
같은 파일인데 한쪽에서만 404였다
업로드 파일명의 유니코드 정규화가 저장과 조회에서 달라 같은 파일을 못 찾던 것을 이름 생성으로 고친 기록이다.
-
응답 헤더에 남은 횟수가 있었다
본문만 읽어 원인을 못 찾던 429 응답의 이유가 X-RateLimit 헤더에 있던 것을 확인한 기록이다.
-
온 김에 더 고칠지 정했다
버그를 고치러 들어간 김에 여러 개를 한꺼번에 바꿨다가 SVN 역병합으로 물리고 커밋을 나누는 방식으로 바꾼 기록이다.
-
옵션 조합이 폭발했다
옵션 조합을 미리 만들어 두던 방식을 재고를 넣을 때 만드는 방식으로 바꾸며 화면 구성까지 바꾼 기록이다.
-
조건 하나가 전부를 걸렀다
갑자기 0건이 된 통계를 WHERE 조건을 하나씩 빼서 원인을 찾고 값 체계 변경 절차를 세운 기록이다.
-
판을 올렸더니 쓰던 기능이 없어졌다
PHP 5.4 에서 없어진 magic_quotes_gpc 와 register_globals 에 기대던 코드가 조용히 다르게 동작한 것을 찾아낸 기록이다.
-
다른 분기에 작업이 남아 있었다
trunk 만 보고 없다고 답했다가 branches 에서 작업을 찾은 뒤 SVN 브랜치 정리 기준을 세운 기록이다.
-
상품 속성이 너무 많았다
속성이 많은 상품을 컬럼으로 담다 InnoDB 행 크기 한계에 부딪쳐 행으로 빼고 다시 일부를 되돌린 기록이다.
-
행이 늘자 목록이 느려졌다
EXPLAIN 을 처음 보고 복합 인덱스로 Using filesort 를 없애면서 컬럼 선택과 개수 조회도 손본 기록이다.
-
되돌릴 수 없는 표를 고치기 전에
원본에서 다시 계산할 수 없는 정산 표를 고치기 전에 사본과 사전 조회로 대상을 확인한 기록이다. ROW_COUNT() 가 무엇을 세는지도 함께 확인했다.
-
통계 화면이 시간 초과로 죽었다
매번 원본을 세던 통계를 미리 계산해 두고 오늘 것만 직접 세도록 나눈 기록이다. 오늘의 경계가 PHP 와 MySQL 에서 갈리던 것도 함께 잡았다.
-
미리 본 것과 실제로 돌린 것의 범위가 달랐다
확인용과 실행용 조건이 갈려 예상보다 네 배가 바뀐 일을 조건 단일화와 건수 대조로 막은 기록이다.
-
목록 한 화면에 쿼리가 백 번 나갔다
행마다 조회하던 목록을 한 번에 묶고 실행 계획을 본 뒤 인덱스를 넣은 순서를 정리한 기록이다.
-
컨트롤러가 다 하고 있었다
한 함수에 몰려 있던 처리를 나누면서 중복 조회로 생긴 버그를 잡고 시험 가능성까지 얻은 기록이다.
-
주소가 코드에 통째로 박혀 있었다
코드와 저장된 자료 양쪽에 박힌 주소를 찾아 설정과 변환으로 옮기고 남은 것을 다시 센 기록이다.
-
화면대로 테이블을 만들었다
화면 항목 수를 그대로 컬럼으로 옮긴 설계가 한계에 부딪쳐 행으로 바꾼 기록이다.
-
배송비 규칙이 너무 많았다
배송비 조건문이 계속 늘어나던 것을 표로 정리하고 자료로 빼면서 적용 이력까지 남긴 기록이다.
-
지우려던 것이 비상용 통로였다
접속 기록만 보고 정리하려던 계정이 비상용이었던 것을 계기로 정리 기준을 바꾼 기록이다.
-
배포할 때마다 인증서가 덮였다
갱신 주기가 다른 자산이 배포 대상에 섞여 덮이던 것을 자리와 목록으로 분리한 기록이다.
-
나눠 뒀던 것을 왜 합쳤는지 적었다
나눠 둔 배치를 다시 합치면서 나눈 이유를 먼저 찾고 다시 나눌 조건까지 남긴 기록이다.
-
서버를 처음 넣어 봤다
장비 설치를 처음 하며 준비물보다 절차가 먼저라는 것과 시점별 목록의 필요를 확인한 기록이다.
-
왜 바뀌었는지 자식 쪽에 안 남았다
상위 변경이 하위 값을 바꿨는데 하위 이력에 남지 않아 조사가 막혔던 것을 고친 기록이다.
-
설정이 두 군데서 만들어지고 있었다
고친 설정이 반영되지 않던 원인이 값을 만드는 자리가 둘이었기 때문임을 확인한 기록이다.
-
지운 자료가 시험 자료에 섞였다
표시로만 지운 행이 시험 표본에 섞여 든 것을 계기로 표본 뽑는 절차를 정리한 기록이다.
-
검색이 전부 훑고 있었다
부분 일치 검색을 글자 단위로 잘라 별도 컬럼에 담고 넣는 쪽과 찾는 쪽을 맞춘 기록이다.
-
같은 파일을 둘이 동시에 고쳤다
서버에서 직접 고치던 설정 파일이 서로 덮이던 것을 배포 경로와 사본 남기기로 줄인 기록이다.
-
다시 받다 끊겼는데 원래 있던 것도 없어졌다
전부 지우고 다시 넣는 동기화가 수신 실패로 빈 상태를 만든 것을 순서와 검사로 고친 기록이다.
-
장비마다 필요한 계정이 달랐다
편의로 네 대에 같은 계정을 만들었다가 필요한 곳만 남기고 나머지를 막은 기록이다.
-
돈 내고 부르던 것을 안에서 처리했다
외부 호출 요금이 늘어난 원인을 호출 수로 세어 찾고 횟수와 대상을 줄인 기록이다.
-
크롤러를 느리게 만들었다
속도를 줄이자 시간 안에 못 끝나던 수집을 겹침 방지와 일의 양 줄이기로 푼 기록이다.
-
어느 장비에 둘지 성능과 위치로 골랐다
장비를 넣으면서 사양뿐 아니라 랙 위치와 전원과 접근 경로까지 함께 정한 기록이다.
-
소스에 박힌 절대 주소
시험 서버가 운영을 가리키던 원인인 절대 주소를 한 곳에서 만들게 바꾸고 검사까지 세운 기록이다.
-
엑셀 업로드에 검사가 없었다
표 파일 업로드가 중간에 죽어 절반만 들어가던 것을 묶기와 사전 검사로 고친 기록이다.
-
코드와 데이터가 다른 길로 갔다
스키마 변경을 손으로 하던 것을 파일로 남겨 코드와 함께 올리고 순서와 되돌림까지 정한 기록이다.
-
반복문 안의 외부 요청
건마다 외부를 부르던 배치를 부분 수신과 결과 저장과 동시 호출로 줄이며 매번 시간을 잰 기록이다.
-
컬럼이 무슨 뜻인지 물어보고 나서 조건을 짰다
컬럼 이름만 보고 짠 통계 조건이 틀린 뒤 값의 뜻과 세는 대상을 먼저 정하게 된 기록이다.
-
로그가 디스크를 채웠다
로그 한 파일이 디스크를 채워 서비스가 멈춘 것을 회전과 보관 개수와 두 단계 알림으로 고친 기록이다.
-
화면 하나 보고 전부 확인했다고 적었다
표본 하나로 전체 확인을 보고했다가 같은 증상이 다시 난 뒤 목록과 통과 조건을 세운 기록이다.
-
공유 방법을 바꾸니 둘 자리도 정해야 했다
협력사와 주고받는 방법을 바꾸면서 파일 서버를 어디에 둘지와 계정·보관 기간까지 같이 정한 기록이다.
-
검색은 되는데 3초가 걸렸다
앞이 열린 부분 일치 검색이 인덱스를 못 쓰는 이유와 되찾는 방법을 실행 계획으로 확인한 기록이다.
-
키를 넣었는데 비밀번호를 물었다
IDC 서버에 SSH 공개키를 넣었는데도 비밀번호를 묻던 것을 상세 로그로 좁혀 권한 문제였음을 확인한 기록이다.
-
코드 밖으로 꺼낸 SQL
쿼리를 코드 안 문자열에서 별도 파일로 옮기며 두 치환 방식의 차이까지 확인한 기록이다.
-
설계도와 실제 사이
설계도와 실제 스키마가 양방향으로 어긋난 상태에서 정본을 정하고 설명을 옮긴 기록이다.
-
한 테이블에 다 담으니 인덱스를 못 걸었다
여러 용도를 한 테이블에 담아 인덱스 선택이 막힌 상태를 나누면서 옮기는 순서까지 정한 기록이다.
-
행은 있는데 파일이 없었다
트랜잭션이 파일 시스템까지 되돌리지 못해 생긴 불일치를 저장 순서와 반환값 확인으로 고친 기록이다.
-
조회인 줄 알고 돌렸는데 변경이었다
조회용과 변경용 스크립트가 한 폴더에 섞여 사고가 날 뻔한 것을 폴더와 이름 규칙으로 가른 기록이다.
-
누가 붙느냐가 구조를 정했다
통계를 여러 곳에 공개하기 전에 붙는 주체를 적어 접근 방식과 계산 자리를 정한 기록이다.
-
지금 구조로는 필요한 만큼 안 됐다
저장 공간이 반복해서 차던 것을 증가 속도와 구성 비율로 나눠 보고 처리 순서를 정한 기록이다.
-
계층이 없던 파견지
계층이 없는 코드베이스에서 범위 밖을 건드리지 않고 내가 만드는 것만 나눠 만든 뒤 넘긴 기록이다.
-
이 값이 어디서 오는지 몰랐다
여러 단계를 거쳐 정해지는 배송비의 출처를 값과 함께 넘기고 계산 과정을 보이게 만든 기록이다.
-
200인데 본문이 비어 있었다
성공 코드와 빈 본문 때문에 실패가 정상으로 기록되던 것을 내용 기준 판정으로 고친 기록이다.
-
떠 있는 것과 응답하는 것은 다르다
프로세스가 살아 있는데 요청을 못 받던 상태를 단계별 확인과 상태 경로로 가른 기록이다.
-
프레임워크가 정해 둔 자리
규약이 정해 둔 폴더와 이름과 호출 방향을 따르며 설정이 줄어든 이유를 정리한 기록이다.
-
두 프로젝트가 같은 것을 만들고 있었다
비슷해 보이는 두 화면을 합칠지 나눌지를 목적으로 가르고 반쯤 합치는 선을 정한 기록이다.
-
다시 보냈더니 앞부분이 두 번 갔다
조각으로 나가는 발송에서 전체 단위로만 표시하다 재발송에 중복이 난 것을 조각 단위 기록으로 고친 기록이다.
-
어디까지 자동으로 할지 같이 정했다
정산 확인 자동화에서 사람이 남는 단계를 가르고 끝난 것의 기준을 정한 기록이다.
-
그날 배치가 두 번 돌았다
하루치 집계가 두 배로 나온 원인을 넣기만 하는 배치에서 찾고 두 번 돌아도 되게 고친 기록이다.
-
용도마다 무엇을 쓸지 정했다
캐시 저장소에 성격이 다른 다섯 가지가 섞여 로그아웃이 나던 것을 용도별로 가른 기록이다.
-
새 글을 계속 보여 주는 게시판
새로고침을 줄이려고 넣은 주기 조회가 요청을 늘려서 응답 크기와 간격과 조건을 손본 기록이다.
-
큐를 넣을 자리인지 다시 봤다
메일 지연을 큐 대신 테이블과 배치로 처리하고 무엇을 포기했는지까지 적어 둔 기록이다.
-
압축을 풀었더니 파일명이 깨졌다
압축 형식이 파일명 인코딩을 담지 않아 푸는 쪽이 짐작하던 문제를 이름 규칙으로 닫은 기록이다.
-
몰아 보내면 막힌다
외부 사이트에서 주기적으로 자료를 가져오며 간격과 수집량과 실패 감지를 정한 기록이다.
-
알림을 줄였더니 다음 건이 묻혔다
알림 억제를 한 덩어리로 걸었다가 다른 사건까지 묻힌 것을 단위와 건수 표시로 고친 기록이다.
-
한 곳에서만 깨지던 글자
한 화면에서만 한글이 깨지던 원인을 값의 이동 경로에서 찾고 세 자리 설정을 맞춘 기록이다.
-
0건이 통과인지 미측정인지 몰랐다
빈 검색 결과를 통과로 읽었다가 배포 뒤에 터진 뒤로 대조군과 대상 개수를 함께 보게 된 기록이다.
-
내가 안 건드렸는데 값이 바뀌어 있었다
손으로 넣은 값을 배치가 덮고 있던 것을 찾고 시험 방법과 덮어쓰기 규칙까지 정리한 기록이다.
-
API가 없어서 화면을 읽었다
상대에게 인터페이스가 없어 화면을 읽되 깨질 것을 전제하고 그만둘 조건까지 적어 둔 기록이다.
-
세션에 있던 언어
언어를 세션에 두어 링크 공유가 깨지던 것을 주소로 옮기고 문구를 파일로 분리한 기록이다.
-
올라온 것이 어디에 있는지 몰랐다
여러 경로로 오던 요청을 공유 문서 한 곳에 모으고 상태를 넷으로 줄인 기록이다.
-
이력은 쌓이는데 볼 방법이 없었다
기록만 남기고 볼 화면이 없으면 기록은 쓰이지 않는다.
-
프로젝트마다 다른 빌드 방식
프로젝트마다 빌드가 다르면 옮길 때마다 새로 배운다.
-
DB 앞에 캐시를 두고 나서
언제 지울지가 어려웠다.
-
지우고 다시 만들다 더 나빠졌다
되돌릴 수 없는 단계가 먼저 오면 뒤가 실패했을 때 원래보다 나빠진다.
-
값은 옮겼는데 코드 체계가 달랐다
옛 시스템의 코드와 새 시스템의 코드가 다르면 대응표가 먼저다.
-
처리 중에 바뀌는 대상 집합
처리 전에 대상을 표시해 두면 그 사이 들어온 것이 안 섞인다.
-
PHP에 없는 것들
문법은 며칠이면 됐는데 자바에서 당연하던 것들이 없어서 그게 더 오래 걸렸다.
-
거쳐 가는 것을 설정으로 뺐다
임시로 거쳐 가는 경로는 설정으로 켜고 끌 수 있게 둔다.
-
일이 없던 기간에 읽은 것들 — 빅데이터라는 말이 막 퍼지던 때
다음 일이 정해지지 않은 동안 당장 쓸 데 없는 자료를 읽고 있다.
-
색 넷을 가르는 기준
시나리오를 먼저 정하고 나서 값을 봤다.
-
누르는 자리가 너무 작았다
그림 크기와 누르는 크기가 같았다.
-
환경마다 설정이 달랐다
빌드할 때 정할지 실행할 때 정할지.
-
메시지 형식을 직접 정하기
메시지 형식을 처음 정해 봤다.
-
빠진 것을 그냥 채우지 않았다
빠진 것을 채우기 전에 왜 빠졌는지 본다.
-
건너뛴 이유를 안 남겨서 몰랐다
안 한 이유가 여럿이면 무엇 때문에 안 했는지 남긴다.
-
센서가 0, 0, 0을 돌려줬다
처음엔 배선을 의심했다.
-
매일 아침 빌드를 내는 일을 맡았다
잡일이라고 생각했는데 몇 주 하다 보니 보이는 것이 있었다.
-
같은 숫자를 세 곳에 적어 두고 있었다
같은 값이 여러 곳에 적혀 있으면 한 곳만 고치게 된다.
-
초기화 순서를 바꿨더니 안 떴다
서로 기대는 것들은 순서가 곧 동작 조건이다.
-
순위를 빠르게 보여줘야 했다
내 순위를 구하는 게 느렸다.
-
막아 둔 것이 문제의 크기를 알려 줬다
막아 둔 장치가 있다는 것 자체가 그 문제가 컸다는 뜻이다.
-
어느 사본이 진짜인지 몰랐다
같은 파일이 여러 벌 있으면 어느 것이 쓰이는지부터 확인한다.
-
예외 처리가 쌓여서 구조를 바꿨다
같은 자리에 예외가 계속 붙으면 구조가 안 맞는 것이다.
-
앱이 조금씩 죽어 갔다
재현이 안 되는 죽음 앞에서 재현 대신 측정으로 방향을 바꿨다.
-
중계하면서 다듬었더니 안 맞았다
서버에서 받은 아이템 목록을 화면에 맞추려고 다듬었다가 다시 보낼 때 서버가 거부하던 것을 좁혀 간 기록이다.
-
어떤 기기에서만 죽었다
로그가 남지 않아 못 찾았다.
-
같은 자원인데 경로마다 규칙이 달랐다
같은 것을 주는 경로가 둘이면 규칙도 둘이 된다.
-
세어 보니 하나뿐이었다
몇 개인지 세면 만들 것이 줄어든다.
-
무엇을 금지하는지 정확히 안 읽었다
이용 약관이 제한하는 대상을 확인하지 않으면 엉뚱한 것을 금지한다.
-
결과를 클라이언트가 정하고 있었다
앱이 계산한 값을 서버가 그대로 받으면 그 값을 신뢰하는 것이다.
-
후보를 두 번에 걸쳐 좁혔다
후보가 많으면 싼 기준으로 먼저 자른다.
-
어떤 기기에서만 소리가 끊겼다
동시에 몇 개까지 나는지 몰랐다.
-
빌드는 성공인데 고친 게 안 들어갔다
빌드 성공은 결과물이 실행되는 자리로 갔다는 뜻이 아니다.
-
일부러 느린 쪽을 골랐다
빠른 쪽이 항상 고를 쪽은 아니다.
-
규칙을 넓히지 않았다
한 경우를 막으려고 만든 규칙을 전부에 적용하지 않는다.
-
이미 쓰는 번호가 끼어 있었다
번호를 나눠 쓸 때는 이미 쓰는 것을 먼저 확인한다.
-
원인을 모른 채 우회했다
첫 추측으로 원인을 단정하면 같은 문제를 다른 곳에서 다시 만난다.
-
더 낫다고 바꿀 이유가 되지는 않았다
더 나은 것을 찾았다고 바로 갈아타지 않는다.
-
업데이트하니 저장이 깨졌다
구조가 바뀌면 못 읽는다.
-
상태를 바꾸면 값 두 개가 같이 움직였다
함께 움직여야 하는 값은 함께 바꾸는 자리를 만든다.
-
하나를 눌렀는데 여러 곳이 바뀌었다
한 동작이 여러 상태를 건드리면 중간에 끊겼을 때 어긋난다.
-
한 번 재 보고 계획을 버렸다
재 보기 전에는 어느 쪽이 나은지 모른다.
-
내 기기에서만 확인하고 냈다
한 대에서 확인한 것은 그 한 대에서 된다는 뜻이다.
-
리소스 파일명이 규칙이었다
이름 규칙으로 자료를 찾으면 규칙이 깨질 때 조용히 실패한다.
-
설계가 전제한 것이 없었다
전제가 지금 구성에 없으면 그 설계는 아직 못 쓴다.
-
코드 하나로 두 플랫폼을 낸다고 했다
맞는 말이었지만 그 문장이 감춘 것이 있었다.
-
저장 파일이 깨지자 앱이 안 떴다
읽는 자료가 깨졌을 때 무엇을 할지 정해 두지 않으면 시작조차 못 한다.
-
글자가 잘려서 기능이 안 됐다
길이 제한에 걸려 잘리면 기능 실패로 나타난다.
-
목록이 전부를 불러오고 있었다
화면에 열 개 보이는데 백 개를 만들었다.
-
다른 기기로 옮겨도 같은 자리에서 죽었다
환경을 바꿔서 증상이 사라지면 원인이 아니라 여유가 달라진 것이다.
-
이름 한 글자가 달라서 안 불렸다
이름 하나가 안 맞아서 못 찾았다.
-
고쳤다고 했는데 확인을 안 했다
재현 절차가 없으면 고쳤는지 아닌지도 확인할 수 없다.
-
결제 영수증을 확인해야 했다
앱이 성공이라고 하면 줬다.
-
한 자리에 계산값과 손으로 넣은 값이 섞였다
계산으로 나온 값과 손으로 넣은 값을 같은 자리에 두면 구분이 안 된다.
-
값을 하나 늘렸더니 다른 데서 안 잡혔다
상수를 늘리면 그 상수를 분기하는 모든 자리가 대상이 된다.
-
화면을 오갈수록 죽었다
오래 켜 두면 죽었다.
-
점수가 음수가 됐다
값이 담을 수 있는 범위를 넘으면 조용히 반대편으로 넘어간다.
-
애니메이션이 건너뛰었다
프레임 수로 움직이고 있었다.
-
빌드할 때마다 번호가 바뀌었다
다시 만들 때마다 값이 바뀌면 저장된 것이 어긋난다.
-
주석이 옛날 동작을 설명하고 있었다
코드는 고치고 주석은 안 고치면 주석이 거짓말을 한다.
-
인벤토리는 배열이 아니었다
아이템 목록인 줄 알았는데 정렬과 중첩과 최대치가 붙으면서 구조를 두 번 다시 짰다.
-
원인이 조건식 하나였다
여러 증상의 원인이 한 줄인 경우가 있다.
-
밸런스 수치가 코드 곳곳에 박혀 있었다
조정할 값이 코드에 흩어져 있으면 조정할 때마다 빌드가 필요하다.
-
두 규칙이 서로 다른 말을 했다
고정값과 비율로 각각 능력치를 올리는 두 아이템을 같이 끼웠을 때 화면마다 다른 값이 나오던 것을 좁혀 간 기록이다.
-
처음 켜자마자 전부 한꺼번에 일어났다
첫 실행에서 하는 일을 나눠 두지 않으면 한꺼번에 터진다.
-
빌드가 20분 걸렸다
한 줄 고치고 20분을 기다렸다.
-
한쪽은 층이 있고 한쪽은 평평했다
두 쪽의 구조가 다르면 옮길 때마다 변환이 붙는다.
-
단계마다 자료 형태가 바뀌고 있었다
형태가 바뀌는 지점을 모르면 어디서 어긋났는지 못 찾는다.
-
배포는 됐는데 아무것도 안 바뀌었다
배포 명령이 성공해도 대상이 틀렸으면 아무 일도 일어나지 않는다.
-
자바에서 받은 문자열을 안 놓아 줬다
경계를 넘어온 자원은 넘겨준 쪽 규칙대로 놓아 줘야 한다.
-
물려받은 규칙을 확인 없이 따랐다
이유를 모르는 규칙은 이유를 찾고 나서 따른다.
-
같은 이미지가 다르게 보였다
기기마다 화면이 달랐다.
-
한꺼번에 보냈더니 한도에 걸렸다
밀린 것을 한 번에 처리하면 그 순간의 부하가 한도를 넘는다.
-
재기동하니 세던 값이 사라졌다
메모리에만 있는 값은 프로세스가 끝나면 없어진다.
-
지우고 다시 깔라고 안내했다
지우고 다시 까는 것이 항상 안전한 조치는 아니다.
-
한 곳만 고쳤더니 다른 길에서 또 났다
고친 방식이 다른 경로에도 필요한지 본다.
-
배포 빌드가 다르게 돌았다
개발에서는 되는데 배포본에서 안 됐다.
-
인자 없이 실행했더니 운영에 나갔다
기본 동작이 위험한 쪽이면 실수 한 번이 사고가 된다.
-
화면 파일에 업무 로직이 있었다
고칠 곳을 못 찾았다.
-
안 보이는 문자 하나가 스크립트를 막았다
줄 끝의 캐리지 리턴은 눈에 안 보이지만 명령의 일부가 된다.
-
같은 값이 두 곳에 있었다
같은 값을 두 곳에 두면 반드시 갈린다.
-
같은 것이 두 개 생겨 있었다
하나뿐이라고 생각한 것이 둘이면 값이 갈린다.
-
검증이 앱 쪽에 있었다
앱이 보낸 값을 그대로 믿었다.
-
서버가 늘 때마다 코드를 고쳤다
환경마다 다른 값이 코드에 박혀 있으면 배포가 수정 작업이 된다.
-
몇 개인지부터 세어 봤다
전부 세어 보기 전에는 얼마나 걸릴지 모른다.
-
데이터는 넣었는데 고칠 화면이 없었다
넣기만 하고 고칠 방법을 안 만들면 매번 사람이 불린다.
-
같은 주소가 상태마다 다른 일을 했다
하나의 Servlet 주소가 세션 상태에 따라 세 갈래로 갈리던 것을 주소로 갈라 놓은 기록이다.
-
보상은 한 번만 줘야 했다
두 번 눌렀더니 두 번 들어갔다.
-
지워도 되는지 아무도 몰랐다
무엇을 얼마나 두는지 정해야 지울 수 있다.
-
재시작했더니 다 로그아웃됐다
세션이 프로세스 안에 있으면 재시작마다 사라진다.
-
성공이라는데 내용이 없었다
응답이 성공이어도 안에 값이 있는지는 따로 봐야 한다.
-
라이브러리가 권한을 늘렸다
넣지 않은 권한이 목록에 있었다.
-
커밋에 남의 파일이 딸려 갔다
작업 사본을 여럿이 쓰면 커밋 대상이 내 것만은 아니게 된다.
-
한꺼번에 바꿨더니 문의가 들어왔다
사용자 상태를 일괄로 바꾸면 그만큼 문의가 온다.
-
보낼 때와 받을 때가 달랐다
보내는 쪽과 받는 쪽의 문자 처리가 다르면 글자가 깨진다.
-
처음 세운 리눅스 웹 서버
로컬에서 되던 것이 서버에 올리니 안 됐다.
-
한 줄에 너무 많이 담겨 있었다
한 항목이 커지면 읽는 쪽 비용이 같이 오른다.
-
연결을 계속 잡고 있었다
Android에서 Apache HttpClient를 요청마다 새로 만들어 쓰다가 오래 켜 두면 느려지던 것을 공용 인스턴스로 바꾼 기록이다.
-
임시 디렉터리가 비워져 있었다
시스템이 관리하는 자리에 둔 파일은 언젠가 사라진다.
-
손으로 돌리면 되는데 예약으로는 안 됐다
예약 실행은 로그인 셸과 다른 환경에서 돈다.
-
화면 파일 안의 조회 코드
웹 화면을 만드는 파일 안에 DB 조회가 들어 있었다.
-
내 코드 때문인 줄 알았다
언제부터 나는 증상인지 먼저 본다.
-
처음 짚은 원인이 아니었다
처음 떠오른 원인부터 고치면 시간을 더 쓴다.
-
SQL이 어디에도 없었다
자바 코드에 SQL이 없었다.
-
이름과 다른 뜻으로 쓰고 있었다
이름이 뜻하는 것과 다르게 쓰면 그 이름을 믿은 코드가 틀린다.
-
XML로만 된 설정
파일이 계속 늘었다.
-
로그를 남기게 해 뒀는데 안 남고 있었다
log4j 설정 파일이 클래스패스에 없어 로그가 하나도 안 남던 것을 확인하고 수준 기준까지 정한 기록이다.
-
로그인은 되는데 다음 요청에서 풀렸다
Android에서 로그인은 되는데 다음 호출부터 세션이 풀리던 것이, 요청마다 HttpClient를 새로 만들어 쿠키가 사라졌기 때문임을 확인한 기록이다.
-
버전 관리를 처음 쓰면서
SVN을 처음 쓰면서 남의 변경을 덮은 일과 충돌 표시를 만난 기록이다.
-
임시로 붙인 이름이 그대로 남았다
급하게 붙인 클래스 이름이 참조가 늘면서 못 바꾸게 된 것을 SVN 이력으로 확인한 기록이다.
-
폴더가 없어서 파일이 안 만들어졌다
첨부파일 저장이 오류 없이 실패하던 것이 상위 폴더가 없어서였음을 확인하고 뜰 때 검사하게 만든 기록이다.
-
공통이 뭔지 모른 채 공통 클래스를 만들었다
화면마다 흩어진 Apache HttpClient 호출을 한 클래스로 모으면서, 모으는 것과 공통으로 만드는 것이 다른 일임을 확인한 기록이다.