WebAssembly 컴포넌트 모델이란 무엇인가요?

F5 에코시스템 | 2025년 2월 12일

WebAssembly(줄여서 Wasm)는 네이티브에 가까운 빠른 실행 속도, 다양한 프로그래밍 언어 선택지, 기본적으로 모든 접근을 차단하는 강력한 샌드박싱 모델을 바탕으로 혁신적인 기술임을 거듭 입증해 왔습니다. 이미 웹 전반에서 폭넓게 활용되고 있으며, 서버 측에서도 강력한 기술로 자리매김했습니다.

성장하는 모든 생태계에는 각 요소가 어떻게 조화를 이루는지에 대한 비전이 필요하며, 바로 이 지점에서 WebAssembly 컴포넌트 모델이 등장합니다. 컴포넌트 모델은 WebAssembly 코드의 개별 단위 간 상호작용과 WebAssembly 코드와 호스트 환경 간 상호작용을 지원하는 시스템입니다. 이 모델은 WebAssembly 컴포넌트라는 개념을 중심으로 하며, 이는 기본적으로 데이터 유형이 인코딩된 일반 Wasm 모듈입니다. 이러한 유형을 통해 컴포넌트가 서로 원활하게 통신할 수 있도록 내부적으로 연결 코드가 생성됩니다.

컴포넌트 모델은 현대적인 소프트웨어 개발의 새 시대를 엽니다. 개발자는 어떤 프로그래밍 언어 생태계에서든 원하는 컴포넌트를 골라 하나의 앱으로 조합할 수 있습니다. Python으로 만든 데이터 처리 앱에 Rust로 작성된 효율적인 파서가 필요한가요? 문제없습니다. 조직 내 한 팀은 Go에 능숙하지만 다른 팀은 JavaScript만 사용하나요? 전혀 문제되지 않습니다. 각 팀이 서로 손쉽게 조합되는 WebAssembly 컴포넌트를 만들 수 있습니다.

기술적으로 이것이 필요한 이유

WebAssembly는 거의 모든 새로운 코드 실행 플랫폼에서 보아 온 문제에 직면해 있습니다. 서로 완전히 다른 프로그래밍 언어 툴체인으로 만들어졌을 수도 있는 별개의 코드 단위 간에 데이터를 어떻게 안전하고 효율적으로 공유할 수 있을까요? 일반적으로 두 개의 개별 WebAssembly 모듈은 많은 시스템에서처럼 JSON, Protobuf 또는 널리 사용되는 다른 데이터 교환 형식으로 데이터를 주고받을 수 있습니다. 하지만 이러한 형식을 직렬화하고 역직렬화하는 데는 상당한 비용이 듭니다. 게다가 서로 통신하려는 두 모듈은 네트워크를 거치는 것이 아니라 동일한 런타임에서 나란히 실행될 가능성이 높으므로, 이를 더 효율적으로 구현할 수 있습니다.

문제는 각 프로그래밍 언어가 데이터를 표현하는 방식에 있습니다. 언어 구현에 따라 문자열에 서로 다른 인코딩을 사용할 수 있으며, 어떤 언어는 연속된 데이터를 배열로 저장하는 방식을 선호하는 반면 다른 언어는 연결 리스트를 선호할 수 있습니다. 서로 다른 언어로 작성된 코드가 통신하려면 모든 데이터 유형에 대해 공통된 형식에 합의해야 합니다. 이를 애플리케이션 바이너리 인터페이스(Application Binary Interface), 즉 ABI라고 합니다. 하지만 실제로는 어느 언어도 서로 합의된 형식을 사용하지 않습니다. 일반적으로 한 언어로 작성된 코드가 다른 언어로 작성된 코드와 통신하게 하려면, 누군가가 직접 두 언어 사이를 변환하는 코드를 신중하게(그리고 고통스럽게) 작성해야 합니다. 이를 위해서는 두 언어의 작동 방식을 속속들이 알아야 하며, 오류가 발생할 가능성도 매우 높습니다. 일부 언어 생태계에서는 이 작업을 자동으로 수행하는 도구를 개발했지만, 그마저도 일부 언어에만 적용됩니다.

다행히 컴포넌트 모델은 모든 언어에서 공통으로 사용할 수 있는 데이터 형식을 정의하며, 이를 정규 ABI라고 합니다. 또한 사람이 쉽게 이해할 수 있도록 컴포넌트 인터페이스를 기술하는 WebAssembly Interface Types, 즉 WIT라는 인터페이스 정의 언어도 제공됩니다.

WIT의 세계

이처럼 다양한 컴포넌트가 있는데, 어디에서 사용할 수 있는지는 어떻게 알 수 있을까요? WebAssembly는 웹 브라우저, 서버, 엣지, 소형 기기 등 서로 다른 기능을 갖춘 수많은 환경에서 실행됩니다. WIT는 월드라는 개념을 제공합니다. 월드는 컴포넌트가 준수하는 인터페이스로, 컴포넌트가 가져올 수 있는 함수 집합과 내보내는 함수 집합으로 이루어집니다. 이를 통해 컴포넌트와 컴포넌트가 조합되는 방식을 비교적 쉽게 파악할 수 있습니다. 다음은 터미널 명령줄에서 실행되는 컴포넌트를 나타내는 `wasi:cli/command` 월드에 속한 컴포넌트의 정의입니다.

