Android

Android 심층 안내: 아키텍처, 컴포넌트, 보안, 생태계, 성능 최적화

Android란 무엇인가

  • Android는 리눅스 커널을 기반으로 한 모바일 운영체제 플래트폼이며, 스마트폰·태블릿·웨어러블·TV·자동차(IVI) 등 다양한 장치에서 동작하도록 설계되었습니다.
  • 커널(보안·드라이버) + HAL(하드웨어 추상화) + 프레임워크(앱 런타임/서비스) + 앱 생태계로 층을 이루며, 앱은 주로 Kotlin/Java로 개발되고 네이티브(NDK/C/C++)도 지원됩니다.
  • 오픈 소스(AOSP)로 공개되어 OEM이 커스터마이즈하고, Google Play 서비스 및 스토어와의 연계를 통해 방대한 앱 생태계를 형성합니다.

아키텍처 심화

커널과 HAL

  • 리눅스 커널: 프로세스/스케줄러, 메모리 관리, 파일시스템(ext4/F2FS), 네트워킹, 드라이버, SELinux 기반 MAC를 제공합니다.
  • HAL(Hardware Abstraction Layer): 카메라·오디오·그래픽·센서·무선 등 하드웨어를 인터페이스로 추상화하여 프레임워크와 느슨하게 결합시킵니다.
  • Project Treble: 프레임워크와 벤더 구현(드라이버/HAL)을 분리해 OS 업그레이드를 독립적으로 가능하게 하는 아키텍처 개선입니다.
  • Mainline(모듈화 업데이트): 핵심 시스템 컴포넌트를 모듈로 분리해 스토어 업데이트로 보안/기능을 신속히 배포합니다.

런타임과 IPC

  • ART(Android Runtime): DEX 바이트코드를 사전 컴파일(AOT)·즉시 컴파일(JIT)·프로파일 가이드 최적화로 성능과 메모리 효율을 균형 있게 확보합니다.
  • Binder IPC: 사용자 공간 간·커널 브릿지 기반의 고성능 RPC 메커니즘으로, 시스템 서비스 호출과 앱 간 통신을 안전하게 처리합니다.
  • Zygote: 공용 시스템 클래스·리소스를 프리포크하여 앱 프로세스 생성 시간을 단축합니다.

그래픽·미디어·입출력

  • SurfaceFlinger/Hardware Composer: 합성(Compositing)과 디스플레이 파이프라인 관리. OpenGL ES/Vulkan을 통한 GPU 렌더링 지원.
  • MediaCodec/MediaExtractor: 하드웨어 가속 인코딩/디코딩, ExoPlayer/MediaPlayer로 스트리밍·재생을 구현.
  • AudioFlinger/AAudio: 저지연 오디오 경로, 믹싱·효과 처리. 오디오 포커스/라우팅 관리.
  • Sensors/Location: 센서 허브·HAL·Fusion 알고리즘으로 가속도/자이로/자기/바로미터·GNSS를 통합 제공.

애플리케이션 모델과 컴포넌트

기본 컴포넌트

  • Activity: 화면·UI 수명주기. 상태 저장/복원, Configuration 변경 대응.
  • Service: 백그라운드 처리(포그라운드 서비스로 지속 실행), 바인드/시작형.
  • BroadcastReceiver: 시스템/앱 이벤트 수신(배터리, 네트워크, 알림 등).
  • ContentProvider: 앱 간 안전한 데이터 공유(API/권한 기반).

패키징·서명·배포

  • APK/AAB: 앱 번들(AAB)로 기기별 최적화된 APK를 동적 생성, 패키지 크기·전달 효율 개선.
  • 앱 서명 v2/v3/v4: 무결성 검증과 증분 설치 최적화. 키 롤오버로 장기 운영 보장.
  • Play Features: 인앱 업데이트, Dynamic Feature 모듈, 인스턴트 앱으로 유연한 배포.

Jetpack·개발 스택

  • UI: Jetpack Compose(선언형 UI), View 시스템.
  • 아키텍처: ViewModel, LiveData/Flow, Room(DB), WorkManager(백그라운드 작업), Navigation.
  • 언어/툴: Kotlin(우선 언어), Java, Gradle, Android Studio, NDK(C/C++), AIDL/HIDL.

