작성일 : 21-04-14 12:27
DENO 디노 첫걸음
 글쓴이 : happy
조회 : 34  

DENO

디노 첫걸음

페르난도 돌리오 지음, 우정은 옮김

저자 페르난도 돌리오는 Node.js REST API를 설계하는 등 다양한 프로그래밍 언어를 다룬 경험을 갖고 있는 개발 전문가로서 디노라는 런타임을 소개하고있다.

디노의 특이점은 노드 개발자인 라이언노드를 포기하고 디노를 개발했다는 점이다.

디노 탄생 배경을 살펴보면, 라이언노드가 적절히 해결하지 못하는 다양한 문제(보안이 취약한 플랫폼, 모듈 시스템의 문제, 다른 사소한 문제)가 있음을 알게 되었고 이는 영구적인 기술 부채로 남았다고 한다.

 

보안이 취약한 플랫폼

라이언은 노드가 안전하지 못한 플랫폼이며 이를 잘 이해하지 못한 개발자가 불필요한 실행권한을 부여하거나 안전하게 보호되지 않는 시스템 서비스에 접근하는 코드를 구현하면서 보안 구멍이 만들어진다는 것을 깨달았다.

즉 노드로 특정 URL TCP로 요청을 보낼 수 있는데 이를 완벽하게 제어하지 못한다면 요청을 받는 쪽에 문제가 생긴다. 호스트 컴퓨터의 네트워크 서비스 사용을 막는 장치가 아무것도 없기 때문이다. 적어도 노드에는 그런 보호 장치가 없다.

2018년에 아주 유명한 노드 모듈 저장소가 소셜 해킹(모듈 개발자가 해커에게 속아 코드 접근 권한을 줌)을 당했는데 해커는 누군가가 가진 비트코인 지갑의 코인을 훔치는 코드를 숨겨놓은 상태였다. 노드에는 기본적으로 보안이 없으므로 이 모듈은 사용자 컴퓨터의 특정 경로에 접근할 수 있었다(모듈이 의도한 기능이 아님에도). 만약 모듈이 어떤 경로를 읽으려 했을 때 사용자에게 이를 허용할 것인지 묻는 알림창이 나타난다면 이는 큰 위협이 되지 못한다.

 

모듈 시스템의 문제

모듈 시스템에도 문제가 있었다. 라이언은 비동기 I/O, 이벤트 방출기 등의 기능은 공을 들여 잘 만든 데 비해 내부 설계는 즉흥적으로 이루어졌다고 생각했다.

노드 생태계에서 npm을 표준 패키지 관리자로 사용한 점을 후회하며 npm의 중앙화되고 비공개적인 저장소 관리방식을 좋아하지 않았다. 라이언은 브라우저가 의존성을 임포트하는 방식이 더 깔끔하고 쉽게 유지보수할 수 있다고 생각했다.

 

다른 사소한 문제

확장자를 지정하지 않고 로컬 모듈을 요청하는 기능처럼 노드에는 다른 사소한 문제도 있었다.

 

결국 라이언은 본인이 만들거나 참여했던 많은 기능을 더 제대로 만들고 싶다는 후회를 동기로 전환해 디노를 탄생시켰고 새로운 런타임의 설계를 이끌기 시작했다.

 

새로운 기술은 언제나 흥미롭지만, 사용자입장에서는 불안정한 기능, 빈약한 커뮤니티 등은 큰 걸림돌이 된다. 이러한 문제는 걱정하지 않아도 될 것 같다.

현재 디노는 버전업과 디노를 지원하는 라이브러리 수가 폭발적으로 증가하고 커뮤니티 또한 활발하게 움직이는 것을 알 수 있다.

 

이 책은 디노 입문서로 노드 개발자나, 처음 접하게 되는 누구나 쉽게 이해할 수 있도록 개발과 노드의 문제점을 해결하는 과정의 사례를 들어 설명하고 있는 특징이 있다.

 

마지막 장에서 저자가 구현한 예제를 다양한 주제로 제시하고 있다.

이 책은 150페이지로 편집되고, 관련 참고 사이트를 각주로 달아놓아 혼자 따라가며 살펴보게 배려해 놓았다. 짬을 내어 읽어보고 새로운 런타임 기법을 익혀보시길!!!

특히 백앤드 개발자들의 골치거리인 보안 문제의 해결을 위해, 자바스크립트의 새로운 보안 런타임 디노의 모든 것을 이해하고 안전한 시스템 개발 전문가로 발전 하기를!!!!

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."