Description
★ 자바스크립트 Node.js 백엔드 개발자가 되고 싶다면
★ HTML/CSS/자바스크립트 그다음에 꼭 보세요
실력을 갖춘 개발자로 성장하려면 시작이 중요합니다. 그래서 이 책은 무엇부터 익혀야 하는지 막막한 입문자에게 백엔드 개발의 필수 지식을 학습 로드맵 중심으로 설명합니다. 이어서 자바스크립트 기반 백엔드 개발에 꼭 필요한 3대장인 타입스크립트 언어와 Node.js 런타임, 익스프레스와 NestJS 웹 프레임워크를 활용하여 최신 트렌드에 맞게 그리고 실무에 유용하도록 백엔드 기술을 알려줍니다. 검색, 댓글, 페이지네이션 기능을 제공하는 게시판, 채팅방 기능이 있는 실시간 통신 채팅 프로젝트까지 탄탄하고 유용하게 알려드립니다. 모든 장 끝에는 연습문제가 수록되어 있어 배운 내용을 확인할 수 있습니다. 이 책이 여러분의 백엔드 개발자 여정에 든든한 나침반이 되어 줄 겁니다.


〈되기〉 시리즈 소개
〈되기〉 시리즈는 이름 그대로 IT 분야에서 성장하려는 여러분을 위해 준비한 책입니다. 엄선된 IT 기술들을 로드맵과 함께 제시하고, 실무 중심으로 공부할 수 있도록 안내합니다. 여러분이 해당 분야에서 실무자로 빠르게 성장할 수 있도록 지원하겠습니다.

저자

박승규

저자:박승규
아직도개발이재미있는15년차천상개발자입니다.웹개발,게임백엔드개발,플랫폼및인프라개발등다양한영역을경험했습니다.현재는카카오엔터테인먼트에서백엔드개발자로일합니다.
현)카카오엔터테인먼트페이지서비스개발팀
전)트리노드(포코팡,포코포코)서버개발자
전)NHNJapan플랫폼개발팀

목차


[레벨1백엔드개발자입문하기]

00장개발환경구축하기
_0.1윈도우개발환경구축
__0.1.1Node.js설치
__0.1.2깃설치
__0.1.3비주얼스튜디오코드설치
_0.2맥OS개발환경구축
__0.2.1Node.js설치
__0.2.2깃설치
__0.2.3비주얼스튜디오코드설치
_0.3리눅스개발환경구축
__0.3.1Node.js설치
__0.3.2깃설치
__0.3.3비주얼스튜디오코드설치
_0.4예제소스코드내려받기
_0.5VSCode로내려받은소스코드실행하기
_0.6VSCode입문자를위한사용법안내
__0.6.1코드실행하기
__0.6.2디버깅하기
__0.6.3VSCode단축키

01장알아두면좋은백엔드개발자를위한지식
_1.1백엔드개발자가알아야하는것
_1.2백엔드개발자의업무
_1.3백엔드아키텍처
_1.4백엔드프로그래밍언어
_1.5데이터베이스
__1.5.1RDB
__1.5.2NoSQL(NotOnlySQL)
_1.6클라우드서비스
_1.7자바스크립트생태계
__1.7.1패키지매니저
__1.7.2빌드도구
__1.7.3개발도구
__1.7.4웹프레임워크
__1.7.5백엔드개발환경
__1.7.6인프라
_학습마무리
_연습문제

[레벨2Node.js와Express로백엔드입문하기]

02장Node.js로백엔드입문하기
_2.1Node.js소개
_2.2Node.js는서버에서어떻게자바스크립트를실행할까?
__2.2.1Node.js의구성요소
__2.2.2자바스크립트실행을위한V8엔진
__2.2.3이벤트루프와운영체제단비동기API및
스레드풀을지원하는libuv
__2.2.4Node.js아키텍처
_2.3Node.js의기술적인특징
__2.3.1싱글스레드
__2.3.2이벤트기반아키텍처
__2.3.3이벤트루프
_2.4Node.js과연쓸만한가?
_2.5나의첫Node.js서버프로그램
__2.5.1hello.js파일생성및실행
__2.5.2curl내려받기및테스트해보기
_2.6정말로동시에요청을처리하는지성능테스트하기
__2.6.1K6설치
__2.6.2K6로성능테스트스크립트작성하기
_학습마무리
_연습문제

