패치 (컴퓨팅)

**소프트웨어 업데이트**(영어: Software Update)는 이미 배포 및 설치된 소프트웨어의 버그를 수정하거나, 보안을 강화하거나, 혹은 새로운 기능을 추가하기 위해 개발사가 프로그램의 일부를 수정하여 배포하는 데이터 또는 그 과정을 총칭한다. 이는 소프트웨어의 수명 주기 동안 유지보수 및 개선을 위해 수행되는 핵심 활동으로, 아주 작은 용량의 긴급 수정본부터 운영체제 전체를 교체하는 대규모 업그레이드까지 다양한 범위를 포괄한다. 현대에는 대부분 인터넷을 통해 업데이트가 배포되며, 사용자가 직접 설치를 실행하거나 시스템이 정해진 일정에 따라 백그라운드에서 자동으로 설치를 진행한다.

일반적으로 소규모의 빠른 수정을 의미하는 **패치**라고도 불리지만, 현대에 와서 업데이트는 단순한 버그 수정을 넘어 보안 강화, 성능 향상, 사용자 인터페이스 변경, 신규 기능 추가 등 소프트웨어의 가치를 유지하고 향상시키기 위한 모든 변경 사항을 포괄하는 더 넓은 의미의 용어로 사용된다.

## 역사
인터넷이 보급되기 이전 초기 컴퓨팅 시대에는 소프트웨어 업데이트가 매우 드물고 물리적인 비용이 많이 드는 과정이었다. 버그가 발견되더라도, 개발사는 수정된 코드가 담긴 천공 카드, 자기 테이프, 플로피 디스크나 CD-ROM과 같은 물리 매체를 대량으로 생산하여 사용자에게 우편으로 발송해야 했다. 이는 상당한 비용과 시간이 소요되었으며, 모든 사용자가 업데이트를 적용받는 것을 보장할 수 없었다.

특히 이 시기에는 기능이 추가되는 업데이트가 '개선'이 아닌 '새로운 제품'으로 취급되어 유료로 제공되는 경우가 많았다. 대표적인 예로, 애플은 Mac OS X의 주요 버전 업그레이드(예: 10.4 타이거에서 10.5 레오파드로의 업그레이드)를 CD나 DVD 매체에 담아 수십 달러에 유료로 판매했다. 또한 2000년대 후반, 아이팟 터치 사용자는 iOS의 주요 기능이 포함된 새 버전(예: iOS 2.0, 3.0)으로 업데이트할 때마다 일정 비용(약 $9.95)을 지불해야 했다. 이는 당시 미국의 일반적으로 인정된 회계원칙 규정 때문이었는데, 아이폰은 통신사와 2년 약정으로 수익이 장기간 분할 인식되어 약정 기간 내의 업데이트가 무료 지원에 포함된 반면, 아이팟 터치는 판매 시점에 수익이 한 번에 인식되어 새로운 기능을 추가하는 업데이트는 회계상 신규 판매로 처리해야 했기 때문이다. 이러한 유료 업데이트 모델은 현재 대부분의 운영체제 및 모바일 업데이트가 무료로 제공되는 것과 크게 대비된다.

1990년대 초고속 인터넷이 대중화되면서, 개발사들은 자사 웹사이트나 FTP 서버를 통해 패치 파일을 배포하기 시작했다. 이는 물리 매체 비용을 절감시켰으나, 여전히 사용자가 직접 문제를 인지하고, 파일을 찾아 다운로드하고, 설치 과정을 수행해야 하는 번거로움이 있었다.

2000년대 초반, 마이크로소프트가 윈도우 XP 서비스 팩 2와 함께 선보인 윈도우 업데이트는 이러한 패러다임을 바꾸었다. 운영체제에 내장된 자동 업데이트 시스템이 주기적으로 서버를 확인하여 필요한 패치를 사용자 모르게 다운로드하고 설치(혹은 설치 예약)까지 진행함으로써, 특히 보안 업데이트의 적용률을 획기적으로 높이는 계기가 되었다. 이후 모바일 시대가 열리면서 앱 스토어나 구글 플레이 스토어를 통한 중앙 관리형 업데이트가 표준으로 자리 잡았다. 이를 통해 사용자는 모든 앱의 업데이트를 한곳에서 관리할 수 있게 되었으며, OTA 방식을 통해 스마트폰이나 사물 인터넷 기기까지 무선 통신망으로 편리하게 업데이트를 수신하게 되었다. 현대의 SaaS 환경에서는 CI/CD 파이프라인을 통해 하루에도 여러 번의 업데이트가 사용자 모르게 서버에 배포되기도 한다.

