Flutter 아키텍처에 대해 설명해주세요
질문
Flutter 아키텍처에 대해 설명해주세요.
답변
Flutter 아키텍처는 여러 계층으로 구성된 포괄적인 프레임워크입니다. 각 계층은 특정 기능을 담당하며 서로 상호작용합니다.
Flutter 아키텍처의 주요 계층
Embedder (임베더)
- 플랫폼별 코드 (Android/iOS/Windows/macOS/Linux/웹)
- 네이티브 플랫폼과 Flutter 엔진 사이의 연결 역할
- 네이티브 플랫폼의 메시지 루프에 Flutter 통합
- 표면 생성 및 입력 이벤트 처리
Engine (엔진)
- C/C++로 작성된 저수준 구현
- Dart 런타임 환경 포함
- Skia 그래픽 라이브러리 통합 (2D 렌더링 엔진)
- 텍스트 레이아웃, 파일/네트워크 I/O, 플러그인 아키텍처 등 제공
Framework (프레임워크)
- Dart로 작성된 고수준 API
- 계층적으로 구성된 위젯 라이브러리
- 다음 하위 계층으로 구성:
- Foundation: 기본 클래스 및 유틸리티 제공
- Animation: 애니메이션 시스템
- Painting: 그래픽 및 시각적 효과를 위한 저수준 API
- Rendering: 레이아웃 시스템
- Widgets: UI 컴포넌트 계층
- Material & Cupertino: 디자인 시스템 구현
Flutter의 렌더링 과정
- Layout (레이아웃): 위젯 트리를 렌더 객체 트리로 변환하고 각 요소의 크기와 위치 결정
- Paint (페인트): 시각적 표현 생성
- Compositing (합성): 모든 요소를 단일 이미지로 결합
- Rasterization (래스터화): 최종 픽셀로 변환
Flutter의 성능 이점
Dart를 사용한 JIT/AOT 컴파일:
- 개발 시 JIT (Just-In-Time) 컴파일로 핫 리로드 지원
- 릴리스 시 AOT (Ahead-Of-Time) 컴파일로 네이티브 성능 확보
자체 렌더링 엔진:
- 네이티브 UI 컴포넌트에 의존하지 않음
- Skia 그래픽 라이브러리를 사용하여 일관된 렌더링
단일 스레드 모델:
- UI 스레드에서 대부분의 작업 처리
- 필요시 Isolate를 사용하여 병렬 처리
아키텍처 다이어그램
+------------------+
| Flutter 앱 (Dart) |
+------------------+
|
+------------------+
| 프레임워크 계층 |
| (위젯, 렌더링 등) |
+------------------+
|
+------------------+
| 엔진 (C/C++) |
| (Skia, Dart VM) |
+------------------+
|
+------------------+
| 임베더 (플랫폼별) |
+------------------+
|
+------------------+
| 플랫폼 |
| (iOS/Android 등) |
+------------------+
Flutter의 아키텍처는 높은 성능과 유연성을 제공하면서도, 개발자가 쉽게 접근할 수 있는 API를 제공하도록 설계되었습니다.