본문 바로가기

Programming26

[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.
[DB/MYSQL] 자료형 char, varchar, text 의 차이점 char - char (n) 고정 크기 문자열 데이터 - n 은 바이트로 문자열 크기를 정의하며, 1에서 255 사이의 값임 - 값에 멀티바이트가 포함되면 길이는 지정한 n 보다 더 짧아질 수 있음 ※ n은 문자열의 길이로 볼 수 있으나 싱글바이트 문자인 경우만 해당함. 싱글바이트 : 0x00 ~ 0x7F 범위의 문자(아스키코드) + 0x80 ~ 0xFF 범위의 확장 문자 멀티바이트 : 1byte 만으로는 표현이 불가능한 문자를 말함(한글의 경우 각 문자당 2byte의 크기임) UTF-8 인코딩의 경우 한 문자를 표현하기 위해 1~4byte 까지 사용함(https://ko.wikipedia.org/wiki/UTF-8) UTF-8 - 위키백과, 우리 모두의 백과사전 UTF-8은 유니코드를 위한 가변 길이 .. 2021. 12. 28.