콘텐츠로 이동
공식 웹사이트로 돌아가기

시작 안내

Jelina 플랫폼은 장치, 서버와 클라이언트 소프트웨어로 구성되며, 이 모든 구성 요소는 코드를 장치 그룹에 안전하게 배포하도록 설계되었습니다.

기본 개념은 간단합니다. 장치에 운영체제(JelinaOS)를 설치하면 JelinaCloud 대시보드에서 모든 장치와 애플리케이션을 관리·모니터링·업데이트할 수 있습니다. JelinaCloud는 애플리케이션 구성을 독립적인 블록에 저장하여 플릿에 전달하므로 애플리케이션을 편리하게 배포할 수 있습니다.

Jelina의 내부 동작을 더 알고 싶다면 이 가이드가 도움이 됩니다. 일반적인 Jelina 배포에 사용되는 구성 요소와 작업 흐름을 다루며, 자주 묻는 질문에 답할 수 있도록 충분한 세부 정보를 제공합니다.

자세히 알아볼 준비가 되었다면 자신의 프로젝트를 시작해 보세요.

image

Jelina 생태계의 장치는 JelinaOS를 실행합니다. 이는 표준 배포판 Debian 또는 Ubuntu 기반의 최소 구성 호스트 운영체제로, 컨테이너 엔진 Docker와 함께 제공됩니다. 호스트 운영체제는 장치에서 Jelinvisor(장치 관리자), 컨테이너 서비스와 프로그램 서비스를 시작합니다. Jelina의 각 기본 운영체제는 장치 아키텍처와 호환되는 모든 Docker 이미지 및 Linux ELF 프로그램을 실행할 수 있습니다. 기본 운영체제는 호스트 운영체제와 커널을 공유하지만 그 외에는 독립적으로 동작합니다. 컨테이너 서비스를 구성하여 특권 모드로 실행하고 하드웨어에 직접 접근하거나 커널 모듈을 삽입할 수도 있습니다. Jelina 장치 관리자는 자체 컨테이너에서 실행되어 애플리케이션이 비정상 종료되어도 장치가 계속 실행되도록 합니다.

Jelina의 목표는 100% 업데이트 가능성입니다. JelinaOS의 시스템과 커널은 독립적으로 업데이트되며 각각 별도의 A/B 파티션을 갖습니다. 장치가 A 파티션에서 실행 중이면 대상 버전을 B 파티션에 기록하고, 성공 후 B로 전환하여 업데이트를 완료합니다. 업데이트가 실패하거나 전환 후 알 수 없는 오류가 발생하면 A를 유지하거나 A로 되돌아갑니다. Jelina는 항상 적어도 하나의 파티션을 사용 가능한 상태로 유지하여 애플리케이션과 데이터의 안전을 보장합니다.

JelinaOS를 실행하는 모든 장치는 개발용 또는 운영용 여부와 관계없이 시스템 및 커널 업데이트를 수행할 수 있습니다. JelinaCloud 대시보드에서 장치 업데이트를 제어할 수 있습니다.

장치를 자신의 플릿에 추가하려면 어떻게 해야 하나요?

먼저 JelinaOS 이미지를 다운로드합니다. 다운로드할 때마다 고유한 장치 구성이 이미지에 기록됩니다. 이미 OS 이미지가 있다면 구성 파일만 다운로드하고 제공 도구 jelina_flash_stream(아직 공개되지 않음)으로 이미지에 구성을 기록할 수도 있습니다. 구성 파일에는 플릿 기본 구성, 플릿에 연결된 고유 등록 키와 등록 주소가 포함됩니다.

JelinaOS 이미지를 장치에 기록한 뒤 네트워크 연결이 정상인지 확인하세요. 부팅 시 장치 관리자 Jelinvisor가 시작되어 추가 작업 없이 등록을 완료합니다. Jelinvisor는 장치 구성에 따라 대상 플릿에 등록하고 향후 클라우드 통신에 사용할 고유 API Key를 생성합니다. 등록이 성공하면 클라우드는 API Key를 저장하고 등록 키를 삭제하며 장치 정보를 기억합니다. 이후 대시보드에서 장치를 확인할 수 있습니다.

장치가 플릿에 등록되면, 플릿에 사용 가능한 Release가 있는 경우 최신 Release를 자동 설치합니다. 플릿 Release를 고정했다면 해당 Release를 설치합니다.

Release는 여러 컨테이너 애플리케이션과 네이티브(Program) 애플리케이션의 집합입니다. 구성은 docker-compose2.0을 기반으로 하며 비컨테이너 애플리케이션을 설정할 수 있도록 항목을 추가했습니다. 개발자와 비개발자 모두 compose를 직접 작성하거나 웹 서비스 목록 정보를 입력하여 compose를 생성할 수 있습니다. 구성을 완료한 뒤 컨테이너 이미지와 프로그램 애플리케이션을 업로드하고 Release를 게시하면 플릿의 모든 장치에 배포할 수 있습니다.

네이티브 애플리케이션에 필요한 실행 환경이 없을까 걱정할 수 있습니다. 이를 고려하여 Increment(증분 패키지)를 업로드하는 방식으로 장치 실행 환경을 구성할 수 있도록 했습니다.

참고: Increment는 장치에서 JelinaCloud로 업로드합니다. 먼저 한 장치에서 실행 환경을 구성한 뒤 대시보드에서 그 장치를 선택하여 Increment를 업로드합니다. 장치가 자체 실행 환경을 패키징하여 소속 플릿으로 업로드합니다.

Increment를 적용하려면 Release에 연결해야 합니다. 장치는 Release 설치 전에 연결된 Increment를 먼저 설치하여 애플리케이션에 올바른 실행 환경을 제공합니다. 이론적으로 JelinaOS는 증분 패키지를 통해 모든 유형의 애플리케이션을 실행할 수 있으며, 이는 Increment의 내용에 따라 결정됩니다.

장치는 일정 간격(플릿 구성에 따라 결정됨)으로 클라우드에서 대상 상태를 가져옵니다. 대상 상태에는 실행해야 할 Release, JelinaOS, Kernel, Jelinvisor 버전, Increment, 장치 구성과 서비스 변수가 포함됩니다.

장치는 30s마다 장치 정보와 실행 중인 서비스 정보 등 자체 상태를 보고합니다. 또한 지속 연결을 통해 장치 로그를 JelinaCloud에 업로드하여 시스템과 애플리케이션의 실행 과정을 관찰할 수 있도록 합니다.

장치 대시보드에서 실행 중인 서비스, 예정된 업데이트와 로그 등 상세 정보를 확인하고 장치 및 애플리케이션 수명 주기를 제어할 수 있습니다.

image-20220728164831644

장치와 애플리케이션의 실행 이상을 적시에 파악하도록, 장치 오프라인, 서비스 이상, 장치 이상 또는 리소스 사용 이상이 발생하면 소속 플릿의 모든 구성원에게 자동 알림을 보냅니다. 리소스 사용 경고 임계값은 직접 지정할 수 있습니다. 같은 이상이 3시간 이내에 반복되면 JelinaCloud는 한 번만 알립니다.

image-20220728170901640

Jelina로 테스트/개발 환경을 통일하고 빠르게 배포하여 애플리케이션 기능을 테스트할 수 있습니다. 장치 로그를 통해 실제 장치에서의 동작을 빠르게 분석하여 프로젝트 개발과 현장 적용을 앞당길 수 있습니다.