본문 바로가기
Dart/Dart Server

[추가학습] Dart 서버/ Rate Limiting&Throttling과 클라우드 서비스 연동 / 클라우드 기반 Rate Limiting 도구 (예: AWS API Gateway, Google Cloud Endpoints)

by Maccrey Coding 2024. 9. 22.
728x90
반응형

Dart 서버에서 Rate Limiting과 Throttling: 클라우드 서비스 연동

오늘은 Dart 서버에서 Rate LimitingThrottling을 클라우드 서비스와 연동하는 방법에 대해 알아볼게요.

AWS API Gateway와 Google Cloud Endpoints 같은 클라우드 기반 도구를 활용해 초보자도 이해할 수 있도록 설명하겠습니다.

Rate Limiting과 Throttling의 차이

먼저, Rate Limiting과 Throttling의 개념을 다시 정리해볼까요?

  • Rate Limiting: 일정 시간 동안 허용되는 요청 수를 제한합니다. 예를 들어, 한 시간에 100개의 요청만 허용하는 것입니다.
  • Throttling: 요청의 속도를 조절합니다. 예를 들어, 초당 최대 5개의 요청만 받는 것입니다.

클라우드 기반 Rate Limiting 도구

클라우드 서비스에서는 Rate Limiting과 Throttling을 쉽게 관리할 수 있는 도구들이 있습니다. 여기서는 두 가지 대표적인 도구인 AWS API GatewayGoogle Cloud Endpoints를 소개할게요.

1. AWS API Gateway

AWS API Gateway는 API를 생성하고 관리할 수 있는 서비스입니다. Rate Limiting을 설정하여 요청 수를 제한할 수 있습니다.

AWS API Gateway에서 Rate Limiting 설정하기

  1. AWS 콘솔에 로그인합니다.
  2. API Gateway 서비스를 선택합니다.
  3. 새로운 API를 생성하거나 기존 API를 선택합니다.
  4. Usage Plan을 생성합니다.
  5. Rate Limit 설정을 추가합니다:
    • Burst Limit: 순간적으로 허용되는 요청 수
    • Rate Limit: 특정 시간에 허용되는 요청 수

이렇게 설정하면 API Gateway가 자동으로 요청 수를 제한합니다.

2. Google Cloud Endpoints

Google Cloud Endpoints는 API의 성능과 보안을 관리하는 서비스입니다. 여기서도 Rate Limiting을 쉽게 설정할 수 있습니다.

Google Cloud Endpoints에서 Rate Limiting 설정하기

  1. Google Cloud Console에 로그인합니다.
  2. Endpoints를 선택하고 API를 설정합니다.
  3. OpenAPI 문서를 작성하여 Rate Limiting을 설정합니다.
  4. 문서에 다음과 같은 정보를 추가합니다.
x-google-endpoints:
  - name: your-api-name.cloudfunctions.net
    target: https://your-api-name.cloudfunctions.net
    allowCors: true
    # Rate Limiting 설정
    quota:
      limits:
        - name: apiRateLimit
          metric: apiRequestCount
          unit: "1/min/{project}"
          values:
            - 100  # 허용되는 요청 수

Dart 서버와 클라우드 서비스 연동하기

이제 Dart 서버와 클라우드 서비스를 연동해볼까요? 아래는 간단한 예제입니다.

import 'dart:io';

Future<void> main() async {
  final server = await HttpServer.bind('localhost', 8080);
  print('Listening on localhost:${server.port}');

  await for (HttpRequest request in server) {
    if (request.uri.path == '/api/data') {
      // 클라우드 API 호출
      final response = await fetchCloudApi();
      request.response
        ..statusCode = HttpStatus.ok
        ..write(response);
    } else {
      request.response
        ..statusCode = HttpStatus.notFound
        ..write('Not Found');
    }
    await request.response.close();
  }
}

Future<String> fetchCloudApi() async {
  // 클라우드 API 호출 로직 (예: HTTP 요청)
  // 이 부분에서 AWS API Gateway 또는 Google Cloud Endpoints를 호출합니다.
  return 'Data from Cloud API';
}

코드 설명

  1. HttpServer.bind: 로컬 서버를 8080 포트에서 시작합니다.
  2. await for: 들어오는 HTTP 요청을 기다립니다.
  3. if 문: 특정 경로(/api/data)로 요청이 오면 클라우드 API를 호출합니다.
  4. fetchCloudApi 함수: 클라우드 API를 호출하는 비동기 함수입니다.

Dart 서버에서 Rate Limiting과 Throttling을 클라우드 서비스와 연동하는 방법을 살펴보았습니다.

AWS API Gateway와 Google Cloud Endpoints를 사용하면 API 요청을 쉽게 관리할 수 있어요.

이 기법들을 활용해 보안을 강화하고 서버 성능을 최적화해보세요!

 

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

728x90
반응형