HarmonyOS: 시스템 아키텍처 및 ArkUI 개발

저자: IT Sectr 게시일: 2026-02-07 읽는 시간: 11 분

HarmonyOS는 크로스 플랫폼 아키텍처를 지원하는 분산 마이크로커널 위에 구축된 Huawei의 독점 운영 체제입니다. 애플리케이션 개발은 ArkUI 프레임워크와 함께 DevEco Studio 환경에서 ArkTS 및 C++로 이루어집니다. 이 시스템은 스마트폰, 태블릿, 시계, IoT 기기의 원활한 통합을 위해 설계되었습니다. Huawei에 따르면 HarmonyOS는 전 세계 7억 대 이상의 기기에 설치되어 있습니다.

핵심 요점

  • HarmonyOS — 자체 마이크로커널과 멀티 디바이스 아키텍처를 갖춘 Huawei의 분산 OS
  • ArkTS — HarmonyOS 에코시스템을 위한 TypeScript 기반 기본 개발 언어
  • ArkUI — SwiftUI 및 Jetpack Compose와 유사한 선언형 UI 프레임워크
  • DevEco Studio — 에뮬레이터와 Preview를 갖춘 IntelliJ 기반 공식 IDE
  • 분산 아키텍처는 애플리케이션이 여러 기기에서 동시에 실행되도록 합니다

HarmonyOS란?

HarmonyOS는 Huawei가 개발한 분산 운영 체제로, 2019년 회사의 새로운 기기에서 Google 서비스 접근 제한에 대한 대응으로 처음 발표되었습니다. HarmonyOS는 Linux와 다른 자체 마이크로커널 위에 구축되었으며, 스마트폰, 태블릿, 스마트워치, TV, 자동차 시스템, IoT 기기 간의 원활한 작동을 위해 설계되었습니다.

Huawei(HarmonyOS 에코시스템 보고서, 2026)에 따르면, 이 시스템은 3억 대의 스마트폰을 포함하여 7억 대 이상의 기기에 설치되어 있습니다. 중국 시장이 설치의 95%를 차지합니다. HarmonyOS 5.0(NEXT, 2024)부터 시스템은 Android AOSP 호환성을 완전히 폐기했습니다. 모든 애플리케이션은 ArkTS 또는 C++로 ArkUI를 사용하여 작성해야 합니다.

HarmonyOS의 주요 특징은 분산 아키텍처입니다. 애플리케이션이 여러 기기에서 동시에 실행될 수 있으며, 인터페이스를 화면 간에 이동할 수 있습니다. 예를 들어, 사용자가 휴대폰에서 내비게이션을 시작하면 인터페이스가 자동차 화면에 표시됩니다. 재컴파일이나 추가 코드가 필요 없습니다.

HarmonyOS 버전 역사

HarmonyOS 1.0(2019) — 스마트폰이 아닌 Smart Screen용 첫 번째 버전. HarmonyOS 2.0(2021) — 스마트폰, 태블릿, 시계 지원, AOSP 애플리케이션 지원. HarmonyOS 3.0(2022) — 분산 아키텍처 개선, Super Device, Multiscreen Collaboration. HarmonyOS 4.0(2023) — ArkUI 3.0, Live View, 성능 개선. HarmonyOS NEXT(5.0, 2024) — AOSP 완전 폐기, 네이티브 HarmonyOS 애플리케이션만 지원.

HarmonyOS 버전연도주요 혁신
1.02019Smart Screen TV용 첫 번째 버전
2.02021스마트폰, 태블릿, AOSP 호환성
3.02022Super Device, Multiscreen Collaboration
4.02023ArkUI 3.0, Live View, Celia Voice Assistant
NEXT (5.0)2024AOSP 완전 폐기, 마이크로커널, ArkTS 전용

HarmonyOS 아키텍처: 분산 마이크로커널

