개발자

웹어셈블리(Wasm)가 클라우드 컴퓨팅의 미래인 이유

Peter Vetere | InfoWorld 2022.11.04
서버에서든 엣지에서든 ‘웹어셈블리(WebAssembly; Wasm)’를 사용하면 이전보다 데이터에 훨씬 더 가깝게 실행되는 사용자 정의 로직을 생성할 수 있다. 아울러 더욱 더 유연하고 안전하며 효율적으로 수행할 수도 있다. 

웹어셈블리(WebAssembly)의 줄임말인 Wasm은 웹용으로 개발됐다. 하지만 Wasm 기술은 웹 브라우저를 넘어 확장됐다. 이제 기업은 서버 쪽에서 Wasm을 실행하기 시작했다. 예를 들면 싱글스토어(SingleStore)는 자사 데이터베이스에서  Wasm을 사용하고 있다.
 
일각에서는 Wasm이 컨테이너 기술과 유비쿼터스 자바스크립트를 대체할 것이라고 생각한다. 믿든 믿지 않든 Wasm은 분명히 클라우드 컴퓨팅에 영향을 미치고 있다. 왜 그리고 어떻게? 
 
ⓒGetty Images Bank

 

Wasm은 크로스 플랫폼이다 : 클라우드 구성요소를 안전하고 간단하게 결합한다

소프트웨어 작성에는 수많은 종류의 언어가 사용된다. 그 많은 언어의 상호작용을 보장하는 것은 어렵다. Wasm은 사용자가 원하는 어떤 언어로든 작성할 수 있는 프레임워크를 제공한다. 그 다음 공통으로 시뮬레이션된 기계어 형식을 생성한다. 

이 형식을 사용하면 러스트, C/C++, 고랭 등 다양한 언어로 작성된 구성요소가 서로 통신할 수 있다. 또 Wasm은 서버 측 시스템(예 : 데이터베이스 등)이 해당 모듈을 어떻게 생성했는지 확인하거나 신경 쓰지 않고도 다른 언어의 구성요소를 내장한다. 

Wasm을 범용 플러그인 형식이라고, 서드파티에서 개발한 구성요소로 시스템의 기능을 강화하고 싶다고 가정해보자. Wasm을 활용하면 일반적으로 추가 기능을 통합할 때 수반되는 위험 없이 시스템에 새 구성요소를 가져올 수 있다. 예를 들어 외부 구성요소가 시스템을 충돌시킬 수도, 예기치 않은 방식으로 움직일 수도 있다. Wasm은 서로 다른 시스템과 구성요소가 상호 작용하는 매우 안전한 프레임워크를 만들어 이러한 문제를 완화한다.

클라우드는 Wasm 확장의 큰 원동력이다. Wasm은 가상화돼 있고, Wasm 런타임을 지원하는 모든 환경에서 작동할 수 있기 때문에 클라우드에 적합하다. 아울러 클라우드 시스템은 서로 다른 방식으로 연결된 수많은 서비스로 구성된다. 복잡해질 수 있다는 이야기다. 클라우드 환경을 단순화할수록 클라우드 시스템의 다양한 측면을 함께 작동하기가 쉬워진다. 
 

Wasm은 안전하다 : 코드 실행 및 기능 표현 방식이 위험을 줄임

대부분의 언어 런타임에서 함수는 주소를 가진다. 이러한 주소는 메모리에서 실행 가능한 지점이다. 메모리를 바이트 묶음으로 보면 함수는 메모리의 나머지 부분과 구별되지 않는다. 그래서 함수를 찾아 코드를 주입하거나, 함수를 호출해서 함수가 하면 안 되는 작업을 할 수 있도록 문을 열어주어야 한다. Wasm 설계는 이러한 문제를 해결한다. 

Wasm은 악용할 수 없는 방식으로 기능을 나타낸다. 또 샌드박스에서 코드를 실행하여 신뢰할 수 없는 코드 실행과 관련된 보통의 보안 문제를 완화한다. Wasm은 프로그램 메모리를 안전한 영역에 캡슐화하기 때문에 프로그램을 실행하는 호스트에 영향을 미치거나 보안을 손상시킬 수 있는 다른 위치에 액세스할 수 없다. 

아울러 Wasm의 기능 기반 보안 모델을 통해 호스트는 Wasm 프로그램이 실행할 수 있는 권한이 있는 작업 종류를 제어할 수 있다. 예를 들면 파일 액세스가 필수라면 호스트는 디렉토리 액세스 권한을 명시적으로 부여해야 한다.
 

Wasm은 빠르다 : 불필요한 것을 제거하고 속도와 효율성을 향상

확실히 Wasm은 더 안전하고 간단한 방법으로 요소 요소를 한곳에 모을 때 사용된 최초의 기술은 아니다. 하지만 Wasm은 분명 다른 기술보다 훨씬 더 빠르다. 

컴파일러는 LLVM 백엔드를 활용해 LLVM 중간 표현(IR)으로 컴파일하여 Wasm 프로그램을 생성할 수 있다. LLVM 또는 저수준 가상머신은 이미 많은 언어가 컴파일되는 추출된 머신이다. 이러한 접근 방식으로 인해, 그리고 LLVM 프로젝트를 둘러싼 수년간의 커뮤니티 노력 덕분에 Wasm 프로그램은 고도로 최적화된 기계 코드로 컴파일된다.

