[Node.js로 구현하는 쇼핑몰 프로젝트 CAMP/강사인터뷰] “Node.js로 쇼핑몰 서비스를 개발 및 배포해보는 실무 경험을 쌓아드리겠습니다.” 박준영 강사님

 

Node.js 등장으로 프론트엔드에서만 사용되었던 JavaScript 언어로 백엔드 개발까지 가져갈 수 있게 되었습니다.
많은 개발자들이 주목하고 있는 Node.js를 풍부한 실무 경험을 바탕으로 핵심만 콕콕 집어드릴
박준영 강사님의 인터뷰, 지금 만나보세요!

 

main_nodejs_junyoungpark

 


 

안녕하세요. 자기소개 부탁드립니다.

안녕하세요. 웹 개발자 박준영입니다.
풀스택 개발자로 핸드메이드 입점형 쇼핑몰 (www.atplace.co.kr) 의 퍼블리싱을 제외한 자바스크립트, 백엔드, 안드로이드 앱을 혼자 개발했습니다.
저는 처음 PHP로 프로그래밍을 시작했었는데 가르쳐주는 사람이 없었기 때문에 다른 사람의 소스코드를 무작정 한 줄 한 줄 따라하며 개발에 입문해서 무척 어려웠던 기억이 납니다. 독학을 하셨거나 마땅한 사수가 없는 분들이라면 다들 공감하실 어려움이라고 생각합니다.

 

쇼핑몰만들기nodejs1
(사진 : 강사님이 개발한 atplace 쇼핑몰 화면)

 

그럼 어떻게 Node.js를 시작했고 강의까지 진행하게 되신 건가요?

처음에는 백엔드 개발로 시작을 했었고 나중에 다른 프로젝트를 하면서 프론트엔드 개발로 영역을 확장했습니다. 프론트엔드 개발을 하다보니 자연스레 JavaScript를 사용하게 되었고 프론트엔드 개발에서만 쓰였던 자바스크립트 언어가 Node.js의 등장으로 백엔드 개발까지 가능하게 되는걸 보고 Node.js 를 시작하게 되었습니다.
프론트엔드 개발에서 반드시 쓰이는 언어인 만큼 서버단인 백엔드에서도 자바스크립트로 통일하여 개발을 해보고 싶었습니다. 또한 개발자들 중에는 하나의 언어로 모든 개발을 하는 꿈(?)을 갖고 계신 분들이 있는데 저 또한 그런 꿈을 품고 있는 사람들 중 하나여서 공부를 하게 되었습니다.
자바스크립트를 서버 개발에서 사용하려는 시도가 여러 번 있었는데 Node.js의 경우 Non-blocking io로 높은 성능 향상을 내며 인기를 끄는 모습을 보고 흥미를 갖게 되었죠.
저처럼 수강생분들 중에도 하나의 언어로 백엔드와 프론트엔드를 동시에 개발하는 경험을 해보고 싶은 분들이 있지 않을까 해서 강의를 시작하게 되었습니다.

 

Node.js의 장점은 무엇인가요?

JavaScript 기반으로 만들어졌고 등장한 지 얼마 안되었기 때문에 레거시 코드(예전 코드)가 적습니다. 레거시 코드가 많으면 협업하기도 힘들고 서비스의 성능도 저하되죠.

또 다른 장점으로는 모듈이 많다는 것입니다. 전세계적으로 프론트엔드 개발자까지 포함하여 자바스크립트를 사용하는 인력이 많기 때문에 개발자들이 구현해놓은 모듈 중 가장 좋은 것을 선택하여 내 서비스에 접목시켜볼 수 있습니다. 또한 다른 개발자들이 이미 구현해놓은 코드를 살펴보며 스스로 발전을 할 수도 있죠. 물론 모듈을 직접 구현해볼 수도 있습니다.

 

Node.js에서 가장 중요하게 생각하는 개념이 무엇일까요?