## 목적
소프트웨어 업데이트는 소프트웨어 수명 주기에서 유지보수 단계의 핵심적인 부분이며, 다양한 목적을 가진다. 가장 중요하고 시급한 목적은 보안 강화이다. 소프트웨어에서 취약점이 발견되었을 때, 해커나 악성 코드가 이를 악용하여 시스템에 침투하거나 정보를 탈취하는 것을 막기 위해 신속하게 보안 패치를 배포한다. 특히 아직 널리 알려지지 않아 방어책이 없는 상태에서 공격이 이루어지는 제로데이 공격에 대응하기 위해서는 정기적이고 신속한 보안 업데이트가 필수적이다. 또한, 소프트웨어 출시 전 테스트 과정에서 발견되지 않았던 각종 오류나 비정상적인 동작, 즉 버그 수정도 중요한 목적이다. 프로그램 충돌, 데이터 손실, 기능 오작동 등을 수정하여 프로그램의 전반적인 안정성을 높인다. 이미 수정했던 버그가 다른 코드 변경으로 인해 다시 발생하는 회귀 버그를 해결하는 것 역시 여기에 포함된다.

다음으로, 소프트웨어의 가치를 높이기 위한 새로운 기능 추가 및 성능 향상이 있다. 개발사는 사용자의 피드백을 반영하거나, 경쟁사 제품에 대응하거나, 혹은 새로운 기술 트렌드(예: 인공지능 기능)에 맞춰 기존에 없던 새로운 기능을 추가한다. 이는 특히 SaaS 모델에서 고객 이탈을 방지하고 경쟁력을 유지하는 핵심 전략이다. 이와 함께 코드 최적화, 알고리즘 개선, 메모리 누수 문제 해결 등을 통해 프로그램 실행 속도를 개선하거나 CPU, 메모리, 배터리 등 시스템 자원 사용을 효율화하여 전반적인 성능과 안정성을 향상시킨다.

마지막으로, 변화하는 외부 환경에 대응하기 위한 호환성 유지 및 법적/규제 준수 목적이 있다. 새로운 운영체제 버전(예: iOS 27, Windows 12)이나 새로운 하드웨어(예: 신규 그래픽 카드, 폴더블 스크린)가 출시되었을 때, 기존 소프트웨어가 정상적으로 작동하도록 호환성을 확보하기 위해 업데이트가 필요하다. 또한, 유럽 연합의 일반 데이터 보호 규정이나 미국의 캘리포니아 소비자 개인정보 보호법과 같이 새롭게 변경되거나 도입되는 개인정보 보호법 및 기타 규제(예: 웹 접근성 표준)를 준수하기 위해 소프트웨어의 데이터 처리 방식이나 정책, 기능을 수정하는 경우도 있다.

## 용어 및 분류
업데이트는 그 규모, 목적, 배포 방식에 따라 다양하게 불린다.

### 규모에 따른 분류
규모에 따른 분류는 보통 시맨틱 버전 관리 규칙을 따른다. 먼저, 패치 또는 포인트 릴리스는 버전 번호의 세 번째 자리가 변경되는(예: 1.1.0 → 1.1.1) 가장 작은 단위의 업데이트이다. 이는 주로 기존 기능에 영향을 주지 않는 범위 내에서의 긴급한 버그 수정이나 보안 취약점 해결을 포함한다. 다음으로 마이너 업데이트는 버전 번호의 두 번째 자리가 변경되며(예: 1.1.0 → 1.2.0), 기존 기능과 하위 호환성을 유지하면서 새로운 기능이 추가되거나 일부 성능이 개선되는 경우를 말한다. 마지막으로 메이저 업데이트 또는 업그레이드는 버전 번호의 첫 번째 자리가 변경되는(예: 1.0.0 → 2.0.0) 가장 큰 규모의 변경이다. 이는 하위 호환성이 보장되지 않는 대규모 아키텍처 변경, 사용자 인터페이스의 전면적인 개편, 혹은 소프트웨어의 근본적인 변화를 포함한다.

