Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Google 클라우드로 연결 관리

Google Cloud Platform FunctionsGoogle Cloud Platform Run을 사용하여 Atlas 클러스터와 상호 작용 수 있습니다.

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

  • 함수 범위의 데이터베이스 연결이 아닌 글로벌 범위의 데이터베이스 연결을 사용하여 Cloud Function을 만드세요.

    함수를 호출할 때마다 새 클라이언트 객체 정의하지 마세요. 이렇게 하면 드라이버 각 함수 호출에 대해 새 데이터베이스 연결을 생성하게 됩니다. 이 경우 비용이 많이 들 수 있으며 애플리케이션 데이터베이스 연결 제한을 초과할 수 있습니다. 최상의 성능을 얻으려면 다음 지침을 따르세요.

    1. 클라이언트 객체 한 번 생성합니다.

    2. 함수가 함수 호출 전반에서 클라이언트 재사용할 수 있도록 객체 를 저장합니다.

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

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

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

    자세한 사항은 연결 옵션을 참조하세요.

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

    프라이빗 네트워킹을 통해 Atlas 클러스터를 연결하세요. Google Cloud 기능과 Atlas 클러스터 간 네트워크 피어링 연결 또는 비공개 엔드포인트를 사용하여 연결하면 IP 액세스 목록의 프라이빗 IP 주소만 허용할 수 있습니다.

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

    경고

    와 같은 /0 CIDR을 0.0.0.0/0 추가하면 어디에서나 액세스 할 수 있습니다. 이 구성은 배포서버 무단 액세스 , 데이터 유출 및 기타 악의적인 활동에 노출할 수 있습니다. 가능하면 신뢰할 수 있는 IP 주소 또는 CIDR 범위에 대한 액세스 제한하고, 공용 인터넷에서 액세스 허용할 때는 모든 데이터베이스 사용자에 대해 강력한 자격 증명 사용합니다.

    참고

    프로젝트 액세스 목록에 IPv4 /0 CIDR(예: 0.0.0.0/0 또는 10.0.0.0/0)을 추가하면 Atlas 프로젝트 에 직접 역할 부여한 모든 사용자 또는 다음을 통해 간접적으로 역할 부여받은 모든 사용자에게 경고 이메일 보냅니다. 팀 멤버십( 팀 에 프로젝트 에 대한 역할 부여된 경우).

  • 유휴 시간 1분 후 자동으로 연결을 종료하려면 maxIdleTimeMS60000으로 설정합니다. maxIdleTimeMS를 조정하면 서버리스 함수에서 시간 초과 오류 발생을 줄이는 데 유용할 수 있습니다.
  • 동시성을 구성합니다. 새 Google Cloud 기능을 만드는 경우:

    • 여러 개의 동시 요청을 처리하다 할 수 있는 2nd gen 환경을 선택합니다. 2nd gen은 또한 함수가 많은 동시 호출로 단일 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;
}