백엔드/견고한 백엔드 만들기
-
S3와 CloudFront를 이용한 이미지 최적화백엔드/견고한 백엔드 만들기 2024. 9. 3. 13:51
S3 트리거를 사용한 Lamda 함수로 썸네일 이미지 생성과 이미지 용량 최적화CloudFront와 Lambda@Edge에서 실시간 이미지 리사이즈 Reference- ( https://helloinyong.tistory.com/246 )- ( https://medium.com/daangn/lambda-edge%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%98%EB%8A%94-on-the-fly-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%A6%AC%EC%82%AC%EC%9D%B4%EC%A7%95-f4e5052d49f3 )- ( https://aws.amazon.com/ko/blogs/networking-and-content-delivery/resizing-images-wi..
-
Log와 모니터링백엔드/견고한 백엔드 만들기 2024. 8. 13. 12:46
monitoring 하는 여러가지 방법들이 존재하고 백엔드에 국한되지 않고 프론트에서도 꼭 필요하다. 이는 production 환경에서 문제를 해결하는데 있어서 중요한 역할을 하기 때문이다.목표winston을 통해 Log 파일을 기록과 Log관리sentry를 통해 모니터링과 slack을 통한 실시간 알림 보내기1. winston을 통한 Log파일 생성과 Log 관리$ winston nest-winston$ winston-daily-rotate-file 필요 라이브러리를 설치 해준다. 2. winston과 winston-daily-rotate-file을 위한 설정 파일 작성common/logger/winston.tsimport { WinstonModule, utilities } from 'nest-wins..
-
dto에서 기본 타입만 사용 하고 계신가요백엔드/견고한 백엔드 만들기 2024. 7. 17. 12:23
Typescript에서 class dto에서 기본 타입만 사용하고 있습니까string, boolean, number ... 특정 객체로 직렬화와 저장 할때 다시 역직렬화code snippet으로 꼭 구현 해야 되는 구현체를 implements 받아서 구현 룰을 정해야됨.custom guard나 custom pipe 같은 느낌으로이름은 뭐라 할지 모르겠는데 해당 기능을 필요할때마다 조금 머리속으로 생각해서 guard pipe 느낌으로 네이밍 규칙 부여하고 export class `${클래스명}``${머라할지prefix}` implements `${구조를 정의하는 구현체}` { constructor(private readonly groupEventsService: GroupEventsService) {} ..
-
NestJS Swaager 사용시 직관적이고 구체적인 응답 문서화 하기백엔드/견고한 백엔드 만들기 2024. 7. 9. 15:17
Swagger 문서는 프론트엔드 개발자와 소통을 위해 중요한 api 문서화 역할을 한다. 현재 Response 문서에는 상태 코드와 설명뿐이다 응답 성공시 기존 피드 생성 성공시 response swagger 예를들어 피드 생성에 성공에 대한 response인데 해당 피드가 공개 피드 생성 했을때 response와 비공개 피드 생성시 response를 보다 구체적으로 swagger로 제공 해준다면 프론트 엔드 개발자 입장에서 swagger 문서에 대한 가독성이 굉장히 올라갈것이다. 응답 실패시 기존 피드 삭제 에러 response swagger 404 에러 코드에 해당하는 에러 경우가 2가지인데 1. 2. 이런식으로 메세지만 구별되어 있어 구체적이지 못하고 가독성이 떨어진다. 끝으로 보다 직관적이..
-
NestJS ResponseDto 적극 활용하기백엔드/견고한 백엔드 만들기 2024. 7. 8. 14:26
NestJS class-transformer TypeOrm 변환 관련 LifeCycle이전글 1. 정적 팩토리 메서드 패턴을 사용하여 ResponseDto 직렬화(serialize) 하기CreateCatResponse에서 of라는 메서드는 static 메서드로 해당 메서드를 통해서 class-transformer를 이용해서 newCat이라는 plainObject들을 CreateCatResponse dto로 serialize 한다.2. ResponseDto 직렬화(serialize)를 위해 인터셉터와 데코레이터 사용 위의 글을 참고하여 NestJS LifeCycle과 특정 프로퍼티들을 변환 하는 데코레이터들의 LifeCycle들을 이해하고 사용 해야한다. NestJS에서 ResponseDto는 보통 하나의..