iStock/Prostock-Studio |
<이미지를 클릭하시면 크게 보실 수 있습니다> |
웹어셈블리 또는 와즘은 실행 가능한 프로그램을 위한 이식 가능한 바이너리 코드 형식과 해당 텍스트 형식을 정의하는 개방형 표준이다. W3C(월드와이드웹 컨소시엄)에서 만들고 유지 관리하는 와즘은 웹 페이지에서 고성능 애플리케이션을 쉽게 만들 수 있도록 설계되었다. 여러 언어를 지원하고, 작고 빠르며, 모든 주요 브라우저에서 지원되며, 일반적으로 안전하고 안전한다.
하지만 다른 표준과 마찬가지로 와즘에도 문제가 될 여지가 몇 가지 있다. 디지털 마케팅 기술 및 서비스 업체인 너디지털닷컴(Nerdigital.com)의 설립자 겸 CEO 맥스 샥은 “웹에서 네이티브에 가까운 성능 코드를 실행할 수 있는 강력한 기능을 제공하지만, 특히 도입 및 통합 단계에서 기업에 고유한 문제를 야기하기도 한다”라고 말했다.
와즘을 도입하는 기업은 사용 시 발생할 수 있는 단점과 문제 가능성, 그리고 극복 방법을 이해하는 것이 중요하다. 개발자와 기술업계 리더에게 프로젝트에서 웹어셈블리를 사용하면서 무엇을 배웠는지 물어보았다.
호환성 문제 주의
웹어셈블리 홈페이지는 와즘이 “버전이 없고, 기능 테스트를 거쳤으며, 이전 버전과 호환되는 웹의 특성을 유지하도록 설계되었다”라고 명시하고 있다. 웹어셈블리 모듈은 자바스크립트 컨텍스트에서 호출하고 표준 웹 API를 통해 브라우저 기능에 액세스할 수 있다. 하지만 그렇다고 해서 와즘에 호환성 문제가 없다는 뜻은 아니다. 웹사이트 개선 서비스 업체 리버베이스 클라우드의 수석 애널리스트 게리 길키슨은 “웹어셈블리는 기존 기술 스택과의 호환성 보장이라는 측면에서 독특한 과제를 안고 있다”라고 말했다.
길키슨은 “소프트웨어 도입 경험을 통해 신중한 계획과 모듈식 설계를 통해 이 문제를 완화할 수 있다는 것을 알게 되었다”라고 말했다. 와즘과 함께 일하면서 강력한 API 지원을 통해 유연한 시스템을 구축하는 데 중점을 두었는데, 그러면서 더 원활한 통합이 가능했고 와즘과 같은 기술과의 잠재적인 마찰을 줄일 수 있었다는 것이다.
샥은 와즘이 성능 집약적인 작업에는 탁월하지만, 자바스크립트 및 DOM(문서 객체 모델)과 원활하게 통합하는 데는 어려움이 있었다고 말했다. 또한 “와즘은 DOM에 직접 액세스할 수 없기 때문에 자바스크립트와 와즘 간에 데이터를 연결해야 했고, 이로 인해 상당한 오버헤드가 발생하고 복잡성이 높아질 수 있었다”라고 평했다.
너디지털은 이 문제를 해결하기 위해 애플리케이션의 어느 부분에 와즘의 고성능이 필요한지 결정하고, 필수적이지 않은 부분은 자바스크립트에 맡기는 전략적 접근 방식을 채택했다. 샥은 “이미지 처리 및 데이터 조작과 같은 작업은 와즘에 맡기고 UI 렌더링과 이벤트 처리는 자바스크립트에 맡김으로써 균형 잡힌 통합을 이룰 수 있었다”라고 말했다.
브라우저 간 성능을 당연시하지 않아야
와즘의 또 다른 잠재적 걸림돌은 브라우저 간 성능 최적화에 실패하는 것이다.
길키슨은 “와즘을 사용하는 동안 효율적인 성능을 보장하는 것은 까다로울 수 있다”라고 말했다. 제품 관리 경험을 통해 코드 최적화와 철저한 성능 테스트 수행의 중요성을 강조한다는 길키슨은 원활한 사용자 경험을 제공하기 위해 성능 요구 사항과 리소스 부하의 균형을 맞추는 것이 핵심이라고 요약했다.
부동산 관리자, 소유주, 투자자를 위한 서비스 업체 서머(Summer)의 CEO이자 설립자 폴 크로미다스는 “웹어셈블리는 네이티브에 가까운 성능을 제공하지만 다양한 브라우저 환경에서 일관된 속도를 달성하는 것은 여전히 어려운 과제”라고 지적했다.
크로미다스에 따르면 특정 최적화를 더 잘 처리하는 일부 브라우저가 있어 균일한 사용자 환경을 만드는 것이 복잡하다. 이 문제를 해결하려면 광범위한 브라우저 간 테스트와 함께 최적의 성능을 달성하지 못할 경우 기능을 유지하는 폴백 메커니즘이 필요하다
그래서 많은 개발팀이 각 브라우저의 고유한 기능을 수용하기 위해 모듈식 와즘 구성 요소를 구축해 불일치 발생 시 대규모 재작성의 필요성을 최소화하고 있다.
보안 위험과 장단점
와즘에는 개발팀이 예상하지 못한 사이버보안 위험도 존재하며, 개발팀이 놀랄 수 있다. 크로미다스는 “웹어셈블리의 강력한 저수준 코드 실행 기능은 제대로 처리하지 않으면 보안 위험이 될 수 있다”라고 말했다.
크로미다스에 따르면 와즘의 유연성은 장점이지만, 기존 자바스크립트에서 볼 수 있는 엄격한 보안 프로토콜이 부족해 신뢰할 수 없는 코드를 실행할 때 취약할 수 있다.“한 가지 효과적인 해결책은 시스템의 민감한 부분에 대한 액세스를 제한하는 샌드박스 모듈을 사용하는 것이다. 이 접근 방식은 와즘 모듈을 격리하는 계층화된 보안 프레임워크를 생성해 고성능과 필요한 보안 조치 간의 균형을 맞출 수 있다.
마케팅 솔루션 업체 헬름 디지털(Helm Digital) 설립자 스티브 포그슨은 웹어셈블리의 보안 문제를 “무시할 수 없다”라고 말했다. 브라우저에서 직접 코드를 실행하기 때문에 잠재적인 취약점이 발생할 수 있다는 지적이다. 포그슨은 헬름 디지털이 안전한 SSL 준수 이커머스 사이트를 유지 관리하는 관행과 마찬가지로 보안 코딩 관행과 지속적인 모니터링을 우선시함으로써 문제를 해결하고 있다고 전했다.
샥은 보안이 와즘의 장점인 동시에 도전 과제이기도 하다며 “샌드박스가 적용된 환경은 악성 코드 실행으로부터 애플리케이션을 보호하는 데 환상적이지만, 필수 API에 대한 액세스를 제한하기도 한다”라고 말했다. 예를 들어, 로컬 스토리지나 네트워크 요청을 자바스크립트를 통해 라우팅하지 않으면 와즘이 API와 쉽게 상호 작용할 수 없다는 한계가 있다는 것이다.
너디지털은 자바스크립트를 외부 요청을 위한 ‘통로’로 사용해 이러한 한계를 해결하고, 와즘이 자바스크립트를 통해 필요한 API와 상호 작용할 수 있는 제어 인터페이스를 만들었다. 샥은 “이러한 설계를 통해 와즘에 노출되는 외부 데이터를 더 잘 제어할 수 있어 보안을 강화하는 동시에 기능을 구현할 수 있다. 또한 와즘 모듈에 들어오고 나가는 모든 데이터를 살균하고 검증하는 엄격한 관행을 준수해 보안을 최우선 순위로 유지했다”라고 말했다.
복잡하고 제대로 지원되지 않는 디버깅
디버깅의 복잡성과 제한된 툴링 지원은 와즘의 또 다른 장애물이다. 크로미다스는 “웹어셈블리의 디버깅은 검사 및 추적을 위한 성숙한 도구가 부족하기 때문에 기존 자바스크립트보다 더 복잡한 경우가 많다. 이로 인해 성능 및 로직 문제를 진단하기가 어렵고, 특히 와즘의 고유한 아키텍처에 익숙하지 않은 팀에게는 더욱 그럴 것”이라고 말했다.
그래서 많은 개발자가 와즘 코드 내에서 상세한 로깅을 구현하고 개발 환경에서 폴리필을 사용해 디버깅을 지원하고 있다. 크로미다스에 따르면 이중 접근 방식은 문제를 효과적으로 식별하고 와즘의 성능 이점을 희생하지 않으면서도 귀중한 인사이트를 포착하는 데 도움이 된다.
길키슨은 와즘의 디버깅 및 도구 환경이 “다른 언어에 비해 덜 성숙하다고 느끼는 경우가 많다”라고 말했다. 또한 “SaaS 프로젝트를 컨설팅하면서 커뮤니티 중심의 리소스와 도구를 통합하는 것이 얼마나 가치 있는 일인지 알게 되었다. 개발자 포럼을 활용하고 집단적 인사이트를 수집하는 것도 도구의 격차를 극복하는 데 기여했다”라고 전했다.
샥은 와즘에서 직면한 가장 큰 문제로 자바스크립트에 비해 성숙한 디버깅 도구가 부족하다는 점을 들었다. 와즘의 로우레벨 특성상 스택 기반 가상 머신으로 작업하기 때문에 오류 메시지가 난해하고 해석하기 어렵다는 것이다.
또한 자바스크립트와 와즘은 바이너리 형식으로 통신하기 때문에 언어 간 컴파일에서 문제가 발생하면 디버깅이 훨씬 더 어려워지는 문제도 있다. 샥은 “문제를 해결하기 위해 소스맵을 활용해 소스 코드와 와즘 바이너리 사이의 간극을 메웠다. 또한 애플리케이션을 더 작은 모듈식 구성 요소로 세분화해 각 와즘 모듈을 독립적으로 분리해 디버깅할 수 있었기 때문에 시간과 골칫거리를 줄일 수 있었다”라고 설명했다.
생각보다 작은 서드파티 생태계
와즘이 처음 소개되었을 때 생태계는 빠르게 확장되었다. 시간이 지남에 따라 와즘과 호환되는 프로그래밍 언어에 대한 지원도 증가해 현재 와즘은 많은 언어를 지원한다. 하지만 샥은 여전히 와즘을 기본적으로 지원하는 라이브러리와 프레임워크의 가용성은 제한적이라고 말했다.
샥은 “상황이 개선되고 있기는 하지만 자바스크립트에 비해 여전히 옵션이 적기 때문에 사용자 지정 코드를 작성하거나 생태계가 성숙할 때까지 기다려야 하는 경우가 많았다. 이러한 격차를 해소하기 위해 내부적으로 재사용 가능한 와즘 컴포넌트를 구축하고 문서화하기 시작했고, 이는 개발을 간소화하는 데 도움이 되었다”라고 설명했다.
와즘의 오픈소스 커뮤니티는 성장하고 있다. 샥은 “포럼과 리포지토리에 기여함으로써 리소스를 향상시켰을 뿐만 아니라 같은 분야의 다른 사람들의 인사이트를 활용할 수 있었다. 와즘 커뮤니티에서 활발히 활동하면서 새로운 도구, 라이브러리, 모범 사례에 대한 최신 정보를 얻을 수 있었고, 와즘 기반 프로젝트의 개발을 가속화하는 데 도움이 되었다”라고 전했다.
웹 성능 향상을 위한 웹어셈블리의 잠재력은 부인할 수 없는 사실이지만, 도전 과제가 없는 것은 아니다. 샥은 “디버깅에 체계적으로 접근하고, 코드를 모듈화하고, 자바스크립트와 전략적으로 통합하고, 보안에 대한 경계를 늦추지 않음으로써 와즘의 문제점을 해결할 수 있었다”며 기술과 생태계가 성숙해짐에 따라 웹어셈블리가 웹 애플리케이션을 위한 더욱 강력한 도구가 될 것으로 기대했다. 와즘은 한계를 극복하면서 기능을 활용하기 위한 전략을 지속적으로 개선하고 있다.
dl-itworldkorea@foundryco.com
Bob Violino editor@itworld.co.kr
저작권자 한국IDG & ITWorld, 무단 전재 및 재배포 금지
이 기사의 카테고리는 언론사의 분류를 따릅니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.