additional-strategies

5 posts

main 브랜치가 깨졌습니다. 200개의 커밋을 뒤져야 합니다.

git bisect은 수동 커밋 탐색을 자동화된 이진 검색으로 바꿉니다. 모든 커밋을 하나씩 checkout하지 않고 버그를 도입한 정확한 커밋을 찾는 방법을 알아보세요.

main에서 CI가 빨간불이지만 어제는 초록불이었습니다. 그사이 어딘가에 버그가 기어들어왔습니다. 200개의 커밋을 스크롤하며 디프를 읽고 추측할 수 있습니다. Slack에 물어보고 누군가 관련 코드를 건드렸던 것을 기억하길 바랄 수 있습니다. 아니면 Git에게 일을 맡길 수도…

에러 추적기는 어디서 죽었는지 압니다. 하지만 재현은 도와주지 않습니다

stack trace는 크래시가 어디서 발생했는지 알려주지만, 원인은 알려주지 않습니다. 프로덕션 크래시를 실제로 디버깅할 수 있는 로컬 테스트 케이스로 바꾸는 capture-and-replay 패턴을 소개합니다.

프로덕션에서 정확히 어디서 크래시가 났는지 압니다. stack trace가 의 147행을 가리킵니다. 예외는 에 대한 입니다. 코드를 pull하고 테스트를 실행하면 모두 통과합니다. 샘플 페이로드로 endpoint를 수동으로 호출해도 잘 작동합니다. 버그는 실재합니다. 고객들이 이를…

94% 테스트 커버리지도 놓친 정수 오버플로우를 symbolic execution이 찾아냈습니다

unit tests는 특정 입력을 검증합니다. symbolic execution은 모든 가능한 입력을 검증합니다. 작동 방식, 비용, 시작 방법을 알아보세요.

테스트 스위트는 94% 커버리지와 0개의 실패를 기록했습니다. symbolic execution 엔진은 3초 만에 코드의 크래시를 찾아냅니다. 테스트가 고장 난 것이 아닙니다. 커버리지 지표가 거짓말을 하는 것도 아닙니다. 문제는 테스트가 특정 지점에서의 동작을 검증한다는 것입니다.…

로그에서 PII가 새고 있는데, grep으로는 해결되지 않습니다

대부분의 팀은 고객 민원 이후에야 PII 유출을 발견합니다. 민감한 데이터를 수집부터 출력까지 추적하는 방법과 오늘 바로 사용할 수 있는 코드 예제를 소개합니다.

대부분의 팀은 고객 민원이나 규정 준수 감사 이후에야 PII 유출을 발견합니다. 그때가 되면 데이터는 이미 ETL 파이프라인을 통과해 애플리케이션 로그에 남고, 세 가지 다른 observability 도구에 인덱싱되어 있습니다. 사후에 찾는 것은 고고학과 같습니다. 실제로 필요한 것은…

CI는 코드는 테스트했지만 contract는 아니었기 때문입니다

대부분의 CI 파이프라인은 문법 오류와 논리 버그를 잡아냅니다. 하지만 실제로 프로덕션을 중단시키는 API contract 파괴는 놓칩니다. 이 문제를 해결하는 방법을 알아보세요.

제 팀에서 프로덕션까지 간 모든 API 파괴는 CI를 통과했습니다. 전부요. unit tests는 초록불이었고, integration suite도 통과했습니다. 배포가 나갔고, 그다음 Slack 메시지가 쏟아지기 시작했습니다. 문제는 테스트를 하지 않았던 것이 아닙니다. 잘못된 것을…