버그를 고쳤어요. 이제 그 수정본을 제품 전체를 다시 빌드하거나 사용자에게 재설치를 요구하지 않고도 모두에게 전달해야 해요. 그 작고 정밀한 수정본이 바로 패치예요.
패치는 문제를 고치거나 취약점을 막기 위해 소프트웨어의 일부만 바꾸는 작은 업데이트예요. 단어 자체가 직관적이에요. 청바지 구멍에 천을 덧대거나 자전거 타이어에 패치를 붙이듯, 새 청바지나 새 타이어를 살 필요가 없어요. 나쁜 자리 하나만 수선하고 나머지는 그대로 두는 거예요.
'나머지는 그대로 둔다'는 점이 핵심 장점이에요. 프로그램은 수십만 개의 명령어로 이루어져 있어요. 그중 하나가 잘못됐을 때, 전체를 다시 쓰는 게 아니라 그 한 조각만 바꿔서 배포해요. 패치는 작기 때문에 만들기 빠르고, 검토하기도 빠르고, 다른 부분을 건드릴 가능성도 낮아요.
패치는 이름을 몰라도 늘 접하고 있어요. 스마트폰의 '보안 패치'가 바로 이것이에요. 특정 취약점 위에 작은 수정을 덧댄 거예요. 보통 공격자가 발견한 구멍이 대상이에요. 회사가 '취약점을 패치했다'고 할 때, 앱을 처음부터 다시 만든 게 아니라 위험한 자리 하나를 빠르게 막은 거예요. '핫픽스(hotfix)'는 무언가가 실시간으로 타오르고 있을 때 급하게 내보내는 패치예요.
더 큰 그림과 연결해보면 이래요. 패치를 내보낼 때도 배포가 필요해요. 변경 사항을 실제로 서비스에 반영해야 하니까, 패치는 배포하는 내용물이 되는 거예요. 그리고 패치 자체가 오히려 문제를 악화시킬 경우에는 롤백으로 패치 이전 버전으로 되돌리고 다시 살펴봐요. 수정본이 있으면 패치로 나아가고, 아직 없으면 롤백해요.
비개발자가 이 개념을 알아야 하는 이유는 요청의 규모를 제대로 가늠할 수 있기 때문이에요. 무언가 고장났을 때 '패치가 필요하다'는 말은 무서운 전면 재구축이 아니에요. 수술처럼 정밀한 작업이에요. 나쁜 자리를 찾아서, 꿰매고, 그것만 배포해요. 실제 소프트웨어 작업의 상당 부분이 이런 식이에요. 작은 패치 하나하나가 구멍을 막아가는 과정이에요. 극적이지 않아요. 그냥 꾸준한 수선이에요.
패치는 소프트웨어의 나쁜 자리 하나에 덧댄 작은 수정이에요. 새 옷이 아니라 헝겊 한 조각이에요. 구멍을 찾고, 꿰매고, 그것만 내보내요. 소프트웨어가 실제로 나아지는 방식은 대부분 이래요.