HarmonyOS 아키텍처는 Android 및 iOS와 근본적으로 다릅니다. 모놀리식 Linux 커널 대신 HarmonyOS는 자체 마이크로커널을 사용하여 최소한의 특권 함수(메모리 관리, 프로세스 스케줄링, 프로세스 간 통신)를 구현합니다. 다른 모든 서비스는 사용자 공간에서 실행됩니다.

마이크로커널 및 보안

HarmonyOS 마이크로커널은 약 10,000줄의 코드로 구성됩니다(Linux 커널은 2,000만 줄 이상). 더 작은 코드베이스는 더 작은 공격 표면을 의미합니다. 시스템은 형식 검증 — 커널 코드 정확성의 수학적 증명을 사용합니다. HarmonyOS는 생체 인식, 결제 및 암호화 키를 위한 하드웨어 수준의 Trusted Execution Environment(TEE)를 지원합니다. 프로세스 간 통신은 IPC를 통해 구현되며, Android의 Binder보다 5배 더 성능이 뛰어납니다.

4계층 아키텍처

HarmonyOS 아키텍처는 4개 계층으로 구성됩니다: Kernel Subsystem(마이크로커널 + 드라이버), System Service Layer(시스템 서비스: 분산 데이터, 파일 시스템, 보안), Framework Layer(ArkUI, 멀티미디어, 전화, AI 서비스), Application Layer(사용자 애플리케이션). 각 계층은 IPC를 통해 하위 계층과 분리됩니다.

분산 파일 시스템

HarmonyOS는 모든 사용자 기기의 스토리지를 단일 가상 공간으로 통합하는 분산 파일 시스템(DFS)을 제공합니다. 애플리케이션은 기기를 지정하지 않고 URI로 파일에 액세스합니다. 시스템은 요청을 파일이 물리적으로 저장된 기기로 라우팅합니다. DFS는 종단 간 암호화와 자주 사용되는 데이터의 자동 복제를 지원합니다.

cpp
// HarmonyOS 분산 파일 시스템 작업
#include <dfs/storage_manager.h>
#include <uri/uri_helper.h>

using namespace OHOS::Storage;

// 분산 기기에서 파일 URI 가져오기
Uri GetDistributedFileUri(const std::string& localPath) {
    DistributedFileManager manager;
    auto deviceList = manager.GetOnlineDevices();

    for (const auto& device : deviceList) {
        Uri uri = manager.GetFileUri(device.deviceId, localPath);
        if (uri.IsValid()) {
            return uri;  // 한 기기에서 파일을 찾았습니다
        }
    }
    return Uri::Empty();
}

// 원격 기기에서 데이터 읽기
std::string ReadDistributedFile(const Uri& uri) {
    DistributedFile file(uri);
    if (!file.Open(OpenMode::READ_ONLY)) {
        return "";
    }

    char buffer[4096];
    size_t bytesRead = file.Read(buffer, sizeof(buffer));
    file.Close();

    return std::string(buffer, bytesRead);
}

예제에서 DistributedFileManager는 사용자의 모든 온라인 기기에서 파일을 검색하고 분산 URI를 반환합니다. DistributedFile은 애플리케이션에 투명하게 IPC를 통해 원격 기기에서 물리적으로 파일을 엽니다. 개발자는 데이터가 어디에 저장되어 있는지 알 필요가 없습니다. 시스템이 자동으로 요청을 라우팅합니다.

ArkUI 및 ArkTS: 인터페이스 개발

ArkUI는 Huawei가 개발한 HarmonyOS의 선언형 UI 프레임워크입니다. 인터페이스는 SwiftUI(iOS)나 Jetpack Compose(Android)와 유사하게 반응형 데이터 바인딩이 있는 컴포넌트 계층 구조로 설명됩니다. ArkTS는 추가적인 정적 타이핑과 @Component, @State, @Prop, @Link 데코레이터를 통한 ArkUI 통합을 갖춘 TypeScript 기반 개발 언어입니다.

핵심 ArkTS 개념