보안과 프라이버시

  • 샌드박스: 각 앱은 UID 기반 격리된 프로세스/파일공간에서 실행되어 다른 앱 데이터에 직접 접근할 수 없습니다.
  • 권한 모델: 위험 권한은 런타임 프롬프트로 승인(카메라/마이크/위치 등). 권한 그룹/스코프 저장소로 최소 권한 원칙 강화.
  • SELinux(Enforcing): 시스템 서비스·드라이버·앱 간 상호작용을 정책으로 제한하여 커널 단의 강제 접근 제어를 실현.
  • Verified Boot/AVB: 부팅 체인 무결성 검증, 파티션 서명/롤백 보호로 루트킷·변조 방지.
  • 암호화: 파일 기반 암호화(FBE)·키 마테리얼을 TEE/StrongBox(HW 보안 모듈)에 저장.
  • 개인정보 보호: 스코프 위치, 백그라운드 접근 제한, 고유 식별자 사용 제한(Advertising ID, SSAID), 포그라운드 서비스 규정.

저장소·파일시스템·성능

  • 파일시스템: ext4(범용 안정성), F2FS(플래시 최적화, 쓰기 성능 개선). 저널링/트림을 통한 일관성·수명 확보.
  • 스토리지 클래스: 내부/외부 저장소 스코프 분리, SAF(Storage Access Framework)로 파일 접근 권한을 명시적으로 제어.
  • 메모리 관리: LMK/Low Memory Killer → 현행은 PSI/Compaction/oom_score 기반 정책 강화. zRAM으로 스왑 유사 압축 메모리.
  • 전력 최적화: Doze/앱 대기(App Standby)로 백그라운드 네트워크·알람 제한, JobScheduler/WorkManager로 윈도우 배치.
  • 성능 팁: 프로파일링(Systrace/Perfetto), strictMode, R8/ProGuard 최적화, 이미지/네트워크 캐싱(OKHTTP/Coil/Glide).

네트워킹·통신

  • 모바일/무선: 5G/LTE/NR, Wi‑Fi(모던 표준), Bluetooth/BLE, NFC. 네트워크 스택은 TCP/IP, HTTP/HTTP3(QUIC) 등 지원.
  • 보안 네트워크: TLS 1.3, certificate pinning 권장, Network Security Config로 도메인 정책 관리.
  • 테더링/Carrier: APN·Carrier 서비스와 정책 통합, eSIM·IMS(VoLTE/VoWiFi) 스택.

배포판과 생태계

  • AOSP: 오픈 소스 베이스라인으로 OEM·SoC 벤더가 커스터마이즈하여 제품을 출시합니다.
  • GMS/Play 서비스: 인증 장치에서 Google 계정·맵/푸시(Firebase Cloud Messaging)·In‑App Billing 등 플랫폼 서비스 제공.
  • OEM 업데이트: Treble/Mainline 덕분에 프레임워크·모듈 업데이트가 비교적 분리되어 배포되며, 보안 패치는 월단위로 제공되는 경우가 많습니다.

설치·개발·테스트 팁

  • 개발 환경: Android Studio 최신 안정 채널, SDK/NDK, 에뮬레이터(AVD)·실기기 병행 테스트.
  • 기기 다양성 대응: 화면/밀도, SoC/GPU, Android 버전, OEM 커스터마이즈를 고려한 적응형 레이아웃·성능 전략.
  • 품질/정책 준수: 백그라운드 실행 제한 준수, 알림 채널/포그라운드 서비스, 개인정보 보호 안내/동의 흐름 설계.

이미지(그림) 설명 제안

  • Android 레이어 다이어그램: 앱 → 프레임워크/ART → 시스템 서비스/Binder → HAL → 커널 → 하드웨어로 내려가는 구조.
  • 보안 파이프라인: 앱 샌드박스/SELinux/권한 프롬프트/Verified Boot/암호화의 상호관계.
  • 그래픽 파이프라인: 앱 렌더링 → Surface → SurfaceFlinger 합성 → HWC → 디스플레이 출력 흐름.
  • 스토리지/권한 모델: 스코프 저장소, SAF, 파일 기반 암호화의 관계.

마무리

Android는 모듈화된 하드웨어 추상화, 강력한 보안 모델, 최적화된 런타임과 그래픽/미디어 파이프라인, 그리고 방대한 개발 생태계를 통해 다양한 디바이스에서 유연하고 확장 가능한 플랫폼을 제공합니다. Treble/Mainline·ART 최적화·Binder 기반 서비스 구조는 신뢰성과 성능을 뒷받침하며, 권한/프라이버시 정책을 준수한 앱 설계가 사용자 신뢰와 서비스 지속성을 확보합니다.

Previous Article

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*

Recent Comments

보여줄 댓글이 없습니다.

Archives

Categories