production

6 posts

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

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

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

테스트는 통과했는데, 데이터는 여전히 잘못되어 있다

Statistical debugging은 운영 환경 데이터를 신호로, 버그를 이상 신호로 다룬다. 단 하나의 단위 테스트도 추가하지 않고 데이터 손상, off-by-one 오류, 침묵하는 실패를 찾는 방법이다.

당신의 테스트 스위트는 초록색이다. 로그는 조용하다. 대시보드에는 빨간 선이 없다. 그런데 3%의 사용자가 음수 합계가 적힌 인보이스를 받고 있거나, 추천 모델이 삭제된 상품을 조용히 맨 위에 올리고 있거나, 집계 파이프라인이 특정 시간대의 환불을 이중 집계하고 있다. 이것들은 데이터…

두려움 vs 밀어붙이기: AI 코딩의 두 가지 현실

AI 코딩은 어떤 난장판에서도 복구할 수 있는 엘리트 팀에게는 잘 통한다. 그 외 모든 사람은 두려움, 실패한 CI, 중단된 실험만 남는다. 격차는 모델이 아니다.

두 팀이 동일한 AI 모델을 사용하는 모습을 지켜보면, 완전히 다른 두 가지 결과를 목격하게 된다. 첫 번째 팀은 모델에게 화면을 만들라고 지시한다. 출력 결과는 비슷하지만 어딘가 어긋난다. 스타일링은 Figma 파일에서 벗어나 있다. 상태 관리는 건드려서는 안 될 파일까지 건드린다.…

프로덕션에서의 AI 코딩: 대부분의 팀이 포기하는 이유

대부분의 팀은 AI 코딩을 시도했다가 QA를 통과하지 못하는 코드를 배포하고 포기합니다. 문제는 모델이 아닙니다—AI 출력을 신뢰할 수 있게 만드는 가드레일의 부재입니다.

AI 코딩을 시도하는 대부분의 팀은 같은 궤적을 따릅니다. 처음에는 들떠서 시작합니다. 모델이 몇 분 만에 기능을 생성하고, 팀은 이를 배포합니다. QA가 버그를 발견하고, 팀은 수정본을 배포합니다. QA가 또 다른 버그를 발견하는데, 이번에는 관련이 없어야 할 다른 모듈에서…

Vibe coder를 위한 React Native App Lifecycle 가이드

개발 환경에서는 잘 되는데 점심 먹고 돌아오면 앱이 하얀 화면을 띄운다. 네이티브 lifecycle을 제대로 다루는 resume status 패턴을 설명합니다.

Cursor로 멋진 Expo 앱을 만들었다. Claude Code가 auth flow, dashboard, settings screen까지 전부 생성해 줬다. 배포했다. 사용자가 설치했다. 그리고 DM이 오기 시작한다. "점심 먹고 돌아와서 열면 왜 하얀 화면이 뜨죠?" "왜 아침마다…

왜 Vibe-Coded React Native 앱은 실행 직후 크래시가 나는가 (그리고 막는 법)

optional SDK가 core infrastructure처럼 초기화되면 앱은 실행 직후 crash할 수 있습니다. non-critical tool이 production을 함께 끌어내리지 않게 만드는 dependency tier 시스템을 설명합니다.

Vibe-coded 모바일 앱에서 흔한 launch failure 중 하나는 analytics, attribution, crash reporting이 정말로 critical한 service와 나란히 초기화되는 것입니다. 그런 optional SDK 중 하나가 특정 device나 특정…