
시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Examine GKE application SQL queries using SQL Insights.
/ 25
Enable SQLCommenter on a GKE application.
/ 25
Redeploy the gMemegen application.
/ 25
Take actions to tune and optimise the database to enhance performance.
/ 25
이 실습에서는 SQL Insights를 사용하여 Cloud SQL 데이터베이스 성능을 분석합니다. SQLcommenter 라이브러리로 기존 Google Kubernetes Engine(GKE) 애플리케이션을 수정하여 애플리케이션 내에서 쿼리의 소스를 식별하는 데 도움이 될 주석을 애플리케이션 쿼리에 답니다.
작업마다 지정된 서비스와 리소스를 만들거나 구성해야 하며 각 작업을 성공적으로 완료하기 위해서는 제공된 자세한 안내를 따라야 합니다.
이 실습에서는 다음 작업을 실행하는 방법을 알아봅니다.
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지를 표시합니다.
실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음을 준비해야 합니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 대화상자가 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 창이 있습니다.
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
실습 세부정보 창에서도 사용자 이름을 확인할 수 있습니다.
다음을 클릭합니다.
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
실습 세부정보 창에서도 비밀번호를 확인할 수 있습니다.
다음을 클릭합니다.
이후에 표시되는 페이지를 클릭하여 넘깁니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다. Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
Google Cloud 콘솔 상단에서 Cloud Shell 활성화 를 클릭합니다.
다음 창을 클릭합니다.
연결되면 사용자 인증이 이미 처리된 것이며 프로젝트가 학습자의 PROJECT_ID,
gcloud
는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
출력:
출력:
gcloud
전체 문서는 Google Cloud에서 gcloud CLI 개요 가이드를 참고하세요.
이 실습에 필요한 API를 사용 설정해야 합니다. 나중에 컨테이너를 빌드하여 Artifact Registry에 푸시할 예정이므로 먼저 Artifact Registry API를 사용 설정해야 합니다.
.kube
폴더에 config
파일이 생성됩니다.브라우저에서 부하 분산기의 인그레스 IP 주소로 이동합니다.
다음 명령어를 사용하면 Cloud Shell에서 부하 분산기의 외부 IP 주소로 연결되는 클릭 가능한 링크를 만들 수 있습니다.
이 작업에서는 gMemegen 애플리케이션에서 생성된 쿼리를 조사합니다. 애플리케이션으로 밈을 만들고 애플리케이션의 최근
및 무작위
페이지에서 밈을 확인하여 약간의 트래픽을 생성해야 합니다.
이 작업을 완료하려면 Cloud SQL 데이터베이스에서 SQL Insights를 사용 설정해야 합니다.
Cloud 콘솔에서 데이터베이스 > SQL로 이동하여 postgres-gmemegen
인스턴스를 선택합니다.
기본 인스턴스 메뉴에서 쿼리 통계를 선택합니다.
사용 설정 버튼을 클릭합니다.
기본 인스턴스 > 쿼리 통계 페이지의 상위 쿼리 및 태그에서 태그 탭을 선택합니다.
애플리케이션 태그 저장을 클릭합니다.
이 단계에서는 gMemegen 애플리케이션을 사용하여 최소 4개의 새로운 밈을 만들고 확인합니다. 이 단계의 목표는 애플리케이션의 성능을 테스트하여 샘플 데이터를 생성하고 사용 가능한 모든 경로를 활용하는 것입니다.
gMemegen 애플리케이션 탭에서 홈 페이지로 이동하여 이미지를 선택합니다.
새 밈 페이지에서 상단 및 하단 텍스트 상자에 텍스트를 입력합니다. 원하는 대로 밈을 만들어 봅니다.
제출 버튼을 클릭합니다. 새로운 밈이 렌더링된 것을 볼 수 있습니다.
브라우저의 뒤로 버튼을 사용하여 뒤로 이동합니다.
최근 메뉴 항목을 클릭하여 자신이 만든 최근 밈을 확인합니다.
정렬됨 메뉴 항목을 클릭하여 상단 텍스트의 알파벳순으로 정렬된 밈을 확인합니다.
무작위 메뉴 항목을 클릭하여 무작위 밈을 확인합니다. 브라우저에서 무작위
탭을 닫습니다.
홈 메뉴 항목을 클릭하여 새로운 밈을 만들 수 있는 홈페이지로 돌아갑니다.
최소 4개의 새로운 밈을 만들 때까지 위의 1~8번 항목을 진행합니다.
기본 인스턴스 메뉴에서 쿼리 통계로 이동합니다.
데이터베이스 필드에서 드롭다운 메뉴를 열고 gmemegen_db
를 선택합니다. 목록에 gmemegen_db
가 표시되지 않으면 페이지를 새로고침합니다. 목록에 gmemegen_db
가 제공되기까지 다소 시간이 걸릴 수 있습니다. gMemegen
애플리케이션에서 더 많은 작업을 수행하여 데이터베이스 트래픽을 추가로 생성하면 도움이 될 수 있습니다.
상위 쿼리 및 태그
까지 아래로 스크롤하여 gMemegen 애플리케이션에서 생성된 쿼리가 쿼리 탭에 나열되는지 확인합니다.태그가 없기 때문에 SQL Insights에서 쿼리의 출처를 구분할 수 없습니다. 데이터베이스 개발자 도구인 SQLcommenter는 애플리케이션 쿼리에 주석을 추가하여 이 뷰에 태그를 채우는 데 도움을 줍니다. 이 도구는 개발자와 테스터가 디버깅 및 최적화를 지원하기 위해 애플리케이션 쿼리의 소스를 추적할 때 매우 유용합니다.
애플리케이션 코드에 SQLcommenter 라이브러리를 포함하기 전후의 SQL Insights 결과를 비교할 수 있도록 현재 시간을 기록해 두어야 합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 SQLcommenter 라이브러리 코드를 포함하도록 gMemegen 애플리케이션을 수정합니다. 이 도구를 사용하면 애플리케이션 쿼리에 주석을 달아 SQL Insights에서 쿼리를 더 유용하게 활용할 수 있습니다.
이 단계에서는 gMemegen 앱의 main.py
Python 애플리케이션 코드를 수정하여 SQLcommenter를 사용 설정합니다. 이미 코드에 변경사항이 포함되어 있고 주석 처리를 삭제하기만 하면 되므로 간단히 sed 명령어를 사용하면 됩니다. 또한 애플리케이션을 다시 빌드하고 Artifact Registry에 새 이미지를 저장합니다.
SQLcommenter를 사용 설정하려면 gmemegen/app/main.py
Python 파일의 다음 코드 블록에서 주석을 삭제하고 SQLcommenter를 사용하여 쿼리에 태그를 추가하도록 애플리케이션을 구성합니다.
이 단계에서는 수정된 애플리케이션 코드를 빌드하고 버전 2 라벨이 지정된 이미지를 Artifact Registry에 푸시합니다.
확인을 요청하는 메시지가 표시되면 Y
를 입력합니다.
아티팩트 저장소를 만듭니다.
새 이미지를 빌드하고 Artifact Registry에 푸시합니다.
빌드 및 푸시 프로세스를 완료하는 데 몇 분 정도 걸립니다. 완료되면 아래와 같이 빌드가 성공적으로 완료되었음을 나타내는 출력이 표시됩니다.
출력:
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 수정된 gMemegen 애플리케이션을 재배포합니다. 그러면 SQL Insights를 사용하여 두 애플리케이션 버전의 쿼리를 비교할 수 있습니다.
Cloud Shell에서 자신의 프로젝트 ID, Cloud SQL 연결 이름, 리전으로 배포 YAML을 업데이트하려면 다음을 실행합니다.
Cloud Shell에서 다음 명령어를 실행하여 애플리케이션을 재배포합니다.
Cloud Shell에서 앱의 버전 2.0
을 선택하여 부하 분산기를 재배포합니다.
Cloud Shell에서 다음 명령어를 실행하여 배포가 성공적으로 완료되었는지 확인합니다.
출력:
이제 gMemegen 애플리케이션의 새로운 배포가 실행됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 SQL Insights로 돌아가 SQLcommenter를 포함하여 업데이트된 애플리케이션의 데이터베이스 활동을 검토합니다. 먼저 새 버전의 앱을 사용하여 몇 가지 밈을 만들어 데이터베이스 활동을 더 많이 생성해야 합니다.
이 단계에서는 작업 3에서 배포한 애플리케이션의 새 버전을 사용하여 새로운 밈을 만듭니다. 메뉴 바에서 애플리케이션 이름 옆에 (SQLcommenter)
가 표시되어 새 앱임을 알 수 있습니다.
이 단계에서는 새로 배포된 애플리케이션의 쿼리를 검토하고 SQLcommenter에서 삽입한 태그를 확인합니다.
Cloud 콘솔 탭의 기본 인스턴스 > 쿼리 통계 페이지에 있는 상위 쿼리 및 태그에서 태그 탭을 선택합니다.
총 시간별 부하
열 이름을 클릭합니다. 그러면 태그된 쿼리 목록이 새로고침되어 SQLcommenter에서 태그한 최근 쿼리가 모두 표시됩니다.
컨트롤러
, 경로
, DB 드라이버
, 프레임워크
태그가 채워진 것을 확인할 수 있습니다.
태그 탭에 이 쿼리가 표시되지 않는 경우 웹페이지를 새로고침하고 태그 탭을 클릭한 다음 총 시간별 부하
열 이름을 다시 클릭합니다.
(계속 - 전체 너비를 표시하기 위함)
이 단계에서는 애플리케이션 쿼리의 성능을 분석하여 느리게 실행되는 쿼리를 식별합니다.
상위 쿼리 및 태그
까지 아래로 스크롤합니다.태그 탭을 클릭합니다.
경로
열에서 /sorted
태그를 선택합니다.
녹색 막대로 표시된 것처럼 부하가 가장 높아야 하지만 실습에서 상대적으로 적은 데이터를 사용한 경우 부하가 가장 높지 않을 수 있습니다. 실습의 쿼리 지연 시간 그래프에는 몇 개의 포인트 항목만 표시될 것이지만, 데이터를 추가로 사용하면 지연 시간(P95 및 P99) 값이 긴 쿼리를 확인할 수 있습니다.
브라우저의 뒤로 버튼을 사용하여 상위 쿼리 및 태그 뷰로 돌아갑니다. 또는 쿼리 통계 페이지 상단에 있는 탐색경로를 사용하여 postgres-gmemegen
인스턴스를 선택해도 됩니다.
경로
열에서 /recent
태그를 선택합니다. 이 태그는 부하가 약간 더 낮고 지연 시간이 더 짧습니다. 다시 말씀드리지만 실습에서는 포인트 결과만 표시되어 /sorted
경로와 크게 다르지 않을 수 있습니다.
이 쿼리들은 거의 동일한 수의 행을 반환하는데 성능이 다른 이유는 무엇일까요? meme.id
필드는 meme
테이블의 기본 키이므로 색인이 생성되지만, meme.top_text
필드는 색인이 생성되지 않으므로 실행 시간이 더 오래 걸리기 때문입니다.
gmemegen_db
데이터베이스는 매우 작아서 이 실습 중에 UI를 통해 생성한 행 수만 포함하므로 두 경로의 성능 차이가 즉시 명확하게 나타나지 않거나 심지어 눈에 띄지 않을 수도 있습니다. 프로덕션 환경에서는 색인이 생성된 필드와 색인이 생성되지 않은 필드로 정렬된 쿼리의 성능 차이가 분명히 드러납니다.이 작업에서는 이전 작업에서 식별한 느리게 실행되는 쿼리를 해결하기 위해 gmemegen_db
데이터베이스를 수정합니다.
이 단계에서는 데이터베이스 열에 색인을 추가하여 성능을 개선합니다.
Cloud 콘솔의 기본 인스턴스 > 개요 페이지에 있는 이 인스턴스에 연결 섹션에서 Cloud Shell 열기를 클릭합니다. 명령어를 사용하면 Cloud Shell 콘솔이 자동으로 채워집니다. 명령어를 실행합니다.
메시지가 표시되면 비밀번호 supersecret!
을 입력합니다.
psql의 postgres=>
프롬프트에서 다음을 실행합니다.
비밀번호를 다시 입력하라는 메시지가 표시됩니다. supersecret!
을 입력합니다.
psql의 gmemegen_db=>
프롬프트에서 다음을 실행합니다.
정렬하는 열에 색인이 추가되었으므로 이제 이 단계에서는 느리게 실행되는 쿼리의 성능을 확인합니다.
Cloud 콘솔의 기본 인스턴스 > 쿼리 통계 페이지에 있는 상위 쿼리 및 태그의 태그 탭에서 /sorted
태그를 다시 선택합니다.
쿼리 지연 시간 그래프까지 아래로 스크롤하여 지연 시간이 줄어든 것을 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
실습을 완료했습니다.
이 사용자 주도형 실습은 Cloud SQL에서 PostgreSQL 데이터베이스 관리하기 퀘스트의 일부입니다. 퀘스트는 연관성이 있는 여러 실습을 하나의 학습 과정으로 구성한 것입니다. 이 퀘스트를 완료하면 배지를 얻고 수료를 인증할 수 있습니다. 배지를 공개하고 온라인 이력서 또는 소셜 미디어 계정에 연결할 수 있습니다. 이 퀘스트에 등록하여 즉시 수료 크레딧을 받으세요. 참여할 수 있는 모든 퀘스트는 Google Cloud Skills Boost 카탈로그를 참조하세요.
설명서 최종 업데이트: 2024년 7월 4일
실습 최종 테스트: 2024년 7월 4일
Copyright 2025 Google LLC. All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.