컴 포즈 (Compose)

Jetpack Compose를 중심으로 한 선언형 UI 프레임워크와 Docker Compose 등 'Compose' 계열 기술을 정리한 문서

컴 포즈 (Compose)

개요

컴 포즈(Compose)는 소프트웨어 개발에서 여러 구성 요소를 선언적으로 조합(compose)해 하나의 결과물을 만드는 기술군을 통칭하는 이름이다. 가장 널리 쓰이는 사례는 안드로이드의 네이티브 UI 툴킷인 Jetpack Compose이며, 컨테이너 오케스트레이션 도구인 Docker Compose도 같은 이름을 공유한다. 두 기술 모두 "명령형으로 하나씩 제어하는 대신, 원하는 최종 상태를 선언하고 조합한다"는 선언형 패러다임을 공유한다는 점에서 개념적 연관성이 깊다.

주요 내용

Jetpack Compose

Jetpack Compose는 구글이 2019년 구글 I/O에서 처음 공개하고 2021년 정식 1.0 버전을 발표한 안드로이드용 선언형 UI 프레임워크다. 기존의 XML 레이아웃 + findViewById 방식과 달리, 코틀린(Kotlin) 함수에 @Composable 애너테이션을 붙여 UI를 코드로 직접 기술한다.

kotlin

@Composable

fun Greeting(name: String) {

Text(text = "Hello, $name!")

}

핵심 특징은 다음과 같다.

  • 선언형 UI: 상태(state)가 바뀌면 프레임워크가 알아서 화면을 다시 그린다. 개발자는 "무엇을 보여줄지"만 기술한다.
  • 리컴포지션(Recomposition): 상태가 변경된 컴포저블 함수만 선택적으로 다시 실행해 성능을 최적화한다.
  • State Hoisting: 상태를 상위 컴포저블로 끌어올려 단방향 데이터 흐름을 구현하는 권장 패턴이다.
  • Material Design 3 지원: MaterialTheme을 통해 색상, 타이포그래피, 형태를 일관되게 관리한다.
  • 미리보기와 툴링: Android Studio의 @Preview 애너테이션으로 실시간 미리보기가 가능하다.

Docker Compose

Docker Compose는 여러 컨테이너를 하나의 YAML 파일(docker-compose.yml)로 정의하고 함께 실행·관리하는 도구다. 웹 서버, 데이터베이스, 캐시 등을 한 번에 띄우는 로컬 개발 환경 구성에 널리 쓰인다.

yaml

services:

web:

image: nginx:latest

ports:

- "8080:80"

db:

image: postgres:16

environment:

POSTGRES_PASSWORD: example

그 외 Compose 계열

  • Compose Multiplatform: JetBrains가 주도하며, 동일한 코틀린 UI 코드로 안드로이드, iOS, 데스크톱, 웹을 함께 지원한다.
  • Docker Compose Specification: 2021년 이후 오픈 표준으로 분리되어 다양한 런타임이 채택하고 있다.

최신 동향

2024~2025년 기준으로 Jetpack Compose는 안드로이드 신규 프로젝트의 사실상 표준(de facto standard)으로 자리 잡았다. 구글은 Compose를 기반으로 한 Compose for Wear OS, Compose for TV, Compose for Auto 등 폼팩터 확장을 지속하고 있으며, Compose BOM(Bill of Materials)을 통해 라이브러리 버전 관리를 단순화했다.

특히 주목할 변화는 Compose Multiplatform의 안정화다. 2024년 iOS 지원이 안정(stable) 단계에 진입하면서, 코틀린 하나로 안드로이드·iOS·데스크톱 UI를 공유하려는 시도가 늘고 있다. 또한 Kotlin Multiplatform(KMP)과의 결합으로 비즈니스 로직까지 공유하는 아키텍처가 확산되는 추세다.

한편 Docker Compose는 2023년 이후 Compose V2(Go 언어로 재작성)가 기본이 되었고, docker compose(하이픈 없음) 명령으로 통합되었다. 2024년에는 Docker Desktop의 라이선스 정책 변화와 함께 Podman Compose, Colima 등 대안 런타임 사용도 증가했다. 생성형 AI와 결합해 UI 코드를 자동 생성하거나 컨테이너 구성을 자동화하는 사례도 늘어나는 중이다.

관련 주제

  • [[Jetpack Compose]]
  • [[Docker]]
  • [[코틀린]]
  • [[Compose Multiplatform]]
  • [[선언형 UI]]
  • [[안드로이드]]
  • [[컨테이너]]