Google Cloud를 위한 Gemini 지원을 통한 다중 계층 앱 설계

이 튜토리얼에서는 Google Cloud의 AI 기반 공동 작업 도구인 Google Cloud를 위한 Gemini를 사용하여 가능한 경우 완전 관리형 서비스를 사용하는 다중 계층 웹 애플리케이션을 설계하는 방법을 보여줍니다.

목표

  • 공개 인터넷을 통해 트래픽을 제공하는 데 사용할 수 있는 다양한 Google 서비스를 살펴봅니다.
  • 더 빠른 검색을 위해 데이터를 캐시하는 데 사용할 수 있는 다양한 Google 서비스를 살펴봅니다.
  • 스테이트풀(Stateful) 데이터를 유지하는 데 사용할 수 있는 다양한 Google 서비스를 살펴봅니다.
  • 다양한 Google 서비스가 상호 운용되는 방식을 설계합니다.

사용된 Google Cloud 제품

  • Cloud Run. Cloud Run은 Google의 확장 가능한 인프라에서 직접 컨테이너를 실행할 수 있게 해 주는 관리형 컴퓨팅 플랫폼입니다. 컨테이너 이미지를 빌드할 경우 모든 프로그래밍 언어로 작성된 코드를 Cloud Run에 배포할 수 있습니다.
  • Cloud Memorystore. Cloud Memorystore는 Redis 및 Memcached용 완전 관리형 인메모리 데이터 스토어 서비스입니다. 1밀리초 미만의 데이터 액세스를 제공하는 애플리케이션 캐시를 빌드합니다.
  • Cloud SQL. Cloud SQL은 클라우드에서 완전 관리형 데이터베이스를 제공하는 서비스이며 MySQL, PostgreSQL, SQL Server 데이터베이스 엔진을 제공합니다.

시작하기 전에

  1. Gemini가 Google Cloud 사용자 계정과 프로젝트에 설정되어 있는지 확인합니다.

Google Cloud의 웹 제공 살펴보기

다음 예시에서는 Google Cloud에서 웹 앱을 빠르게 빌드하려는 개발자를 위해 조직 전체의 골든 경로를 결정하는 데 도움이 되도록 Gemini를 사용하려는 설계자를 사용자로 가정합니다. 목표는 Gemini 지원을 사용하여 선택 가능한 옵션, 특성, 상호 운용성을 이해하는 것입니다.

Google Cloud 콘솔에서 Gemini와 채팅하여 도움을 받을 수 있습니다. Gemini 창을 사용하여 어떤 도움이 필요한지 설명하는 질문 또는 문장을 프롬프트로 입력하면 Gemini가 응답을 반환합니다.

