ci-cd

5 posts

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 출력을 리뷰하는 개발자는 주의력이 높고, 해당 도메인에 익숙하고, 시간 압박이 없을 때 문제를 잡아냅니다. 그 외의 모든 조건에서 — 그리고 대부분의 조건이 그렇습니다…