SlideShare a Scribd company logo
Java개발자가시작하는NodeJS
부제:51Scrum은왜NodeJS를사용할까요?
GSSHOP51Scrum
2019.10.26임광규
51Scrum 1
저는!
2005년부터Java언어를기반으로2018년까지주로WEB을개발
- 렌트카 관리, 제약회사, 쇼핑몰, 기상청 데이터 센터, 보안 솔루션 등 구축
2018년11월GSSHOP에입사하여NodeJS를사용시작
- 상품360, SRR, 심의포털, 트랜드몬, LMS몬, Q-FIT 등 구축
51Scrum 2
1년동안느낀NodeJS장점
1.개발생산성향상
2.Javascript기반의FullStack개발
3.비동기처리
4.많은모듈제공&쉬운의존성관리
51Scrum 3
1.개발생산성향상
1.Java에비해코드양이33%가량적음
2.40%가량파일수적음
3.JSON데이터기본지원
4.쉬운비동기프로그래밍
51Scrum 4
JavaVSNodejswebservercode
51Scrum 5
2.javascript기반의FullStack개발
Front-end와Back-end를동일한언어인javascript를사용하여언어의변경에따른비용(시
간)최소화할수있다.
51Scrum 6
3.비동기처리
EventLoop가SingleThread이며,workerthread를활용하여작업을처리한다
참고:[NodeJS]nodejs는single-thread가아니다51Scrum 7
JAVAVSNodeJS성능비교
단순한http호출의경우비동기처리가된NodeJS는동기처리되는Javaapplication서버
에비해향상된성능을보여준다.
참고:Node.jsatPayPal51Scrum 8
알아야하는비동기동작
console.log("first");
setTimeout(() => {console.log('second')}, 0); //비동기 처리
console.log('third');
--- 결과
first
third
second
51Scrum 9
비동기처리방안
1.CallBack
2.Promise
3.async&await
51Scrum 10
CallBack
http.get('http://www.gsshop.com', function (res) {
if (res.statusCode === 200) {
console.log("first");
http.get('http://www.gsshop.com', function (res) {
if (res.statusCode === 200) {
console.log("second");
http.get('http://www.gsshop.com', function (res) {
if (res.statusCode === 200) {
console.log("third");
}
})
}
})
}
});
51Scrum 11
Promise
const promiseExample = (msg) => {
return new Promise((resolve, reject) => {
http.get('http://www.gsshop.com', function (res) {
if (res.statusCode === 200) {
resolve(msg);
}else{
reject('fail');
}
})
})
}
promiseExample('first').then(data => {
console.log(data);
return promiseExample('second');
}).then(data => {
console.log(data);
return promiseExample('third');
}).then(data => {
console.log(data);
});
51Scrum 12
async&await
const main = async () => {
const first = await promiseExample('first');
console.log(first);
const second = await promiseExample('second');
console.log(second);
const third = await promiseExample('third');
console.log(third);
}
main();
51Scrum 13
비동기처리경험담
async&await는<비동기>를<동기>로처리합니다.
따라서,필요에따라적절한형태로구현해야합니다.
51Scrum 14
잘못된사례
# 직렬 처리
const sample = async (list) => {
for (const item of list) {
await process(item);
}
console.log('Done!');
}
51Scrum 15
처리방안
# 병렬 처리
const sample = async (list) => {
const promises = list.map(process); //promise 형식을 리턴 받음
await Promise.all(promises);
console.log('Done!');
}
51Scrum 16
지원브라우저
async/awaitispartofECMAScript2017andisnotsupportedinInternetExplorer
andolderbrowsers,sousewithcaution.
BabelisaJavaScriptcompiler.
51Scrum 17
4.많은모듈제공&쉬운
의존성관리
Module수비교(2019.10.27기준)
maven(java)모듈:308,721개
npm(nodejs)모듈:1,113,468개
(maven대비3배이상▲)
51Scrum 18
npm(nodepackagemanager)
자바스크립트패키지매니저
Node.js에서사용할수있는모듈들을패키지화하여모아둔저장소역할과패키지설치및관리
를위한CLI(Commandlineinterface)를제공합니다.
또한자신이작성한패키지를NPM에올리고공유할수있습니다.
51Scrum 19
npm모듈의존성관리
예)axios모듈설치시의존성을가진모듈도함께설치
51Scrum 20
모듈설치
$> npm install axios
결과
$> find . -type d -maxdepth 1 | sed -e "s/[^-][^/]*// |/g" -e "s/|([^ ])/|-1/"
|-node_modules
| |-ms
| |-follow-redirects
| |-is-buffer
| |-axios
| |-debug
axios와의존성관계가있는follow-redirects,is-buffer모듈설치됨
51Scrum 21
그렇지만...
NodeJS의단점들...
51Scrum 22
nodejs의일반적인문제점
-JavaScript코드에서catch되지않은예외또는오류이벤트
-메모리사용량이너무많아메모리부족오류가발생가능
-응답이없는응용프로그램,또는중단될수있음
-성능저하
-네이티브코드에서충돌또는중단
51Scrum 23
java와nodejs간의복잡한로직의성능테스트
NodejsversusJavafastestprograms
복잡한처리는java의성능이좋습니다.
51Scrum 24
추가팁
-PM2
-swagger-node
51Scrum 25
마지막으로...
Thereisnosilverbullet-은탄환은없다.
울버린,늑대인간,드라큘라와같은괴물들에게은탄환(oneseeksbulletsofsilver)은한번에무력화시킬
수있는최고의도구이다.
-FredBrooks,『SilverBullet-EssenceandAccidentsofSoftwareEngineering』
1986년프레드브룩스가쓴소프트웨어공학논문에서은탄환의존재에대해최초로언급하였
습니다.이와동시에소프트웨어개발의복잡성을한번에해소할마법같은솔루션(은탄환)은없
다고선언하였습니다.
51Scrum 26
Q&A
무엇이든물어보셔요!
51Scrum 27
참고자료#1
NODE.JSVSJAVA:CHOOSINGABACK-ENDLANGUAGEFORLARGEAPP
DEVELOPMENT
빠르게서비스를개발할수있는Node.js
Helloworld/Webserver
nodejs.dev
UnderstandingEventLoopinNodeJS
[NodeJS]nodejs는single-thread가아니다
51Scrum 28
참고자료#2
Node.jsatPayPal
ModuleCounts
BabelisaJavaScriptcompiler.
NodejsversusJavafastestprograms
1986년프레드브룩스가쓴소프트웨어공학논문
6reasonsyourNode.jsappsarefailing
PM2
swagger-node
51Scrum 29

