Optimal Solution
CI/CD - 빌드 자동화 개념 본문
빌드 자동화
경우에 따라 다를 수 있지만, 나는 이런 상황을 경험한 적이 있다.
개발을 하면서 간단히 무언가를 검증하기 위해 프로덕션과는 무관한 로깅용 코드를 짜고는 한다.
이러한 코드들은 늦어도 PR을 날리기 전에는 제거해주어야 한다.
하지만 이런 코드들을 제거하지 않았다는 것을 PR을 날리기 직전에 깨달았다.
그래서 로깅용 코드만 제거한 후 PR을 날려 머지를 하고 잠시 휴식을 취하고 왔는데, 아뿔싸 문제가 발생한다.
"빌드가 안 되는데 ?"
문제가 됐던 로깅용 코드는 특정 상황에서 로그를 남기도록 if문 안에 들어있었다.
if문을 지우면 해결될 것이라 아무 생각 없이 if문을 지웠는데, 그 아래 코드는 else문이었다.
if문이 없는데 else가 나와버리니 컴파일 단계에서 에러가 발생한 것이다.
그 당시에는 개발을 해본 지 얼마 되지 않아 "꼼꼼히 체크하고 PR을 날려야겠다" 라고만 생각했었다.
하지만 CI/CD라는 개념을 알게 되고, 자연스럽게 생각이 바뀌었다.
'(내 잘못이긴 한데,) 좀 똑똑하게 빌드가 되도록 자동화했더라면 이런 문제가 전혀 안 생겼을텐데 ...'
코드를 운영 환경에 반영하기 전에 이러한 사전 점검이 자동적으로 이루어졌다면, 인간에 의한 실수(human error)로 인한 피해를 최소화할 수 있을 것이다.
CI - 빌드 자동화
CI의 개념 안에는 빌드 자동화라는 개념이 녹아있다.
조금 더 자세히 들여다보자면, 코드를 PUSH하거나 PR을 생성할 때 코드 변경 사항을 반영하여 자동으로 빌드하는 것이다.
이게 왜 필요한가를 납득시켜 보기 위해서 위에서 내 경험을 이야기해봤지만 납득이 되지 않는 독자를 위해 추가로 설명해보자면, 빌드 자동화를 통해 우리는 '컴파일 타임에서 발생하는 에러를 조기에 잡아낼 수 있다'.
물론 누군가 이렇게 말할 수 있다.
'그거 그냥 로컬에서 한 번 빌드해보고 운영 적용하면 되는 거 아니야 ?'
맞다. 맞는데, 단순 반복의 작업에 대하여 사람을 믿을 것인지, 기계를 믿을 것인지 고르라 하면 나는 기계를 고를 것이다.
왜냐 ? 기계에게는 무슨 일을 해야하는지를 정확히 알려주고 그 일을 반복적으로 수행하게 시키고, 이를 통해 벌어낸 시간을 사람이 더 가치있는 일에 집중하게 하는 것이 효율적이라고 생각하기 때문이다.
사람은 실수를 한다.
나처럼, 단순한 수정이라고 생각하고 빌드를 해보지 않고 운영 환경에 적용시킬 수도 있다.
하지만 기계는 시킨 일은 확실하게 한다.
코드 변경 사항에 대해, PUSH/PR 등등이 발생할 때 반드시 빌드를 해봐 ! 라고 시키면 시킨대로 수행한다는 것이다.
그래서 빌드 자동화라는 프로세스를 도입하여 신뢰성을 더욱 확보하는 것이다.
'CICD' 카테고리의 다른 글
CI/CD - 빌드 자동화 기초 (1) | 2024.09.01 |
---|---|
CI/CD - 기본 개념 (0) | 2024.08.31 |