webOS Article/0. webOS 개발 준비하기

webOS란 무엇인가? For developers!

한형주 2021. 5. 25. 22:46

 

 

들어가기 전에


본 포스팅은 전공자를 위한 webOS 간단한 소개글입니다. 

 

webOS의 장점


webOS는 LG전자 스마트티비의 플랫폼으로 사용되고 있으며, 차량용 webOS인 webOS auto(webosauto.swsolutions.lge.com)도 존재합니다. 

webOS를 플랫폼으로 사용할 때 가질 수 있는 장점에 대해 알아봅시다.

webOS 장점

  • web중심으로, web브라우저를 통해 보는 페이지를 앱처럼 단독 실행할 수 있습니다.
  • 멀티미디어, Display측면에서 장점을 가집니다. 예) TV, 디지털 사이니지(Digital Sinage) 등
  • 다양한 업종에 적용가능한 오픈플랫폼을 제공합니다. 예) 로봇, 스마트홈, 자동차 등
  • 시장에서 검증된 플랫폼입니다. 예) LG TV, Signage, 스마트워치 등
  • 효율적인 버스 시스템을 사용합니다. (Luna-Bus)
  • 다양한 앱 개발 프레임워크를 지원합니다.  예) Enact
  • 확장 가능한 플러그형 아키텍처입니다. (1. 쉬운 서비스 확장  2. 코드관리의 유연성)

 

Web Application이란?


1. Web Application

-인터넷으로 연결된 웹 환경에서 웹 브라우저와 웹 기반 기술을 사용해 사용자들 간의 연결을 통해 쌍방향의 상호작용이 가능한 응용 소프트웨어입니다.(단독으로 실행!)

 

-Web Application 개발 도중 UI/UX를 빠르게 확인할 수 있습니다.

 

-Luna-Service API를 사용하여 플랫폼 기능을 활용할 수 있습니다.

 

웹 기반 기술 : HTML, CSS, JavaScript, React, Enact 등등

앱 메타파일 : appinfo.json을 참고합니다.  (예시 기본 코드는 다음번 포스팅에!)

 

2. Web App Types(웹 어플리케이션 유형)

webOS 시스템에서 Web Application 의 패키징, 딜리버리 방법에 따라 External Web App(외부 웹 어플리케이션)과 Built-in Web App(내장 웹 어플리케이션)으로 분류할 수 있습니다.

External Web App(외부 웹 어플리케이션) Built-in Web App(내장 웹 어플리케이션)
webOS 대상 장치에 설치합니다.
webOS 장치에서 실행되는 웹 응용 프로그램을 만들 때 필요합니다.
플랫폼 없이 개발 가능합니다.
webOS 이미지에 내장되어 있습니다.
플랫폼의 기능을 향상시키는 Web Application을 추가하는 데 사용합니다.
플랫폼 있어야 개발 가능합니다

 

3. Web App Management(웹 어플리케이션 관리)

webOS 시스템에서 Web Application 관리와 관련된 구성 요소입니다.

SAM (System and Application Manager) WAM (Web Application Manager)
Web Application의 동작을 감독하고 앱의 설치, 시작,
종료 및 제거를 포함한 수명주기 동안 각 앱을 관리합니다
Web Application을 시작하고 관리합니다.

 

Web Service란?


1. Web Service(=JS Service)

-Web Service(=JS service)는 애플리케이션이 실행되고 있지 않을 때(백그라운드)에도 앱이 작동하는 방법을 제공하는 서비스입니다.

-일반적으로 Web Application에서 사용할 수 없는 플랫폼 기능에 대한 추가 엑세스를 제공합니다.(low-level networking, file system access, and binary data processing ...)

-하나 이상의 앱에 대한 작업을 수행합니다(Web Application은 단독으로 수행!).

-현재 external JS service는 Web Application 내에서 패키징되어야합니다.

 

사용 기술 : Node.js, C++

서비스 메타파일 : cli에서 자동으로 생성되는 부분이 있습니다.

webOS service bridge 통해 웹앱을 위한 서비스를 불러올 수 있습니다.

 

2. JS Service Types(웹 서비스 유형)

webOS 시스템에서 JS service 의 패키징, 딜리버리 방법에 따라 분류할 수 있습니다.

External JS Service(외부 웹 서비스) Built-in JS Service(내장 웹 서비스)
JS service는 webOS 대상 장치에 설치합니다
webOS 장치에서 실행되는 JS service를 만들 때 필요합니다
플랫폼 없이 개발 가능합니다
webOS 이미지에 내장되어 있습니다.
플랫폼의 기능을 향상시키는 JS Service를 추가하는 데 사용합니다.
플랫폼 있어야 개발 가능합니다.

 

3. JS Service의 예

  - 이메일 리더를 위해 백그라운드에서 첨부 파일 다운로드

  - 앱에서 사진 공유 웹 사이트로 이미지 업로드

  - long-running 계산 또는 파일 작업 수행

 

 

 

webOS에서 무엇을 개발할 수 있는가?


1. 애플리케이션(앱)과 서비스 개발