ArkTS는 UI 프레임워크와의 조화를 위해 TypeScript를 확장합니다: @Component — UI 컴포넌트 선언을 위한 데코레이터, build() — UI 요소 트리를 반환하는 필수 메서드, @State — 변경 시 자동으로 컴포넌트를 다시 그리는 반응형 변수, @Prop — 상위 요소의 입력 속성, @Link — 양방향 바인딩. 모든 ArkUI 컴포넌트는 수정자(.width, .height, .backgroundColor)와 함께 체인 구문을 사용합니다.

java
// ArkTS — ArkUI의 사용자 프로필 화면
@Component
struct ProfileScreen {
    @State userName: string = "안나 페트로바";
    @State avatarUrl: Resource = $r("media.avatar_default");
    @State isLoading: boolean = false;
    @Prop onEditClick: () => void;

    aboutToAppear(): void {
        this.loadUserData();
    }

    async loadUserData(): Promise<void> {
        this.isLoading = true;
        try {
            const data = await UserService.getProfile();
            this.userName = data.name;
            this.avatarUrl = data.avatarUrl;
        } catch (error) {
            console.error("로딩 오류", error);
        } finally {
            this.isLoading = false;
        }
    }

    build(): void {
        Column() {
            if (this.isLoading) {
                LoadingProgress()
                    .width('50%')
                    .height('50%');
            } else {
                Stack({ alignContent: Alignment.Center }) {
                    Image(this.avatarUrl)
                        .width('100%')
                        .height('100%')
                        .objectFit(ImageFit.Cover);

                    Column() {
                        Text(this.userName)
                            .fontSize('24fp')
                            .fontWeight(FontWeight.Bold)
                            .fontColor(Color.White);

                        Button("편집", {
                            type: ButtonType.Capsule,
                            stateEffect: true
                        })
                            .onClick(() => {
                                this.onEditClick();
                            })
                            .margin({ top: '12vp' });
                    }
                    .alignItems(HorizontalAlign.Center)
                    .width('100%');
                }
                .width('100%')
                .height('300vp');
            }
        }
        .padding('16vp')
        .width('100%')
        .height('100%');
    }
}

// 애플리케이션 진입점
@Entry
@Component
struct MainApp {
    build(): void {
        Column() {
            ProfileScreen({
                onEditClick: () => {
                    console.info("프로필 편집기 열기");
                }
            });
        }
        .width('100%')
        .height('100%');
    }
}

ArkTS의 ProfileScreen 컴포넌트는 반응형 변수를 위한 @State, 입력 콜백을 위한 @Prop, Column/Stack/Text/Image/Button을 기본 UI 컴포넌트로, async/await를 통한 비동기 데이터 로딩을 보여줍니다. 로딩 중에는 LoadingProgress가 표시됩니다. 모든 크기는 vp(가상 픽셀)로 지정되며, iOS의 pt나 Android의 dp와 유사한 적응형 단위입니다.

다양한 기기로의 적응

ArkUI는 화면 너비에 해당하는 중단점 시스템(xs, sm, md, lg, xl)을 통해 반응형 디자인을 지원합니다. 컴포넌트는 휴대폰에서 태블릿이나 시계로 전환할 때 자동으로 재배열됩니다. GridRow와 GridCol은 중단점에 따라 열 수를 변경하는 적응형 컨테이너입니다. 크기 단위: vp(가상 픽셀), fp(글꼴 픽셀 — 글꼴 설정에 따라 크기 조정), lpx(시계용 논리 픽셀).

기기 유형중단점대각선단위
스마트워치xs1.2"–2.0"lpx
스마트폰sm4.7"–6.9"vp
태블릿md7.0"–12.0"vp
노트북lg13.0"–16.0"vp
모니터 / TVxl24.0"–65.0"vp

DevEco Studio 및 개발 도구

