천천히 꾸준히

Deno - 신입 개발자가 생각하는 Deno의 가능성 본문

공부/Deno

Deno - 신입 개발자가 생각하는 Deno의 가능성

마라토너 2020. 6. 16. 16:15
반응형

안녕하세요. 오늘은 🦕Deno에 대해서 간단하게 포스팅을 하려고 합니다. 저는 저의 기억력을 믿지 못하거든요. 하하하 그래서 기억 말고 기록을 남기려고 합니다. Deno가 뭐지?라고 생각을 하시는 분들도 있을 거고, 이미 많은 걸 알고 있는 분들도 있을 겁니다. 제가 신입 개발자니깐 신입처럼 기록을 남겨보겠습니다. 

자 시작하겠습니다.☺️


🦕Deno가 뭐야?

DenoNode.js의 창립자인 " 라이언 달 "이라는 분이 만들었고, 간단하게 말하면 v8엔진으로 만들어진 Javascript 및 Typescript 런타임입니다.

v8 엔진은 웹 브라우저를 만드는 데 기반을 제공하는 자바스크립트 엔진입니다. 여러 가지 브라우저에도 탑재가 되어있는데 크롬의 개발자 도구에서 Javascript를 테스트해보고 입력할 수 있는 이유도 v8엔진을 탑재했기 때문이지요.

그리고 rust라는 언어로 빌드를 하는 것도 한 가지 특성입니다.


Deno vs Node

Deno와 Nodejs의 차이점을 알아야 Node를 사용할 것인지 Deno를 사용할 것인지를 선택할 수 있겠지요?

  1. 보안
    파일 입출력이나 네트워크 같은 애플리케이션 외부에 액세스할 때는 별 다른 제한을 두지 않았습니다. Nodejs는 처음에 나왔을 때는 엄청 불편한 런타임이었습니다. 그 흔적이라고 할 수 있겠네요!? 하지만 Deno는 라이브러리 별로 특정 디렉터리에 대한 읽기/쓰기, 네트워크 접근 등 권한을 설정할 수 있도록 만들어졌습니다.

  2. Pomise
    Node는 모던 자바스크립트에서 지원하는 비동기 API인 Promise를 사용하지 않고 옛날 방식인 콜백 패턴으로 작동합니다. 그 유명한 콜백 지옥이 이 때문에 생길 수 있는 거였죠. 그런 반면 Deno는 기본적으로 내장된 비동기 로직들이 모두 Promise로 만들어져 있습니다. 아직은 직접 사용하기 전 차이점만 정리하고 있기에 잘 은 모르겠지만 기본적으로 내장된 비동기에서 기본적으로 재장 되어 있다는 게 큰 장점이 될 거 같습니다. 앞으로 더 진행을 하고 백엔드를 개발을 해보면서 공부하고 정리하면 비동기/동기, Promise에 대해서 Deno는 어떤 식으로 작동하는지를 포스팅해보겠습니다.

  3. 빌드
    Nodejs를 처음 만들 때는, 크롬 브라우저가 GYP라는 메타 빌드 시스템을 사용하다가 GN으로 업그레이드를 했었습니다. 그때 Nodejs는 그 사이에 발전한 Nodejs 생태계에 대한 호환성 등의 이유 때문에 GN으로 변경하지 못했다고 합니다. 하지만 Deno는 GN 메타 빌드 시스템으로 기존 GYP보다 20배 정도 빠르게 빌드가 된다고 합니다. 한마디로 Node와 Deno의 속도 차이가 난다고 합니다. ( 만약 제가 이해한 게 틀리다면 지적해 주세요. ) 여기서 나오는 기대는 빌드의 속도에 대해서입니다.
    이때 메타 빌드 시스템이라는 것을 여러 플랫폼( Window, Mac Linux )에서 소스 코드를 빌드하기 위해 사용되는 빌드 시스템이라고 합니다.

  4. 모듈
    Nodejs가 있는 곳에는 항상 몇 가지 파일 및 폴더가 따라다닙니다. 다들 잘 아시는 package.json파일과 node_modeuls폴더입니다. 이 중 node_modules 폴더는 파일의 양이 엄청나고 용량도 많은 편이어서 상당히 무거운 시스템이었습니다.
    저는 가끔 개인 프로젝트를 진행하면서 그냥 검색하다 찾은 무료 호스팅에서 빌드를 진행하려고 특정 명령어를 입력했더니 modeules 폴더를 만드는 과정에서 자주 퍼지던 기억이 있습니다. (이미 많은 메모리를 사용하고 있었기도 했습니다.) 이러한 기억이 있었지만 나름 버전 관리 하기도 편했지면 여전히 무거운 건 어쩔 수 없었습니다. 하지만 Deno는 외부 라이브러리의 리포지토리 URL을 임포트 하는 방식으로 사용하기 때문에 훨씬 프로젝트가 가벼워질 거라는 기대를 하고 있습니다.

  5. 사용언어
    많이들 알고 있는 것처럼 NodejsC++로 개발되어 있습니다. 그리고 오직 자바스크립트만 실행할 수 있었습니다. 요즘 많이 사용되고 있는 언어 중 Typescript가 있습니다. Typescript를 사용하기 위해서는 Babel과 같은 트랜스 파일러에 의해 컴파일? 후 실행되기 때문에 별도로 무엇인가를 설치를 해줬어야 했습니다. 그래서 Javascript프로젝트에서 많이 보이던 파일 중 하나인. babelrc가 많이 사용되는 이유 중 하나입니다. (Typescript는 Javascript의 확장형 버전이라고 생각하지면 됩니다.) 그런데 Deno는 어떨까요? DenoRust라는 언어로 개발이 되어 있고, 특별하게 뭔가를 설정하지 않아도 Typescript로 개발 및 컴파일을 진행할 수 있다는 점도 큰 특징이라고 생각합니다.