개발 구조

   - 패키지 타입에 따라 Installable(설치형)과 Built-in(내장형)으로 구분합니다.

   - Installable 패키지로 Web기술을 이용한 앱/서비스를 개발할 수 있습니다.

   - Built-in 패키지로 Web기술을 이용한 앱/서비스, Native기술을 이용한 앱/서비스로 구분하여 개발할 수 있습니다.

 

+Web앱과 Native앱의 차이점

  web app native app
특징 -웹사이트를 앱으로 감싸는 형태로, 안드로이드와 iOS를 한 번에 개발 - 안드로이드와 iOS, 웹에 사용되는 앱을 각각 만들어야 함

장점 -웹페이지 수정만으로 업데이트 즉각 반영
-저렴한 가격과 짧은 소요시간으로 개발 가능
-빠른 속도
-화려한 퍼포먼스 
-디바이스의 카메라, GPS 등 기능을 사용하여 필요한 정보 활용하여 개발 가능
단점 -인터넷, 디바이스 상태에 따라 속도 영향
-온라인 상태 유지, 서비스 제공에 한계
-속도 느림
-기능 구현을 위해 많은 양의 코딩작업 필요
-개발자의 높은 기술력 요구
-업데이트마다 플랫폼 별로 작업해야함(안드로이드/IOS/ ..)

 

 

webOS에서 어떤 것을 이용하여 개발할 수 있는가?


1. Web app 개발

- HTML, CSS, Java Script, Enact, React

 

2. Native app 개발

- QT

 

3. Web service 개발

- nodeJS, C/C++

 

4. Native service 개발

- C/C++

 

 

webOS는 어떤 것을 지원하는가?


1. 다양한 앱 개발 프레임워크(framework) 지원

 

 

Enact와 SDK를 이용하면 HTML, CSS, JavaScript로만 개발할 때보다 향상된 옵션과 환경에서 앱을 개발할 수 있습니다.

 

1) 웹 앱 프레임워크 : Enact

- React 기반의 앱 개발 프레임워크입니다.

- React는 UI 프레임워크(UI Component)를 제공하지 않지만, Enact는 smart TV에서 사용하는 UI라이브러리를 제공합니다.

 

2) 소프트웨어 개발 키트 : SDK

- 웹 앱과 서비스를 위한 개발환경 제공합니다.

- Command-Line Interface, Emulator, Beanviser, Workflow Designer과 같은 도구를 제공합니다.

 

2. 개발도구

1) Real device: Raspberry Pi (RPi)

- webOS OSE 2.0버전에서는 Raspberry Pi 4 Model B 지원합니다.

- webOS OSE 1.x버전에서는 supports Raspberry Pi 3 Model B 지원합니다.

 

2) Virtual environment: Emulator

- 라즈베리파이 사용이 어렵거나 가상환경 작업을 선호하는 경우 Emulator를 사용하며, SDK로 제공됩니다.

 

 

루나 서비스란?


1. Luna-Bus

운영체제는 프로세스를 기반으로 동작합니다. 프로세스는 '실행중인' 프로그램을 말합니다.

 

CPU는 한 번에 한 프로세스 밖에 처리할 수 없는데, 우리는 수많은 프로세스를 사용해야합니다. 우리가 동시에 많은 프로세스를 사용할 수 있는 이유는, 운영체제가 매우 빠른 속도로 CPU가 실행할 프로세스를 교체해주기 때문입니다. 

 

프로세스와 프로세스 간의 커뮤니케이션을 의미하는 IPC(Inter-Process Communication)의 중요성은 말하지 않아도 아시겠죠?

 

Linux의 경우 D-Bus라는 IPC를 사용합니다. webOS에서는 이 D-Bus를 개선하여 Luna-Bus를 사용하고 있습니다.

D-Bus는 프로세스 간 통신 시 항상 daemon을 통해야하기 때문에 병목현상이 발생할 수 있지만, Luna-Bus는 프로세스와 프로세스가 한번 데몬을 통해 통신하면, 이후에는 프로세스와 프로세스가 직접 통신하게 되므로 효율적입니다.

 

2. Luna-Service API

Luna-Service란 webOS가 제공하는 서비스입니다. Alarm, bluetooth, camera, location, wi-fi관리, application 관리 등 다양한 기능들을 제공합니다.

 

이러한 서비스들은 각각 API(application programming interface)를 제공하며 이를 활용하여 여러분들만의 어플리케이션과 서비스를 개발할 수있습니다. 예를들어 webOS OSE를 센서가 연결된 라즈베리파이 4보드에 탑재한 뒤 GPIO API를 이용하여 센서 값을 읽어오고 필요한 경우 alarm 관련된 API들을 이용하여 toast를 띄우는 등의 활용이 가능합니다.

 

Luna-Service에 대한 내용은 추후의 포스팅에서 자세히 다룰 예정이니 참고해주세요!

[링크] https://webos-supporters.tistory.com/19?category=965018 

 

Luna Service API란 무엇인가?

API Luna Service API Luna Service API 사용하기 API 1. API란? API란 Application Programing Interface의 약어로 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 입니다. 예)..

webos-supporters.tistory.com