More Related Content

PPTX
좋은 개발자 되기
PPT
PDF
Web devmobile 8회열린세미나
PDF
Web Framework (웹 프레임워크)
PDF
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
PDF
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
PPTX
[IT교육/IT학원]Develope를 위한 IT실무교육
PPTX
토종 개발자가 바라본 실리콘밸리 개발 트랜드
좋은 개발자 되기
Web devmobile 8회열린세미나
Web Framework (웹 프레임워크)
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[IT교육/IT학원]Develope를 위한 IT실무교육
토종 개발자가 바라본 실리콘밸리 개발 트랜드

Similar to JAVA 개발자가 시작하는 NodeJS (20)

PDF
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
PPTX
Developing iOS with Rx, MVVM
PDF
Event storming based msa training commerce example add_handson_v3
PPTX
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
PPTX
자바스크립트 개발자가 되기 위한 플랜 강은심
PPT
PDF
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
PPTX
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
PDF
The platform 2011
PDF
(OKdevTV) 2024년 12월 5일 개발 이야기
PDF
예비 개발자를 위한 소프트웨어 세상 이야기
PPTX
Node.js 살펴보기
PDF
Dev team chronicles
PDF
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
PPTX
Spring one참석기 ksug
PDF
주니어 개발자의 개인프로젝트 개발기
PDF
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
PDF
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
PDF
Learning Unit Testing with Pair Programming
PDF
모바일 앱 개발을 위한 Agile 적용
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
Developing iOS with Rx, MVVM
Event storming based msa training commerce example add_handson_v3
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
자바스크립트 개발자가 되기 위한 플랜 강은심
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
The platform 2011
(OKdevTV) 2024년 12월 5일 개발 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
Node.js 살펴보기
Dev team chronicles
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
Spring one참석기 ksug
주니어 개발자의 개인프로젝트 개발기
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
Learning Unit Testing with Pair Programming
모바일 앱 개발을 위한 Agile 적용
Ad

More from Daniel Lim (20)

PDF
내가 생각하는 개발자란?
PDF
개발자를 넘어 기술 리더로 가는 길을 읽고
PDF
스크럼 101
PDF
nodejs_101.pdf
PDF
For You
PPTX
Nest js 101
PPTX
피드백 시스템
PDF
13.code split
PDF
12.context api
PDF
11.react router dom
PDF
9.component style
PDF
7.component life cycle
PDF
8.hooks
PDF
6.component repeat
PDF
4.event handling
PDF
5.ref 101
PDF
3.component 101
PDF
2.jsx 101
PDF
1.react 101
PDF
Swagger? OAS? with NodeJS
내가 생각하는 개발자란?
개발자를 넘어 기술 리더로 가는 길을 읽고
스크럼 101
nodejs_101.pdf
For You
Nest js 101
피드백 시스템
13.code split
12.context api
11.react router dom
9.component style
7.component life cycle
8.hooks
6.component repeat
4.event handling
5.ref 101
3.component 101
2.jsx 101
1.react 101
Swagger? OAS? with NodeJS
Ad

JAVA 개발자가 시작하는 NodeJS