2020.03.18

이스티오·엔보이, '웹어셈블리' 도입한다

Serdar Yegulalp | InfoWorld
마이크로서비스 네트워크를 관리하는 쿠버네티스 서비스 메시 '이스티오(Istio)' 1.5버전에 새로운 기술이 추가될 것으로 보인다. 다양한 플랫폼에서 준 네이티브 실행 속도를 제공하는 바이너리 코드 포맷 '웹어셈블리'다. 이는 웹어셈블리가 단순히 고성능 웹 앱을 만드는 방법뿐만 아니라 프로그래밍 언어의 하나로 점차 자리를 잡고 있다는 또 다른 증거다.

이스티오 프로젝트는 확장 기능과 엔보이(Envoy) 프로젝트 관련된 애드온을 처리하는 데 웹어셈블리(짧게 Wasm이라고도 쓴다)를 이용한다는 구상이다. 엔보이는 리프트(Lyft)의 엔지니어가 개발한 것으로, 네트워크 프록시 서비스를 제공한다. 덕분에 이스티오는 더 높은 수준의 추상화에 온전히 집중할 수 있었다. 두 프로젝트는 모두 확장할 수 있는데 단, 서로 다른 메커니즘을 사용했다. 이스티오는 믹서(Mixer)라고 불리는 모델을 쓰고, 엔보이는 자체 확장 시스템을 갖고 있다.

그러나 이스티오 프로젝트팀의 공식 블로그에 따르면, 이처럼 별개 메커니즘을 사용하는 방식은 여러 문제를 일으킨다. 이스티오는 제한적이고 비효율적으로 됐고 엔보이는 더 난해해졌다. 반면 웹어셈블리에서 확장기능을 만들면 두 가지 개발과 배포가 모두 더 간편해진다. 웹어셈블리의 실행 환경은 기본적으로 샌드박스 형태이므로 확장기능 코드의 버그로 인한 충돌도 줄일 수 있다.

이스티오팀이 언급한 또 다른 장점은 많은 프로그래밍 언어를 웹어셈블리로 컴파일할 수 있다는 것이다. 이러한 언어에는 자바스크립트나 타입스크립트 같은 웹 언어뿐만 아니라 C++나 러스트 같은 머신 네이티브 언어도 포함된다. 이렇게 되면 이스티오 개발자는 확장기능을 개발할 때 더 다양한 프로그래밍 언어를 사용할 수 있다.

엔보이와 이스티오에 웹어셈블리 지원을 추가하는 계획은 먼저 두 프로젝트 모두 내부적으로 이를 지원하는 것으로 시작한다. 이후 이스티오의 다양한 확장기능을 엔보이로 이전하게 된다. 그리고 이들 확장기능을 웹어셈블리로 컴파일하게 된다. 이런 컴파일 작업은 처음에는 선택적으로 진행되지만, 장기적으로는 기존 문제를 해결하면서 기본 작업으로 자리 잡을 예정이다.

최종적으로 이스티오팀은 엔보이와 이스티오 확장기능을 위한 코드 저장소 '웹어셈블리 허브(WebAssembly Hub)'를 통해 재사용할 수 있는 코드 예제를 만들 계획이다. 개발자는 웹어셈블리로 컴파일한 언어의 코드를 업로드할 수 있고, 허브에서 호스트하는 웹어셈블리 코드를 갖게 된다. 현재 허브는 일부 데모와 예제 프로젝트만 올라와 있지만 관심 있다면 미리 경험해 볼 수 있다. editor@itworld.co.kr


2020.03.18

이스티오·엔보이, '웹어셈블리' 도입한다

Serdar Yegulalp | InfoWorld
마이크로서비스 네트워크를 관리하는 쿠버네티스 서비스 메시 '이스티오(Istio)' 1.5버전에 새로운 기술이 추가될 것으로 보인다. 다양한 플랫폼에서 준 네이티브 실행 속도를 제공하는 바이너리 코드 포맷 '웹어셈블리'다. 이는 웹어셈블리가 단순히 고성능 웹 앱을 만드는 방법뿐만 아니라 프로그래밍 언어의 하나로 점차 자리를 잡고 있다는 또 다른 증거다.

이스티오 프로젝트는 확장 기능과 엔보이(Envoy) 프로젝트 관련된 애드온을 처리하는 데 웹어셈블리(짧게 Wasm이라고도 쓴다)를 이용한다는 구상이다. 엔보이는 리프트(Lyft)의 엔지니어가 개발한 것으로, 네트워크 프록시 서비스를 제공한다. 덕분에 이스티오는 더 높은 수준의 추상화에 온전히 집중할 수 있었다. 두 프로젝트는 모두 확장할 수 있는데 단, 서로 다른 메커니즘을 사용했다. 이스티오는 믹서(Mixer)라고 불리는 모델을 쓰고, 엔보이는 자체 확장 시스템을 갖고 있다.

그러나 이스티오 프로젝트팀의 공식 블로그에 따르면, 이처럼 별개 메커니즘을 사용하는 방식은 여러 문제를 일으킨다. 이스티오는 제한적이고 비효율적으로 됐고 엔보이는 더 난해해졌다. 반면 웹어셈블리에서 확장기능을 만들면 두 가지 개발과 배포가 모두 더 간편해진다. 웹어셈블리의 실행 환경은 기본적으로 샌드박스 형태이므로 확장기능 코드의 버그로 인한 충돌도 줄일 수 있다.

이스티오팀이 언급한 또 다른 장점은 많은 프로그래밍 언어를 웹어셈블리로 컴파일할 수 있다는 것이다. 이러한 언어에는 자바스크립트나 타입스크립트 같은 웹 언어뿐만 아니라 C++나 러스트 같은 머신 네이티브 언어도 포함된다. 이렇게 되면 이스티오 개발자는 확장기능을 개발할 때 더 다양한 프로그래밍 언어를 사용할 수 있다.

엔보이와 이스티오에 웹어셈블리 지원을 추가하는 계획은 먼저 두 프로젝트 모두 내부적으로 이를 지원하는 것으로 시작한다. 이후 이스티오의 다양한 확장기능을 엔보이로 이전하게 된다. 그리고 이들 확장기능을 웹어셈블리로 컴파일하게 된다. 이런 컴파일 작업은 처음에는 선택적으로 진행되지만, 장기적으로는 기존 문제를 해결하면서 기본 작업으로 자리 잡을 예정이다.

최종적으로 이스티오팀은 엔보이와 이스티오 확장기능을 위한 코드 저장소 '웹어셈블리 허브(WebAssembly Hub)'를 통해 재사용할 수 있는 코드 예제를 만들 계획이다. 개발자는 웹어셈블리로 컴파일한 언어의 코드를 업로드할 수 있고, 허브에서 호스트하는 웹어셈블리 코드를 갖게 된다. 현재 허브는 일부 데모와 예제 프로젝트만 올라와 있지만 관심 있다면 미리 경험해 볼 수 있다. editor@itworld.co.kr


X