DevEco Studio는 IntelliJ IDEA Community Edition을 기반으로 하는 HarmonyOS 공식 통합 개발 환경(IDE)입니다. ArkTS 및 C++를 지원하는 코드 편집기, 비주얼 ArkUI 편집기(드래그 앤 드롭), HarmonyOS 기기 에뮬레이터, 즉시 UI를 볼 수 있는 Preview, 성능 분석을 위한 Profiler가 포함되어 있습니다.

HarmonyOS 에뮬레이터

DevEco Studio에는 QEMU 기반 에뮬레이터가 포함되어 있어 스마트폰(다양한 화면 크기), 태블릿, 시계, TV를 지원합니다. 에뮬레이터는 분산 환경을 시뮬레이션하여 여러 가상 기기를 실행하고 기기 간 상호 작용을 테스트할 수 있습니다. 에뮬레이터에는 가상화가 필요합니다(Windows의 Hyper-V, Linux의 KVM).

Preview 및 Live Preview

ArkUI Preview는 빌드나 에뮬레이터 시작 없이 즉시 UI를 볼 수 있는 기능입니다. 코드 변경 사항이 1~2초 내에 Preview에 나타납니다. 모든 표준 컴포넌트와 애니메이션이 지원됩니다. Preview는 다양한 중단점에서 작동하여 적응성을 테스트합니다. Live Preview는 USB 또는 Wi-Fi를 통해 실제 기기에 연결하여 하드웨어에서 테스트합니다.

HarmonyOS SDK 및 API

HarmonyOS SDK에는 다음이 포함됩니다: ArkUI(UI 컴포넌트), Multimedia Kit(오디오/비디오 캡처 및 재생), Connectivity Kit(Bluetooth, Wi-Fi, NFC), Location Kit(위치 정보), Sensor Kit(센서), AI Kit(Huawei NPU에서 온디바이스 추론을 위한 ML Kit). API 버전: API 9(HarmonyOS 3.x), API 10(4.x), API 11(NEXT).

java
// Multimedia Kit를 통한 HarmonyOS에서 카메라 초기화
import multimedia.CameraManager;
import multimedia.CameraInput;
import multimedia.PreviewOutput;

@Component
struct CameraView {
    @State isPreviewActive: boolean = false;
    cameraManager: CameraManager = CameraManager.getInstance();
    cameraInput?: CameraInput;
    previewOutput?: PreviewOutput;

    async startPreview(): Promise<void> {
        try {
            // 카메라 권한 요청
            const granted = await Permissions.request("ohos.permission.CAMERA");
            if (!granted) return;

            // 카메라 가져오기(0 — 후면, 1 — 전면)
            const camera = await this.cameraManager.getCamera(0);

            // 카메라 입력 생성
            this.cameraInput = await this.cameraManager.createCameraInput(camera);
            await this.cameraInput.open();

            // Surface에서 미리보기 시작(ArkUI XComponent)
            this.previewOutput = await this.cameraManager.createPreviewOutput({
                width: 1920,
                height: 1080
            });
            await this.previewOutput.start();
            this.isPreviewActive = true;
        } catch (error) {
            console.error("Camera error: " + error.message);
        }
    }

    async stopPreview(): Promise<void> {
        await this.previewOutput?.stop();
        await this.cameraInput?.close();
        this.isPreviewActive = false;
    }
}

CameraView 컴포넌트는 Multimedia Kit 작업을 보여줍니다: Permissions.request를 통한 권한 요청, CameraManager를 통한 카메라 획득, CameraInput 및 PreviewOutput 생성. ArkUI Surface(XComponent를 통해)가 비디오 스트림을 표시합니다. 모든 작업은 try/catch를 통한 오류 처리가 포함된 비동기 방식입니다.

분산 애플리케이션 및 크로스 디바이스

HarmonyOS의 분산 아키텍처는 경쟁사와의 주요 차별점입니다. 애플리케이션은 각각 최적의 기기에서 실행되는 여러 원자 서비스(Atomic Services)로 구성될 수 있습니다. 사용자는 한 기기에서 작업을 시작하고 컨텍스트를 잃지 않고 다른 기기에서 계속할 수 있습니다.

