[javascript] Express.js에서의 DB 연결 풀링 방법

Express.js는 Node.js를 기반으로 한 웹 앱 개발을 위한 강력한 프레임워크입니다. Express.js를 사용하면 쉽게 웹 애플리케이션을 만들 수 있지만, 데이터베이스와의 연결 관리는 중요한 부분입니다. 이를 위해 DB 연결 풀링을 사용하여 효율적으로 DB 연결을 관리할 수 있습니다.

DB 연결 풀링이란?

DB 연결 풀링은 여러 클라이언트가 동시에 데이터베이스에 접속할 수 있는 연결을 제공하는 기술입니다. 이를 통해 클라이언트는 매번 연결을 설정하고 닫을 필요 없이, 미리 생성된 연결 풀에서 연결을 얻고 반납할 수 있습니다. 이는 많은 사용자가 동시에 서비스에 접근할 때 효율적인 자원 관리를 가능하게 합니다.

Express.js에서의 DB 연결 풀링 사용 방법

Express.js에서 DB 연결 풀링을 사용하는 방법은 다음과 같습니다:

  1. 필요한 npm 모듈을 설치합니다. 예를 들어, MySQL을 사용한다면 mysql 모듈을 설치합니다:
    npm install mysql
    
  2. 애플리케이션의 app.js 파일 또는 적절한 위치에 DB 연결 풀 설정 코드를 추가합니다. 다음은 MySQL을 사용할 때의 예입니다:

    const mysql = require('mysql');
       
    const pool = mysql.createPool({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'mydatabase',
      connectionLimit: 10 // 최대 연결 수
    });
       
    // DB 연결 풀을 앱의 글로벌 변수로 설정
    app.locals.dbPool = pool;
    
  3. DB 연결이 필요한 라우터에서는 app.locals를 통해 DB 연결 풀을 가져와 사용할 수 있습니다. 예를 들어, /users 경로의 GET 요청에 대한 처리 코드에서 DB 연결 풀을 사용하려면 다음과 같이 작성합니다:

    router.get('/users', function(req, res, next) {
      const dbPool = req.app.locals.dbPool;
       
      dbPool.getConnection(function(err, connection) {
        if (err) {
          console.error('DB 연결 실패:', err);
          return;
        }
       
        // 데이터베이스 쿼리 등 필요한 작업 수행
        connection.query('SELECT * FROM users', function(err, results) {
          connection.release();
          if (err) {
            console.error('쿼리 실행 오류:', err);
            return;
          }
       
          // 결과를 클라이언트에 응답
          res.json(results);
        });
      });
    });
    

위의 예제에서 getConnection() 메서드를 통해 DB 연결을 얻고, 작업을 수행한 후 release() 메서드를 호출하여 연결을 반환합니다. 이를 통해 DB 연결 풀이 자원을 효율적으로 관리할 수 있습니다.

DB 연결 풀링을 사용하면 Express.js 애플리케이션에서 데이터베이스 연결을 효율적으로 관리할 수 있습니다. 이는 동시에 많은 사용자가 서비스에 접근하는 경우에도 안정적인 애플리케이션 운영을 가능케 합니다.

참고 자료