ci-cd

7 posts

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

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

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

abstract interpretation은 박사 학위가 필요한 것처럼 들린다. 더 이상 그렇지 않다

Infer를 사용하여 CI 파이프라인에서 형식적 정적 분석을 실행하는 방법. 작동하는 설정과 현실적인 트레이드오프를 소개한다.

abstract interpretation은 엔지니어가 탭을 닫게 만드는 유형의 용어다. 이해하려면 격자 이론을 한 학기 배워야 할 것처럼 들린다. 대부분의 개발자는 이것이 연구 논문에나 나오는 것이지 풀 리퀘스트에는 관련 없는 것으로 생각한다. 그 가정은 비싼 대가를 치른다.…

CI가 당신 없이 tangle할 수 있을 때까지 당신의 리터레이트 프로그램은 고장난 것이다

Literate programming은 단일 진실 공급원을 약속하지만, 수동 weave와 tangle 단계가 CI/CD 파이프라인을 망친다. Markdown 파일이 정규 소스로 남도록 추출과 문서 생성을 자동화하는 방법을 소개한다.

빌드 파이프라인이 터미널을 열고 을 입력하지 않으면 실행될 수 없다면, 당신은 리터레이트 프로그램을 가지고 있지 않다. 컴파일러가 달린 일기장을 가지고 있는 것이다. 리터레이트 프로그래밍의 전체 목적은 산문과 코드가 단일 진실 공급원을 공유하는 것이다. Markdown 파일이…

컴파일러가 문법을 검사한다면, 테스트는 아키텍처를 검사해야 한다.

대부분의 팀은 아키텍처 규칙을 위키에 문서화한다. 의존성 그래프가 어긋났을 때 CI를 실패시키는 실행 가능한 테스트로 작성하는 방법을 알아보자.

테스트 스위트는 이 올바른 입력을 받았을 때 42를 반환하는지 검증한다. 하지만 가 를 import해도 되는지는 검증하지 않는다. 컴파일러는 둘 다 문제없다고 판단한다. 단위 테스트도 둘 다 통과한다. 그러나 둘 중 하나는 아키텍처 위반이며, 6개월 후 당신에게 일주일간의 리팩토링을…

도메인 계층이 Postgres를 임포트합니다. CI는 신경 쓰지 않습니다.

클린 아키텍처 다이어그램은 화이트보드 위에서 멋지게 보입니다. 빌드 파이프라인이 의존성 방향을 강제하여 도메인 코드가 인프라에 닿지 못하도록 만드는 방법을 소개합니다.

팀원 중 누군가가 에 를 임포트했다. PR은 컴파일된다. 테스트는 통과한다. 코드 리뷰는 삼백 줄짜리이고, 아묘도 눈치채지 못한다. 세 달 뒤, 도메인 로직을 공유 패키지로 추출하려 한다. 불가능하다. Postgres 타입, 커넥션 풀링 로직, 모노리스에만 존재하는 커스텀 드라이버…

뮤테이션 테스트는 4시간이 걸린다. 팀은 실제로 CI에서 어떻게 사용할까?

대부분의 팀은 매 커밋마다 전체 뮤테이션 테스트 스위트를 실행하지 않는다. 엔지니어링 팀이 뮤테이션 테스트를 CI에 통합하면서도 빌드 파이프라인을 망가뜨리지 않는 실제 방법을 소개한다.

뮤테이션 테스트 스위트가 4시간이나 걸린다면, 축하한다. 모두가 이미 의심하던 사실을 증명한 셈이다. 당신의 테스트에는 구멍이 있다. 매 푸시마다 CI에서 이걸 돌릴 생각은 하지 마라. 그런 팀은 없다. 문제는 한 커밋당 4시간을 감당할 수 있느냐가 아니다. 테스트는 통과하는데…

AI codebase를 위한 결정론적 가드레일

사람의 리뷰는 일관적이지 않습니다. AI 리뷰는 더 나쁩니다. AI 생성 codebase에 대해 확장 가능한 유일한 방어는 결정론적 enforcement입니다. 무시되는 제안이 아니라 빌드를 실패시키는 규칙입니다.

AI 생성 코드에 대한 표준 조언은 "주의 깊게 리뷰하라"입니다. 이 조언은 정확하지만 규모에서는 쓸모없습니다. AI 출력을 리뷰하는 개발자는 주의력이 높고, 해당 도메인에 익숙하고, 시간 압박이 없을 때 문제를 잡아냅니다. 그 외의 모든 조건에서 — 그리고 대부분의 조건이 그렇습니다…