Delta Update란 무엇인가?
Delta Update는 기존 데이터에서 변경된 부분(Delta)만을 전송하여 시스템을 업데이트하는 기술입니다. 전송량을 줄이고 업데이트 속도를 개선하는 효율적인 방법으로, 특히 대규모 데이터 처리 환경에서 유용합니다. 이 기술은 IoT 장치, 클라우드 서비스, 데이터베이스, 물류 및 콘텐츠 배포 네트워크(CDN) 등 다양한 분야에서 활용됩니다. 특히 OTA(Over-the-Air) 업데이트에서 자주 사용됩니다.
Delta Update의 주요 장점
- 변경된 부분만 업데이트: Delta Update는 전체 소프트웨어를 다시 다운로드하지 않고, 기존 버전과의 차이점만을 포함하는 작은 파일(델타 파일)을 전송합니다.
- 네트워크 효율성: 델타 파일은 전체 이미지보다 훨씬 작기 때문에, 네트워크 대역폭을 절약할 수 있습니다. 이는 특히 대용량 소프트웨어나 제한된 네트워크 환경에서 유리합니다.
- 업데이트 시간 단축: 델타 파일의 크기가 작아 다운로드와 설치 시간이 줄어들어 빠른 업데이트가 가능합니다
구현 메커니즘
- 델타 파일 생성: 원본 이미지와 대상 이미지 간의 차이점을 기반으로 델타 파일을 생성합니다. 이 과정은 주로 서버 측에서 수행됩니다.
- 파일 전송 및 설치: 생성된 델타 파일은 무선 또는 네트워크를 통해 디바이스로 전송됩니다. 디바이스는 델타 파일을 사용하여 기존 소프트웨어를 새로운 버전으로 패치합니다.
- 무결성 및 보안: 델타 업데이트는 보안성을 유지하기 위해 암호화 및 코드 서명을 통해 무결성을 확인합니다. 이는 해킹이나 위변조를 방지하는 데 중요합니다
적용 사례
- 자율주행 차량: 네트워크 대역폭이 제한된 환경에서 대용량 운영체제를 효율적으로 업데이트하기 위해 Delta Update가 사용됩니다.
- IoT 디바이스: Azure IoT Hub에서는 디바이스에 대한 업데이트 시 Delta Update를 활용하여 효율성을 높입니다.
안정성 및 보안 확보
- 롤백 기능 구현: 업데이트 실패 시 이전 안정화 버전으로 돌아갈 수 있는 롤백 기능이 필수적입니다. Dual A/B 파티션 전략을 사용하면 안정적이고 빠른 롤백이 가능합니다.
- 무결성 검증: 암호화 및 코드 서명을 통해 업데이트 파일의 무결성을 보장해야 합니다. 이는 위변조된 소프트웨어 배포를 방지하는 데 중요합니다.
- 보안 통신: 자율주행 장치와 클라우드 간 종단 간(E2E) 암호화 통신을 구현하여 외부 공격을 차단해야 합니다.
효율성 최적화
- Delta 업데이트 메커니즘: 변경된 부분만 업데이트하는 Delta 업데이트 기술을 도입하여 네트워크 대역폭, 시간, 배터리 소모를 최소화해야 합니다.
- 장치 인증: 신규 소프트웨어는 인증된 장치에서만 다운로드 및 설치되도록 해야 합니다. 이를 위해 하드웨어 식별자와 인증서 기반의 공개키를 사용할 수 있습니다.
시스템 설계 고려사항
- Dual Copy(A/B) 지원: 업데이트 실패 시 빠른 복구를 위해 Dual copy(A/B) 방식을 구현해야 합니다.
- Secure Booting: Chain of Trust 기반의 Secure Booting을 구현하여 부팅 과정에서의 보안을 강화해야 합니다.
- 업데이트 관리 프로세스: 조직의 디바이스 관리 방식에 따라 델타 업데이트와 누적 업데이트를 적절히 배포해야 합니다. 같은 달에 델타와 누적 업데이트를 동시에 배포하는 것은 피해야 합니다.
Delta update를 구현한 주요 오픈소스 프로젝트들은 다음과 같습니다:
- RPM Package Manager의 deltarpm 시스템: 2004년에 개발되었으며, Fedora Linux와 그 파생 운영체제들에서 사용됩니다.
- openSUSE의 delta-rpm: zypper 매니저와 함께 사용되며, openSUSE Leap 배포판에서 표준 솔루션으로 채택되었습니다.
- Debian의 debdelta: 2006년에 개발된 dpkg-APT 패키지 관리 시스템용 델타 업데이트 도구입니다.
- Chromium의 courgette: Google의 Chromium 프로젝트에서 사용하는 디스어셈블리 기반 차분 알고리즘으로, 업데이트 크기를 크게 줄입니다.
- Android의 bsdiff: 2016년부터 Android의 Play Store에서 앱 APK 업데이트에 사용되는 효율적인 델타 업데이트 알고리즘입니다.
- Remote Device Fleet Manager (RDFM): 엣지 디바이스를 위한 OTA 업데이트 프로젝트로, librsync-go 라이브러리를 사용하여 델타 업데이트를 구현합니다.
- Mender의 mender-binary-delta: Yocto Project 기반 시스템에서 델타 업데이트를 지원하는 업데이트 모듈입니다.