본문 바로가기

분류 전체보기46

[Back-End] Node.js 를 효율적으로 사용하는 법은? (무중단, 병렬처리) Node.js 특징 - Node.js는 싱글 스레드(Thread)로 동작하고, 단일 CPU 코어에서 실행됨 - 이는 서버의 CPU가 멀티 코어(8, 16 코어 등)여도 단 하나의 코어만 사용함 Cluster 특징 - CPU 코어를 모두 활용하여 병렬 처리 작업이 가능케 해주는 Node.js 모듈 - CPU 당 하나의 Worker 생성 (기본값) - Master 와 Worker 로 구성되며, Master 는 Worker 를 관리함 - Master 가 죽는 경우 모든 Worker 는 죽게됨 - 아래와 같은 번들 플러그인이 제공됨 cli : 클러스터를 관리할 수 있는 명령창 debug : 클러스터에 대한 디버깅 정보 logger : Master, Worker 로그 pidfiles : Master, Worker.. 2022. 1. 6.
[Back-End] Web 운영을 위한 로그 관리 로그 - 로그는 시스템을 운영할 때 발생하는 모든 데이터를 의미함 - 시스템 운영 시 예기치 못한 오류, 치명적인 장애가 발생했을 때 그 원인을 추적하기 위해 로그 관리가 필요함 로그 관리 모듈, Winston Winston.js - 로그를 관리하는데 사용하는 대표적인 Node.js 모듈 로그 레벨 - 각 로그별 중요도를 나타내기 위해 사용하는 로그 분류 기준 - 가장 중요한 것부터 덜 중요한 순으로 오름차순 정렬된 값 - RFC5424 의 심각도 순서를 차용함 Winston 에서의 로그 레벨[1] 설치 방법 npm install winston 예제 코드 // logger.js const winston = require('winston'); const winstonDaily = require('winst.. 2022. 1. 5.
[Back-End] 이메일 프로토콜 (SMTP, IMAP, POP) & Nodemailer 사용법 SMTP (Simple Mail Transfer Protocol) - TCP 25번 포트 사용 - SMTP는 연결 지향 텍스트 기반의 프로토콜 - 요구/응답 메시지뿐 아니라 모든 문자가 7bit ASCII로 되어있어야 한다고 규정되어 있음 ※ 란? : 타자기에서 유래된 말로 각 단어는 아래와 같은 의미를 지님 - CR(Carriage Return) : 현재 커서를 줄 올림 없이 맨 앞으로 이동, 아스키코드로는 0x0D - LF(Line Feed) : 커서는 그 자리에 그대로 둔 상황에서 종이만 한 줄 올려 줄을 바꿈, 아스키코드로는 0x0A SMTP 통신 예시 [1] SMTP 기본 명령어 모음 [4] IMAP (Internet Messaging Access Protocol) - TCP 143번 포트 사용.. 2022. 1. 4.
[Data Structure] 자료구조 - 2 (그래프, 트리, 해쉬) 그래프 (Graph) - *정점(Vertices)와 *간선(Edge)로 구성됨 - 무방향(Undirected)과 방향(Directed) 그래프 2가지의 형태가 존재함 - 방향 그래프의 경우 다음 노드를 탐색할 때 지정한 경로밖에 갈 수 없음 - 필요에 따라 노드의 추가, 삭제가 용이함 * 정점(Vertices) : 노드(Node)라고도 하며, 탐색이 가능한 각 지점들을 의미함 (아래 사진의 A, B, C, D) * 간선(Edge) : 각 정점에 연결된 경로를 의미함 (아래 사진의 AB, AD ... DB) ※ 방향그래프의 경우 정점 D에서 시작 했을 때 다음 탐색 경로는 정점 B이다. 방향성과 무방향성 그래프 트리 (Tree) - 계층적 자료구조 형태 - 필요에 따라 노드의 추가, 삭제가 용이함 - 각 .. 2021. 12. 30.