전체 글
-
AWS-SDK를 사용하여 S3에 업로드Infra/클라우드 2022. 8. 1. 13:56
npm Dependency aws-sdk AWS에 있는 모든 솔루션이나 서비스들을 NodeJS 직접 사용하고 컨트롤 할 수 있도록 AWS자체에서 제공해주는 package이다. 특히 S3 라이브러리를 사용할 것이다. @Post('upload') @UseInterceptors(FileInterceptor('image')) async uploadMediaFile(@UploadedFile() file: Express.Multer.File) { console.log(file); } FileInterceptor('image') 의미 => Post body를 통해서 data를 백엔드에 전달할 시 form-data에서 key가 'image'인 key-value를 통해서 file 정보를 넘긴다는 의미이다. 해당 Inte..
-
AWS 클라우드 컴퓨팅 & S3 구축Infra/클라우드 2022. 7. 31. 18:06
Amazon S3 서버 컴퓨터를 임대를 해서 그 컴퓨터에 만들어진 API를 열 수 있도록 하면 전세계에 있는 모든 사람들이 해당 API를 사용할 수 있도록 된다. S3 s3라는 디스크를 사용해서, cloud storage에다가 이미지를 저장한다. 즉 S3는 Storage이다. 버킷 정책 예제 { "Version": "2012-10-17", "Statement": [ { "Sid": "AddCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Re..
-
Multer와 미디어 파일 서비스(img,mp3,mp4) 1FrameWork/Nest.js 2022. 7. 30. 10:42
File upload by Multer Nest.js에서 파일을 upload하려면 multer 미들웨어 패키지를 사용해야 한다. multer는 주로 HTTP post 요청을 통해서 파일을 업로드 한다. multipart/form-data 형식으로 게시된 데이터를 처리한다. *multipart/form-data : HTTP 통신방식에서 binary 데이터를 주고 받을때 사용하는 form 이다. Header- ContentType 보통 API로 data를 주고 받을 때 Content-Type은 위 그림과 같다. 단일 file example @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file: Expr..
-
NodeJS File async와 asynchronous 그리고 promise개발언어/Node.js 2022. 7. 28. 15:12
File NodeJS에서 file을 읽고 쓰고, 이름을 변경하고 등등의 일을 할 수 있는 모듈이다. 'fs' 모듈의 공식문서(명세)를 읽어보면, 사용할 수 있는 함수에 대해서 알아 볼 수 있다. 그리고 Dir에 관련된 class에는 어떤 내용이 있는지 FSWatcher 인터페이스에는 어떤 내용이 있는지 등등 'fs'모듈에 대한 모든 자세한 정보를 알 수 있다. 결론적으로 'fs'안에도 다양한 class들이 포함되어 있다는 것을 알 수 있다. 또한 'fs'모듈은 file안에서 기본적으로 할 수 있는 모든 동작들 제공해준다. 💫유의 사항 모든 API는 3가지 형태로 제공이되어 진다. 1.rename(.....,callback(error,data)) rename이라는 형태로 제공이 되고 rename()이라는 ..
-
NodeJS Path 그리고 유의할 점개발언어/Node.js 2022. 7. 27. 20:49
Path NodeJS는 컴퓨터 위에서 동작하기 때문에 file system에 접근하기가 정말 좋다. 그럴 때 사용할 수 있는 것이 path이다. path라는 것은 말 그대로 경로를 의미한다. 그래서 file의 경로에 접근하거나 경로에 대해서 무언가 처리 해야 할때 유용하게 쓸 수 있는 module이다. 경로를 표현하는 방법은 운영체제마다 달라 질 수 있는데 log를 이용해서 global 객체에 있는 __dirname과 global에 있는 __filename 이용해서 현재 디렉토리 경로와 file 경로를 출력 할 수있다. 운영체제 마다 file에 접근하는 경로가 다르므로 어떤 file에 접근할 때 현재 사용하는 컴퓨터에 있는 그대로의 경로를 적으면 안된다. *__dirname : global 객체에 있는 ..
-
Nest.js Intercepters(AOP 패턴)FrameWork/Nest.js 2022. 7. 24. 14:02
Intercepters intercepters는 AOP(Aspect Oriented Programming : 관점 지향 프로그래밍)기술에서 영감을 받은 기능세트이다. AOP는 횡단 관심사의 분리(cross-cutting concern)를 허용하므로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 핵심기능이 위 그림과 같이 4개가 있다고 가정하자, 기능 하나하나는 module안에 있는 controller이다. 쭉 code를 그렇게 짰다고 가정해도, 각각의 핵심기능을 가진 controller에서 재사용 되면서, 공통되는 기능역시 존재한다. 가장 적합한 예로 logging 기능이 있다. controller가 각각의 핵심기능에 대해서 모듈별로 나눠져 있지만 그 각각의 모듈이 공통적으로 logging이..
-
Virtual Machine vs Docker ContainerInfra/컨테이너 2022. 7. 24. 09:30
Virtual Machines/ Virthal Operating system 같은 개발환경을 제공하는 문제는 Vitual Machine으로 도 해결할 수 있는 것 아닐까? * Vitual Machine: 호스트 운영체제에 독립적인 자체 셀(Shell)을 지닌 캡술화된 가상의 운영체제를 지닌 솔루션을 의한다. Virtual Machine을 사용한다는 것은 호스트 운영체제, 즉 Windows 또는 macOS 또는 Linux가 있고, 그 위에 Virtual Machine을 설치한다는 것이다. 말하자면 컴퓨터 내부의 컴퓨터이다. Virtual Machine에는 내부에서 실행되는 자체 운영체제가 있다. 예를 들어 Linux라고 해보자 그런 다음 이 Virtual Machine은 컴퓨터와 같기 때문에 Virtual..
-
Docker란?Infra/컨테이너 2022. 7. 23. 20:48
Docker 표준화된 소프트웨어 유닛이다. 더 자세히 말하자면, 이는 코드의 패키지를 의미한다. 이 안에는 해당 코드를 실행하는데 필요한 종속성과 tool들이 포함되어 있다는 것이 중요하다. 예) Node.js 애플리케이션을 구축하는 경우 => NodeJS는 서버에서 JavaScript 코드를 실행하는데 사용할 수 있는 JavaScript RunTime이다. NodeJS와 도커로 컨테이너로 빌드된 애플리케이션이 있는 경우 그 컨테이너에는 애플리케이션 소스 코드 뿐만 아니라, NodeJS Runtime 더불어 소스 코드를 실행하는데 필요한 기타 tool들이 있을 것이다. 도커 컨테이너를 활용한 것의 장점은 특정 도커 컨테이너에 애플리 케이션을 빌드한 경우 그 컨테이너는 항상 동일한 NodeJS 코드, 동일..