### 주요 용어
주요 용어로는 우선 패치가 있으며, 이는 일반적으로 소프트웨어의 버그 수정이나 보안 취약점 해결을 위해 기존 코드의 일부를 수정하는 작은 규모의 업데이트를 말한다. 이보다 더 긴급한 경우 핫픽스가 배포되는데, 이는 시스템을 중단시킬 수 있는 매우 심각한 버그나 보안 문제를 해결하기 위해 정기 배포 일정과 관계없이 즉시 배포되는 긴급 패치를 의미한다. 과거 마이크로소프트 윈도우 등에서는 서비스 팩이라는 용어가 널리 사용되었다. 이는 OS 출시 이후 배포된 모든 개별 패치, 핫픽스, 그리고 때때로 새로운 기능까지 하나로 묶어 제공하는 대규모 누적 업데이트 패키지였다. 이는 새로 시스템을 설치하거나 업데이트가 많이 밀린 사용자가 한 번에 최신 상태를 유지할 수 있도록 도왔다. 현재는 누적 업데이트라는 용어가 이를 대체하고 있으며, 윈도우 10 이후로는 매월 배포되는 누적 업데이트가 이전의 모든 수정 사항을 포함한다. 최근 구글의 픽셀 스마트폰 등에서는 기능 드롭이라는 마케팅 용어가 사용되는데, 이는 메이저 버전 업그레이드 중간(예: 안드로이드 14와 15 사이)에 정기적으로 새로운 기능들을 묶어 배포하는 방식을 말하며, 마이너 업데이트와 유사한 개념이다.

## 배포 방식
소프트웨어 업데이트의 배포 방식은 사용자의 편의성과 개발사의 관리 전략에 따라 다양하게 발전해왔다. 가장 일반적인 자동 업데이트는 운영체제나 개별 애플리케이션이 사용자 개입 없이 백그라운드에서 자동으로 최신 버전을 확인하고 다운로드 및 설치를 진행하는 방식이다. (예: 윈도우 업데이트, 구글 크롬 자동 업데이트) 이 방식은 사용자가 별도로 신경 쓰지 않아도 항상 최신 보안 상태를 유지할 수 있다는 큰 장점이 있지만, 업데이트로 인해 갑작스러운 기능 변경이나 재부팅이 발생하여 사용자가 통제권을 잃는다는 비판도 받는다. 이와 대비되는 수동 업데이트는 사용자가 직접 개발사 웹사이트를 방문하거나, 앱 스토어, 구글 플레이 등에서 업데이트 내역('릴리스 노트')을 확인하고 설치 여부를 스스로 결정하여 진행하는 방식이다. 이는 업데이트 전 변경 사항을 확인하고 중요한 데이터를 백업할 시간을 가질 수 있는 장점이 있으나, 사용자가 업데이트를 미룰 경우 보안 위협에 노출될 수 있다는 단점이 있다.

스마트폰, 태블릿 컴퓨터, 사물 인터넷 기기 등에서는 OTA 방식이 표준으로 사용된다. 이는 무선 통신망(와이파이 또는 셀룰러 데이터)을 통해 제조사나 통신사 서버로부터 직접 펌웨어나 운영체제 업데이트 파일을 내려받아 설치하는 것을 말한다. OTA는 종종 전체 OS 이미지가 아닌 변경된 부분만 다운로드하는 '델타 업데이트' 방식을 사용하여 데이터 사용량과 설치 시간을 절약한다. 또한, 모바일 앱 스토어나 대형 서비스에서는 위험 관리를 위해 단계적 배포 방식을 사용한다. 이는 전체 사용자가 아닌 1%, 5%, 50% 등 일부 사용자 그룹에게만 먼저 업데이트를 배포하고, 치명적인 버그나 서버 과부하가 없는지 모니터링한 후 점진적으로 배포 대상을 확대하는 방식이다. 이는 카나리 배포 전략과도 유사하다. 마지막으로 기업 환경에서는 기업 관리형 업데이트가 이루어진다. 이는 모바일 장치 관리 솔루션이나 WSUS, SCCM 같은 중앙 관리 도구를 통해, IT 관리자가 사내 정책 및 호환성 테스트가 완료된 업데이트만을 선별하여 조직 전체의 PC나 기기에 일괄적으로 배포하고 적용 시기를 통제하는 것을 의미한다.

