'Back-end' 카테고리의 글 목록

Back-end 12

[Node.js] PM2 Clustering(클러스터링) 시 특정 instance 지칭하기

Node의 PM2로 서버를 배포시, 클러스터 모드를 많이 이용하게 될텐데 (Node는 싱글 스레드를 가지기 때문에 멀티 프로세싱이란 개념으로 접근하여 자원을 효율적으로 이용할 수 있게 해주는 것. ) 이렇게 클러스터링을 하게 될 경우 클러스터의 인스턴스의 갯수만큼 서버가 올라간다. 이때 만약 배치성 함수를 서버에 적용했다면 인스턴스의 갯수만큼 해당 함수가 실행될 것이다. 여기다가 이중화서버 등을 이용했을 경우 이 실행 함수의 갯수는 두 배로 늘어나게 될 것 예를 들어, 주기적으로 메일을 발송하는 함수를 서버에 내장하게 됐다면, 동시에 같은 메일이 여러 개가 발송될 수 있을 것. 이런 일은 비효율적일 수 있다. (혹은 일어나선 안될 수도..) 이에 대응하여 서버 실행 스크립트를 분리하여 해당 함수를 실행하..

Back-end/Node.js 2022.05.01

[Node.js] 커스텀 에러 만들기/분석해보자

회사를 다니면서 계속 노드 서버를 만들어오신 동료분께서 잘 만들어 놓으신 에러 객체를 응용하면서 계속 분석해서 쓸 필요가 있다고 생각해 분석을 해보려 한다. 노드의 에러 객체를 상속 받아 에러를 만들어서 쓰게 되면 각종 에러에 대해서 개별적 처리가 가능하다.(데이터 베이스인지.. 암복호화, 파라미터 유효성 에러 등..) 이미 각종 오픈 소스들은 이렇게 쓰고 있다! 에러 리포트를 하는 시스템을 구축할 때에도 꼼꼼하게 파악해 놓으면 좋을 듯 싶다. 꾸준히 정리해서 올려 놓으려 한다. 기본적으로 에러 객체를 상속받아 작성하는 건 이런 식으로 작성하면 된다. class CustomException extends Error{ constructor(errorname){ super(errorname); } } 상속 ..

Back-end/Node.js 2022.04.09

Mocha 테스트 후, 테스팅 터미널 종료하기+ Mocha default timeout 시간 재설정

지난번에 토이프로젝트 배포시에 predeploy script 에 Mocha 테스트를 하도록 했더니 터미널 종료 문제와 타임아웃 시간 재설정이 필요하더라.. 갑자기 생각나서 포스팅 Mocha 테스트완료 후 스스로 종료하게 하기 테스트 코드 실행 후 해당 프로세스 종료 시키고 deploy 하고 싶었는데 프로세스 종료가 안 되서 찾아보니 해당 입력 스트림을 직접 꺼주지 않으면 계속 프로세스가 유지된다고 한다. https://stackoverflow.com/questions/50372866/mocha-not-exiting-after-test Mocha not exiting after test I'm starting with tests in Node. Using mocha, chai and nock (to in..

Back-end/Node.js 2022.03.27

Sequelize 사용하기

시퀄라이즈 사용법 꿀팁 대공개 대방출 (?) 계속 긁어모으고 사용법 찾아내고 있는데 길 잃은 분들 검색어에 걸릴 수 있길 빌며... Sequelize Node에서 데이터베이스를 ORM형식으로 쉽게 다룰 수 있으려면 Sequelize란 ORM이 유명하고 이걸 이용하면 좋다. 시퀄라이즈는 기본적으로 커넥션객체를 재사용한다. 개발자가 신경쓰지 않아도 커넥션 풀을 잘 관리해준다. 클로즈시에는 sequelize.close()를 이용한다. (비동기, 프로미스 함수를 리턴한다.) 시퀄라이즈를 배우기 쉽게 해주려고 GitHub - papb/sequelize-sscce: Base repository for creating and sharing Sequelize SSCCEs 이런 깃헙 레파지토리를 제공한다. 공부할거면 이..

Back-end/Node.js 2021.10.18

multipart/form-data를 처리하는 패키지 비교

파일 업로드를 구현 중 다양한 multipart/form-data 형태를 처리하는 다양한 노드 패키지가 있음을 알게 되었고 각각의 구현된 목적과 특징을 알아보기 위해 이런 저런 서칭을 해보았다. 그러다가 한 글을 발견하여 내용을 정리해보았다. https://bytearcher.com/articles/formidable-vs-busboy-vs-multer-vs-multiparty/ Choose between Formidable, Busboy, Multer and Multiparty for processing file uploads NAVIGATION Breakdown of most popular packages Use Formidable or Multer for proof of concepts and lo..