먼저 Gemini에 웹 제공을 실행할 컴퓨팅 등급을 결정할 수 있도록 요청합니다. 다음 단계를 따릅니다.

  1. Google Cloud 콘솔 툴바에서 Gemini 열기를 클릭합니다.

  2. Gemini 창에서 요구사항 및 선호도에 따라 다음 프롬프트를 입력한 후 보내기를 클릭합니다.

    I am designing a multi-tier web app in Google Cloud. First, I would
    like help on deciding what to use for the compute tier. What are my
    options for running an app to serve traffic over the public internet?
    I would like to prioritize fully-managed services.
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    Google Cloud의 공개 인터넷을 통해 트래픽을 제공하도록 앱을 실행하는 몇 가지 옵션이 있습니다. Cloud Run, App Engine 또는 Compute Engine을 사용할 수 있습니다.
    Cloud Run은 HTTP 요청을 사용하여 호출 가능한 스테이트리스(Stateless) 컨테이너를 실행하는 완전 관리형 서버리스 플랫폼입니다. App Engine은 웹 애플리케이션을 개발하고 실행하기 위한 프로그래밍 환경을 제공하는 완전 관리형 플랫폼입니다. Compute Engine은 가상 머신을 만들고 관리할 수 있는 가상 머신(VM) 서비스입니다.
    가장 적합한 옵션을 결정하려면 다음 요소를 고려해야 합니다.
    앱의 크기와 복잡성
    예상되는 트래픽의 양
    앱에 대한 필요한 제어 수준
    비용
    적은 양의 트래픽을 수신할 것으로 예상되는 작고 간단한 앱의 경우 Cloud Run이 좋은 옵션입니다. 많은 양의 트래픽을 수신할 것으로 예상되는 크고 복잡한 앱이 있는 경우에는 App Engine 또는 Compute Engine이 더 나은 옵션일 수 있습니다. 앱을 세부적으로 제어해야 하는 경우에는 Compute Engine을 사용하는 것이 좋습니다. 예산이 제한적인 경우 Cloud Run이 좋은 옵션입니다.

  3. 조직에서 소규모 웹 앱을 실행하기 위한 가장 빠른 경로를 설계하고 있다면 Gemini의 Cloud Run 설명이 요구사항에 가장 적합한 것으로 보입니다. 하지만 먼저 플랫폼의 몇 가지 특성을 확인해야 합니다. 다음 프롬프트를 입력한 후 보내기를 클릭합니다.

    Okay, I think I will move forward with Cloud Run. What metric does
    Cloud Run use to perform autoscaling?
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    Cloud Run은 수신 요청 또는 이벤트 수를 사용하여 자동 확장을 수행합니다. 버전에 트래픽이 수신되지 않으면 기본적으로 버전이 인스턴스 0개로 축소됩니다. 질문에 대한 자세한 내용은 인스턴스 자동 확장 정보를 참조하세요.

  4. 수신 요청을 기준으로 Cloud Run 자동 확장을 사용하면 이제 트래픽이 호스팅하는 애플리케이션으로 인그레스되는 방법을 이해할 수 있습니다. 다음 프롬프트를 입력합니다.

    How is a Cloud Run application exposed to users over the internet?
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    Cloud Run은 다음 소스에서 들어오는 인그레스 트래픽을 허용합니다.
    공개 인터넷: 요청은 외부 HTTP(S) 부하 분산기를 통해 트래픽을 라우팅하는 옵션을 통해 공개 소스에서 Cloud Run 서비스로 직접 라우팅됩니다.
    Google API 및 서비스: Google API 및 서비스의 요청이 외부 HTTP(S) 부하 분산기가 필요 없이 Cloud Run 서비스로 라우팅됩니다.
    VPC 네트워크: VPC 네트워크의 요청이 VPC 커넥터를 통해 Cloud Run 서비스로 라우팅됩니다.
    인그레스 설정을 사용하여 Cloud Run 서비스가 사용자에게 노출되는 방식을 제어할 수 있습니다.

  5. 이 유형의 애플리케이션에는 외부 공개 부하 분산기가 문제가 없지만, 플랫폼이 올바른 권한을 가진 인증된 사용자에게만 이 애플리케이션을 노출할 수 있는지 확인하려면 Gemini를 사용하는 것이 좋습니다. 다음 프롬프트를 입력합니다.

    Is there an easy mechanism in Cloud Run that allows only
    authenticated users to access an application?
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    예. 인증된 사용자만 Cloud Run 애플리케이션에 액세스할 수 있도록 하는 메커니즘이 있습니다. 서비스를 배포할 때 no-allow-unauthenticated 옵션을 지정하면 됩니다. 이렇게 하면 서비스가 HTTP 403 Forbidden 오류로 인증되지 않은 요청을 거부합니다. 질문에 대한 자세한 내용은 공개(인증되지 않은) 액세스 허용을 참조하세요.

  6. 마지막으로 조직의 개발자를 위해 이러한 설정을 하려면 Dockerfile과 같은 인프라와 관련된 구성을 개발자들이 작성하지 않도록 하는 것이 좋습니다.

    We have standardized on using Django as a web framework. Can I deploy
    a Python app to Cloud Run directly from source code? Or do we need to
    implement a way to containerize this ourselves?
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    예, 소스 코드에서 직접 Cloud Run에 Python 앱을 배포할 수 있습니다. Cloud Run Python 빌드팩을 사용하여 Python 앱을 빌드하고 배포할 수 있습니다. 질문에 대한 자세한 내용은 소스 코드에서 배포를 참조하세요.

Google Cloud의 캐싱 살펴보기

