노드(Node.js) 창립자 라이언 달이 노드의 단점을 보완하는 새로운 런타임 ‘디노’를 만들었다. 노드의 대안으로 떠오르는 디노의 탄생 배경부터 설치 방법, 타입스크립트 소개, 디노를 활용한 예제까지 다룬다. 노드의 npm이 가진 치명적인 보안 문제를 강화하는 방법과 빌드 프로세스를 수동으로 설정하지 않고도 타입스크립트로 애플리케이션을 개발하는 방법을 배운다. 패키지 관리자에 의존하지 않고 모듈을 생성하고 사용하는 방법도 알아본다. 이 책을 읽고 나면 자신만의 디노 애플리케이션을 만들고 테스트할 준비를 마칠 수 있다.
장별 요약
1장: 디노의 탄생 배경과 디노로 어떤 문제를 해결하는지 살펴봅니다.
2장: 타입스크립트가 무엇이며 디노 백엔드 개발에 타입스크립트를 활용하는 방법을 설명합니다.
3장: 디노가 보안성을 어떤 방식으로 강화했는지 알아봅니다.
4장: 중앙화된 모듈 저장소인 npm 없이 url로 모듈을 자유롭게 임포트하는 법을 설명합니다.
5장: 디노 설치 시 기본으로 제공하는 표준 라이브러리 모듈부터 흥미로운 모듈 몇 가지를 소개합니다.
6장: 디노로 만든 예제를 살펴보고 실전에 활용하는 방법을 알아봅니다.
주요 내용
디노로 애플리케이션 구축하기
타입스크립트로 백엔드 애플리케이션 구축하기
패키지 관리자 없이 모듈 처리하기
사용 권한과 기본 동작 설정하기
저자소개
저자
페르난도 돌리오
16년 차 소프트웨어 개발자. API, 웹 서비스, SPA, Node.js 응용프로그램, PHP, 루비, 자바스크립트 HTML/CSS 등 수많은 웹 프로젝트에 참여했다. 웹에 SOAP의 바람이 불었을 때나 XML이 마법사처럼 AJAX의 X 역할을 처리할 때도 현업에 종사했다. 지난 몇 년간 Node.js를 사용했고 Node.js로 REST API를 설계하는 기술부터 최적의 디자인 패턴을 구현하는 방법까지 다루는 수많은 책과 기사를 집필했다. 현재 기술 관리자로 일하며 백엔드 개발에 사용되는 자바스크립트의 유연함과 강력함을 찬양하는 열렬한 자바스크립트 전도사다.
역자
우정은
인하대학교 컴퓨터공학과를 졸업하고 LG전자, 썬 마이크로시스템즈, 오라클 등에서 모바일 제품 관련 개발을 했다. 뉴질랜드 웰링턴에 있는 Xero에서 모바일 앱을 개발하다가 현재는 DevOps 팀에서 새로운 인생을 즐기고 있다. 2010년 아이폰의 매력에 빠져들면서 번역과 개발을 취미로 삼고 꾸준히 서적을 번역한다. 옮긴 책으로는 『플러터 인 액션』, 『처음 배우는 스위프트』, 『실전 자바 소프트웨어 개발』, 『모던 자바 인 액션』, 『실무자를 위한 그래프 데이터 활용법』(이상 한빛미디어) 등이 있다.
자바스크립트의 유일하고도 독점적인 컴파일이었던 노드를 대체할 새로운 런타임이 2020년 5월 공개되었습니다. 그 이름은 디노(Deno). 개발자들 사이에서는 Deno를 두고 이를 데노로 읽을 것이냐, 디노로 읽을 것이냐 말이 많았지만 ‘TSConf 2019’에서 이를 창조한 라이언 달이 로고가 공룡인 이유를 언급하며 디노라고 읽어야 한다고 주장했으니 우리도 디노라고 부르기로 했습니다.
디노는 자바스크립트와 타입스크립트 모두를 지원하는 런타임입니다. 러스트를 주요 언어로 사용했고 Tokio를 비동기 라이브러리로 추가해 구현했습니다. 디노는 노드의 치명적인 문제였던 보안과 중앙 배포식으로 설계된 모듈 시스템을 개선해 개발자에게 더욱 편리한 개발 환경을 선사합니다. 아직 태어난 지 1년도 채 안 된 런타임이지만 커뮤니티와 라이브러리가 빠르게 발전하고 있습니다. 이 책에서 소개하는 예제를 살펴보며 새 런타임이 가져올 무서운 잠재력을 한번 확인해보고, 디노의 매력에 퐁당 빠져보길 바랍니다.
나는야 자바 스프링 개발자. 토이 프로젝트를 하는데 서비스 규모가 크지 않아 RESTful API를 자바/스프링으로 개발하는 데에 고민이 있었다. 그래서 깔짝깔짝 Node.js를 기웃거리고 있었는데 노마드 코더의 영상(https://youtu.be/6MeB-IWq1I4)을 보고 디노의 존재를 알게 됐다. 설명을 듣고나니 DENO를 쓰지 않을 이유가 없었다.
뭘 하든 책 한 권 끼고 있어야 하는 나답게 책부터 찾았고 약 150페이지 분량의 가벼운 책 발견. 챕터 1의 제목부터가 '완벽한 디노'다.
책 리뷰에 디노에 대해 구구절절 읊을 필요는 없을 듯하고, 이 책을 보면서 좋았던 점을 이야기해보자면.
얇다. DENO를 본격적으로 시작하기 전에 '밑밥 깔기'에 최적화된 책이다. 왜 디노를 사용해야 하는지, 디노는 어떤 장점을 가지고 있는지, 특히 주목해야 하는 부분은 무엇인지를 소개한다. 마지막에는 간단한 예제 프로젝트까지 실려있으니 입문서의 정석스럽다.
타입스크립트에 대한 짧은 소개가 챕터 2에 실려있다. 자바스크립트에서 타입스크립트로 넘어가려고 각 재고 있던 터라 반가웠다.
책을 다 보고 느낀 점은 Node.js, JavaScript를 사용하는 개발자가 DENO로 넘어가고자 할 때 밑밥 깔아주기 좋은 책이라는 것?
디노 1.0은 2020년 5월에 공식 발표 되었고, 창시자 라이언 달은 2021년 3월에 디노 컴퍼니 설립 발표를 했다. 그리고 지금 디노는 1.9. 열일하는 디노. 토이 프로젝트에 한 번 써볼까나.
인터넷 세상의 큰 물줄기를 바꾼 사건이 있다면, 그 첫번째는 아마도 ajax가 세상에 나온 사건이었을 겁니다.
ajax가 페이지 단위로 서버의 데이터를 가져오던 웹의 개념을 완전히 바꾸었죠.
그리고 그 다음은 v8엔진입니다. 어떤 유능한 개발자 집단이 다음 프로젝트를 고민하고 있다는 소문을 전해 들은 마이크로소프트와 구글이 그들에게 러브콜을 했는데요. 마이크로소프트는 본사 근처로 이주할 것을 요청했지만, 구글은 근처에 새로운 사무실을 차리고 만들고 싶은걸 만들어달라고 했다는군요.
v8엔진은 인터프리터언어인 자바스크립트에 컴파일 개념을 도입해서 실행속도를 크게 향상시켰습니다.
그다음 사건은 아무래도 node가 세상에 나온 사건이었습니다. 원래 자바스크립트 자체가 클라이언트 쪽이나 서버쪽 양쪽에서 사용될 수 있도록 설계되었다고는 이야기가 전해지지만, 사실 서버쪽에서 자바스크립트를 적극적으로 사용할 수 있는 획기적인 솔루션이 없었거든요.
node는 그걸 해냈습니다.
node가 세상에 나온다음 자바스크립트는 더 많은 응용분야에서 사용되는 강력한 언어로 탈바꿈했고, 극단적인 전성기를 지나고 있습니다.
하지만, node 세상에 내 놓은 "라이언 달"은 원래 노드에서 이루고 싶었던 몇가지 개념과 현재 노드가 취약한 부분에 대해서 일종의 빚을 갚고 싶었던것 아닌가 싶습니다.
그래서 node의 스펠링의 앞뒤를 바꾼 de+no라는 걸 만들기 시작했습니다.
이 책은 그 deno에 대해서 설명하고 있는데요. 이미 원숙한 플랫폼 라이브러리로 성장하고 있는 디노에서 "라이언 달"이 노드에 주고 싶었던 변화들만을 주제로 설명하고 있습니다.
타입스크립트, 보안, 패키지 처리 방식이 그것인데요. 다른 IT책들에 비해 투텁지 않은 분량이지만, "라이언 달"이 노드의 창시자로서 후회했던 것들을 디노에서 어떻게 보완해주었는지는 완벽하게 설명하고 있습니다.
본 리뷰는 한빛미디어의 도서 서평단 <나는 리뷰어다 2021> 프로그램의 일환으로, 무상으로 도서를 증정 받고 작성된 리뷰임을 고지합니다.
JS를 다루는 개발자라면 결코 모를 수 없는 Node.JS, 그리고 그것을 개발한 Ryan Dahl은 2019년에 공식 석상에서 Deno를 발표했습니다.
Deno는 Node의 앞뒤, 두 글자씩을 서로 뒤바꾼 Node의 애너그램이기도 한데요. 이처럼 Deno는 Node를 대체하기 위하여 새롭게 만들어졌습니다.
보안 문제를 비롯하여 중앙집중적인 모듈 시스템의 문제, 불필요한 여러 요소 등, 라이언 달은 2018년 컨퍼런스에서도 이러한 문제들을 언급하며, Node.JS에 관해 후회하는 10가지를 발표했다고 하는데요. 이후 발표된 Deno는 사실상 Node.JS의 여러 문제점을 해결한 2세대 런타임으로 등장하게 되었습니다.
150 페이지 남짓한 본문은, 정말 부담없는 분량입니다.
게다가, 이 얼마 안 되는 분량에 핵심 요소는 그득 그득 채워져 있습니다.
챕터는 아래와 같습니다.
CHAPTER 01 완벽한 디노 1.1 탄생 배경 1.2 디노 맛보기 1.3 멋진 기능 살펴보기 1.4 마치며
CHAPTER 02 타입스크립트 소개 2.1 타입스크립트란 2.2 형식 살펴보기 2.3 인터페이스와 클래스 2.4 타입스크립트 믹스인 2.5 마치며
CHAPTER 03 안전한 생활 3.1 보안 강화 3.2 사용 가능한 권한 확인 3.3 마치며
CHAPTER 04 npm 없는 세상 4.1 외부 모듈 사용 4.2 마치며
CHAPTER 05 기존 모듈 5.1 디노 표준 라이브러리 5.2 외부 모듈 5.3 흥미로운 모듈 5.4 마치며
CHAPTER 06 예제 프로젝트 6.1 디노 러너 6.2 응용프로그램 테스트 6.3 채팅 서버 6.4 마치며
CHAPTER 01 완벽한 디노 1.1 탄생 배경 1.2 디노 맛보기 1.3 멋진 기능 살펴보기 1.4 마치며
CHAPTER 02 타입스크립트 소개 2.1 타입스크립트란 2.2 형식 살펴보기 2.3 인터페이스와 클래스 2.4 타입스크립트 믹스인 2.5 마치며
첫 번째 챕터에선 Deno의 존재 의의부터, 필요성, 그리고 간략한 사용까지 경험해보게 됩니다. 만약 Node.JS를 충분히 사용해보신 개발자라면, 해당 파트에서 이미 감이 잡히셨을 것 같습니다. 이후 두 번째 챕터에선 타입스크립트를 살펴보게 되는데요. 당연히 세세한 부분까지 알 수는 없지만, 적어도 Deno에 필요한 타입스크립트의 특성은 충분히 설명하고 있다고 하네요. 저 역시 타입스크립트를 사용해본 경험은 없었는데, 짧게 마련된 해당 파트를 읽는 것 만으로도 여러가지 흥미로운 것들을 배울 수 있었습니다.
CHAPTER 03 안전한 생활 3.1 보안 강화 3.2 사용 가능한 권한 확인 3.3 마치며
CHAPTER 04 npm 없는 세상 4.1 외부 모듈 사용 4.2 마치며
다음 세 번째 챕터는 Deno를 통해 어떻게 보안을 강화할 수 있는지, 기존 Node와의 차이점과 함께 살펴보게 됩니다. Deno는 필요 권한을 직접적으로 명시하도록 하여, 라이언 달의 의도와 같이, Node의 취약점을 개선할 수 있었습니다. 또한, 그가 느꼈던 Node의 중앙집중적 모듈 관리의 문제점 역시, 네 번째 챕터, 'npm 없는 세상'에서 살펴볼 수 있습니다. 더 이상 npm과 같은 패키지 매니저를 사용할 필요 없이, 브라우저가 필요한 모듈을 가져와서 사용하는 방식으로 변경된 것입니다.
CHAPTER 05 기존 모듈 5.1 디노 표준 라이브러리 5.2 외부 모듈 5.3 흥미로운 모듈 5.4 마치며
CHAPTER 06 예제 프로젝트 6.1 디노 러너 6.2 응용프로그램 테스트 6.3 채팅 서버 6.4 마치며
다섯 번째 챕터는 디노의 표준 라이브러리를 중심으로 실제 개발에 관한 몇몇 예시를 살펴보고, 마지막 여섯 번째 챕터에서 본격적인 심플 프로젝트를 진행하게 됩니다. 몇 페이지 남짓한 분량으로, 마지막에는 소켓을 사용하는 채팅 서버 예제까지 진행하게 되는데요. 이 부분은 생각보다 훨씬 흥미로웠습니다.
일반적인 개발서적의 절반 분량도 안 되는 얇은 책이지만, 그래서인지, 오히려 더 좋았다는 생각입니다. 수백 페이지에 달하는 도서를 읽다보면 머리가 지끈거리고, 아파오기 마련입니다. 통독하기 어려운 것은 당연지사이고, 상당수의 책은 결국 백과사전처럼 그때 그때 필요할때 꺼내지는 신세로 전락하고 맙니다.
이러한 부분에서, Deno를 소개하고, Deno의 매력을 느끼게 하는 정도에 아주 적합한 분량과 내용이었다고 생각합니다. 비록 당장 Node를 사용하는 개발자들이 전면적으로 Deno로 이주하는 것은 어렵겠지만, 소프트웨어 시장을 주도하는 Google과 같이, Node의 창시자가 만들어낸 Deno 역시 언젠가는 JS 백엔드 런타임 시장을 전면적으로 독차지하게 될 것입니다.
JS 개발자라면, 무릇 읽어보아야 할 책이라고 생각합니다. 또한, 그 시점은 빠르면 빠를수록 좋을 것 같네요. :)
자바스크립트로 백엔드를 구현하는 Node가 나오고 많은 시간이 흘렀다. Node가 등장하고 자바스크립트 언어로 프론트엔드, 백엔드 모두를 할 수 있다는 것에 많은 사람들이 열광했다. 그런 Node를 개발한 라이언 달이 새로운 자바스크립트 런타임인 Deno를 만들었다.
한빛미디어에서 나온 책 "디노 첫걸음"은 최신 자바스크립트 런타임인 Deno를 훑어보기에 좋은 책이다. 160쪽의 비교적 얇은 서적이기 때문에 가지고 다니면서 읽기에도 좋다. 디노가 타입스크립트를 기본으로 사용하기 때문에 저자는 챕터2를 할애하여 타입스크립트 기초를 알려준다. 타입스크립트를 알고 있는 독자라면 이부분을 건너뛸 수 있다.
노드의 문제점들을 해결하기 위해 나온 것이 디노이기 때문에 책의 많은 부분이 노드와 비교해 좋아진 부분들을 소개한다는 느낌을 받았다. 노드에 비해 강화된 보안과 기본으로 제공하는 표준 라이브러리들, 외부모듈을 사용하는 방식등이 노드에 비해 어떻게 바뀌었는지 설명해준다. 예제 프로젝트의 개수가 적은 점이 아쉽지만 디노라는 새로운 기술을 접하고 출발하기에는 부족함이 없다고 생각한다.
최근에 주 언어를 javascript로 전향하고 나서 한번에 배워야 할게 산더미처럼 늘어나서
정신이 없던 와중에 Typescript라는 것을 알게 되었고, 자바스크립트에서 객체지향의 개념을
사용할 수 있다는 점이 자바를 쭉 해왔던 나로서는 무척이나 친근하게 느껴졌다.
이제 어느정도 Vue에 익숙해졌다고 자부하고 있는 시점에서 디노라는 것을 알게 되었고
이번달 리뷰 도서로 소개하게 되었다.
먼저 디노를 설명하기 전에 자바스크립트 런타임에는 전통적인 Node.js라는 것이 있다.
노드는 자바스크립트를 사용한 런타임 환경이다.
자바 진영에서 웹 개발을 했을때는 아파치 톰캣을 이용해 웹서버를 띄웠다면
자바스크립트 진영에는 노드를 통해 서버를 실행시킬 수 있다.
그러나 창시자인 라이언 달 마저도 노드에 대한 10가지 아쉬움을 발표했고
기존의 노드를 개선한 디노를 탄생시켰다.
대상 독자
자바스크립트를 사용하는 웹개발자 또는 웹 개발에 관심이 있는 누구나?
구성
챕터01 완벽한 디노
챕터02 타입스크립트 소개
챕터03 안전한 생활
챕터04 npm없는 세상
챕터05 기존 모듈
챕터06 예제 프로젝트
기준 버전
2021년 4월16일 기준 v1.9.0
내용
일단 한번 훑어 본 느낌은 디노의 탄생 배경과 메인 언어인 타입스크립트에 대한 소개, 보안성, 모듈 사용법과
몇가지 예제들이 있다. 음... 뭔가 진짜 기초적인 내용들만 설명을 해 놓은 느낌이다. 그래서 나같은 입문자들이
개념을 정립하는데 도움은 주나 그 이상의 것은 직접 검색하여 찾아보게 된다. 윈도우 버전에서 설치할 때
책에는 없는 오류가 발생해서 좀 헤맸었다. 그래도 한글로 된 기초 번역서가 있다는 것에 매우 감사하게
생각하고 있다. 디노 도큐먼트 언어가 영어만 있어서 개발 공부도 하고 영어 공부도 같이 하면 물론 좋지만
계속 보다보면 한글을 읽을때 보다 금방 지치고 페이지 번역에 손이 가기 마련이다.
정리
그래서 이 책에 대한 결론은 디노에 대해 기초 개념을 습득하고 설치, 간단한 실습을 하기엔 딱 좋은 책이다. 그 이상의 지식은 인터넷을 뒤져서 찾아야 한다. 아직 디노가 세상에 나온지 얼마 안됐지만, 벌써 버전이 1.9.0까지 올라갔으니 머지않아 노드 대신 디노를 사용하는 날이 오지 않을까 생각한다. 그러기 위해 미리 맛을 보는것도 좋다고 생각한다. 그리고 디노 이미지가 매우 귀엽다.
요즘에 Node.js로 개발을 하고 있습니다. 주 언어는 아니지만 직장에서 Node.js로 된 프로젝트를 맡게 되어서 공부해가며 개발중이었 지요. 이렇게 Node.js에 흥미를 느끼고 공부를 하는데 Deno를 알게 되었고 언제 한번 책으로 접해봐야겠다고 생각했는데 마침 Deno에 대해 간단하게 공부해 볼 수 있는 책이 리뷰 이벤트로 나와서 신청하게 됐습니다.
이 책의 구성
- 탄생 배경
- 디노 맛보기
- 멋진 기능 살펴보기
- 타입 스크립트란
- 형식 살펴보기
- 인터페이스와 클래스
- 타입 스크립트 믹스인
- 보안 강화
- 사용 가능한 권한 확인
- 외부 모듈 사용
- 디노 표준 라이브러리
- 외부 모듈
- 흥미로운 모듈
- 디노 러너
- 응용프로그램 테스트
- 채팅 서버
책의 목차를 보면 딱 Deno를 처음 접하는 분들께 알맞다는 걸 볼 수 있습니다.
Node.js라는 멋진 기술과 생태계가 있는데 왜 Deno가 나와버렸는지부터 설치, 맛보기, Node.js 와 비교했을 때의 장점을 알 수 있고
Deno의 주 언어로 사용된 타입 스크립트에 대해서도 알 수 있습니다.
그리고 가장 중요하다고 생각하는 작은 프로그램 만들기까지
이처럼 Deno를 빠르고 간단하게 알아볼 수 있어서 Deno에 대해 궁금했지만 아직 접해보지 않는 분들에게
아주 알맞고 친절한 책입니다.
각 챕터 마지막엔 마치며라는 항목이 있어서 내가 공부한 챕터를 잘 정리할 수 있습니다.
다만 공부한 부분의 많은 내용을 함축해서 정리해 줬으면 하는 아쉬움이 있습니다.
이렇게 설치하기부터 간단한 프로그램 개발까지 내용이 잘 정리되어 있어서 처음 접하는 분들께 군더더기 없이 깔끔하고 간단한 책이라고 생각합니다.
마지막으로
물론 Node.js 가 아주 강력한 기술이고 앞으로 Deno 가 그 자리를 대신할 수 있을지는 모르지만 Node.js 가 아쉬웠던 부분을 개선해서 만든 게 Deno임으로 확실히 공부해 볼 만한 가치가 있는 자바스크립트 런타임에는 틀림없다고 생각합니다. 그 시작을 디노 첫걸음과 함께라면 더욱 쉽게 이해하며 접할 수 있을 것입니다.
자바스크립트를 지원 하는 백엔드 런타임인 Node.js 가 나온지도 벌써 11년이다. 그동안 다수의 버전이 릴리즈 되었고 (현재 최신 버전은 15.14) , NPM 에는 100만개 이상의 패키지가 등록 되어 있지만 노드의 아버지인 라이언 딜은 2020년 5월 새로운 백엔드 기술을 개발했다.
이름은 NODE 를 뒤집어 놓은듯한 DENO.
책에서는 라이언 딜이 DENO 를 탄생시킨 배경과 설치 부터 시작 하는 주요 사용법, 또한 DENO 의 주 언어인 타입스크립트에 대해서 소개 하고 있다.
가장 흥미롭게 읽은 부분은 DENO 의 보안 강화 부분이다.
스크립트를 실행하는 OS 가 보안을 처리하도록 하지 않고 사용자가 직접 허용할 권한을 지정하도록 강제 하는 부분은 아이폰의 개인 정보 보호 기능을 통해서 익숙한 내용인데, 서버에서 스크립트를 실행 하는 과정에서도 이에 대한 제약을 할 수 있는 부분이 아주 흥미로웠다. 내가 잘 알지못하는 모듈들이 내가 허용하지 않은 작업을 하지 못하게 하는 것은 사실상 왜 여태까지 그런 제약이 없었는지 싶을 정도 이다. 그리고 실행방법도 아주 간단하다. 단순히 스크립트 시작 부분에 플래그를 추가 하기만 하면 된다.
DENO 가 Node.js 를 대신할지에 대한 여부는 여러 내용들을 읽어봐도 알기가 어렵다. 하지만 백엔드 런타임을 새로 배워야 한다면 DENO 로 시작 하는 것도 나쁘지 않을듯 하다.
책의 마지막에서 언급 하지만 이 책을 번역하는 2021년 1월에는 DENO 의 버전이 1.7.1 이었다. 현재 이 리뷰를 쓰는 시점의 DENO 의 버전은 1.9.0 이다.
최신 자바스크립트 런타임인 디노(Deno)를 소개하는 '디노 첫걸음'을 읽어 보았습니다. 책에서 설명하는 내용이 무엇인지 보고 직접 실행해 보며 디노를 살펴보려고 합니다.
개요
디노의 배경
타입스크립트
npm 없이 외부 모듈 사용하기
1. 디노의 배경
자바스크립트를 백엔드로 구현한다고 하면 Node.js를 보통 생각하곤 했습니다. 그런데 노드가 해결하지 못하는 문제점이 몇 가지 있었습니다. 첫 번째는 보안이 취약한 부분을 해결하지 못했다는 것입니다. 그리고 npm으로 외부 모듈 사용 시 node_modules에 저장하는 방식이기 때문에 무거워지는 문제가 있었습니다. 아래와 같은 유머 사진이 있을 정도로 말이죠
요즘 프레임워크들의 추세인지, 온라인에서 간단히 테스트 가능한 플레이그라운드가 디노에도 있습니다. deno playground 입력 시 쉽게 찾을 수 있었고, 링크에서 테스트해보았습니다. 개발자 도구에 간단한 코드를 작성하듯이 작성하기에 좋을 것 같습니다.
이 외에 개인이 만든 다양한 플레이그라운드가 있으니 기호에 맞게 찾아 사용할 수 있겠습니다. 안정화되지 않은 기능도 사용해 볼 수 있다고 합니다.
맥 사용자라면 brew install brew 명령어로 설치가 가능합니다. 설치 후 deno를 입력하면 콘솔로 코드를 입력할 수 있습니다.
2. 타입스크립트
디노에서 가장 좋다고 느껴졌고, 표준화가 되어가고 있다는 것을 느끼게 해 준 부분입니다. 타입스크립트가 기본으로 적용되어 있는 것입니다. 플레이그라운드에서도 기본 설정으로 두면 타입 추론이 자동으로 되지 않는 부분에 타입을 지정하라는 에러를 발생시킵니다. 타입스크립트를 사용하기 않으면 협업에서 코드를 파악하는 데에 있어 어려움이 있기 때문에 필요성이 높아지고 기본으로 사용하는 기업들도 많아 이런 흐름을 반영한 것 같습니다. 책에는 타입스크립트를 사용할 때 알면 좋은 핵심 문법도 담고 있어서 익숙하지 않은 사람도 익히는 데에 도움이 될 것입니다.
3. npm 없이 외부 모듈 사용하기
기존의 npm 방식에서는 npm install ... 로 패키지를 설치하고 그것을 import하여 사용했었습니다. 디노에서는 외부 코드를 url로 import할 수 있습니다. npm을 사용할 때 필요했던 패키지를 배포하고 내려받는 과정이 없어진 것입니다. 아래와 같이 index.ts 파일에서 객체를 import해 사용할 수 있습니다.
github에 올라간 코드를 Raw링크로 얻을 수 있는데 이것으로도 외부 모듈로 되어 import할 수 있습니다. 아래는 간단한 로그를 찍는 함수 로우 주소를 import하여 사용해 본 결과입니다. 처음 한 번만 다운로드하고 그 이후부터는 캐시되어 사용됩니다. package.json으로 버전 관리도 가능하니 개인 프로젝트에서 모듈을 분리하여 사용하거나 외부 모듈을 불러서 사용하기에 편리할 것 같습니다.
결론
디노 첫걸음을 읽으며 알 수 있었던 탄생 배경, 장점, 특징을 간단히 실행해 보며 알아보았습니다. 백엔드에서 서버 개발하는 것을 중심으로 나와 있어서 프론트엔드도 검색해 보았는데요. Alphe라는 프레임워크가 디노에서 리액트를 사용할 수 있게 해준다고 합니다. 아직은 실험적인 부분이 있어 보이지만 추후 다운받아 장단점이 무엇인지 사용해 보아야겠습니다.
Node.js는 자바스크립트 V8엔진을 브라우저에서 때어내어서 독립적으로 실행할 수 있도록 만든 것이다. V8이 너무 잘 만들어졌다보니 독립적으로 실행시켜도 너무 좋은 것이다. 그래서 서버사이드나 다양한 곳에 많이 쓰이게 되었다. 노드를 만든 사람이 노드의 문제점을 스스로 고친 새로운 자바스크립트 런타임인 디노에 대해서 아주 간단하고 짧은 예제를 수록한 책이다.
책 분량이 160페이지 밖에 안되는 아주 간단한 책이다. 기존 Node의 문제점과 어떻게 개선되었는지, 그리고 어떤 Ecosystem을 가지고 있는지를 설명하고 간단한 예제 프로젝트를 하나 만들고 끝난다.
디노를 한번 찍먹 해보고 싶다면 괜찮은 책인 것 같다. 분량도 상당히 얇고 가볍기 때문에 기존의 Node.js나 JS에 대해서 이해하고 있다면 금방 읽을 것이다.
최근에 JS로 할 수 있는 웹 프론트/백을 한번 슥 공부해본적이 있었는데, 그때 백엔드 만들때 Node.js를 썼었다. deno로도 자바스크립트 백엔드 서버를 한번 만들어보고 싶다. 물론 시간을 내어야 하는데...
이 글은 2021년 4월 한빛미디어에서 진행하는 <나는 리뷰어다> 프로그램에 참여하게 되어 책을 제공받아 글을 작성하였습니다.
Deno는 JS Fest 2019 Spring 컨퍼런스에서 공식 발표 이후 2020년 5월 13일 1.0버전을 공식적으로 출시로써 기존 Node.js 개발자들을 놀라게 하였다. Deno는 Node.js에서 제기 되었던 npm의 중앙 배포 방식 문제와 보안 문제등을 개선하였다.
이 책은 Deno을 사용하여 서버을 구현하는 방법이 아닌 Deno에 대해 소개하고 Deno을 사용하여 간단한 채팅 서버 구현 예제을 통해 직접
체험을 해 볼 수 있다.
목차
CHAPTER 01 완벽한 디노 CHAPTER 02 타입스크립트 소개 CHAPTER 03 안전한 생활 CHAPTER 04 npm 없는 세상 CHAPTER 05 기존 모듈 CHAPTER 06 예제 프로젝트
책의 목차는 다음과 같다.
책의 챕터는 총 6개의 챕터로 나누어져 있으며 총 153페이지로 상당히 얇은 책이다.
이 책은 제목에서 알 수 있듯이 Deno을 처음 접해보기 위한 기본서 라는 느낌을 받았고 실제로 책을 보면서도 완전한 기본서라고 느꼈다.
하지만 Javascrip와 비동기에 대한 지식이 없을 경우 책의 내용이 다소 어려울것으로 예상된다.
예상 독자
1. Javascript와 Typescript에 대한 기본기가 있는 사람 2. Node.js 개발자
배송온 책을 받아들고 조금 놀랐는데, 손바닥 보다 조금 큰 정도의 작은 크기와 200 페이지도 되지 않는 얇은 두께는 평소 봐 오던 보통의 IT서적 -배게로 쓰기 좋은 크기와 두께- 와 달라 책이 잘 못 왔나 생각했을 정도였습니다. 그런데 막상 책을 읽어 보니 가볍고 들기 좋은 크기라 마치 전자책을 보는 기분으로 편하게 볼 수 있었습니다. 책의 내용도 외형만큼이나 편하고 쉽게 볼 수 있었습니다. 기존 Node.js 의 문제점과 타입스크립트를 간단히 소개하고, DENO는 어떻게 기존 문제점을 개선하고 있는지, DENO를 이용해 어떻게 어플리케이션을 작성하는지 예제를 통해 쉽고 편하게 소개하고 있습니다. 편하게 읽는 도중 가끔 번역이 아쉬운 부분이 있지만 문제될 수준은 아닙니다.
쉽고 읽기 편하다고 했지만, 이 책은 주로 Node.js 사용 경험이 있는 분이 빠르게 DENO를 사용할 수 있도록 해 주는 내용을 담고 있어 관련 지식이 없는 초심자가 보기에는 어려울 수 있을 것으로 생각됩니다. Node.js를 사용중인데 DENO 도입을 고려하는 분들께 추천합니다.
저자 페르난도 돌리오는 Node.js로 REST API를 설계하는 등 다양한 프로그래밍 언어를 다룬 경험을 갖고 있는 개발 전문가로서 디노라는 런타임을 소개하고있다.
디노의 특이점은 노드 개발자인 라이언이 노드를 포기하고 디노를 개발했다는 점이다.
디노 탄생 배경을 살펴보면, 라이언은 노드가 적절히 해결하지 못하는 다양한 문제(보안이 취약한 플랫폼, 모듈 시스템의 문제, 다른 사소한 문제)가 있음을 알게 되었고 이는 영구적인 기술 부채로 남았다고 한다.
보안이 취약한 플랫폼
라이언은 노드가 안전하지 못한 플랫폼이며 이를 잘 이해하지 못한 개발자가 불필요한 실행권한을 부여하거나 안전하게 보호되지 않는 시스템 서비스에 접근하는 코드를 구현하면서 보안 구멍이 만들어진다는 것을 깨달았다.
즉 노드로 특정 URL에 TCP로 요청을 보낼 수 있는데 이를 완벽하게 제어하지 못한다면 요청을 받는 쪽에 문제가 생긴다. 호스트 컴퓨터의 네트워크 서비스 사용을 막는 장치가 아무것도 없기 때문이다. 적어도 노드에는 그런 보호 장치가 없다.
2018년에 아주 유명한 노드 모듈 저장소가 소셜 해킹(모듈 개발자가 해커에게 속아 코드 접근 권한을 줌)을 당했는데 해커는 누군가가 가진 비트코인 지갑의 코인을 훔치는 코드를 숨겨놓은 상태였다. 노드에는 기본적으로 보안이 없으므로 이 모듈은 사용자 컴퓨터의 특정 경로에 접근할 수 있었다(모듈이 의도한 기능이 아님에도). 만약 모듈이 어떤 경로를 읽으려 했을 때 사용자에게 이를 허용할 것인지 묻는 알림창이 나타난다면 이는 큰 위협이 되지 못한다.
모듈 시스템의 문제
모듈 시스템에도 문제가 있었다. 라이언은 비동기 I/O, 이벤트 방출기 등의 기능은 공을 들여 잘 만든 데 비해 내부 설계는 즉흥적으로 이루어졌다고 생각했다.
노드 생태계에서 npm을 표준 패키지 관리자로 사용한 점을 후회하며 npm의 중앙화되고 비공개적인 저장소 관리방식을 좋아하지 않았다. 라이언은 브라우저가 의존성을 임포트하는 방식이 더 깔끔하고 쉽게 유지보수할 수 있다고 생각했다.
다른 사소한 문제
확장자를 지정하지 않고 로컬 모듈을 요청하는 기능처럼 노드에는 다른 사소한 문제도 있었다.
결국 라이언은 본인이 만들거나 참여했던 많은 기능을 더 제대로 만들고 싶다는 후회를 동기로 전환해 디노를 탄생시켰고 새로운 런타임의 설계를 이끌기 시작했다.
새로운 기술은 언제나 흥미롭지만, 사용자입장에서는 불안정한 기능, 빈약한 커뮤니티 등은 큰 걸림돌이 된다. 이러한 문제는 걱정하지 않아도 될 것 같다.
현재 디노는 버전업과 디노를 지원하는 라이브러리 수가 폭발적으로 증가하고 커뮤니티 또한 활발하게 움직이는 것을 알 수 있다.
이 책은 디노 입문서로 노드 개발자나, 처음 접하게 되는 누구나 쉽게 이해할 수 있도록 개발과 노드의 문제점을 해결하는 과정의 사례를 들어 설명하고 있는 특징이 있다.
마지막 장에서 저자가 구현한 예제를 다양한 주제로 제시하고 있다.
이 책은 150페이지로 편집되고, 관련 참고 사이트를 각주로 달아놓아 혼자 따라가며 살펴보게 배려해 놓았다. 짬을 내어 읽어보고 새로운 런타임 기법을 익혀보시길!!!
특히 백앤드 개발자들의 골치거리인 보안 문제의 해결을 위해, 자바스크립트의 새로운 보안 런타임 디노의 모든 것을 이해하고 안전한 시스템 개발 전문가로 발전 하기를!!!!
디노 첫걸음 저자 페르난도 돌리오 지음, 우정은 출판 한빛미디어 발매 2021.03.10.
디노는 노드 제작자 라이언 딜이 만든 새로운 자바스크립트 백엔드 플랫폼이다.
보통 디노하면 공룡이 생각나는 데 저자이름도 페르난도 돌리오 라고 비슷한 느낌이 든다.
노드가 10년 넘게 자바스크립트 진영의 확고한 플랫폼으로 자리매김했었는 데 왜 디노를 더 만들었는가 의문이 들기도 했다. 하지만 이 책을 보니 확실히 이유를 알 수 있었다.
노드는 타입스크립트를 바로 사용할 수 없고 타입스크립트컴파일러를 통해서 한번컴파일하고 나서 자바스크립트로 활용한다. 이런 단점이 디노가 나오게 된 배경이기도 했지만 기본 설치된 표준 라이브러리가 따로 없고 npm패키지를 통해 받은 라이브러리를 주로 콜백 형태로 연결해서 사용을 한다. 물론 훌륭한 개발자라면 npm패키지를 통해 받았다고 하더라도 본인의 설계에 맞춰서 보안 시큐어 등을 추가로 구현하겠지만 대부분의 사용자는 그냥 사용하는 것이 문제다.
디노는 기본 표준 라이브러리가 어마어마하며 기본으로 접근 권한 허용을 별도로 설정하도록 되어 있어서 보안성이 탁월하게 좋은 플랫폼이다.
이 책을 읽다 보면 디노에 대해서만 아는 것이 아니라 자바스크립트와 타입스크립트뿐만 아니라 보안과 다양한 데브옵스 마이크로 서비스에 대한 지식도 얻을 수 있다.
무엇보다도 저렴한 가격에 한손에 쏙 들어오는 첫걸음 시리즈는 가성비가 매우 좋은 책이다. 사전지식이 없어도 1주일만 읽으면서 따라해보면 내용을 완벽히 이해할 만큼 설명이나 예제가 쉽게 잘 구성되어 있다.
책에서 다양한 개발환경 구성과 설치방법 및 무설치 실행환경등을 소개해 주고 있어서 어디서나 실습을 해 볼 수 있다. 물론 노드가 10년 넘게 쌓아온 기존코드들과 노드의 모든 장점을 다 대체할 거라고는 생각할 수 없지만 머지않아 충분히 대체하리라 보이는 플랫폼이다.
웹 백엔드 개발자가 아니어도 전공자가 아니어도 홈페이지 하나정도는 만들어보고 싶었을 수 있다. 심지어 책에 나오는 모든단어가 처음 보는 단어라고 할 지라도 읽어보는 데 전혀 문제가 되지 않는다. 속물같아 보일수도 있지만, 이 가격에 이 정도 책이면 나름 훌륭한 선택이라고 생각한다. 그리고 이 책은 언제가 될지 모르겠지만 언젠가는 꼭 도움이 되리라고 기대한다.
디노 첫걸음 저자 페르난도 돌리오 지음, 우정은 출판 한빛미디어 발매 2021.03.10.
디노는 노드 제작자 라이언 딜이 만든 새로운 자바스크립트 백엔드 플랫폼이다.
보통 디노하면 공룡이 생각나는 데 저자이름도 페르난도 돌리오 라고 비슷한 느낌이 든다.
노드가 10년 넘게 자바스크립트 진영의 확고한 플랫폼으로 자리매김했었는 데 왜 디노를 더 만들었는가 의문이 들기도 했다. 하지만 이 책을 보니 확실히 이유를 알 수 있었다.
노드는 타입스크립트를 바로 사용할 수 없고 타입스크립트컴파일러를 통해서 한번컴파일하고 나서 자바스크립트로 활용한다. 이런 단점이 디노가 나오게 된 배경이기도 했지만 기본 설치된 표준 라이브러리가 따로 없고 npm패키지를 통해 받은 라이브러리를 주로 콜백 형태로 연결해서 사용을 한다. 물론 훌륭한 개발자라면 npm패키지를 통해 받았다고 하더라도 본인의 설계에 맞춰서 보안 시큐어 등을 추가로 구현하겠지만 대부분의 사용자는 그냥 사용하는 것이 문제다.
디노는 기본 표준 라이브러리가 어마어마하며 기본으로 접근 권한 허용을 별도로 설정하도록 되어 있어서 보안성이 탁월하게 좋은 플랫폼이다.
이 책을 읽다 보면 디노에 대해서만 아는 것이 아니라 자바스크립트와 타입스크립트뿐만 아니라 보안과 다양한 데브옵스 마이크로 서비스에 대한 지식도 얻을 수 있다.
무엇보다도 저렴한 가격에 한손에 쏙 들어오는 첫걸음 시리즈는 가성비가 매우 좋은 책이다. 사전지식이 없어도 1주일만 읽으면서 따라해보면 내용을 완벽히 이해할 만큼 설명이나 예제가 쉽게 잘 구성되어 있다.
책에서 다양한 개발환경 구성과 설치방법 및 무설치 실행환경등을 소개해 주고 있어서 어디서나 실습을 해 볼 수 있다. 물론 노드가 10년 넘게 쌓아온 기존코드들과 노드의 모든 장점을 다 대체할 거라고는 생각할 수 없지만 머지않아 충분히 대체하리라 보이는 플랫폼이다.
웹 백엔드 개발자가 아니어도 전공자가 아니어도 홈페이지 하나정도는 만들어보고 싶었을 수 있다. 심지어 책에 나오는 모든단어가 처음 보는 단어라고 할 지라도 읽어보는 데 전혀 문제가 되지 않는다. 속물같아 보일수도 있지만, 이 가격에 이 정도 책이면 나름 훌륭한 선택이라고 생각한다. 그리고 이 책은 언제가 될지 모르겠지만 언젠가는 꼭 도움이 되리라고 기대한다.