03장Node.js와익스프레스로웹애플리케이션서버구현하기
_3.1OK를반환하는서버만들기
_3.2라우터만들기
_3.3createServer()리팩터링하기
_3.4동적으로응답하기
_3.5라우터리팩터링하기
_3.6익스프레스프레임워크사용하기
__3.6.1익스프레스설치하기
__3.6.2나의첫익스프레스서버만들기
__3.6.3Node.js라이브러리로만든서버를익스프레스로구현하기
_3.7익스프레스로간단한API서버만들기
__3.7.1게시판API코드작성하기
__3.7.2API규칙에맞게서버구현하기
_3.8게시판API테스트하기
__3.8.1curl로GET호출하기
__3.8.2curl로POST를호출해게시글등록하기
__3.8.3curl로DELETE를호출해게시글삭제하기
_학습마무리
_연습문제

04장npm과yarn으로패키지관리하기
_4.1npm소개
_4.2패키지와모듈
_4.3package.json파일을만들기
_4.4패키지설치,업데이트,삭제
__4.4.1패키지설치하기
__4.4.2패키지업데이트하기
__4.4.3설치한패키지확인하기
__4.4.4패키지삭제하기
_4.5스크립트기능과NPX
__4.5.1npm스크립트파일을정의하기
__4.5.2NPX로코드포매팅명령어prettier실행하기
_4.6패키지잠금
_4.7npm의대안yarn
_학습마무리
_연습문제

05장자바스크립트에서비동기처리하기
_5.1자바스크립트비동기소개
_5.2콜백함수소개
_5.3Promise객체
__5.3.1동시에여러Promise객체호출하기
__5.3.2Promise예외처리하기
__5.3.3프로미스의문제점
_5.4asyncawait구문
_학습마무리
_연습문제

06장NoSQL데이터베이스몽고디비사용하기
_6.1몽고디비소개
__6.1.1데이터베이스기본용어
__6.1.2몽고디비특징
_6.2몽고디비아틀라스설정하기
_6.3몽고디비CRUDAPI만들기
_6.4몽고디비콤파스로데이터확인하기
_6.5몽구스를사용해CRUD만들기
__6.5.1몽구스설치하기
__6.5.2몽구스로스키마만들기
__6.5.3몽구스와익스프레스로CRUDAPI만들기
_6.6REST클라이언트로API테스트하기
_학습마무리
_연습문제

07장페이지네이션되는게시판만들기
_7.1프로젝트구조소개
_7.2게시판프로젝트셋업
__7.2.1Node.js프로젝트초기설정
__7.2.2익스프레스설치및프로젝트디렉터리구조잡기
__7.2.3핸들바템플릿엔진설치및설정하기
_7.3화면기획하기
__7.3.1리스트화면기획
__7.3.2글쓰기화면기획
__7.3.3상세화면기획
_7.4UI화면만들기
__7.4.1리스트UI만들기
__7.4.2글쓰기UI만들기
__7.4.3상세페이지UI만들기
_7.5API만들기
__7.5.1몽고디비연결을위한유틸리티만들기
__7.5.2UI페이지에서사용할핸들바커스텀헬퍼만들기
__7.5.3nodemon설정하기
__7.5.4글쓰기API만들기
__7.5.5리스트API만들기
__7.5.6상세페이지API만들기
__7.5.7글수정API
__7.5.8글삭제API
__7.5.9댓글추가API
__7.5.10댓글삭제API
_학습마무리
_연습문제

[레벨3NestJS프레임워크로점핑하기]