싱글스토어에서는 Wasm이 얼마나 빠르고 가벼운지 보여주기 위해 데이터베이스 내부의 가상 실시간 우주인 ‘Wasm 스페이스 프로그램(Wasm Space Program)’을 만들었다. 이 시뮬레이션에서 우주선은 에너지를 보충하고 광대한 실시간 ‘우주’에서 다른 우주선과 싸우기 위해 다양한 전략을 사용한다. 당연히 방대한 양의 데이터가 포함되는데, 이를테면 시스템에는 100만 대 이상의 선박이 있고 초당 약 300만 개의 데이터베이스 업데이트가 이뤄진다. 

기존에는 해당 데이터를 통합하여 중간 계층에서 조합하려면 많은 데이터를 중간 계층으로 가져와야 했다. 이로 인해 상당한 지연이 발생할 수 있었으며, 실시간 응답을 얻으려면 복잡한 캐싱이 필요했다. 각 우주선의 전략은 이러한 접근 방식을 취하는 대신 Wasm로 작성돼 UDF로 데이터베이스에 로드됐다. 매초마다 각 우주선의 전략 함수가 다음 움직임을 결정하기 위해 호출된다. 

프론트엔드(브라우저에서 실행되는 자바스크립트 프로그램)에는 이러한 전략이나 우주의 상태를 이해하는 것이 없다. 데이터베이스에 SQL 쿼리를 직접 실행하고, 반환된 정보를 그래픽으로 표시하는 작업만 수행한다. 데이터베이스는 모든 상태 정보를 유지하며, Wasm은 데이터 바로 옆에서 연산하므로 훨씬 더 빠르다. 중간 계층은 필요하지도 않다.

Wasm을 다른 수많은 애플리케이션 및 사용 사례를 해결하는 데도 사용할 수 있다. 예를 들면 감정 분석에 Wasm을 쓸 수 있다. 감정 분석에 필요한 복잡한 로직은 데이터베이스 SQL 언어로 쉽게 표현할 수 있는 것이 아니다. 따라서 이를 위해서는 정교한 언어로 구축한 다음, 각 데이터 행을 다운로드하여 데이터를 가져와야 한다. 그다음 감정 분석 등급을 데이터베이스로 다시 푸시해야 한다. 즉, 사용하는 데이터베이스의 모든 행에 대한 왕복을 의미한다. 수백만 개의 행이 있으면 많은 네트워크 트래픽이 생성된다. 하지만 싱글스토어에서 Wasm을 통합한 방식을 사용하면 이미 데이터베이스에 있기 때문에 오버헤드가 발생하지 않는다. 
 

Wasm은 항상 개선되고 있다 : 표준을 만들면 더 강력해진다

Wasm은 이미 매우 유능하다. 그리고 새로운 기술과 표준은 Wasm이 더 많은 일을 할 수 있도록 할 것이다. 예를 들면 W3C 웹어셈블리 커뮤니티 그룹(W3C WebAssembly Community Group)은 바이트코드 얼라이언스(Bytecode Alliance) 등의 지원을 받아 현재 WASI(Web Assembly System Interface) 표준화 작업을 진행하고 있다. 

WASI는 서버에서 Wasm 모듈이 실행될 때 쓸 수 있는 표준 API 및 서비스 세트를 제공할 예정이다. 가비지 수집, 네트워크 I/O 및 스레딩 등의 많은 표준 제안이 아직 진행 중이기 때문에 다른 프로그래밍 언어로 수행하는 작업을 항상 Wasm에 매핑할 수는 없다. 하지만 궁극적으로 WASI는 이를 달성하는 데 도움이 될 완전한 표준을 제공하는 것을 목표로 한다. WASI의 목표는 여러 면에서 POSIX와 유사하다. 

현재의 Wasm은 다른 Wasm 모듈과 연결하거나 통신하는 기능도 다루지 않는다. 하지만 Wasm 커뮤니티는 컴퓨터 업계 구성원의 지원을 받아 구성요소 모델을 만드는 작업을 하고 있다. 이는 구성요소가 시작되고, 서로 통신하는 방식을 정의하여 Wasm 모듈을 중심으로 동적 연결 인프라를 만드는 것을 목표로 한다(기존 OS의 프로세스 모델과 유사하다). 

또 WIT(Web Assembly Interface Types)라고 하는 새로운 표준 IDL 구문을 활용하면 사람들이 언어에 구애받지 않는 방식으로 Wasm 인터페이스를 설명할 수 있다. 결과적으로 바인딩 생성기는 IDL에 있는 것을 가져와 Wasm 호스트와 게스트가 공통적인 방식으로 데이터를 주고받는 코드를 컴파일할 수 있게 된다. 

Wasm은 미래다 : 더 빠르고, 더 안전하며, 더 효율적인 통합 방법을 제공한다 
Wasm이 가벼운 것은 사실이지만 빠른 시일 안에 컨테이너를 대체할 수단은 아니다. 하지만 앞으로 많은 소프트웨어의 일부가 되리라 예상된다. Wasm은 서버에 있든 엣지에 있든 간에, 데이터에 훨씬 더 가까운 곳에서 실행되는 사용자 정의 논리를 만들 수 있으며, 안전하고 효율적이며 유연하게 수행할 수 있기 때문이다. 

이제 싱글스토어를 사용하면 기존 프로그램을 Wasm에 컴파일하여 데이터베이스에 밀어 넣고 실행할 수 있다. 즉, 코드를 다시 작성하여 데이터가 없는 곳에 둘 필요가 없다. Wasm 기술을 사용하면 양쪽의 장점을 모두 누릴 수 있다는 의미다.
ciokr@idg.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.