분류 전체보기

· IT/자격증
정보보안산업기사 필기에 합격했습니다~ 이래저래 일정이 겹쳐서, 공부기간이 너무 짧아서 취소할까도 고민했는데, 벼락치기로 공부했던 방법이 도움이 많이되었던 것 같아서 공유해보려합니다. 공부기간 자격증 공부는 일주일정도 하루에 3~4시간정도 투자해서 공부했던 것 같습니다. 교대근무하면서 석야간 중에 틈틈이 지속적으로 했던게 암기에 도움되었습니다. 짜투리 시간에 잠깐씩이라도 들여다보면 도움 많이 되실 것 같습니다. 공부방법 1. 일단 문제집을 샀습니다. 구글링을 해봐도 '정보보안기사'에 대해서는 자료가 많이 나와도, 산업기사는 기사와 묶어서 설명하는 경우가 많았습니다. 그래서 기출과 해설을 모아서 보기위해서 문제집 구매를 결정했습니다. 2023년 때 미리 문제집을 사뒀어서, 이걸로 공부했는데, 따로 기출 기준..
0. 개발환경 Terraform : 1.7.3 Python : 3.12.x 1. 문제의 발생 Lambda로 크롤링 함수를 만들어서 서비스에 이용하고 있는데, 특정 parameter에 대해서 5XX에러를 띄우는 현상이 발생했습니다. 호출되는 과정은 NestJS Backend -> API Gateway -> Lambda(python) 순서로 호출됩니다. Postman에서 API Gateway를 호출하였을 때, 502 Bad Gateway와 함께 다음과 같은 에러 메시지를 return 했습니다. { "message": "Internal server error" } 2. 문제의 원인 및 해결 처음에는 단순한 크롤링 과정의 문제인줄 알았습니다. 하지만 로컬에서 lambda에서 사용하는 python 함수를 돌려본 ..
오늘은 NestJS에서 E2E(End-to-End) 테스트를 구성하며 있었던 이야기를 소개해보려고 합니다. Jest로 테스트를 구성하였고, 크게 3가지의 목표를 달성하고 싶었습니다. 1. Mocking을 최소화하여, 최대한 실제 시나리오와 유사하게 동작하도록 하는 것. 2. DB 특성을 가져갈 수 있도록, 테스트에서도 mysql DB를 사용할 것. 3. 자동화된 자체 QA를 수행할 수 있도록, Github Action과 연동되어 CI(지속적통합)를 지원할 수 있어야 할 것. 0. 개발환경 nest : 10.3.0 typescript: 5.3.3 typeorm : 0.3.19 jest : 29.7.0 docker-compose : 1.29.2 1. 문제의 발생 처음에는 테스트용 DB(이하 Test_DB)를..
0. 개발환경 nest : 10.2.1 class-validator: 0.14.0 * 참고 : class-validator - npm (npmjs.com) 1. 문제의 발생 // user.entity.ts @Entity('user') export class User extends CoreEntity { ... @ApiProperty({ example: '홍길동' }) @Column({ type: 'varchar', nullable: true }) @Length(2, 10) @IsString() public username?: string; ... } class-validator 라이브러리를 사용해서 'username' 필드의 Length를 제한하고, 예외의 경우를 넣어서 출력되는 메시지를 확인해보았습니다..
서론 오늘은 NestJS에서 파일을 업로드 받고, AWS S3에까지 저장하는 REST API를 공유해보려합니다. aws-sdk v2로 된 한국어 자료들은 많이 있는데, version3을 사용해서 만들어봤습니다. 일단 필자도 처음에는 aws-sdk v2를 사용해서, 파일 업로드 기능을 만들었습니다. 그런데, 서버를 run 할 때 version3으로 migrate해달라는 굉장히 거슬리는 문구가 뜨는 걸 볼 수 있었습니다. (node:2109) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023. Please migrate your code to use AWS SDK for Jav..
서론 프로세스간 데이터 전달을 위해서 DTO(Data Transfer Object) 사용한다. NestJS에서도 MVC layer간의 데이터 전달이나 request 요청을 받을 때도 DTO를 사용할 수 있다. 이때 한 Domain에 대해서, 여러 layer별로 dto는 조금씩 사용되는데, 모든 dto를 각각의 객체로 관리하는 건 어려운 일이다. 한 예시로 Register DTO와 Login DTO를 생각해보자. // register.dto.ts export class RegisterDto { email!: string; password!: string; username!: string; } // login.dto.ts export class LoginDto { email!: string; password..
왜 winston을 고르게 되었는가? NestJS에서 logging을 구현하는 방법에는 여러가지가 있다. 기본적으로 @nestjs/common에 내장된 logger가 있긴하지만, package에는 편리한 기능들이 구현되어 있다. pino, morgan 등 JS 진영에서 쓸 수 있는 여러 package들이 있는데, 본인은 templete을 만들기 위해 가장 대중적인 패키지를 찾고 싶었고, 'popular node js logging'로 구글링을 해본 결과 아래와 같은 자료를 찾을 수 있었다. 2023년 10월 기준으로 Winston이 많은 download를 기록하고 있었고, typescript를 지원하였기에 많은 레퍼런스를 기대하며 고르게 되었다. 구현 방식 Logger 불러오기 Logger를 불러오는 방..
· 개발/MySQL
문제 상황 AWS RDS를 사용하다가 프리티어 기간이 만료되어서 새로운 계정으로 DB를 옮겨야할 일이 생겼다. 문제는 현재 개발 환경상 사지방 PC 자체에서 각종 포트들이 막혀있어서, mysql workbench와 같은 상용프로그램을 사용할 수 없는 상태이다. 그래서 외부 리눅스 서버에 웹콘솔로 접속을해서 해당 DB의 Mysql Dump를 뜨고, 옮겨서 load를 해야하는 상황이다. 해결 방법 1. AWS EC2를 생성 및 mysql-client 설치 sudo apt update sudo apt install mysql-client 2. mysqldump 명령어로 덤프 파일 만들기 mysqldump -u -p -h > 위와 같은 형태로 덤프 파일을 추출할 수 있다. 아래는 예시이다. mysqldump -..
AWS Elastic Beanstalk(이하 EB)에는 서비스를 관리하기 위한 역할(Role)을 최초 애플리케이션 생성시 만들게 된다. Web Console로 EB를 생성하면 아래와 같은 화면을 볼 수 있다. 이때 '새 서비스 역할 생성 및 사용'을 선택하게 되면 자동으로 EB에 액세스하고 관리하는데 필요한 역할이 부여된 IAM을 생성하게 된다. 그렇다면 테라폼을 사용해서 EB를 생성할 때 iam을 어떻게 설정해줄 수 있을까. 문제 상황 IAM설정을 해주지 않고 terraform apply를 하면, 권한이 없어 EB가 생성되다말고 롤백을 하게 되는 모습을 볼 수 있다. 아래 사진과 같이 상태가 'Unknown'으로 바뀌고 health check를 못하는 상태가 된다. 이벤트 부분을 보면 health ch..
0. 개발환경 @nestjs/typeorm : 10.0.0 nest : 10.1.18 mysql 8.0.xx typescript : 5.1.x 1. 문제의 발생 @Entity('user') export class UserEntity extends CoreEntity { ... @Column({ type: 'enum', enum: Role, array: true, default: [Role.User], }) @IsString() public roles!: Role[]; ... } user.entity를 설계하는 과정에서 Role을 Enum array로 관리하고자 하였고, 코드상으로는 syntax적 문제가 없었다. 그런데 막상 npm run start:dev를 실행하여 mysql 서버상에 table 생성을 ..
파이랜스
'분류 전체보기' 카테고리의 글 목록