08장NestJS시작하기
_8.1왜NestJS가필요할까?
_8.2NestJS소개
__8.2.1익스프레스와NestJS비교하기
__8.2.2NestJS둘러보기
_8.3NestJS설치하고실행하기
__8.3.1의존성패키지설치하기
__8.3.2타입스크립트설정하기
__8.3.3NestJS의모듈과컨트롤러만들기
__8.3.4hello-nest앱실행시켜보기
__8.3.5NestJS의네이밍규칙
_8.4NestJS로웹API만들기
__8.4.1프로젝트생성과설정
__8.4.2컨트롤러만들기
__8.4.3블로그API작성하기
__8.4.4메모리에데이터를저장하는API만들기
__8.4.5파일에정보를저장하도록API업그레이드하기
_8.5의존성주입하기
_8.6몽고디비연동하기
__8.6.1의존성설치
__8.6.2스키마만들기
__8.6.3몽고디비를사용하는리포지토리추가하기
__8.6.4서비스코드변경
__8.6.5모듈에몽고디비설정과프로바이더설정추가하기
_학습마무리
_연습문제

09장NestJS환경변수설정하기
_9.1환경변수소개
_9.2프로젝트생성및설정하기
_9.3NestJS설정및테스트하기
__9.3.1app.module.ts에ConfigModule설정하기
__9.3.2.env파일생성하기
__9.3.3app.controller.ts에코드추가하기
__9.3.4테스트하기
_9.4ConfigModule을전역모듈로설정하기
__9.4.1.env에환경변수설정하기
__9.4.2weather모듈만들기
__9.4.3날씨API테스트용핸들러함수로테스트하기
_9.5여러환경변수파일사용하기
__9.5.1환경별로서버가기동되도록스크립트수정하기
__9.5.2local,dev,prod환경변수생성
__9.5.3환경변수에따라서다른환경변수파일을사용하도록설정수정하기
__9.5.4테스트용핸들러함수로테스트하기
_9.6커스텀환경설정파일사용하기
__9.6.1환경변수파일생성하기
__9.6.2ConfigModule에load옵션추가하기
__9.6.3커스텀환경변수읽기테스트하기
_9.7서버기동과환경설정파일초기화순서알아보기
_9.8YAML파일을사용해환경변수설정하기
__9.8.1js-yaml설치하기
__9.8.2config.yaml파일생성하기
__9.8.3config.ts수정하기
__9.8.4테스트용핸들러함수로테스트하기
_9.9캐시옵션사용하기
_9.10확장변수사용하기
__9.10.1확장변수를사용할수있게추가설정하기
__9.10.2테스트용핸들러함수로테스트하기
_9.11main.ts에서환경변수사용하기
_학습마무리
_연습문제

10장회원가입과인증하기
_10.1실습용프로젝트설정하기
__10.1.1nest-cli로프로젝트생성하기
__10.1.2User모듈생성하기
__10.1.3SQLite데이터베이스설정하기
_10.2유저모듈의엔티티,서비스,컨트롤러생성하기
__10.2.1엔티티만들기
__10.2.2컨트롤러만들기
__10.2.3서비스만들기
__10.2.4테스트하기
_10.3파이프로유효성검증하기
__10.3.1전역ValidationPipe설정하기
__10.3.2UserDto만들기
__10.3.3테스트하기
_10.4인증모듈생성및회원가입하기
__10.4.1인증모듈만들기및설정하기
__10.4.2회원가입메서드만들기
__10.4.3sqlite익스텐션으로테이블확인하기
_10.5쿠키를사용한인증구현하기
__10.5.1AuthService에이메일과패스워드검증로직만들기
__10.5.2가드를사용해인증됐는지검사하기
_10.6패스포트와세션을사용한인증구현하기
__10.6.1라이브러리설치및설정
__10.6.2로그인과인증에사용할가드구현하기
__10.6.3세션에정보를저장하고읽는세션시리얼라이저구현하기
__10.6.4email,password인증로직이있는LocalStrate

출판사 서평

백엔드세상에오신걸환영합니다
HTML/CSS/자바스크립트그다음책을소개합니다

