Greengrass Nucleus
Java CI
SPDX-License-Identifier: Apache-2.0
The Greengrass nucleus 컴포넌트는 배포 및 Greengrass 컴포넌트와 애플리케이션의 실행에 대한 생명주기 관리(lifecycle management)를 장치 측에서 오케스트레이션하는 기능을 제공합니다. 여기에는 컴포넌트 및 앱의 시작, 중지, 모니터링 실행 기능, 컴포넌트 간 통신을 위한 프로세스 간 통신(interprocess communication) 서버, 컴포넌트 설치 및 구성 관리 등의 기능이 포함됩니다. 이 컴포넌트는 장치에서 실행되는 소프트웨어를 설명하는 모델을 관리합니다. 이 모델은 _서비스(services)_의 의존성 그래프입니다. 서비스는 세 가지 주요 측면을 가집니다:
- 구성 (Configuration)
- 다른 서비스에 대한 의존성 (Dependencies on other services)
- 유한 상태 기계(finite state machine) 형태의 생명주기 단계 집합
_서비스_는 프로세스, 스레드, 코드, 네트워크 연결 등을 가질 수 있지만, 반드시 그런 것은 아닙니다. 어떤 서비스는 이 모든 것을 가지고 있고, 어떤 서비스는 하나만 가집니다.
계층적 키-값 데이터 저장소(hierarchic key-value data store)입니다. 다양한 서비스들은 뉴클리어스가 모니터링하고 관리하는 지속적으로 변화하는 상태를 가집니다. 의존성 서비스는 자신의 모든 의존성이 시작될 때까지 시작되지 않으며, 만약 의존성이 불안정해지면 해당 의존성 서비스에 알림이 전달됩니다. 내부적인 상호 연결은 의존성 주입(dependency injection)을 통해 처리됩니다. 재시작은 자동으로 관리됩니다.
구성 변경 시, 모든 사용자에게 통지됩니다. 모든 것이 지속적으로 적응합니다.
com.aws.greengrass를 통한 빠른 탐색
- config 시스템 구성(모델)을 관리합니다. 이는 근본적으로 타임스탬프가 있는 계층적 키-값 저장소입니다. yaml, json 또는 트랜잭션 로그로 직렬화 및 역직렬화할 수 있습니다. 이 트랜잭션 로그는 구성을 재구성하기 위해 재생되거나 다른 곳으로 실시간 스트리밍될 수 있습니다.
값은 유효성 검사기(validators)와 감시자(watcher)를 가질 수 있습니다.
2. dependency 의존성 주입 프레임워크입니다. 핵심 로직은 알려진 객체들의 Map을 포함하고 Context로부터 객체를 가져오거나 (마법처럼) 생성할 수 있는 기능을 제공하는 context.java에 있습니다. 프레임워크가 객체를 생성할 때, 해당 객체는 의존성 주입(dependency injection)을 수행합니다. 만약 생성된 객체가 라이프사이클 프레임워크(Lifecycle framework)에 참여한다면, 그 생명주기(lifecycle)가 시작됩니다. 이는 라이프사이클 의존성 그래프를 채우게 됩니다.
3. lifecyclemanager 모델을 의존성 그래프 내의 라이프사이클 객체와 연결합니다. 주요 클래스는 대부분의 상태 전이 로직(state transition logic)을 포함하는 GreengrassService입니다. GenericExternalService는 명령어(commands)와 스크립트(scripts)로 동작이 정의되는 서비스를 구현하는 하위 클래스입니다. 이 두 클래스 중 어느 쪽이든 상속받아 Greengrass 내부에서 실행되는 코드로 동작이 정의된 서비스를 제공할 수 있습니다.
4. util 유용한 유틸리티들의 모음입니다.
더 알아보기
- Greengrass Nucleus Configuration Schema
- Data Model - Component Recipe
- Configure a component