본문으로 건너뛰기

asap.js 빠르게 시작하기

asap.js 모범구성 알아보기

asap.js를 사용하여 Node.js 기반으로 구조화된 간결한 웹서버를 빠르게 배포해보세요.

asap.js를 사용하기 위해서는 우선 모범구성 탬플릿을 사용하는것을 권장합니다. 본 문서에서는 모범구성 탬플릿에 대한 최소한의 설명과 이를 이용해서 웹서버를 빠르게 배포하는 방법을 설명합니다.

만약 프레임워크의 자세한 부분을 알아보며 처음부터 구성하고 싶다면, asap.js 자세히 알아보기 문서를 참조하세요.

asap.js 프로젝트 구조

기본적인 asap.js 프로젝트는 아래 구조를 사용합니다.

example-asapjs-project
├── Dockerfile
├── deploy.sh
├── ecosystem.config.js
├── package.json
├── env
│   ├── .env.local
│   ├── .env.dev
│  └── .env.prod
├── src
│   ├── archive
│   │   ├── application
│   │   │   └── ArchiveApplication.ts
│   │   ├── controller
│   │   │   └── ArchiveController.ts
│   │   ├── domain
│   │   │   ├── ArchiveTableInterface.ts
│   │   │   └── entity
│   │   │   └── ArchivesTable.ts
│   │   ├── dto
│   │   │   ├── ArchiveDto.ts
│   │   │   └── GetArchiveDto.ts
│   │   └── infra
│   │   └── ArchiveTableRepository.ts
│   ├── index.ts
│  └── config.ts
├── tsconfig.json
└── yarn.lock

src 하위에는 utils / common 과 같은 공통 폴더를 레이어로 구분하고, 나머지 폴더들은 도메인(최소 기능 집합) 단위로 구분합니다.

모든 설정 구성은 config.ts 를 기본적으로 참조합니다. 모범구성에서의 config.ts는 dotenv를 기본적으로 사용하고, 프로젝트 루트에 존재하는 '.env' 파일을 환경변수로 불러온 뒤 인자를 파싱합니다.

asap.js 모범구성 실행 스크립트

실행 스크립트는 크게 세가지로 나누어집니다.

명령별로 지정하는 환경에 따라서 프로젝트루트/env/.env.{환경명} 파일을 기본 env 참조 경로인 프로젝트루트/.env로 덮어씁니다.

환경로컬에서 바로 실행하기js 파일로 빌드하기빌드한 js 파일로 실행하기
prodyarn prodyarn build:prodyarn start
devyarn devyarn build:devyarn start
localyarn local-yarn start

asap.js 모범구성 기본 config 구조

주의

아래 파일들은 asap.js에서 참조하는 모든 필수 필드가 포함된 구조로, 기존 필드를 삭제하는것은 권장하지 않습니다.

asap.js 모범구성의 기본 config.ts 파일 구조는 아래와 같습니다.

config.ts
import { logger } from "@asapjs/core";

import packageJson from "../package.json";

require("dotenv").config({ path: `${__dirname}/../.env` });

const debug = process.env.NODE_ENV === "development";
const port = 3000; // 포트번호

export default {
debug,
name: packageJson.name,
basePath: "",
extensions: ["@asapjs/router", "@asapjs/sequelize"],
port,
auth: {
jwt_access_token_secret:
process.env.JWT_ACCESS_SECRET || "<JWT Access Token Secret>",
jwt_access_token_life:
process.env.JWT_ACCESS_LIFE || "<JWT Access Token Life (ex:6h)>",
jwt_refresh_token_secret:
process.env.JWT_REFRESH_SECRET || "<JWT Refresh Token Secret>",
jwt_refresh_token_life:
process.env.JWT_REFRESH_LIFE || "<JWT Refresh Token Life (ex:365d>",
},
db: {
database: process.env.DB_NAME || "<데이터베이스 이름>",
username: process.env.DB_USERNAME || "<데이터베이스 유저네임>",
password: process.env.DB_PASSWORD || "<데이터베이스 비밀번호>",
host: process.env.DB_HOST || "<기본 데이터베이스 주소>",
port: process.env.DB_PORT || "<포트번호 (ex:3306)>",
dialect: "mysql", // mariadb,sqlite,postgres,mssql 사용가능
logging: (query: string, time: number) => {
logger.debug(`${query}`);
},
timezone: "+09:00", // KST 기본 시간
pool: {
max: 20,
idle: 4800,
acquire: 60000,
},
},
swagger: {
name: packageJson.name,
version: packageJson.version,
scheme: debug ? "http" : "https",
host: debug ? `localhost:${port}` : "a-fin.co.kr",
auth_url: "/auth/login",
},
};

asap.js 모범구성의 기본 .env 파일 구조는 아래와 같습니다.

.env
NODE_ENV=production

DB_NAME=데이터베이스이름
DB_USERNAME=데이터베이스유저명
DB_PASSWORD=데이터베이스패스워드
DB_HOST=데이터베이스호스트
DB_PORT=데이터베이스포트

JWT_ACCESS_SECRET=엑세스토큰시크릿
JWT_ACCESS_LIFE=엑세스토큰유효기간(권장 6h)
JWT_REFRESH_SECRET=리프래시토큰시크릿
JWT_REFRESH_LIST=리프래시토큰유효기간(권장 14d)

asap.js 모범구성으로 웹서버 열기

git clone https://github.com/asap-things/asapjs-template
cd asapjs-template
npm install
npm run dev

축하합니다! 이제부터 asap.js와 함께 쉽고 빠르게 웹서버 개발을 시작해보세요 🚀