이제 다음 단계인 캐싱에 대한 서비스를 선택할 수 있습니다. 이 레이어에 대한 팀 리더들의 일반적인 필요성으로 인해, Google Cloud가 이 분야에서 제공하는 서비스를 이해할 수 있도록 Gemini에 프롬프트를 입력합니다. Gemini에 지원을 요청하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔 툴바에서 Gemini 열기를 클릭합니다.

  2. 다음 프롬프트를 입력하고 보내기를 클릭합니다.

    Okay! Thank you. Now let's move on to the caching tier. How can I
    introduce a caching layer to my web app? I would like to prioritize
    fully-managed services.
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    웹 앱에 캐싱 레이어를 도입하는 몇 가지 방법이 있습니다. 한 가지 옵션은 Cloud Memorystore와 같은 완전 관리형 서비스를 사용하는 것입니다. Cloud Memorystore는 Redis용 완전 관리형 인메모리 데이터 스토어 서비스입니다. 웹 앱의 성능을 개선할 수 있는 고성능의 확장 가능하고 안정적인 캐싱 솔루션을 제공합니다. Cloud Memorystore를 사용하여 이미지 및 자바스크립트 파일과 같은 정적 콘텐츠를 캐시할 수도 있습니다. 질문에 대한 자세한 내용은 Memorystore 소개: Redis용 완전 관리형 인메모리 데이터 스토어 서비스를 참조하세요.

  3. Redis용 Cloud Memorystore를 사용하기 전에 Cloud Run과 Cloud Memorystore 간의 통신이 비공개인지 확인합니다. 다음 프롬프트를 입력합니다.

    If I were to use Cloud Memorystore, how do I ensure the communication
    between Cloud Run and Cloud Memorystore is private?
    

    Gemini의 응답은 다음과 비슷하게 표시됩니다.

    Cloud Run과 Cloud Memorystore 간의 통신이 비공개인지 확인하려면 서버리스 VPC 액세스 커넥터를 만들어야 합니다. 이렇게 하면 Cloud Run과 Memorystore 인스턴스가 있는 VPC 간의 연결이 허용됩니다. 질문에 대한 자세한 내용은 Redis용 Memorystore를 사용하여 Django 애플리케이션 캐시하기를 참조하세요.

Google Cloud의 관계형 데이터베이스 살펴보기

마지막으로 이제 관계형 데이터베이스 저장소를 결정합니다. 옵션을 탐색하는 데 도움이 되도록 Gemini에 프롬프트를 표시합니다.

  1. 다음 프롬프트를 입력합니다.

    And for the relational database tier, where do you recommend I
    persist data? Please keep in mind that I would like to continue to
    prioritize fully-managed services.
    

    Gemini는 다음과 비슷하게 응답해야 합니다.

    완전 관리형 서비스에서 데이터를 유지하기 위한 몇 가지 옵션이 있습니다. 한 가지 옵션은 Cloud SQL을 사용하는 것입니다. Cloud SQL은 Google Cloud에서 SQL Server, MySQL, PostgreSQL 워크로드를 실행하기 위한 간단하고 안정적이며 안전한 플랫폼을 제공하는 완전 관리형 관계형 데이터베이스 서비스입니다. Database Migration Service를 사용하여 서버리스 마이그레이션을 빠르게 시작할 수 있도록 설계되었습니다. SQL Server용 Cloud SQL이 자동으로 SQL Server 데이터베이스의 안정성, 보안, 확장성을 보장하므로 중단 없이 비즈니스를 운영할 수 있습니다. 질문에 대한 자세한 내용은 Cloud SQL 개요를 참조하세요.

샘플 아키텍처 배포

마지막으로 이제 관계형 데이터베이스 저장소를 결정합니다. 옵션을 탐색하는 데 도움이 되도록 Gemini에 프롬프트를 표시합니다.

Okay, we have landed on using Cloud Run, Cloud Memorystore, and Cloud
SQL together. Is there a solution I can use that is available from
Google that uses these three technologies for a web application?

Gemini는 다음과 비슷하게 응답해야 합니다.

물론입니다. 웹 애플리케이션에 Cloud Run, Cloud Memorystore, Cloud SQL을 함께 사용하는 솔루션은 다음과 같습니다.
점프 스타트 솔루션: 3계층 웹 앱.
이 솔루션은 Cloud Run, Redis용 Cloud Memorystore, PostgreSQL용 Cloud SQL을 사용하는 3계층 웹 애플리케이션입니다. 이 애플리케이션은 Cloud Memorystore를 사용하여 데이터를 캐시하고 Cloud SQL을 사용하여 영구 데이터를 저장합니다.

새 아키텍처를 테스트하기 위해 제공된 웹페이지의 안내에 따라 골든 경로 아키텍처를 테스트하고 검사할 수 있도록 이 샘플 솔루션을 배포하기로 결정합니다.

삭제

이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 이 튜토리얼에서 만든 Google Cloud 프로젝트를 삭제하면 됩니다. 또는 개별 리소스를 삭제할 수 있습니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계