티스토리 뷰

728x90
반응형

환경변수 : 운영체제나 프로그램이 동작할 때 참고하는 외부 설정 값 | 민감 정보 보호 및 환경 마다 다른 설정을 쉽게 바꾸기 위해 사용

  • 보통 .env 파일에 서버 정보, 비밀값들을 넣음
  • 깃(허브)에 업로드를 하면 안되니까 같은 디렉토리 안에 .gitignore 파일을 만들어서 아래와 같은 내용 추가
# 환경변수
.env
.env.*

# 의존성
node_modules/

 

import dotenv from "dotenv";

  • dotenv : .env 파일로부터 환경 변수를 읽어들이고, 이를 process.env. 객체를 통해 접근할 수 있도록 하는 역할

API 코드 구현

  • Controller : 라우팅 관련 코드 | 클라이언트의 요청을 받아 서비스에 전달
  • DTO : 입력 데이터를 정형화된 형태로 파싱, 검증하여 전달하는 역할
  • Service : 보내준 데이터(컨트롤러부터 받은 데이터)를 이용해서 실제 로직을 구현
  • Repository : 레포지토리를 통해 DB에 접근... 함수 내에서 SQL 쿼리 사용

 

CORS : Cross-Origin Resource Sharing | 웹사이트가 다른 도메인에 있는 리소스에 접근할 수 있도록 브라우저에서 HTTP 헤더를 통해 제어하는 것

  • 웹 브라우저에선 보안을 위해 기본적으로 다른 출처로 요청을 보낼 때 막아버리는데, 이것을 명시적으로 열어주기 위해 사용
import cors from 'cors';
app.use(cors());

 

DB Connection & DB Connection Pool

  • DB Connection : 서버에서 DB와 연결된 하나의 통로 | 연결을 만들고 끊는데 많은 시간, 비용이 듦
  • DB Connection Pool : 미리 여러 개의 DB 연결을 만들어서 필요할 때 하나 꺼내 쓰고, 다시 반납하는 재활용 가능한 연결 묶음(pool) => 실제 서버에선 대부분 DB Connection Pool 사용

 

비동기 (async, await)

  •  async : 함수 안에 비동기적으로 실행할 부분이 있다는 것을 알림 → await이 있는 코드 & 함수에 Promise객체를 리턴하는 부분이 있다는 뜻
  • await : 그 뒤에 코드를 실행하고, 그 코드가 리턴하는 Promise객체가 fulfilled/rejected 상태가 될 때까지 기다림... 해당 객체가 fulfilled 상태가 되면 그 작업성공결과를 추출해서 리턴함 | async 안에서만 사용 가능

 

await poolconn.release의 기능?

  • await pool : 미리 만들어 놓은 DB들의 연결 | 속도 개선을 위해 커넥션 풀을 만들어 필요시 꺼냈다가 쓰고 다시 넣어둠.
  • conn.release : DB 작업이 끝난 후, 사용한 커넥션을 풀에 다시 반납하는 동작 | try-catch 구문이 끝난 후 무조건 실행 | 안 하면 메모리 누수, 커넥션 과부하 같은 문제 O
const conn = await pool.getConnection(); // 커넥션 꺼내옴
await conn.query(...);                   // 쿼리 실행
conn.release();                          // 사용 끝난 후 반납
728x90
반응형

'JavaScript > UMC - Node.js' 카테고리의 다른 글

7. Express 미들웨어 | 에러 핸들링  (0) 2025.05.16
6. ORM  (0) 2025.05.07
4. ES6와 프로젝트 파일 구조의 이해  (0) 2025.04.10
3. API URL 설계  (0) 2025.04.02
2. 실전 SQL  (0) 2025.03.26
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday
반응형