JavaScript가 *프로토타입 언어라서 다른 언어와의 차이점이 있습니다. 이 차이점을 이해하는 것이 Node.js를 잘 사용하는 방법입니다. (프로토타입 언어 : 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스(class-less), 프로토타입 지향(prototype-oriented) 혹은 인스턴스 기반(instance-based) 프로그래밍이라고도 한다. 출처 : 위키백과) 우리 강의 3회차에서 이 차이점을 다뤄보며 좀더 이해가 쉽게 풀어서 설명해드리려 합니다.
또한 실무에서는 콜백헬(코드 내 함수가 중첩됨에 따라 받아야 할 콜백이 수없이 반복되어 가독성이 떨어져 다른 프로그래머와 협업이 어려워짐)이 자주 발생하는데, 이를 해결할 수 있는 방법을 제너레이터와 Co라는 방식으로 설명할 예정입니다.
아직은 아니지만 Node.js가 stable 버전이 있는 async와 await을 지원하게 되면 제너레이터와 비슷한 점이 많기 때문에 추후에 개발을 하실 때 도움이 될 것 입니다.

 

 

그럼 이 강의는 어떤 분들이 수강하기에 적합할까요?

이 강의에서 제일 많이 얻어 가실 수 있는 분들은 기존에 자바스크립트 언어에 익숙했던 프론트엔드 개발자분들이고, 모르시더라도 HTML과 CSS를 알고 프로그래밍 언어를 하나라도 접해보신 분이라면 Node.js를 경험하시기에 충분하실 것 같습니다.
물론 강의 초반에 HTML과 CSS를 배워보는 시간이 있지만 Node.js에 집중된 강의이므로 코드카데미나 생활코딩을 통해 학습을 미리 해오신다면 강의를 무리 없이 따라오실 수 있을 것 같습니다. 실제 강의에서 다룰 쇼핑몰 프로젝트의 프론트엔드 CSS 부분은 Bootstrap 라이브러리를 사용하여 프론트엔드 표현 부분의 부담을 최소화할 예정입니다.

 

Nodejs2

 

예비 수강생분들 중에는 백엔드 개발 경험이 없는 분들이 대다수일 텐데요, 이분들이 수업을 잘 따라갈 수 있도록 도와주는 자료가 있을까요?

프로그래밍이 익숙하고 로직 설계가 익숙한 분들 그리고 세션이나 쿠키 및 백엔드 기초지식이 있으신 분들이 수강하시면 사실 가장 빠르게 Node.js를 익히실 수 있습니다. 하지만 말씀하신 것처럼 백엔드 개발 경험이 없는 분들이 대다수이고 이 개념에 익숙해지려면 적어도 3~4달 정도의 경험이 필요합니다. 백엔드 개념을 보다 빠르고 정확하게 이해하실 수 있도록 각각의 기능들을 git commit log로 제공하여 이전 소스와의 차이점을 보고 따라올 수 있도록 도와드립니다.
또한 기능을 구현하면서 강사가 구현한 순서들을 웹 사이트로 제공해서 ppt와 비교하며 자연스럽게 논리 흐름을 익히면서 따라올 수 있게 도와드리겠습니다. 혹시 하다가 막히는 경우를 위해 온라인 커뮤니케이션 채널인 슬랙(Slack) 채널을 개설하여 질문에 대한 답변을 실시간으로 제공할 생각입니다.

 

이 수업의 강점은 무엇이라고 생각하시나요?

‘실무’입니다. 이 강의는 실무에 가까운 강의입니다. 보통 서비스를 만들 때 최대한 많이 사용되는 기능들을 Node.js로 구현한다고 생각하시면 됩니다. 결제 기능, SMS 문자 전송, 배송조회를 위한 크롤링 등을 개별적인 서비스가 아닌 하나의 복합적인 서비스로 직접 구현해봅니다.
이를 위해 제품 등록 페이지, 유저에게 보이는 제품 상세 페이지, 결제 페이지, 장바구니 페이지 및 로그인 페이지 등 쇼핑몰을 구성하는 최대한 다양한 백엔드 경험을 해보실 수 있도록 커리큘럼을 구성했습니다. 또한 13회차에 도커로 배포를 경험하기 때문에 훨씬 풍부한 경험을 가져가실 수 있습니다.

 

