분류 전체보기

분류 전체보기

    인터페이스

    인터페이스는 일반적으로 타입 체크를 위해 사용되며 변수, 함수, 클래스에 사용할 수 있다. 인터페이스는 여러가지 타입을 갖는 프로퍼티로 이루어진 새로운 타입을 정의하는 것과 유사하다. 인터페이스에 선언된 프로퍼티 또는 메소드의 구현을 강제하여 일관성을 유지할 수 있도록 하는 것이다. 인터페이스는 직접 인스턴스를 생성할 수 없고 모든 메소드는 추상 메소드이다. 인터페이스 타입으로 선언한 변수는 해당 인터페이스를 준수해야 한다. // 인터페이스의 정의 interface Todo { id: number; content: string; completed: boolean; } // 변수 todo의 타입으로 Todo 인터페이스를 선언하였다. let todo: Todo; // 변수 todo는 Todo 인터페이스를 준..

    추상클래스

    하나 이상의 추상 메소드를 포함하는 클래스이다. 추상 메소드는 정의만 있을 뿐 몸체가 구현되어 있지 않다. // 추상클래스의 형태 abstract class 클래스이름 { ... public abstract void 메서드이름(); } 추상 클래스를 상속하는 클래스에서 해당 추상 메소드를 구현해야 한다. 추상클래스는 추상 메소드 뿐만 아니라 실 사용이 가능한 메소드도 정의할 수 있다. 추상클래스는 인스턴스를 생성할 수 없다. // 추상 클래스 abstract class Project { public project_name:string|null = null; private budget:number = 2000000000; // 예산 // 추상 메서드 정의 public abstract changeProjec..

    socket.io

    socket.io 웹소켓은 HTML5의 기술이기 때문에 오래된 버전의 웹 브라우저는 웹소켓을 지원하지 않는다. 특히 자동 업데이트가 되지 않는 익스플로러 구 버전 사용자들은 웹소켓으로 작성된 웹페이지를 볼 수 없다. 따라서 이를 해결하기 위해 나온 여러 기술 중 하나가 Socket.io이다. 웹페이지가 열리는 브라우저가 웹소켓을 지원하면 웹소켓 방식으로 동작하고, 지원하지 않는 브라우저라면 일반 http를 이용해서 실시간 통신을 흉내내는 것이다. 예제 코드로 사용법 알아보기 서버 코드 // server.js var express = require('express'); var app = express(); var http = require('http').Server(app); var io = require..

    Elastic Load Balancer (ELB)

    정의 Elastic Load Balancer는 AWS의 로드 밸런서 서비스이다. 로드밸런서의 주요 기능은 서버의 부하 분산이다. 구성 ELB는 AWS의 사용자 정의 네트워크인 VPC에 탑재되며, 사용자의 요청을 받고 이를 VPC 내의 리소스(EC2 등)에 적절히 부하 분산한다. ELB는 외부의 요청을 받아들이는 리스너(Listener)와 요청을 분산/전달할 리소스의 집합인 대상 그룹(Target Group)으로 구성되며 ELB는 다수의 리스너와 대상 그룹을 거느릴 수 있다. 그리고 부하 분산 대상인 대상 그룹 내 리소스들은 헬스 체크(Health Check)를 활용해 끊임없이 상태를 확인받는다. ELB 종류 총 세가지 유형의 로드밸런서가 있다. 1. Application Load Balancer 2. N..

    VPC 개념

    VPN 처럼 논리적으로 네트워크망을 분리하는 서비스이다. 망 분리를 하지 않으면 시스템의 복잡도를 엄청나게 끌어올릴뿐만 아니라 하나의 인스턴스만 추가되도 모든 인스턴스를 수정해야하는 불편함이 생긴다. VPC는 위 그림처럼 하나로 묶여 있는 클라우드 네트워크를 아래 그림처럼 분리해주는 서비스이다. VPC를 적용하면 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에따라 다르게 네트워크 설정을 줄 수 있다. 또한 각각의 VPC는 완전히 독립된 네트워크처럼 작동하게 된다.

    Pipe

    파이프는 @Injectable () 데코레이터로 주석이 달린 클래스이다. 파이프는 data transformation과 data validation을 위해서 사용된다. 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해 작동한다. Nest는 메소드가 호출되기 직전에 파이프를 삽입하고 파이프는 메소드로 향하는 인수를 수신하고 이에 대해 작동한다. Data Transformation? 입력 데이터를 원하는 형식으로 변환 (예 : 문자열에서 정수로) 만약 숫자를 받길 원하는데 문자열 형식으로 온다면 파이프에서 자동으로 숫자로 바 꿔줍니다. ex) string '7' -> integer 7 Data validation? 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달하면됩니다. 그렇지 않으..

    Controller 생성하기

    nest g controller [컨트롤러 이름] --no-spec --no-spec은 테스트 소스 코드를 생성하지 않겠다는 옵션이다.

    NestJS 로직 흐름

    기본 흐름 클라이언트에서 요청을 보내면 진입점(Module) -> Controller -> Service 순서로 요청이 전달되고 Service에서 요청을 처리하고 Controller에서 응답을 클라이언트에 반환한다. Controller 안에는 Handler가 있다. 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식 된 컨트롤러 클래스 내의 단순한 메서드이다.

    NestJS 기본 구조

    eslintrc.js 파일 개발자들이 특정 규칙을 가지고 코드를 깔끔하게 짤 수 있도록 도와주는 라이브러리. 타입스크립트를 쓰는 가이드라인 제시, 문법에 오류가 나면 알려주는 역할 등등. prettierrc 파일 주로 코드형식을 맞추는데 사용한다. eslintrc 보다 작은 따옴표를 사용할지 큰 따옴표를 사용할지, indent 값을 2로 줄지 4로 줄지 등의 코드의 포매터 역할을 더 해준다. nest-cli.json 파일 nest 프로젝트를 위한 특정한 설정을 해줄 수 있는 프로젝트 파일 { "collection": "@nestjs/schematics", "sourceRoot": "src" } 위 코드는 src 폴더 안에 프로그램 로직 코드가 들어간다는 것을 말한다. tsconfig.json 파일 어떻게..

    NestJS 설치

    NestJS 클라이언트 설치 NestJS는 NestJS 클라이언(CLI)를 설치하여 시작한다. 다음 명령어로 설치한다. npm i -g @nestjs/cli npm, yarn 둘 중 어떤 것을 사용하더라도 상관없다. NestJS 프로젝트 시작하기 다음 명령어로 시작한다. nest new [project-name] 명령어를 실행하고 나면 기본적인 구조가 갖춰진 프로젝트가 만들어진다. nest new ./ 이 명령어로 현재 폴더 내에 기본 구조를 생성할 수도 있다.