## 업데이트 프로세스
소프트웨어 업데이트의 일반적인 프로세스는 여러 단계를 거친다. 먼저, 애플리케이션이나 OS가 시작될 때 혹은 정해진 스케줄에 따라 개발사의 업데이트 서버나 콘텐츠 전송 네트워크(CDN)에 연결하여 현재 설치된 버전보다 더 새로운 버전이 있는지 확인하는 단계에서 시작된다. 이때 디지털 서명을 통해 서버의 신뢰성을 검증하기도 한다. 새로운 버전이 확인되면, 업데이트 파일(패키지)을 백그라운드에서 다운로드한다. 많은 모바일 OS는 와이파이 연결 시에만 대용량 파일을 다운로드하도록 설정되어 데이터 사용량을 조절한다. 다운로드가 완료되면, 파일의 무결성을 검증하기 위해 체크섬이나 해시값을 비교한다. 검증이 완료되면 설치를 진행한다. 많은 운영체제 업데이트는 시스템 핵심 파일이나 커널을 수정해야 하므로, 현재 사용 중인 파일을 교체하기 위해 시스템 재부팅을 요구한다. 이로 인한 서비스 중단을 최소화하기 위해, 일부 리눅스 배포판이나 고가용성이 요구되는 서버 환경에서는 재부팅 없이 메모리 상의 커널에 직접 패치를 적용하는 라이브 패치 기술을 사용하기도 한다. 설치 과정 전, 만일의 사태에 대비해 윈도우의 '시스템 복원 지점' 생성이나 안드로이드의 A/B 파티션 슬롯 전환 같은 롤백 준비가 이루어지기도 한다. 마지막으로 재부팅 후, 시스템은 업데이트된 파일이 올바르게 적용되었는지 검증하고, 불필요해진 임시 파일이나 이전 버전의 백업본을 정리하며 프로세스를 마무리한다.

## 문제점 및 비판
소프트웨어 업데이트가 항상 긍정적인 결과만을 가져오는 것은 아니며, 여러 문제점이나 비판이 제기되기도 한다. 가장 흔하게 발생하는 문제는 업데이트가 기존의 안정적인 기능을 방해하거나, 테스트되지 않은 특정 사용자 환경(하드웨어, 다른 소프트웨어와의 조합)에서 새로운 버그(회귀 버그)를 유발하는 경우이다. 또한, 업데이트된 소프트웨어가 사용자의 구형 하드웨어나 특정 드라이버(예: 프린터, 그래픽 카드), 혹은 핵심 플러그인이나 다른 응용 프로그램과의 호환성 문제를 일으켜 정상적인 사용이 불가능해지는 경우도 있다. 윈도우 10/11 홈 에디션처럼 사용자의 의사와 상관없이 업데이트가 강제 설치되거나 작업 중 재부팅이 이루어져 사용자의 통제권을 상실시키고 중요한 작업을 방해한다는 비판도 꾸준히 제기된다.

특히 펌웨어나 OS 업데이트 중 전원이 꺼지거나, 저장 공간이 부족하거나, 네트워크 오류가 발생하면, 설치가 불완전하게 종료되어 기기가 부팅 불능 상태가 되어 사용할 수 없게 되는 최악의 상황, 이른바 벽돌 현상이 발생할 수도 있다. 이 외에도, 너무 잦은 업데이트 알림과 설치 요구, 또는 UI/UX의 급격한 변경은 사용자에게 학습 피로와 불편함을 주는 업데이트 피로 현상을 유발한다. 모바일 환경에서는 대용량 업데이트가 사용자의 셀룰러 데이터 요금제에 부담을 주거나 기기의 한정된 저장 공간을 과도하게 차지하는 문제도 있다. 업데이트가 사용자가 원치 않는 기능을 추가하는 기능 비대화나, 사용자 동의 없이 원격측정 데이터 수집을 강화하는 등 개인 정보 침해 논란을 일으키기도 한다. 마지막으로, 개발사가 특정 제품이나 구형 버전에 대한 지원을 중단하는 지원 종료가 선언되면, 더 이상 보안 업데이트를 포함한 어떠한 업데이트도 제공받지 못하게 된다. 이는 해당 소프트웨어를 계속 사용할 경우 심각한 보안 위협에 영구적으로 노출될 수 있음을 의미한다.

