본문 바로가기

카테고리 없음

Delta update

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 기반 시스템에서 델타 업데이트를 지원하는 업데이트 모듈입니다.