9.1 로그 관리
- 로그: 시스템 운영 시 발생하는 모든 데이터
- 시스템을 운영하면서 예기치 못한 오류 혹은 치명적인 장애가 발생했을 때,
장애 원인을 추적하고 시스템을 안정적으로 운영하기 위해서 반드시 제대로 관리 필요
- winston: 로그 관리 대표적인 모듈 중 하나
9.2 메일링 서비스
- Nodemailer
- 다른 모듈에 의존성이 없는 독립된 모듈
- 유니코드 지원해서 모든 언어 지원
- 파일 첨부 기능 지원
- 일반 텍스트뿐만 아니라 HTML을 본문 내용에 사용 가능
- TLS/STARTTLS를 사용해서 안전한 이메일 전송 지원
- OAuth2 인증 지원
- SMTP 연결 위한 프록시 사용 가능
- SMTP transport
- SMTP(Simple Mail Transport Protocol): 인터넷에서 이메일을 보내기 위해서 이용되는 프로토콜
- nodemailer.createTransport()
- 이메일 보내기
- transporter.sendMail()
- Gmail을 사용해서 이메일 보내기
- email, 앱 비밀번호 설정
- mailtrap 서비스 이용해서 이메일 보내기
- 실제로 이메일을 보내지 않고 정상적으로 보내지는지 테스트 가능한 가짜 SMTP 서버
- 프로젝트 중에 발송한 이메일 정보를 한 곳에서 모아서 확인 가능한 장점
9.3 작업 스케줄러(Job Scheduler)
- node-cron
- 작업 스케줄 설정하기
- 타임존 설정하기
- 해외 서비스 고려하면 반드시 타임존 설정 필요!
- ScheduledTask() 함수
- start()
- stop()
- destroy()
- validate()
- 정해진 시간에 이메일 발송하기
- node-cron을 통해 기업에서 운영하는 다양한 집계 데이터를 정해진 주기마다
담당자에게 발송하는 프로그램을 활용하면 업무 효율 극대화 가능
9.4 엑셀 파일 처리
- xlsx
- 엑셀 파일 읽기
- xlsx.readFile()
- 엑셀 파일 내용 수정하기
- xlsx.writeFile()
- 클라이언트에서 업로드한 엑셀 파일 읽기
- multer, xlsx, mysql 모듈 이용
- 엑셀 파일 생성하기
- xlsx.utils.book_new() 함수 사용
- 셀 스타일
- xlsx pro 버전 (유료)
- xlsx-js-style 모듈
- 데이터베이스 데이터를 조회해서 엑셀 파일로 생성하기
- MySQL DB에 저장된 데이터 조회 후 엑셀 파일 생성하는 async 함수 만들어 사용
- 이메일에 엑셀 파일 첨부하기
- 물리적인 엑셀 파일을 생성하지 않고, 엑셀 데이터를 buffer로 생성해서 이메일에 바로 첨부
(영구적으로 엑셀 파일을 보관할 필요 없을 경우 활용)
- 엑셀 파일 클라이언트로 다운로드
- 클라이언트로부터 엑셀 파일 다운로드 요청 시,
DB에 저장된 데이터를 조회하고 조회된 데이터를 엑셀 파일로 생성해서 클라이언트로 응답
9.5 iCalendar 이벤트 생성
- iCalendar 이벤트 생성하기
- ics 모듈의 createEvent() 함수 이용
- iCalendar 이벤트 이메일 발송하기
- nodemailer를 이용하여 이메일로 전송
- nodemailer로 전송하는 메시지의 옵션인 icalEvent 사용해서 iCalendar 이벤트를 첨부해서 보내기
9.6 웹소켓
- 웹소켓이란
- 웹소켓: 클라이언트와 서버 간의 양방향 통신 가능, 실시간 데이터 전송 가능
- 클라이언트의 요청 없이도 서버에서 클라이언트로 데이터 전송 가능
- 서버에서 DB로 단 한 번의 접속 요청이 일어나고, 변경사항이 있을 때만 클라이언트에 해당 정보 전송
- 실무 활용
- 지도, 대시보드, 실시간 지표
- 웹소켓 서버 구현하기
- 클라이언트와 서버 양쪽에 구축해야 함
- socket.io 모듈
- 웹소켓 클라이언트 구현하기
9.7 크롤링
- 크롤링이란
- 크롤링: 웹 페이지를 그대로 가져와서 웹 페이지 안에 있는 필요한 데이터 추출
- axios, cheerio 모듈
- axios 모듈: 브라우저, Node.js를 위한 Promise API를 활용하는 HTTP 비동기 통신 라이브러리
- cheerio 모듈: Node.js에서 axios를 통해 가져온 웹 페이지를 파싱하여
전체 페이지 중에서 필요한 부분의 정보만 가져옴
- 인프런 강의 목록 크롤링하기
- 크롤링 프로그램을 이용하여 웹 페이지를 직접 방문하지 않고도
원하는 정보를 주기적으로 수집하고 활용할 수 있기 때문에 실무에서 매우 유용!
9.8 forever
- forever: Node.js 앱을 실행시키고 비정상 종료가 되었을 때 자동으로 재실행해 주는 CLI 툴
- npm install -g forever
- forever start
- forever stop
9.9 클러스터 모드
- cluster 모듈: CPU 코어를 모두 사용해서 작업을 병렬로 처리 가능
9.10 PM2
- PM2 사용하기
- PM2: Node.js 프로세스 관리 대표적인 도구, 별도의 코딩 없이 서버 자원 모두 사용하고 무중단 서비스 가능
- 클러스터 모드로 실행하기
- pm2 start
- pm2 stop
- pm2 monit
- pm2 start app.js -i 4
- Ecosystem File
- PM2에서 2개 이상의 멀티 애플리케이션 관리할 때 js configuration 파일 사용
- 여러 개의 프로세스를 동시에 관리 가능
'Books > Node.js 프로젝트 일주일 ✔️' 카테고리의 다른 글
[Node.js 프로젝트 투입 일주일 전] 10장 - Node.js 미니 프로젝트: 제품 판매 웹앱 구현 (마지막) (0) | 2022.05.18 |
---|---|
[Node.js 프로젝트 투입 일주일 전] 8장 - 데이터베이스 사용하기 (0) | 2022.05.10 |
[Node.js 프로젝트 투입 일주일 전] 7장 - Express로 웹 서버 구축하기 (0) | 2022.05.08 |
[Node.js 프로젝트 투입 일주일 전] 6장 - json-server 이용하기 (0) | 2022.05.07 |
[Node.js 프로젝트 투입 일주일 전] 5장 - Node.js 내장 모듈과 객체 (0) | 2022.05.07 |
댓글