Back-end/Node.js 2021.10.07

Node에서의 Module

모듈 ? 특정한 기능을 하는 함수나 변수들의 집합. 노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와 다르다. 그자체로 프로그램이자, 프로그램의 부품. variables.js const odd = '홀수'; const even = '짝수'; module.exports= { odd, even }; // module 생략 가능하다. 외부에서 변수 사용 가능 해당 모듈의 odd, even을 import (require) import {odd, even} from "./variables.js"; console.log(odd); -> '홀수' exports module.exports. = () => {} // -> imports imports import 모듈이름 from "모듈경로"; 노드 ..

Back-end/Node.js 2021.08.09

PM2로 무중단 배포하기

React.js로 만든 서버를 배포해야 하는 상황. foreground process인 노드의 특성상 터미널이 꺼지면 서버도 꺼지게 된다. 이러한 점을 관리해 주는 것이 PM2, Forever와 같은 것들이다. foreground process를 background process로 바꿔준다. PM2를 사용해본 경험이 있어 사용해 보기로 한다. PM2에 대해서는 간단히만 알고있다. 하나는 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜주는 것, 그리고 클러스터링. 또는 멀티 프로세싱이다. (클러스터링이라는 개념은 노드에서 제공하는 것으로 알고있다.. ) 싱글 스레드인 노드의 특성상 프로세스를 하나씩 사용할 수 있는데 CPU의 코어수만큼 최대한 프로세스를 사용할 수 있게 해주는 기능도 있다.,,,고는 알고있지..

Back-end/Node.js 2021.07.17

HTTP Request Body, Header 값 받기

1. Request Header @RequestHeader("header의 값") HTTP request의 Header를 위의 애노테이션으로 받을 수 있다. @RequestMapping("/displayHeaderInfo.do") public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding, @RequestHeader("Keep-Alive") long keepAlive) { ============ } 이런 식으로 받을 수 있다. Request Header의 값을 자바 값으로 치환해주는 애노테이션이다. 2. Request Body HTTP Request의 Body부분을 자바의 객체로 변환시켜줌 @RequestBody 3. R..

Back-end/Spring 2021.07.03

[Spring MVC] 이미지 업로드시 S3 Bucket 에 업로드하기 (2) - S3연결 및 비즈니스 로직짜기

일단 맨 처음엔 외국 문서위주로 읽었는데 대충 알겠는데 감이 잘 안옴... 코드는 알겠어... 근데 순서를 어떻게 설정하지? 한국 문서 먼저 여러가지를 쭉 읽었슴다.. https://charlie-choi.tistory.com/236 https://ecsimsw.tistory.com/entry/AWS-%EC%82%AC%EC%9A%A9%EA%B8%B0-S3-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0?category=989733 이 두 가지를 제일 많이 참고했어요 감사합니다...ㅎㅎ 그리고 https://www.baeldung.com/aws-s3-java 이걸 읽고 제일 필요한 핵심기능이 뭔지 감을 잡고, 설정하는 부분이라던지 비즈니스 로직은 저 두 분의 문서를 보면서 최대한 코린이인..

Back-end/Spring 2021.06.27

[Spring MVC] 이미지 업로드시 S3 Bucket 에 업로드하기 (1) - AWS 계정 설정, 버킷 생성, 권한 설정

이미지 업로드 할 때마다 로컬 서버의 메타 데이터에 저장되서 약간 싫었다... 여러 조원들이 함께 개발하는데 함께 이미지정도도 공유를 못한다는 게 살짝 개발효율이 떨어지기도 한다는 생각도 들고... AWS S3 Bucket이 비싸지도 않고 편리했던 기억이 났다... 노드에서는 쉬웠는데... 한 번 해볼까? 그래서 자료조사를 해봤는데 부트 예제는 많았는데 소수의 한국어 예제 사이에서 스프링 MVC예제는 별로 없었다.. 근데 왠지 될 것 같았다 (?!)아..나의 쓸데없는 무한 긍정;; 지금 사용하는 레거시 스프링 서버에서는 잘 될지는 모르겠지만 한 번 도전해볼법 하다고 생각했다. 딱 하루만 도전해보자...난....카리스마있는...신녀성이니까....!(그리고 카리스마는 없었고 코드만 남았다.) 1. AWS에 ..

Back-end/Spring 2021.06.27