문서 메뉴
문서 홈
/
MongoDB Atlas
/

Google 클라우드로 연결 관리

이 페이지의 내용

  • 모범 사례
  • Google Cloud 연결 예시

Google Cloud Functions 를 사용하여 Atlas 클러스터와 상호 작용할 수 있습니다. 및 Google Cloud Run.

다음 권장사항을 사용하여 Google Cloud 함수와 Atlas 간의 연결을 올바르게 관리하세요.

  • 함수 범위의 데이터베이스 연결이 아닌 글로벌 범위의 데이터베이스 연결을 사용하여 Cloud 함수를 생성합니다.

    함수를 호출할 때마다 새 MongoClient 객체를 정의하지 않습니다. 이로 인해 드라이버가 각 함수 호출에 대해 새 데이터베이스 연결을 생성하게 됩니다. 이 경우 비용이 많이 들 수 있고 그 결과 용도가 데이터베이스 연결 제한을 초과할 수 있습니다. 새 MongoClient를 정의하는 경우 다음과 같이 수행해야 합니다.

    1. MongoClient 객체를 한 번 생성합니다.

    2. 함수가 함수 호출에서 MongoClient를 재사용할 수 있도록 객체를 저장합니다.

    연결 예제 에서는 기존 데이터베이스 연결을 재사용하여 데이터베이스와의 통신 속도를 높이고 애플리케이션 트래픽과 관련하여 데이터베이스에 대한 연결 수를 합리적인 수준으로 유지합니다.

    샤드가 많은 샤드 클러스터에 연결하는 함수가 있는 경우 성능 문제가 발생할 수 있습니다. 예를 들어, 샤드가 10개인 Atlas 클러스터의 경우 드라이버는 기본적으로 mongos 인스턴스 30개 모두에 연결합니다. 연결 문자열에 srvMaxHosts 옵션을 사용하여 드라이버가 연결하는 최대 호스트 수를 설정할 수 있습니다. 드라이버 성능을 개선하려면 srvMaxHosts=3 을(를) 설정합니다. 예를 들면 다음과 같습니다.

    mongodb+srv://<username>:<password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3

    자세히 알아보려면 연결 옵션을 참조하세요.

  • Atlas 클러스터에 대한 네트워크 액세스를 제한합니다.

    Atlas cluster와 Google Cloud 함수 간의 네트워크 피어링 연결 을 사용하거나 비공개 엔드포인트 를 사용하여 비공개 네트워킹을 통해 Atlas cluster에 연결하여 IP 액세스 목록에서 비공개 IP 주소만 허용할 수 있습니다.

    비공개 네트워킹을 사용하지 않는 경우,NAT 게이트웨이 를 통해 Atlas 클러스터에 연결하는 것이 좋습니다. . 그렇지 않으면 모든 IP 주소(0.0.0.0/0)가 Atlas 클러스터에 액세스할 수 있도록 허용해야 합니다.

    경고

    IP 액세스 목록에 0.0.0.0/0 추가하면 공용 인터넷의 어디에서든지 cluster에 액세스할 수 있습니다. 어디에서든 액세스를 허용하는 경우 데이터베이스 사용자 에 대해 강력한 자격 증명을 사용해야 합니다.

  • 유휴 시간 1 분 후 자동으로 연결을 종료하려면 maxIdleTimeMS60000 로 설정합니다. maxIdleTimeMS 조정하면 서버리스 함수에서 시간 초과 오류 발생을 줄이는 데 도움이 될 수 있습니다.

  • 동시성을 구성합니다. 새 Google Cloud 함수를 만드는 경우:

    • 여러 개의 동시 요청을 처리할 수 있는 2nd gen 환경을 선택합니다. 2ndgen은 또한 함수가 많은 동시 호출로 단일 MongoClient 를 공유할 수 있도록 허용하여 서버의 연결 로드를 줄입니다.

    • 동시성 설정을 늘려 콜드 스타트를 최소화하고 지연 시간을 개선합니다.

    참고

    동시성 설정을 늘리는 경우 최상의 성능을 위해 CPU를 늘려야 할 수 있습니다. 자세한 내용은 동시성을 참조하세요.

다음 예시에서는 Node.js Google Cloud 함수를 Atlas 배포서버에 연결합니다. <YOUR-ATLAS-CONNECTION-STRING> 을(를) Atlas 연결 문자열로 바꿉니다.

const { MongoClient } = require('mongodb');
let client;
async function getConnection() {
if (!client) {
const client = new MongoClient('<YOUR-ATLAS-CONNECTION-STRING>');
client.on('connectionCreated', () => {
console.log('New connection created successfully.');
});
// Connect to the database in the global scope
await client.connect();
}
return client;
}
← Azure 함수를 사용하여 연결을 관리합니다.