전체 글
AWS Lambda - SQS를 활용한 인프라 아키텍처 재설계 ( + S3, 맥미니?)
1. 갖고 있던 문제 자세히 말할 수는 없지만 회사에 그래픽카드가 필요한 컨버팅 서버가 있었다. 해당 서버는 AWS EC2에서 그래픽 카드가 있는 맥서버로 배포되어 있었는데 큰 문제가 있었다. 바로 월 100만 원가량의 비싼 비용과 트래픽에 취약하다는 문제였다. 해당 서버를 배포한 동료직원의 얘기를 들어보면 컨버팅에 필요한 프로그램을 돌리는데 필요한 최소조건의 서버를 빌렸다고 했기 때문에 사양을 낮춰서 금액을 줄이는 방법은 사용할 수가 없었다. 그리고 http통신으로 컨버팅에 필요한 정보를 받아오는 구조였는데 트래픽에 대한 대비가 전혀 없어 위험했고, 오토스케일링으로 스케일 아웃을 적용하려고 해도 비싼 비용이 너무 부담되는 상황이었다. 2. 인프라 아키텍처 재설계 회사에서도 해당 서버 비용에 대한 부담이..
Data Mapper 패턴, Active Record패턴
예전에 Sequelize나 TypeORM을 사용하려 공부할 때 여러 가지 패턴으로 엔티티를 구현하는 것을 보고 많이 헷갈렸었다. 그 이후로는 습관적으로 한 가지 방식으로만 사용하고 있다가 나중에 해당 패턴인 Data Mapper 패턴이라는 것을 알았다. - Data Mapper 패턴이란? Data Mapper 패턴은 데이터베이스 모델 (엔티티) 와 쿼리가 분리된 패턴이다. (데이터베이스에 접근하는 쿼리들을 repository 계층에서 관리) 이렇게 역할에 따라서 계층을 나누게 되면 서로 독립적으로 유지될 수 있다는 장점이 있다. 아래 예시 코드를 보면 모든 쿼리는 repository 계층에 모여있고, entity는 다른 계층에 별도의 클래스로 관리되고 있다. // repository 계층 @Injecta..
@nestjs/config 사용하는 이유
보통 프로그래밍을 할 때 노출되면 위험한 민감한 정보들은. env 파일에 담아두고 사용하게 된다. 이렇게 환경변수로 담아두고 사용하게 되면 테스트 환경이나 개발 환경, 배포 환경으로 나눠서 사용할 수 있다. nestjs에서도 상황에 맞게 가져와 사용할 수 있게끔 라이브러리 @nestjs/config를 제공한다. @nestjs/config 설치 npm install @nestjs/config ConfigModule Root module에 등록하기 configMoudle을 사용하기 위해선 Root module에 등록하고, 이때 isGlobal 옵션을 true로 설정하면 하위에 있는 모든 모듈에서 쉽게 주입받아 사용이 가능하다. 만약 옵션은 false로 지정하면 매번 다른 모듈에서 imports에 등록해줘야 ..