19P by xguru 2022-05-10 | favorite | 댓글 2개
  • Docker는 리눅스 컨테이너를 대중화 : OS 수준 가상화로 소프트웨어 배포를 쉽게 해줌
  • Cloudflare Workers 나 Deno Deploy 는 JS Container 개념을 구현한 것(서로 다른 환경에서)
  • JS 컨테이너는 향후 몇 년간 어떻게 진행될까 ?

Universal Scripting Language

  • 점점 더 많은 것들이 웹을 기반으로 연동중 : The web is eating the world
  • 웹은 인류 정보의 기본 매체이고, JS는 웹 인프라에 깊게 연동되어 있어서 다른 언어들과 다름
  • 스크립팅 언어는 많은 서버쪽 문제들을 해결해주며, 비즈니스 로직을 더 빠르고 저렴하게 작성 가능
  • 스크립트 언어는 유용하고, 서로 많이들 비슷하며, JavaScript가 가장 광범위하게 이용중이고 미래에도 사용 가능
  • 즉 JavaScript는 유니버설 스크립팅 언어라고 생각할 수 있음

Shell : Executables :: JavaScript : WebAssembly

  • 서버를 위한 새로운 상위레벨 컨테이너인 JavaScript Sandbox가 등장

  • Linux 컨테이너가 타겟하는 문제를 해결하기 위한 것은 아님

  • 단순화의 결과로 출현한 것
    → 웹 서비스 비즈니스 로직의 Boilerplate를 최소화
    → 브라우저와 개념을 공유하며, 프로그래머가 알아야 할 개념들을 최소화

  • 모든 웹 엔지니어들은 JavaScript 브라우저 API를 이미 알고 있음
    → JS 컨테이너 추상화는 같은 브라우저 API 기반으로 만들어졌기 때문에 알아야 할 내용이 줄어듦
    → JS의 Universality가 복잡도를 줄임

  • Shell 은 Unix 프로그램을 실행하기 위한 인터프리팅 스크립트 언어
    → 조건식, 루프, 변수가 있지만 제한적이어서 프로그래밍 하기는 어려움. 실제 기능은 실행파일들이 수행

  • 이 새로운 서버 추상화 레이어에서는 JS가 Shell의 위치를 차지함
    → Bash/Zsh 보다는 스크립팅에 적합하지만, Shell 이 실행파일을 호출하는 것처럼 JS Sandbox는 WASM을 호출함
    → 이미지 리사이징 처럼 복잡한 작업이 필요하다면 JS에서 작성하는 것보다 WASM을 이용하는 것이 좋음
    → bash에서 이미지 리사이징을 하지 않고 Imagemagick을 호출하듯이

The North Star

  • 스크립트의 미래는 브라우저 JavaScript임
  • Node.js 의 가장 근본적인 실수는 새로운 API가 표준화되면서 브라우저에서 벗어나 너무 많은 것을 발명해 버렸다는 것
    → 2010년엔 우리는 ES 모듈도 없었지만, 표준화 되고나서 Node로 가져와야 했음
    → Promise, Async/Await, Fetch, Streams 등 많은 것이 그랬음
    → 비표준인 CommonJS require, package.json, node_modules, npm, 글로벌 process 객체가 궁극적으로는 표준화 되어서 브라우저에 추가되거나, 웹기반의 다른것으로 교체됨
  • 고수준의 컨테이너는 아직 표준화되지 않았고, 이 모든 것이 어떻게 전개될지 아직 잘 모름
  • 현재 Cloudflare Workers 와 Deno Deploy는 FetchEvent API를 사용하지만, 더 나은 인터페이스를 찾을 수도 있음

결론

  • JavaScript 는 범용 스크립팅 언어임
  • JavaScript 의 보편성으로 인해 서버를 단순화 하는 새로운 컨테이너 같은 추상화가 등장하고 있음
  • Linux 컨테이너가 사라진다는 얘기는 아님. 그 수준의 추상화는 계속 유용할 것
    → 사람들이 작성하는 많은 "비즈니스 로직"에 대해서는 다소 로우 레벨의 추상화 라는 것
    → 웹사이트를 구축할 때 systemd 설정 같은 것은 boilerplate 임
  • 아마도 많은 "웹 서비스"들은 Linux 컨테이너가 아닌 JavaScript 컨테이너 관점에서 생각하면 단순화 할 수 있음
  • 우린 Deno에서 이 아이디어를 탐구 하는 중임
    → 서버 추상화를 근본적으로 단순화하려고 노력중

제 나름대로 요약해보면

  1. 요즘 WASM을 이용한 샌드박스 기술들이 많이 나오고 있다
  2. JavaScript는 WASM을 구동하는 스크립트 처럼 사용한다.
  3. WASM 샌드박스는 OS부터 컨테이너및 프레임워크까지 모든게 올라가는게 가능하다
  4. 그러면 이런 식의 JS Container로 비즈니스 로직만 신경쓰는 새로운 고수준 컨테이너 표준이 나올 수도 있다.
    라고 정리되지 않을까 합니다.

이해를 돕기 위한 다른 링크들