2016-07-08 3 views
5

내가 일하고있는 클라이언트에는 BeagleBones/Raspberry PI가 고객 위치에서 운영되고 있습니다. 이러한 장치는 로컬 네트워크 및 방화벽 뒤에서 설치됩니다. SSH 연결의 경우 몇 가지 옵션이 있지만 우리는 여전히 이러한 장치에서 소프트웨어를 배포하는 데 어려움을 겪고 있습니다. 우리는 현재 컨테이너 기술에 의존하지 않고 있으므로 Docker Cloud 또는 Resin.io는 옵션이 아니지만 resin.io는 매우 유망한 것으로 보입니다. 우리는 데이터 수집을 위해 AWS IoT를 사용하고 있습니다.IoT 장치 용 소프트웨어 배포 방법 (Linux 기반)?

배포에 관한 몇 가지 요구 사항 :

  • 푸시 소프트웨어 서버 -> 장치
  • 은 시간이 지남에 따라 증가 장치의 비율로, 롤아웃을 단계적 출시를
  • 롤백 소프트웨어
  • 디바이스 프로비저닝
  • 컨테이너 기술 없음

이것을 달성하기위한 좋은 접근 방법은 무엇입니까?

답변

3

(면책 조항 : resin.io에서 개발자 전도자 여기).

좋은 점은 컨테이너에 의존하지 않는 소프트웨어가 여전히 패키지화되어 있다는 것입니다 (다른 방법으로는 작동하지 않음). resin.io에있는 컨테이너는 소프트웨어를 장치에 전달하는 수단으로 사용되며 그렇지 않으면 불가능하거나 어렵게 만드는 흥미롭고 유용하며 안전한 업데이트 전략을 구현합니다. 예를 들면 다음과 같습니다.

  • 응용 프로그램 코드에 버그가 발생하여 충돌이 발생합니다. 그것은 네트워킹을 포함하여 전체 장치를 무너 뜨릴 수 있습니까? (resin.io 컨테이너는 손상을 줄이거 나 응용 프로그램이 충돌하지만 장치가 온라인 상태이며 업데이트 될 수 있음)
  • 응용 프로그램 업데이트가있을 때 전체 컴퓨터 이미지를 업데이트해야합니까? (이와 같은 컨테이너를 사용하면 애플리케이션 코드에서 변경된 사항이 업데이트되어 대부분의 경우 데이터 트래픽이 거의 발생하지 않으며 필요한 경우 매우 빠르게 변경됩니다.)
  • 컨테이너를 사용하면 가동 중지 시간 업그레이드가 거의 없습니다 새 응용 프로그램 및 이전 실행 버전은 자원을 새 응용 프로그램으로 넘깁니다).

이것은 컨테이너 기술에 대해 납득시키려는 것이 아니라 자신의 응용 프로그램이 컨테이너 화되었는지 여부를 강조하는 것입니다 (대부분 그렇게하지도 않고 그대로 유지됩니다). 해당 기술을 사용하는 서비스에 대해서는 선택하지 마십시오. 그들의 스택의 일부. 모든 서비스는 필요한 기능을 필요한 방식으로 제공하려고 시도합니다.관련하여 귀하의 체크리스트에 관해서는

resin.io에 :

  • 푸시 소프트웨어 서버 -> 장치는 : 장치의 비율로, 롤아웃, git push resin master을 확인하고 코드가
  • 가 단계적 출시 전개지고 시간이 지남에 따라 증가하는 : 일반적인 기능 집합에는 포함되지 않지만 모든 장치에 대한 업데이트를 잠그는 등의 쉬운 방법으로 구현할 수 있으며 잠금 해제 및 업데이트 할 장치를 선택할 수 있습니다. API를 통해 모든 것이므로 기본 배포 전략에 맞게 사용자 정의 할 수 있습니다.
  • 롤백 소프트웨어 : 일반 기능 세트의 일부가 아니지만 이전 버전을 다시 푸시하기 쉽습니다. 재구성 가능한 셋업으로 귀결되도록 라이브러리의 버전을 고정하기 위해서는 몇 가지주의를 기울여야하지만 실제로는 가능합니다.
  • 프로비저닝장치의 API/SDK를 통해 자동 장치 설치 또는 프로비저닝/CLI를 사용할 수
  • 에는 컨테이너 기술하지 : 실제로, 위에서 언급 한 바와 같이 당신은 너무 걱정 할 필요가 없습니다 어떤 방법으로 서비스를 대부분의 경우 응용 프로그램 작동 방식에 영향을 미치지 않으므로 소프트웨어를 제공합니다.

또한, 당신은 AWS의 IoT를 언급, 거기 장치 (AWS의 IoT와 플러그를 resin.io 장치의 자동 장치 프로비저닝을하고 예제 프로젝트를 포함, AWS와 resin.io 통합에 some documentation을, 그리고 자동으로 자격을 얻는다 AWS IoT의 경우). 그것은 당신에게 관심있는 무언가 일 수 있습니다.