Atomic Services 및 Ability

Atomic Service는 HarmonyOS의 최소 배포 단위입니다. 각 서비스는 하나 이상의 Ability(Android의 Activity와 유사)를 구현합니다. Page Ability — UI가 있는 화면, Service Ability — 백그라운드 작업, Data Ability — 데이터 액세스. 애플리케이션은 Ability를 다른 기기에 위임할 수 있습니다. 예를 들어, UI는 태블릿에 표시되고 AI 처리는 NPU가 있는 휴대폰에서 실행됩니다.

분산 데이터 관리

분산 데이터 관리(DDM) 시스템은 기기 간에 애플리케이션 상태를 동기화합니다. DDM은 분산 데이터 객체 — 모든 사용자 기기에 자동으로 복제되는 반응형 객체를 사용합니다. 한 기기에서 데이터 변경 사항이 즉시 다른 모든 기기에 반영됩니다. DDM은 암호화를 지원하고 네트워크 연결(Bluetooth, Wi-Fi, 셀룰러 데이터)을 고려합니다.

기술목적유사 제품
Distributed Data Objects기기 간 반응형 데이터 동기화iCloud / Firebase
Distributed File System기기 간 통합 파일 공간iCloud Drive
Ability Distribute다른 기기로 화면 위임
Super Device기기를 단일 시스템으로 통합Apple Continuity
Multiscreen Collaboration여러 화면에서 하나의 애플리케이션 작업Sidecar(iPad + Mac)

Super Device

Super Device는 최대 7개의 Huawei 기기를 단일 컴퓨팅 환경으로 통합할 수 있는 HarmonyOS 기능입니다. 사용자는 Super Device 인터페이스에서 기기 아이콘을 드래그합니다. 스피커는 오디오 출력이 되고, 태블릿은 두 번째 화면이 되고, 시계는 휴대폰의 피트니스 앱용 심박수 모니터가 됩니다. 모든 기기는 5ms 미만의 지연 시간으로 분산 버스(Distributed Bus)를 통해 동기화됩니다.

AppGallery 및 애플리케이션 게시

Huawei AppGallery는 HarmonyOS의 공식 앱 스토어로, Google Play와 App Store 다음으로 세계에서 세 번째로 큽니다. Huawei(2026년)에 따르면 AppGallery의 월간 활성 사용자는 5억 8,000만 명 이상입니다. 개발자 등록은 개인에게 무료입니다(Apple의 99달러와 달리).

게시 프로세스

개발자는 DevEco Studio(.hap 형식 — HarmonyOS Ability Package)에서 애플리케이션을 빌드합니다. AppGallery Connect를 통한 게시: HAP 파일 업로드, 설명 입력(이름, 아이콘, 스크린샷), 가격 모델 설정. 평균 검토 시간은 1~3영업일입니다. Huawei는 보안(정적 분석), API 호환성 및 정책 준수 여부를 확인합니다.

수익 창출

AppGallery는 다음을 지원합니다: 유료 애플리케이션(Huawei 수수료 15-30%), 구독(15% 수수료), Huawei Ads Kit를 통한 광고, IAP Kit를 통한 인앱 구매. Huawei Pay는 Alipay와 WeChat Pay를 지원하는 중국 시장용 결제 게이트웨이입니다. 국제 개발자는 PayPal 또는 은행 송금을 통해 지급받습니다.

요구 사항설명
형식HAP(HarmonyOS Ability Package) 또는 App Pack(여러 HAP)
서명DevEco Studio를 통한 디지털 서명(Huawei 인증서)
대상 APIHarmonyOS 3.x용 API 9+, HarmonyOS NEXT용 API 11+
크기App Pack 최대 4GB, 기본 HAP 최대 200MB
언어중국용 간체 중국어 필수 지원
정책Huawei 개발자 규칙 및 EU GDPR 준수

