백엔드 46

TDD + node.js + typescript 세팅 반법

yarn add jest ts-jest @types/jest supertest dotenv yarn add --dev babel-jest @babel/core @babel/preset-env jest.config.js 파일을 프로젝트 최상단에 만들어주고 다음과 같은 내용을 작성하여 jest가 ts-jest를 사용하도록 알려주자 jest.config.js module.exports = { preset: 'ts-jest', //trypeScript파일은 ts-jest에서 CommonJS구문으로 변환 // testEnvironment: 'node', setupFiles: ['dotenv/config.js'], //테스트 환경 // testMatch: ['**/*.spec.[jt]s?(x)', '**/*.tes..

백엔드 2022.06.12

JWT(Json Web Token)은 왜 사용될까

HTTP의 특성 HTTP는 비연결성 및 무상태성이라는 특징을 가지고 있습니다. HTTP는 요천에 대한 응답을 처리하게 되면 연결을 끊어버리기 때문에 클라이언트에 대한 이전의 상태 정보 및 현재 통신의 상태가 남아있지 않습니다. 서버는 클라이언트를 식별할 수 없다는 단점 또한 존재합니다. 로그인을 하더라도 다음 요청에서 해당 클라이언트를 기억하지 못해 로그인을 해야하는 문제가 발생합니다. session 기반 인증 1. 유저가 로그인을 한다. 2. 서버에서 계정정보를 읽어 사용자를 확인 후, 사용자의 고유한 ID를 부여하여 세션 저장소에 저장후 세션 Id발행한다. 2. 유저는 해당 session Id를 받아 쿠키에 저장. 3. 인증이 필요한 요청마다 쿠키를 헤더에 실어 보낸다. 4. 서버는 클라이언트가 보낸..

백엔드/jwt 2022.04.17

Docker 컨테이너에 파일을 복사하기

게임 서버, 웹 서버와 같이 여러분이 사용할 도구가 도커 이미지에 모두 구성되어 있지 않은 경우도 있습니다. httpd 웹 서버 사용할 도커 이미지는 httpd(http daemon)입니다. httpd(http daemon)은 Apache HTTP Server를 실행할 수 있는 오픈소스 웹 서버 소프트웨어입니다. 업로드 해주고 싶은 파일 위치에서 실행합니다. docker container run --name 컨테이너_이름 --rm -p 818:80 httpd localhost:818를 통해 서버가 잘 작동하는지 확인합니다. docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/ Docker 이미지 만들기 docker container commit [OPTI..

백엔드/docker 2022.01.07

aws

인스턴스 생성 aws 검색창에 ec2검색 -> 자신이 잘 사용할 수 있는 OS 프리티어 선택합니다. 이 예제에서는 Linux를 사용하겠습니다. 키 페어를 다운 받은 위치를 잘 기억해두세요 키페어를 다운 받은 위치에서 chmod를 실행 시킵니다. 그 후에 ssh를 입력해주면 인스턴스에 접근할 수 있습니다. 인스턴스에 개발 환경 구축하기 인스턴스를 생성하는 것은 가상의 컴퓨터를 만드는 것입니다. 그렇기 때문에 패키지 매니저나 npm을 다시 설치해줘야 합니다. sudo apt update nvm 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash wget -qO- https://raw.githubuserconten..

백엔드/aws 2022.01.07

Docker CLI

Precaution Ubuntu 운영체제로 실습을 진행하는 경우, 관리자 권한(sudo)으로 Docker 명령어를 실행해야 합니다. 실습 과정에서 permission denied 메시지가 포함된 오류를 만난다면, sudo 를 명령어 앞에 붙여서 관리자 권한을 부여합니다. Docker docs : https://docs.docker.com/engine/reference/commandline/container_run/ 도커 이용하기 레지스트리(Registry) Docker Hub : https://hub.docker.com/ 도커 이미지를 관리하는 공간입니다. 특별히 다른 것을 지정하지 않는다면, 도커 허브(Docker Hub)를 기본 레지스트리로 설정합니다. 레지스트리는 Docker Hub, Private..

백엔드/docker 2022.01.07

docker

컨테이너 방식의 장점 1. 의존성 충돌 문제를 해결해준다. 어떤 프로그램을 실행할 때 다른 프로그램이 반드시 필요한 경우 프로그램 A는 프로그램 B에 의존 관계를 가지고 이다고 말한다. 프로그램마다 의존하는 프로그램의 버전이 다르거나 하는 경우 의존성 충돌의 문제가 발생할 수 있습니다. 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고 각각의 고유하 의존성을 포함하고 있습니다. 이는 각 컨테이너가 철저하게 실행환경이 격리되어 있기 때문이다. 컨테이너가 격리할 수 있는것 프로세스 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있습니다. 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없습니다. 네트워크 기본으로 컨테이너 하..

백엔드/docker 2022.01.07

socket

기존의 http는 client가 server에 요청을 하고 이에 따른 응답을 받습니다. 만약 server에 공지가 생겼더라도 client가 요청을 보내지 않으면 server는 아무것도 보낼 수 없고 클라이언트가 요청할 때까지 기다려야합니다. 반면에 Web Socket은 client와 server의 관계가 connection이 형성만 되면 공지사항이 생기더라도 server에서 먼저 data를 보내줄 수 있습니다. Server Socket.io npm install socket.io Socket.io 서버 생성 import { Server } from 'socket.io' const server = new Server(httpServer) Server socket.emit('message', '메세지'); ..

백엔드/socket 2021.12.12

Automated Deployment

Achievement Goals 배포 자동화에 정의와 이점에 대해 설명할 수 있다. 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 의미 이점 : 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됩니다. 휴먼 에러를 방지할 수 있습니다. 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻한다. 그전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러의 예시이다. 배포 파이프라인이 무엇인지 정의할 수 있다. 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻합니다. 파이프라인은 전체 배포 과정을 여러 단계(stage)로 구분합니다. 파이프라인을 구성하는 단계(Stages)와 작..

node.js path명령어

0. 모듈 추출 방법 const path = require('path'); 1. path.sep : "현 운영체제의 경로 구분자" 확인 - 맥 /, 윈도우 \ console.log('path.sep:', path.sep); // path.sep: / 2. path.dirname('파일경로.확장자') : "파일이 위치한 폴더경로" 확인 console.log(path.dirname(__filename)); // /Users/curryyou/dev/VS_Code_Projects/TestProject 3-1. path.basename('파일경로.확장자') : "파일명.확장자" 확인 console.log(path.basename(__filename)); // test.js 3-2. path.basename('파일..

백엔드/node.js 2021.12.03