환영합니다.백엔드개발자가되고싶은데무엇을어떻게할지모르겠는분이라면,잘찾아오셨습니다.이책은HTML/CSS/자바스크립트를공부하고나서자바스크립트기반백엔드입문자가알아야하는내용을알려줍니다.한분야의개발자로성장하려면참으로많은것을알아야합니다.마냥쉬운것만배워서는안됩니다.조금힘들더라도실전에서사용하는기술중심으로깊이있게배워야실력이쌓입니다.그래서이책은입문자뿐만아니라,기본을다시다지고싶은현업개발자에게도유용한내용을Node.js를중심으로충실히담았습니다.타입스크립트를알고있으면학습에도움이됩니다.타입스크립트문법은부록에서알려드립니다.

자바스크립트백엔드,3대장으로시작하세요

자바스크립트백엔드는〈프로그래밍언어〉,〈런타임〉,〈웹프레임워크〉3대장으로시작하세요.자바스크립트백엔드환경의핵심은Node.js입니다.Node.js를강력하게이용하려면객체지향프로그래밍기법을제공하는타입스크립트가필요합니다.지금까지Node.js는서버프레임워크로익스프레스를사용해왔지만최근에는NestJS를채택하는추세입니다.하지만현업에서는이두도구를모두다룰줄알아야하므로이책은익스프레스와NestJS를모두다룹니다.그러면3대장을구체적으로알아볼까요?

〈타입스크립트〉는자바스크립트를기반으로정적타입문법을추가한프로그래밍언어입니다.대형프로젝트에서많이사용하며,요즘대부분의회사에서는팀작업시필수로선택하는언어입니다.ES6를기반으로한새로운문법을제공하며,자바스크립트와완벽히호환됩니다.마이크로소프트의지원을받아비교적최근언어이지만,강력한생태계를가지고있습니다(부록A참고).

〈Node.js〉는서버단에서자바스크립트를실행할수있는자바스크립트런타임입니다.Node.js는요구사항이많고빠르게변하는환경에있는개발자에게좋은선택입니다.프론트엔드와같은코드를사용할수도있으며,Node.js의개발자생태계는매우풍성해서개발시간단축및시스템의안정성을높일수있는장점이있습니다.

〈익스프레스〉는Node.js에서가장많이사용되는웹프레임워크입니다.미니멀리스트프레임워크를지향하고있으며,확장이용이한구조로되어있어많은확장라이브러리가있습니다.〈NestJS〉는최신의자바스크립트최신기술을적용해,생산성있는웹애플리케이션을빠르고안정적으로만들수있게도와주는웹프레임워크입니다.

개발자되기시리즈는여러분에게앞으로나아갈길을먼저제시합니다
입문자를위한백엔드로드맵을만나보세요

저자는백엔드개발자로입문할때겪은난감함을떠올렸습니다.무엇을어떻게할지몰랐습니다.로드맵이필요했습니다.하지만누구도제대로된로드맵을제공해주지않았습니다.그래서저자는입문자에게필요한백엔드로드맵을먼저제시하고설명합니다.로드맵에는수많은기술이나열되어있습니다.책한권에로드맵에있는모든걸담을수도,한번에모두배울수도없습니다.이책은그중에서도출발점으로삼을기본지식을자바스크립트Node.js를중심으로추려알려줍니다.

실무에유용한기술로익히세요

기술은빠르게변합니다.지금은대세이지만지는기술,아직은미약하지만뜨는기술이있습니다.트렌드가변하는데는그럴만한이유가있습니다.반면기본은트렌드와무관하게변하지않습니다.그래서기본은탄탄하게,기술셋은트렌디하면서실무에유용하게설명했습니다.

경험을녹인고퀄리티코드를접하세요

인터넷을검색하면손쉽게동작하는코드를얻을수있습니다.그렇게얻은코드대부분은기능이부족하거나서비스가성장하면서다양한이슈를낳게됩니다.이책에들어있는코드는그런인터넷복붙코드가아닙니다.대규모서비스를개발하고운영한경험을녹인코드입니다.예를들어게시판코드는많지만,실무에진짜로필요한기능을제대로제공하는코드는인터넷에없습니다.이책에서제대로동작하는검색,댓글첨삭,페이지네이션,파일업로드,소셜로그인기능을담은게시판을만나보기바랍니다.

변경하거나수정한코드를확실하게표시합니다.