출처: https://github.com/WebAssembly/wasi-cli, 간결하게 수정됨

이 컴포넌트는 파일 시스템과 난수 생성 같은 기능을 다루고 입력 및 출력 스트림도 제공하지만, 무엇보다 명령이 호출될 때 실행할 함수를 제공합니다.

월드는 누구나 정의할 수 있지만, HTTP 요청을 처리하거나 USB 장치에 액세스하고 AI 모델을 사용할 수 있는 컴포넌트를 위한 표준화 과정의 월드가 이미 다수 있으며, 앞으로 더 많이 추가될 예정입니다. 호스트 환경은 자신이 구현하는 월드를 명시하여 개발자가 어떤 컴포넌트가 작동하는지 쉽게 파악할 수 있도록 할 수 있습니다. 컴포넌트는 조합할 수 있으므로, 다른 월드를 기반으로 특정 월드를 구현한 다음 두 컴포넌트를 조합하는 것도 가능합니다. 예를 들어 소켓 월드를 구현하는 호스트 환경이 있지만 어떤 컴포넌트가 HTTP 월드에서 HTTP 요청을 보내려는 경우, 소켓을 사용해 HTTP 월드를 구현하는 어댑터 컴포넌트를 작성할 수 있습니다:

간단히 조합하기만 하면 이제 컴포넌트를 수정하지 않고도 소켓 환경에서 실행할 수 있습니다! 가능성은 무궁무진합니다.

앞으로의 미래

컴포넌트 모델은 WebAssembly뿐만 아니라 전 세계 모든 개발자에게 기념비적인 발전입니다. 이는 개발자가 소프트웨어를 이해하고 개발하는 방식을 근본적으로 바꿀 것입니다. 이미 활용 가치가 무궁무진하지만, 아직 초기 단계에 불과합니다. WebAssembly 생태계에서 이루어지는 발전을 계속 지켜봐 주세요. 도입이 확산될수록 더욱 매력적인 활용 사례가 속속 등장할 것입니다.

공유

관련 블로그 게시물

AI 시대의 새로운 애플리케이션 제공 원칙으로 복잡성 극복하기
F5 에코시스템 | 2025. 02. 20.

AI 시대의 새로운 애플리케이션 제공 원칙으로 복잡성 극복하기

보안, 일관성, 완전 자동화에 중점을 둔 애플리케이션 제공의 새로운 6가지 원칙을 도입하여 복잡성 없이 하이브리드 멀티클라우드의 유연성을 누리세요.

디지털 혁신을 가속화하는 6가지 기술 역량
F5 에코시스템 | 2023. 01. 05.

디지털 혁신을 가속화하는 6가지 기술 역량

오늘날의 엔터프라이즈 아키텍처에는 기술 변화를 주도하는 데 핵심적인 민첩성, 확장성, 보안 및 관찰 가능성이 부족하지만, 이 여섯 가지 핵심 역량은 기업이 디지털 혁신 전반에 걸쳐 위험과 과제를 관리하는 데 도움이 될 것입니다.

하이브리드 근무가 ID 중심 보안으로의 전환을 이끌고 있습니다
F5 에코시스템 | 2021. 08. 16.

하이브리드 근무가 ID 중심 보안으로의 전환을 이끌고 있습니다

자동화와 디지털화의 폭발적인 성장에 하이브리드 근무 모델로의 전환 추세가 더해지면서, IP 기반 보안에서 벗어나 ID 기반 액세스 전략으로 전환하는 움직임이 더욱 가속화될 것입니다.

관점의 현대화: 애플리케이션에서 경험으로
F5 에코시스템 | 2021. 04. 05.

관점의 현대화: 애플리케이션에서 경험으로

그리스와 로마의 신들처럼, 여러 신화에서도 동일한 존재가 다양한 모습으로 나타나는 것을 볼 수 있습니다. 본질적으로 각각의 화신은 기존 존재가 새로운 얼굴로 드러난 것입니다. 디지털 세계에서도 이와 비슷한 양상이 나타납니다. 우리가 ‘애플리케이션’이라고 부르는 것들은 흔히 기존 기능이 새로운 형태로 구현된 것이라 볼 수 있습니다.

코로나19 이후 기업 결제의 디지털 전환
F5 에코시스템 | 2020. 06. 01.

코로나19 이후 기업 결제의 디지털 전환

디지털 결제는 과거의 현금만큼이나 보편화되었습니다. 코로나19 팬데믹으로 인한 봉쇄 조치는 소비자의 디지털 결제 서비스 의존도를 더욱 빠르게 높였습니다. 기업의 디지털 결제 도입 역시 가속화되었습니다. 대중을 상대로 영업하든 하지 않든 기업에는 여전히 지급해야 할 대금과 받아야 할 대금이 있기 때문입니다.

공급망 해킹과 보안에서 하드웨어의 역할
F5 에코시스템 | 2018. 10. 08.

공급망 해킹과 보안에서 하드웨어의 역할

수석 아키텍트 Dave Schmitt와 CTO 오피스가 최근 Bloomberg의 Super Micro 관련 기사를 계기로 하드웨어 보안 전문성의 중요성을 되짚어봅니다. 또한 이 글에서는 시스템이 안전하게 보호되고 있는지 확인하기 위해 공급업체에 물어봐야 할 질문도 소개합니다.