티스토리 뷰
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 pool와 conn.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 |