서비스의 기획부터 구현까지의 개발 flow를 설명합니다. 어떻게 코로나맵을 비롯한 20개의 사이드프로젝트를 만들었는지 기획 부터 개발, 서비스 배포까지의 전체적인 플로우를 설명할 예정입니다. 아이디어와 발생할 수 있는 오류와 이슈 들에 대해서 생각해보고 서비스 flow를 간략하게 설명, 어떤 project를 했을 때 기획, 배포, 아키텍처 구상을 어떻게 해야 될 지 설명, 사이드 프로젝트는 어떤 flow로 구성하는 지 등의 내용들을 강연식으로 전달합니다. 본 강의를 통해 수강생 분들께서 실제 토이프로젝트를 진행할 때 어려움을 겪는 문제중 하나인 기획, 개발 관련 문제에 대해 같이 고민하고 조언을 드리고자 합니다.
이론
– 코로나맵 관련 개발 배경 및 기획 설명
– 아이디어로부터 실제 기획을 다듬고 구체화하는 flow
실습
– 코로나맵 관련 개발 일지 및 어떻게 아이디어를 얻고 실행했는가에 대한 강연
– 아이디어와 발생할 수 있는 오류, 이슈 들에대해 설명, 서비스 flow에 대한 강의
– 프로젝트를 기획시 배포와 어떤 아키텍쳐를 구상해야하는지에 대한 설명
– 수강생 분들의 아이디어 사전 조사후 1:1 코멘트
헷갈리기 쉬운 Server와 Client의 차이와 이에 대한 설명을 통해 정확히 각각의 역할이 어떠한지 알게 됩니다.
브라우저에서만 활용되던 javascript가 백엔드에 쓰일 수 있었던 중요한 계기인 Node.js 를 소개하고, 중요한 특징인 ‘이벤트 기반’, ‘non-blocking I/O비동기 방식’, ‘싱글 스레드 기반’ 등을 이미지와 예시를 통해 제공함으로써 앞으로 배울 Node.js가 정확이 어떤 것인지, 또한 어디에 쓰이고 장단점이 무엇인지 알고 적재적소에 쓸 역량을 배울 수 있습니다. 또한 Node.js에 기본적으로 내장되어 있는 모듈인 url, http module을 통해 서버를 직접 구축해봅니다. 그리고 Node.js 에서 중요하고 강력한 도구중에 하나인 패키지를 쉽게 설치하고 관리할 수 있는 npm에 대해 설명하여 앞으로 설치할 패키지등을 어떻게 관리하고 설치하는지 알 수 있습니다.
또한 이번 강의를 통해 만들어 볼 SNS프로젝트를 설명하고 초기세팅을 진행할 예정입니다. 해당 SNS에서 배울 수 있는 기술 스택 및 활용방안, 앞으로 어떤식으로 진행되는 지를 알려드릴 예정입니다.
이론
– Server와 Client 대한 이해
– Node.js 소개
– 이벤트 설명
– npm 설명 및 패키지 설치
실습
– callback function 작성 및 실행
– module 생성 및 불러오기
– nodemon, express 패키지 설치 및 실행
– SNS프로젝트 기획 설명, 기술 스택, 활용 방안 설명 및 초기 셋팅 진행
서버 프로그래밍을 공부하다 보면 DataBase(DB)라는 말을 한번쯤 들어봤을 것이라 생각합니다. DB는 데이터를 효율적으로 저장하고 이를 개발자의 요구에 맞게 쿼리(Query)작업을 통해 해당 데이터들을 생성하고(Create) 불러오고(Read) 수정하고(Update) 삭제하는 (Delete) 좀더 쉽고 효율적으로 제어할 수 있습니다.
그중에서 Node.js와 가장 궁합이 좋은 MongoDB를 소개하고 사용해볼 예정입니다. 또한 MongoDB를 좀 더 쉽게 사용할 수 있게 도와주는 Mongoose를 활용해봅니다. MongoDB를 무료로 호스팅해주는 Altas를 통해 호스팅해보는 시간을 가져보고 실제 데이터들을 Mongoose를 통해 제어함으로써 서버에서 어떻게 데이터를 핸들링하는지 직접 수행해봄으로써 학습하고자 합니다.
프로젝트에서 글쓰기(Create), 디테일 페이지 및 전체 게시물 조회(Read), 게시물 수정(Update), 게시물 삭제(Delete) 기능을 추가 해봄으로써 실제 기능들이 어떻게 작동하고 DB와 통신을 하는지 배울 예정입니다.
이론
– DB, NoSQL, MongoDB, Mongoose 설명
– Node.js 와 DB 연계 및 CRUD 실습
– 게시물 업로드, 수정, 삭제, 읽기 기능 설명 및 적용
실습
– MongoDB 프리티어 호스팅
– Mongoose 및 Altas 설치 후 연동
– Express 서버와 MongoDB 연동 후 CRUD 실행(Create, Read, Update, Delete)
– 게시물 업로드(Create), 게시물 수정(Update), 게시물 삭제(Delete), 게시물 읽기 및 전체 게시물 조회(Read) 페이지 제작 및 기능 구현
비동기 방식인 Node.js 특성상 코드를 짜다보면 Callback Hell이라는 콜백 함수 지옥에 빠질 수 있습니다. 이를 해결해주기 위해 ES6 부터는 흐름제어 패턴중 하나인 Promise를 포함시켰고, Node 7.6 ver부터 async 와 await가 지원되었습니다. Promise와 async, await는 왜 탄생하게 되었는지 어떤 역할을 하고 있는지, 어떻게 사용해야하는지 예시를 들어 설명합니다.
또한 앞서 만들었던 mongoose를 통한 CRUD 기능을 Promise와 async/await을 통해 직접 구현하여 node.js의 비동기 패턴이 가지는 문제를 개선해볼 예정입니다.
이론
– Promise & async,await 이해
– Node.js 비동기 개선하기
실습
– Promise & async/await 설명 및 코드 작성
– Promise &async/await 을 통한 비동기 패턴 개선
– 해당 기능 에러처리
데이터에는 가장 기본적인 String 형태의 텍스트 데이터가 대부분 이지만, 요즘에는 이미지, 영상등 다양한 멀티미디어 형태의 데이터를 저장하고 제어해야합니다. 본 강의에서는 Node.js에서 이미지를 쉽게 핸들링할 수 있는 multer 모듈을 통해 실제 이미지를 업로드 해볼 예정입니다.
또한 이를 DB에 적용하기 위해 실무에서 정말 많이 쓰이는 AWS S3에 이미지를 업로드하는 방법을 배움으로써 S3 bucket 생성및 초기셋팅, 텍스트 형태의 데이터 뿐만 아니라 이미지를 업로드하고 제어 하는 방법을 배울 예정입니다.
게시물 업로드 시 텍스트 뿐만 아니라 이미지를 첨부하는 방식을 배우고 이를 S3에 올려 URL로 관리하는 방법을 직접 구현할 예정입니다. 이를 통해 1개의 이미지, 여러장의 이미지를 업로드 하는 방법에 대해 배울 수 있습니다.
이론
– AWS S3에 이미지 업로드 후 관리
– 기본 웹 프로젝트 실행
실습
– AWS S3 소개 및 bucket 생성, 이미지 업로드
– multer,aws-multer설치 및 이미지 업로드
– 게시물 이미지 업로드 기능 추가
SNS에서 중요한 기능인 회원가입과 로그인을 배워볼 예정입니다. 대표적인 패키지인 passport와 JWT를 통해 회원가입을 진행하고 로그인을 하는 기능을 구현해 봅니다. 본 강의를 통해 client는 어떻게 회원가입과 로그인을 요청하는지, 자동로그인은 어떠한 방식으로 구현되는지를 알 수 있으며, sever에서는 어떻게 회원 정보를 입력받아 로그인 및 회원 가입을 진행하는지, 또한 DB에는 어떠한 방식으로 저장할 수 있는지 배울 수 있습니다.
이론
– passport 기본 개념 및 작동원리 설명
– JWT(Json Web Token)의 기본 개념과 로그인 기능 설명
– 로그인 및 회원가입 기능 페이지 제작
실습
– 로그인 및 회원 가입 페이지 제작 및 Routing
– CORS(Cross Origin Resource Sharing) 현상 소개 및 문제 해결하기
– passport를 통한 회원가입 기능 구현
– JWT를 활용한 로그인 기능 구현 및 자동 로그인 설정
SNS 게시물 업로드 시 해시태그 기능을 구현하고 이를 검색하는 기능을 배우고 구현해볼 예정입니다. 게시물에 해시태그를 부여하는 기능을 통해 mongoose의 index및 search를 활용할 수 있습니다.
또한 댓글 기능을 추가하여 사용자가 해당 게시물에 댓글을 추가하는 부분을 추가합니다. 이를 통해 사용자가 쓴 댓글을 DB에 업데이트 하는 원리를 배울 수 있습니다.
이론
– 해시태그 기능 원리 및 구현 설명
– indexing 및 검색 기능 설명
– 댓글 기능 구현 및 설명
실습
– 해쉬태그 기능 구현 및 검색 기능 추가
– 게시물 댓글 기능 구현 및 설명
해당 게시물에 좋아요 버튼을 추가하고 이를 구현해 볼 예정입니다. 다른 SNS를 보면 좋아요를 누르더라도 브라우저가 새로 고침을 하지않고 서버와 통신을 주고 받는 현상을 본적이 있으실 것 입니다. 이는 바로 Ajax를 통한 통신의 결과물입니다. Ajax를 통해 좋아요 기능을 구현해봄으로써 비동기 통신의 개념을 배우고 실습합니다.
이론
– Ajax소개 및 활용 비동기 통신 개념 배우기
– Ajax를 활용한 좋아요 기능 원리 설명
– Ajax를 사용한 실제 서비스의 기능 설명
실습
– Ajax를 통한 GET, POST 통신 보내기
– Ajax를 사용하여 게시물에 좋아요/취소 기능 구현하기
– Ajax 예외처리를 통해 완성도 높이기
– Ajax를 활용한 무한 스크롤 기능 구현
프로젝트에서 socket.io를 통해 실시간 채팅을 구현해볼 예정입니다. 전체 채팅 및 회원간의 채팅 기능을 통해 SNS의 기능을 강화할 예정입니다.
또한 socket.io의 모듈화를 통해 이를 관리하는 방법에 대해서 배우고 채팅방을 직접 설계하고 만들어봄으로써 어떠한 방식으로 실시간 통신이 이루어지는지, 개인 채팅은 어떻게 구현하는지 배울 예정입니다.
이론
– socket.io 개념 소개
– socket.io를 활용한 전체 채팅 및 1:1 채팅 기능 설명
실습
– SNS에서 전체, 1:1 채팅방 만들기
– socket.io 통신 구현
– room을 이용한 채팅방 구현
서버 개발자라면 뗄래야 뗄 수 없는 AWS에 대해 알아보고 실습을 통해 배포에 대한 자신감을 키우고자 합니다. EC2 instace를 생성하고 Elastic IP(ElP)를 통해 고정 IP를 발급받는 방법과 FileZila를 통한 내 서비스를 배포하는 방법을 다룰 예정입니다. 또한 Node.js는 싱글스레드라는 특성을 가지고 있어 단일 CPU코어에서 실행됩니다.때문에 서버 컴퓨터가 가지고 있는 자원을 최대로 활용하지 못하는 문제를 가지고 있죠, 또한 무중단 서버를 만들기 위해서 많은 점을 고려해야하는 부분이 생기곤 하는데요. 이를 pm2라는 패키지를 통해 쉽게 관리할 수 있습니다. pm2를 실제로 활용해봄으로써 AWS instance를 무중단 서버로 만들어 봅니다.
해당 강의를 통해 수강생 여러분들은 서비스를 직접 배포해보는 방법을 배우고 이를 활용해볼 수 있습니다.
이론
– AWS EC2 소개 및 배포
– 무중단 서버의 필요성과 pm2 설명
실습
– AWS EC2 instance 소개 및 생성
– AWS Elastic IP(ElP) 소개 및 고정 IP 발급
– 내 컴퓨터에 있는 코드를 instance에 업로드 하기 위한 FileZilla 사용
– 무중단 서버를 만들기 위한 pm2 패키지 소개 및 사용