전체 글
[NestJs] Prisma2 셋팅
다음 프로젝트의 DB와 연결하는 것은 쿼리를 직접 날리는 것 말고, orm을 사용하기로 했다. 후보는 Type+ORM과 Prisma이 있었고, 레퍼런스가 많고, 어느정도 대중화가 된 TypeORM을 이용하려고 했으나, GraphQL에 더 적합한 Prisma로 전환했다. Prisma는 기존 ORM과 근본적으로 다르며 새로운 종류의 ORM이라고 공식 문서에서 소개하고 있다. Is Prisma an ORM? | What is an ORM? Learn about how Prisma implements the Data Mapper ORM pattern and how it achieves the same goal as traditional ORMs without requiring you to map classes ..
[EC2 부하테스트] Apache ab test
EC2에 스트레스 테스트를 했다. 사실 부하 테스트는 조금 더 정확하고 구체적으로 해야겠지만, 일단은 DB커넥션과 반응속도만 급하게 알고 싶어서, 일단 가볍게 할 수 있는 apache ab test를 활용하기로 했다. 공식문서 ab - Apache HTTP server benchmarking tool - Apache HTTP Server Version 2.4 ab - Apache HTTP server benchmarking tool ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache i..
[Aws RDS Aurora Serverless MySQL] 외부 접속
새로 시작할 서비스의 DB용량을 정하는게 어려웠다. 예측불가능했기 때문이다. 새 서비스의 트래픽을 정확히 예측할 수 있으면 좋겠으나, 누가와도 정확히 예측하긴 어려울 것이다. 조금 비싸더라도 RDS를 사용하기로 결정은 했으나, 어느정도 감당될 지 감이 안왔다.. 경험부족이 크지 않을까. 여러 이유들로 DB단에서 Auto Scalling이되는 Serverless를 사용하기로 했다. 다만 레퍼런스가 부족하고, 외부 접속이 허용 안되는 문제점이 있었다. (특히 워크벤치 힝..) 안타깝게도 나는 워크벤치없인 살 수 없는 몸이 되어버린 찐따였다. 떄문에 외부접속을 허용시켜보기로 했다. 여러 방법이 있지만 그중 haproxy를 결정했다. haproxy는 기본적으로 Reverse Proxy형태로 동작하며, 서버 앞단..
AWS WAF Custom Rule 간단 예제
cors를 맞추다가 스트레스 받아서 기존의 waf에 cors과 관련된 것들을 처리할 수 있을 거라 생각했는데, 역시나 있었다. 우아한 형제들 기술 블로그를 참조해서 대강 설명을 읽고, 가볍게 작동만 시켰다. 내가 원하는 것은 특정 도메인이 아니면 요청을 없애고 싶었다. ALB에 WAF옵션을 붙여놨기 때문에 WAF 옵션만 설정해줬다. AWS WAF -> Web ACLs -> acl 선택 후에 커스텀 룰을 만든다. 룰 설정 header에 origin에는 도메인 주소가 실려있어서 활용했다. header에 origin에 프론트 도메인이 없으면 block시키는 조건이다. 이래도 되나 싶긴 하지만, 일단 원하는 것은 만들어 냈다. 추후 여러 조건들을 활용해서 커스텀 룰을 더 많이 만들고, 디테일한 설정도 가능할 것..
[MySQL] Full Text Search Aws Aurora
mysql에서 데이터를 검색해야하는 작업을 해야했다. like같은걸 쓸 수 있지만 양심상 패스했다. mysql full text search를 활용하여 검색을 하기로 결정했다. 후엔 시간이 나면 일라스턱 서치같은 검색엔진을 따로 적용해볼 예정이다. ALTER TABLE 테이블명 ADD FULLTEXT INDEX 키값(적용할 컬럼1, 적용할 컬럼2) WITH PARSER NGRAM; 이렇게 Ngram을 포함해서 검색하고자 하는 컬럼에 FULLTEXT INDEX를 걸어준다. 처음에 Ngram은 자동으로 포함된다고 들어서, 안했는데 aws aurora는 그딴게 없었다. Ngram은 단어단위로 쪼개서 인덱싱을 한다. 기본 사이즈는 ngram_token_size 2 라서 2글자를 쪼개서 저장한다. 여기서 생기는 ..
[Nodejs] blocked by CORS policy: No 'Access-Control-Allow-Origin' header is pres
작업을 하다가 프론트가 Form-data에 실어서 보내면 이상하게 Cors가 걸렸다. 설정은 다 마쳤는데.. 처음에 Nginx 셋팅이 이상한가 싶어서 용량도 모두 재셋팅했다. 대부분의 레퍼런스들은 서버내의 ngimx.config 파일에서 옵션을 추가해줘야 한다해서, 저기에 추가하고, 저기가 아닌가 싶어 nginx 폴더 내의 server 탭에는 모두 추가해봤는데도 안 됐다. 혹시 AWS 로드밸런서에 문제가 있나 싶어 검사하기로 했다. WAF에 들어가서 확인해보니 .... ....? action에 block이 있었다. ( 캡쳐에는 전부 ALLOW 지만..) WAF 옵션에서, common rules를 제거하니 정상작동 됐다.
Homebrew No similarly named formulae found Error
Homebrew통해서 jmeter 설치하려는데 자꾸 오류가 났다.. Warning: No available formula or cask with the name "jmeter". ==> Searching for similarly named formulae... Error: No similarly named formulae found. ==> Searching for a previously deleted formula (in the last month)... Error: No previously deleted formula found. ==> Searching taps on GitHub... Error: No formulae found in taps. rm -fr $(brew --repo homebrew/..
NestJS TypeORM 간단 예제
다음 프로젝트에서 NestJS를 실무 수준에서 사용할 수 있어야해서, 그만 공부하고 실제로 만들어봤다. 공식문서도 잘 되어 있고, 실제로 NestJs로 작업하고 있는 개발자들에게도 도움을 받아 적응은 조금씩 하고 있다. 역시 직접 만들어 보는게 이해하는데 빠르다. 공식 문서에 나온 요청의 흐름이다. 이 모든 순서를 다 적용해서 예제 라우터를 짜진 않았지만 대강 흐름은 이해했다. 더 자세히 이해하려고, 동료 개발자(천재)와 함께 TypeORM을 이용해서 가벼운 CRUD를 만들어봤다. schedule.controller.ts import { Body, Controller, Post, UseGuards, UseInterceptors } from '@nestjs/common'; import { ApiTags }..