Huawei Mobile Services(HMS)

HMS Core는 Google이 없는 Huawei 기기에서 Google Play Services를 대체하는 서비스 모음입니다. 포함: Push Kit(푸시 알림), Map Kit(내비게이션 지도), Location Kit(위치 정보), Ads Kit(광고), Analytics Kit(분석), Account Kit(Huawei ID를 통한 인증). HMS Core는 HarmonyOS 기기 및 Huawei Android 기기(AppGallery 통해)에서 사용 가능합니다.

자주 묻는 질문

HarmonyOS 개발에는 어떤 언어가 사용되나요?

기본 언어는 ArkTS로, ArkUI 통합이 포함된 TypeScript 확장입니다. 성능이 중요한 모듈에는 Native API(NAPI)를 통해 C++가 사용됩니다. Java는 HarmonyOS 3-4의 레거시 애플리케이션에서 지원됩니다. Huawei는 HarmonyOS NEXT부터 모든 새 프로젝트에 ArkTS와 C++를 권장합니다.

HarmonyOS는 Android와 어떻게 다른가요?

HarmonyOS는 자체 마이크로커널(Linux 아님), 분산 크로스 디바이스 아키텍처, 통합 DFS 파일 시스템, 반응형 DDM 동기화를 사용합니다. HarmonyOS NEXT는 AOSP 호환성을 완전히 폐기했으며 APK 애플리케이션을 지원하지 않습니다. 모든 애플리케이션은 ArkTS 또는 C++로 작성됩니다.

ArkUI란 무엇인가요?

ArkUI는 ArkTS 및 C++로 작성된 HarmonyOS용 선언형 UI 프레임워크입니다. 인터페이스는 @Component를 통해 build() 메서드와 반응형 변수(@State)로 설명됩니다. ArkUI는 중단점(xs-xl), GridRow/GridCol 및 GPU 계산을 위한 사용자 정의 Canvas 렌더링을 통한 적응형 레이아웃을 지원합니다.

HarmonyOS 애플리케이션은 어떻게 배포되나요?

공식 스토어는 Huawei AppGallery입니다. 개발자 등록은 무료입니다. 애플리케이션은 HAP(HarmonyOS Ability Package) 또는 App Pack 형식으로 배포됩니다. 검토는 1~3일이 소요됩니다. 스토어 수수료는 수익 창출 모델에 따라 15-30%입니다. 중국의 경우 간체 중국어 지원이 필수입니다.

DevEco Studio란 무엇인가요?

DevEco Studio는 IntelliJ IDEA 기반 HarmonyOS 공식 IDE입니다. ArkTS/C++ 편집기, 비주얼 ArkUI 편집기, QEMU 기반 에뮬레이터, 즉시 UI 미리보기, CPU/메모리 Profiler, CI/CD를 위한 AppGallery Connect 통합이 포함됩니다. Windows, macOS, Linux를 지원합니다.

요약

  • HarmonyOS — 마이크로커널을 갖춘 Huawei 분산 OS, NEXT에서 AOSP 폐기 및 크로스 디바이스 지원
  • ArkTS — @Component, @State, @Prop 데코레이터가 있는 TypeScript 기반 기본 개발 언어
  • ArkUI — 중단점 및 GridRow/GridCol을 통한 적응형 레이아웃의 선언형 프레임워크
  • DevEco Studio — 에뮬레이터, Preview 및 AppGallery Connect 통합을 갖춘 IntelliJ 기반 IDE
  • 분산 아키텍처에는 DFS, DDM, Ability Distribute 및 최대 7개 기기의 Super Device 포함
  • AppGallery — 무료 등록, HAP 형식, 15-30% 수수료의 공식 스토어
  • HMS Core는 Push Kit, Map Kit, Location Kit, Ads Kit, Analytics Kit, Account Kit 제공

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기