Backend
-
aws sqs를 이용한 lambda로 fcm push 전송하기Backend/NestJS 2024. 1. 4. 18:37
현재 Cron으로 특정 시간대에 push 알림이 동작한다. 봇서버 하나에서 모든 처리를 다 해서, Message Queue를 이용해 lambda에서 푸시를 전송하기로 했다. 목차 1. AWS SQS 생성 2. NestJS SQS 처리 코드 작성(producer / customer) 3. AWS Lambda 코드 작성 4. AWS Lambda 생성 및 설정 1. AWS SQS 생성 푸시 알림의 경우 FIFO일 필요가 없어서, 스탠다드를 선택했다. 그리고 이름을 지정해준다. 따로 더 설정할게 없으면 스크롤을 내려서 생성 버튼을 누른다. 생성이 되었다면, Name, URL, Region을 복사해두자. 2. NestJS SQS 처리 코드 작성(producer / customer) 코드 작성에 앞서 아래 2개의 ..
-
[nestjs/react] nestia로 sdk package 생성 해서 리엑트에서 사용하기(feat. github npm registry)Backend/NestJS 2023. 12. 21. 19:45
기전 nestjs 프로젝트를 nestia 환경으로 마이그레이션 중이다. nestia는 참 편리한게 많은데. 그 중 대박적인게 명령어 하나로 sdk를 생성 할 수 있는 것이다. 그래서 기존 프로젝트에 nestia를 설치한 후 그 구조에 맞게 변경을 시켰다. 그런 뒤, 리엑트에서 sdk를 다운 받아서, 백엔드에 요청하는 것을 하고자 한다. 일단 nestia 코드를 작성하는 것은 생략한다. 아래 링크로 대체하겠다. 참고로 samchon 이분이 개발했다. https://github.com/samchon/nestia-template GitHub - samchon/nestia-template: Nestia template project installed by "npx nestia start" Nestia templ..
-
nestjs에서 alibaba cloud OSS sdk 사용하기 (ali-oss)Backend 2023. 6. 28. 17:43
AWS S3를 이용하다가, 중국 진출과 함께 Alibaba Cloud의 클라우드 데이터 스토리지 서비스인 OSS로 이전하게 되었다. 그래서 기존 S3와 연동된 소스코드도 수정을 해야 했다. 다행히 알리바바에서 SDK를 지원해주고, 기존 코드를 크게 고치지 않아도 연동이 된다. 목표는, OSS에 이미지 파일을 업로드 하는 것이다. 1. 모듈 설치 (https://www.npmjs.com/package//ali-oss?activeTab=readme) npm install ali-oss --save 2. 사전 인터페이스 및 OSS 서비스 작성 // IFile.ts export interface IFile { encoding: string; buffer: Buffer; fieldname: string; mime..
-
[prisma] 데이터 손실 없이 migrate 하기Backend 2023. 5. 24. 11:40
Object-Relational Mapping (ORM) framework인 prisma로 개발을 하고 있다. schema.prisma 파일에서 코드로 테이블 모델을 정의해서 너무 편하다. 변경된 사항이 있을 경우 $npx prisma migrate dev 명령어를 통해 한번에 변경할 수 있다. 그런데 단점이, 테이블에 큰 변화가 생길 경우 모든 데이터가 지워진다는 것이다. 개발 단계에서는 유용하나, 어느정도 진행이 되면 불편해진다. 다른 방법이 없을까 찾다가 한 가지 방법을 알게 되어 글로 남기고자 한다. 1. 직접 변경 - 콘솔 : cmd 창으로 직접 접속해 명령어로 DB 테이블을 수정한다. - 툴 사용 : pgadmin을 사용해 수정한다. 2. 스키마 검증 - 아래 명령어를 입력하면 DB 주소를 확..
-
letsencrypt로 무료 ssl key 발급 후 적용시키기(nginx, certbot)Backend 2023. 4. 12. 18:41
무료 ssl을 등록시키기 위해 letsencrypt를 사용한다. 먼저 local OSX 환경에서 docker를 이용해 키 발급을 받으려니, 도메인 문제로 실패했다. 아무래도 로컬에 private한 환경이다보니 public 도메인과 연결하는게 여러가지로 상황에 맞지 않았다. 그래서 AWS EC2 인스턴스에서 작업을 했다.(ubuntu) ec2 접속 관련 명령어는 아래 글을 참고하면 된다. 2023.04.11 - [aws] - aws ec2 비밀번호로 ssh 접속하기 aws ec2 비밀번호로 ssh 접속하기 OS는 ubuntu $ sudo passwd ubuntu 비번 설정 $ sudo nano /etc/ssh/sshd_config (수정) PasswordAuthentication yes $ sudo ser..
-
(letsencrypt) error no valid A records found for ; no valid AAAA records found forBackend 2023. 4. 11. 18:40
소스코드 : https://github.com/wmnnd/nginx-certbot 무료 ssl을 발급받기 위해 letsencrypt 사용하려고 한다. 맥북환경에서 같은 작업을 했을때 계속 되지 않아서, AWS에 ubuntu ec2를 생성해서 시도해봤다. 작업 도중 아래와 같은 에러가 발생했다. $ sudo ./init-letsencrypt.sh 도메인 레코드가 A 또는 AAAA가 아니라고 한다. 말도 안된다. 분명하게 A라도 적혀 있다. 하지만, 도메인을 cafe24에서 발급 후 aws에 네임서버를 등록한 상태라, 그 부분이 좀 걸렸다. 구글링 중 아래 캡쳐를 보면 public한 IP 주소를 사용해야 한다고 한다. 이거 때문인가? 의문이 생겼다. 결과는 위의 이유가 아니었다. 도메인과 연결된 웹 사이트가..
-
-
[node] How to limit the HTTP request size and upload file size?Backend 2022. 6. 30. 15:29
디얼핏홈 관리자페이지에서 생활습관 개선 프로그램을 일자별로 설정한다. 거의 2년을 하다보니 일수가 797일차까지 되었는데, 자꾸 7월6일부터 추가가 안되고 서버에서 API 동작시 실행되는 로그도 안찍히고 500에러가 났다. 이유를 분석하니, 서버에서 배열 인풋값을 받을때 용량이 초과되어서였다. 그래서 아래와 같이 용량을 늘려줬다. solution: index.ts import bodyParser from "body-parser"; app.use(bodyParser.json({limit: "50mb"})); app.use(bodyParser.urlencoded({limit: "50mb", extended: true}));