## 분야별 업데이트

### 운영체제
운영체제(OS) 업데이트는 시스템 전반의 보안과 안정을 위해 가장 중요하다. 마이크로소프트는 전통적으로 매월 두 번째 화요일에 정기 보안 업데이트를 배포하며, 이를 패치 화요일이라고 부른다. 이는 IT 관리자들이 예측 가능한 일정 하에 시스템을 관리할 수 있게 돕는다. 또한 윈도우 10 이후로는 1년에 한두 차례 대규모 기능 업데이트를 제공한다. 애플의 macOS나 iOS도 정기적으로 보안 및 기능 업데이트를 배포하며, 하드웨어와 소프트웨어를 직접 통제하므로 비교적 신속하고 일관되게 적용된다. 리눅스 배포판들은 패키지 관리자를 통해 수시로 업데이트를 제공하는데, 아치 리눅스처럼 최신 버전을 지속적으로 제공하는 롤링 릴리스 모델과, 데비안이나 RHEL처럼 특정 기간 동안 안정성에 초점을 맞춘 버전을 지원하는 안정 릴리스 모델로 나뉜다.

### 모바일 환경
모바일 환경에서 iOS는 애플이 하드웨어와 소프트웨어를 모두 통제하므로, 새로운 OS 버전이 발표되면 구형 기기를 포함한 대다수의 기기에 비교적 신속하고 일관되게 업데이트가 배포된다. 반면 안드로이드는 구글이 AOSP를 배포하면, 각 기기 제조사(삼성전자, 샤오미 등)와 이동통신사가 자사 기기 및 통신 환경에 맞게 수정하고 테스트하는 과정을 거쳐야 한다. 이 과정에서 업데이트가 지연되거나, 특히 저가형 기기는 제조사의 지원이 조기에 중단되어 심각한 '파편화'(Fragmentation) 문제가 발생하며, 이는 보안 취약점 방치로 이어진다.

### 게임 소프트웨어
온라인 게임이나 최신 비디오 게임은 업데이트가 매우 빈번하게 이루어지는 분야이다. 개발 마감 기한에 쫓겨 출시용 '골드 마스터' 디스크를 생산한 이후에도 발견되는 버그를 수정하기 위해, 출시 당일에 배포하는 데이원 패치가 일반화되었다. 또한, 리그 오브 레전드나 포트나이트와 같은 '라이브 서비스 게임'에서는 게임 밸런스 조정, 긴급 버그 수정, 시즌 이벤트 추가 등을 위해 핫픽스가 수시로 배포되며, 업데이트 자체가 게임 콘텐츠의 일부로 기능한다.

### 펌웨어 및 IoT
라우터, 스마트 TV, 스마트워치, CCTV 등에 탑재된 펌웨어 업데이트는 매우 중요하지만 종종 간과된다. 특히 사물 인터넷(IoT) 기기들은 보안에 취약한 경우가 많으며, 업데이트가 제대로 이루어지지 않을 경우 봇넷(예: 미라이 봇넷)에 감염되어 DDoS 공격의 숙주로 악용될 수 있다. 많은 저가형 IoT 기기 제조사들은 업데이트 메커니즘을 아예 탑재하지 않거나 지원을 조기에 중단하여, 이러한 기기들이 영구적인 보안 위협으로 남는 경우가 많다.

## 관련 문서
* 펌웨어
* OTA
* 윈도우 업데이트
* 서비스 팩
* 핫픽스
* 취약점
* 제로데이 공격
* 소프트웨어 수명 주기
* 롤백 (데이터 관리)

## 각주

분류:소프트웨어 공학
분류:컴퓨터 보안
분류:시스템 관리
분류:운영체제