노드백엔드개발3

 

Docker를 사용하면 서버 증설을 보다 간편하게 처리한다고 상세페이지에 나와있던데, 구체적으로 어떤 점에서 좋은건가요?

일반적으로 서비스의 사용자가 증가하면 서버를 증설해서 이용이 원활하게 해야하는데 하나의 도메인(주소)으로 접속시 모든 서버들을 병렬처리 하는 것부터가 고비라고 할 수 있습니다. 매번 서버 증설 때마다 동일한 소스를 서버에 올리는 등 셋팅이 오래걸리고 까다로운 편이죠. 하지만 도커를 사용하면 여러 셋팅들을 하나의 파일로 만들어 서버에 올려놓기만 하면 나중에는 그걸 복사해서 쓰기만 하면 되므로 비교가 안될 정도로 간편합니다. 물론 도커와 비슷한 서비스가 있지만 도커가 설정이 간편하고 기능이 많기 때문에 실무에서도 많이 사용합니다. 그래서 이번에 우리 강의에서도 함께 다뤄봅니다.

 

이 강의를 들으면 수강생이 어느 정도 수준까지 구현이 가능할까요? 바로 실무에 적용해볼 수 있을까요?

강의 내내 서비스를 구현하는데 필요한 기능들을 연결하는 법을 배우게 될 것입니다. 결제 모듈 및 SMS 연동은 실무에 바로 적용하실 수 있습니다. 만약 수강생분이 온라인 강의 사이트나 쇼핑몰 기능이 들어간 회사에서 근무하신다면 자사 서비스에 더 빠르게 적용하실 수 있습니다. 하지만 강의를 한 번 듣고 바로 스스로 서비스를 론칭하는 데까지는 수많은 버그와 싸워나가는 많은 연습이 필요합니다.
종강 후에도 스스로 오류를 찾아내고 문서를 찾아 해결 및 적용하는 힘을 기를 수 있도록 함께 도와드리겠습니다.

 

마지막으로 앞으로 만나게 될 미래의 수강생분들께 한 말씀 부탁드립니다.

경력이 많지 않은 일반적인 주니어 개발자라면 처음 백엔드 개발을 할 때 각 기능관련 문서(결제모듈 문서, Docker 등등)를 보고 실제 서비스와 연결하는 예시 코드를 구하기가 쉽지 않습니다. 우리 수업에서는 API 연동을 통해 기능을 만들어가는 것을 연습합니다. 물론 어느정도 시행착오를 거치면 누구나 할 수 있지만 제가 실무 경험으로 느낀 노하우를 전달하며 여러분이 시행 착오를 거치는 시간을 최대한 줄여드리겠습니다.
모든 수강생이 수업을 마칠 때 즈음에는 커리큘럼에 있는 내용을 이해할 수 있도록 핵심 내용을 알기 쉽게 전달하기 위해 많이 노력하겠습니다. 적극적으로 수업에 참여해주세요.
저는 프로그래밍을 배울 때 ‘백견이 불여일타’라는 문구를 좋아하는데 강의 기간 동안 코딩을 하는 습관을 몸에 심어서 고민을 깊게 하지 않아도 손이 저절로 코드를 구현할 수 있도록 함께 프로그래밍 경험을 반복해 나가고 싶습니다. 오류가 발생한다고 당황하지 마세요. 저와 조교님이 함께 백업해드리겠습니다. 강의 때 뵙겠습니다. 감사합니다.

 


 

백엔드 개발, Node.js로 정복하자!
[Node.js로 구현하는 쇼핑몰 프로젝트 CAMP] 자세히 보기 >>>

Recent Posts