여기까지 Nodejs와의 차이점을 알아보았습니다. 이제는 간단하게 Deno의 설치와, 결론으로 마무리하겠습니다.


Deno install

Deno설치는 상당히 간편한 편에 속합니다. Deno 홈페이지에 들어가면 여러 가지 설치 방법이 나와있습니다. 여기서 원하시는 방식으로 설치를 진행해주면 됩니다. 저는 Homebrew로 진행을 하겠습니다.

$ brew install deno

위 커맨드 라인을 사용하여 설치하고 나서 다음 명령어를 입력하여 설치가 정상적으로 됐는지를 확인하면 끝입니다.

$ deno

정상적으로 Deno의 대화형 명령어인 인터프리터(InterPreter)가 정상적으로 실행이 됐다면 설치는 끝입니다.

더 자세한 Deno에 대해서는 앞으로 차츰차츰 글을 써 나갈 예정입니다.


결론

이 글 제목처럼 신입 개발자인 제가 봤을 때의 Deno의 향후 가능성에 대해서 말해보겠습니다.

지금까지 알아본 NodejsDeno의 차이점만 봐서는 지금 현재도 많이 사용되고 있는 Nodejs를 100% 까지는 아니어도 어느 정도 상당한 부분을 대체할 수 있지 않을까?라고 생각을 해봅니다. 앞으로는 모르겠지만 Nodejs의 상당한 단점 부분을 보안하기 위해 태워 난 것이 Deno 같은 느낌이 들었습니다. 이 모든 것은 신입 개발자의 눈높이로써 그리고 아직 많이 미숙한 저의 판단이겠지만 앞으로 미래에 상당한 영향력을 끼칠 수 있는 런타임이 아닐까 라는 생각이 들었습니다. 그렇기 때문에 저는 앞으로 Deno를 꾸준히 공부하며 포스팅에 힘을 쓸 것이고 Deno에 관심이 많은 분들은 정보를 교환, 지적 등 커뮤니케이션을 하면서 지냈으면 좋겠습니다. 감사합니다.

반응형
Comments