현업에서처럼이책에서도지속적으로코드를수정해완성하기때문에기존코드어디를수정혹은삭제했는지알수있어야합니다.편리하게찾을수있게변경사항이있는코드를삭제선과노란배경색으로표시했습니다.

이책에서다루는내용을소개합니다

이책은학습흐름을끊지않기위해개발환경부터미리구축해놓은후,Node.js를중심으로레벨1부터레벨3로나눠자바스크립트백엔드개발소양을쌓아나갑니다.모든장에는연습문제를수록했으며,부록A에서는‘타입스크립트입문에서고급기능까지’,부록B에서는‘꼭알아야하는리눅스명령어21개’를알려드립니다.

_Level1백엔드개발자입문하기
0장에서개발환경을구축한후에,1장에서백엔드개발자가무엇을알아야하는지와어떤일을하는지안내합니다.알아두면도움이되는넓고얕은지식을알려드리기때문에생소한단어가많이출현할겁니다.한번에모든걸이해하려들지않아도됩니다.처음에한번읽고나서,나머지책분량을모두읽은후다시읽어보세요.그러면‘백엔드개발자되기’라는궁극의의도를제대로파악할수있을겁니다.

_Level2Node.js와Express로백엔드입문하기
최종목표는익스프레스(Express)로게시판을만들수있는능력을습득하는겁니다.사용자의요구사항을처리하고반영하고수정하는게시판을만들면실무에필요한다양한기술을익힐수있습니다.2장에서는Node.js동작방식,3장에서는익스프레스로웹서버만들기,4장에서는npm사용방법,5장에서는자바스크립트비동기처리방법,6장에서는몽고디비를다룹니다.7장에서는검색과댓글첨삭과페이지네이션이되는게시판을만듭니다.

_Level3NestJS프레임워크로점핑하기
NestJS를활용해개발하는방법을알아봅시다.8장에서는NestJS를알아보고,9장에서는NestJS환경변수설정하기,10장에서는회원가입과로그인,11장에서는OAuth를사용한구글로그인인증,12장에서는파일업로드기능을구현합니다.마지막으로13장에서는웹소켓으로실시간채팅을구현합니다.

함께만들예제를소개합니다

_express로댓글첨삭과페이지네이션이되는게시판만들기(7장)
게시판은웹프레임워크로만들때자주등장하는예제입니다.하지만제대로된게시판을만들려면생각보다고려해야할사항이많습니다.검색,페이징,상세페이지에서댓글영역처리하기등을제공하는일은상당히까다롭습니다.게시판만잘만들수있다면현업에필요한대부분의로직을만들수있다고해도아주틀린말은아닐겁니다.실제로사용할수있을정도의기능을가지고있는게시판을함께구현해봅니다.

_구글OAuth를사용해구글로그인구현해보기(10장,11장)
구글의OAuth를사용해인증을구현합니다.OAuth는2006년에구글과트위터가만든개방형인가의표준입니다.네이버,구글,카카오톡등이OAuth기능을활용한소셜로그인을지원합니다.OAuth를사용하면유저의인증정보를외부에서받아오기때문에상대적으로안전합니다.유저입장에서는회원가입을일일이하지않아도되고ID와패스워드를외우지않아도되니편리합니다.

_파일업로드구현(12장)
파일업로드기능을구현합니다.문자뿐아니라영상이나이미지같은포맷이애플리케이션에널리활용됩니다.이런다양한포맷을애플리케이션에서사용하려면파일업로드기능이필요합니다.

_실시간채팅구현하기(13장)
실시간채팅을구현합니다.웹소켓은서버도클라이언트의요청없이응답을줄수있습니다.13장에서는웹소켓이무엇인지알아보고,메아리애플리케이션과채팅애플리케이션을만들어보면서실시간으로갱신되는애플리케이션에대한감을잡아봅시다.

〈되기〉시리즈소개

〈되기〉시리즈는이름그대로IT분야에서성장하려는여러분을위해준비한책입니다.엄선된IT기술들을로드맵과함께제시하고,실무중심으로공부할수있도록안내합니다.여러분이해당분야에서실무자로빠르게성장할수있도록지원하겠습니다.