Gemini for end-to-end SDLC

JIEUN JANG·2024년 7월 21일
0

Google Cloud Skills Boost

목록 보기
7/13

소프트웨어 개발 수명 주기 Software Development Life Cycle, SDLC


보통 요구사항 분석→설계→개발→테스트→운영 단계를 의미한다.

Cloud Shell 활성화

# 활성 계정 이름을 나열
gcloud auth list

# 프로젝트 ID 나열
gcloud config list project

1. 환경 및 계정 구성

# 프로젝트 ID를 설정
PROJECT_ID=$(gcloud config get-value project)
echo "PROJECT_ID=${PROJECT_ID}"

# 로그인된 Google 사용자 계정을 환경 변수에 저장
USER=$(gcloud config get-value account 2> /dev/null)
echo "USER=${USER}"

# Gemini용 Cloud AI Companion API를 사용 설정
gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID}

#  Google Cloud Qwiklabs 사용자 계정에 필요한 IAM 역할을 부여
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user
gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer

2. Cloud 워크스테이션 생성 및 실행

1. 워크스테이션 클러스터 보기

탐색 메뉴 -> VIEW ALL PRODUCTS -> cluster management 검색


Ready 상태인걸 확인해줍니다. 조정 중 Update 일 경우에 주기적으로 새로고침 해서 Ready가 될 때까지 기다립니다.

2. 워크스테이션 구성 만들기

Workstation Configuration -> Create

해당 옵션으로 값을 지정해주고 생성해줍니다.


Configuration의 상태가 Ready가 될 때까지 주기적으로 새로고침해주며 기다립니다.

3. 워크스테이션 만들기

Workstation -> Create

해당 옵션으로 값을 지정해주고 생성해줍니다.

Stopped 상태인 워크스테이션을 클릭 후 start를 클릭합니다.

4. IDE 실행

Chrome 메뉴 -> 설정 -> 서드 파티 쿠키 -> 허용

Workstation -> Launch하면 IDE 창이 실행된다.

3. Cloud Code 확장 프로그램을 업데이트하여 Gemini 사용 설정

워크스테이션 IDE의 Cloud Code에 Gemini를 사용 설정

1. Cloud Code 업데이트

확장 프로그램 -> google cloud code -> update

2. Google Cloud에 연결

상태표시줄 Cloud Code -> 로그인

Cloud Code - No Project로 뜨면 로그인이 완료된 것이다.

3. Cloud Code에서 Gemini 사용 설정

IDE 상태 표시줄 -> 프로젝트 없음 -> Google Cloud 프로젝트 선택 -> 해당 프로젝트 클릭
위의 No Project 클릭 후


4. 웹 앱 빌드

1. 환경 구성

# 프로젝트 ID를 설정
gcloud config set project Google Cloud Project ID

# Docker 사용자 인증 정보 도우미를 실행
gcloud auth configure-docker

# cymbal-superstore 애플리케이션 코드를 다운로드하기 위해 다음 명령어를 실행
gcloud storage cp -r gs://cloud-training/OCBL435/cymbal-superstore .

2. 백엔드 빌드

# 백엔드 컨테이너 이미지를 빌드
cd ~/cymbal-superstore/backend
docker build --platform linux/amd64 -t inventory container image url .

# 빌드된 백엔드 이미지를 Container Registry 저장소로 푸시
docker push inventory container image url

# 백엔드를 Cloud Run에 서비스로 배포
gcloud run deploy inventory --image=inventory container image url --port=8000 --region=set at lab start --set-env-vars=PROJECT_ID=Google Cloud Project ID --allow-unauthenticated

gcloud run deploy 명령어의 출력에 표시되는 Service URL의 값을 복사한다.

3. 프론트엔드 빌드

IDE에서 frontend/.env.production 파일을 편집하여 백엔드 Cloud Run 엔드포인트에 연결하도록 프런트엔드 코드를 업데이트

폴더 목록 -> cymbal-superstore -> 프론트엔드 -> .env.production
REACT_APP_INVENTORY_API_URL에 복사해놓은 Service URL을 넣어준다.

# 프론트 엔드 빌드
cd ~/cymbal-superstore/frontend
npm install && npm run build

# 프론트엔드 웹 앱을 Cloud Storage에 업로드
gcloud storage cp -r build/* gs://frontend cloud storage bucket name

4. 웹 앱 보기


5. 웹 앱 백엔드 수정

Backend -> index.ts를 Gemini를 이용해서 주석처리한 부분을 코드화해서 수정해준다.

6. 로컬로 앱테스트

1. PORT 환경 변수 설정

View -> Command Palette -> settings.json을 선택해서 업데이트해준다.

"terminal.integrated.env.linux": {
    "PORT": "8000"
},


2. 백엔드 서버 시작

# 백엔드 서버를 시작
cd ~/cymbal-superstore/backend
npm run start

# API 엔드포인트를 호출
curl localhost:8000/newproducts

7. Gemini를 사용한 백엔드 수정

backend/index.ts에서 /new products API 부분을 수정한다.

products.forEach((product) => {
  if (product.data().quantity > 0) {
    const p: Product = {
      id: product.id,
      name: product.data().name,
      price: product.data().price,
      quantity: product.data().quantity,
      imgfile: product.data().imgfile,
      timestamp: product.data().timestamp,
      actualdateadded: product.data().actualdateadded,
    };
    productsArray.push(p);
  }
});

8. 프론트엔드 테스트

1. 백엔드 다시 빌드 후 재배포

# 백엔드 컨테이너 이미지를 빌드하기 위해 저장소로 이미지를 푸시하고 Cloud Run에 백엔드 서비스를 배포하고 다음 명령어를 실행
cd ~/cymbal-superstore/backend
docker build --platform linux/amd64 -t inventory container image url .
docker push inventory container image url
gcloud run deploy inventory --image=inventory container image url --port=8000 --region=us-central1 --set-env-vars=PROJECT_ID=Google Cloud Project ID --allow-unauthenticated

2. 웹 앱 테스트

변경한 후에 다시 url로 접속해본다.

9. Gemini를 사용한 테스트 개발

# 테스트 실행
cd ~/cymbal-superstore/backend
npm run test

10. BigQuery와 Gemini 함께 사용

1. BigQuery에 데이터 업로드

Google Cloud -> BigQuery -> 프로젝트 선택


SCHEMA에 들어가서 Query문을 넣고 실행해본다.

2. Gemini를 사용한 SQL 쿼리 생성

11. Spanner와 Gemini 함께 사용

메뉴 -> Databases -> Spanner -> Instances에서 해당 인스턴스를 선택한다.



Spanner Studio -> +NEW SQL EDITOR TAB -> Gemini 글쓰기를 선택한 후에 SQL completion을 누르고 SELECT를 입력 후에 enter를 누르면 GEMINI가 SQL문을 작성해준다.



해당 출력 결과를 확인할 수 있다.

12. Gemini를 사용한 로그 보기

Gemini 프롬프트를 이용해 inventory 라고 불리는 Cloud Run의 log 확인하는 법을 물어본다.

Cloud Run Service Page에서 하는 방법으로 Cloud Run 페이지에서 inventory 검색 후에 LOGS 탭을 눌러 확인해봤다.

13. 정리


GCP를 이용해서 백엔드, 프론트 엔드를 빌드하고 배포하고 API 수정하고 BigQuery, Spanner 이용 Logs 확인까지 해봤다.

SDLC를 Gemini와 함께 GCP에서 진행해봤다. 지난 번 DevOps 과정에서 바라던 걸 SDLC에서 경험할 수 있었다.
실제 운영은 못 해봤지만 쿼리를 삽입하고 로그 확인하는 것으로 간략하게 해볼 수 있었다.
특히 Spanner를 통해서 직접 데이터 베이스에 접근하고 쿼리문을 입력해서 조정하고 결과를 바로 확인할 수 있어서 편리했다. 따로 접속할 필요 없이 GCP에서 조작이 가능하다는 점이 AWS와의 차별점을 줘서 좋은 듯 하다. 역시 빅데이터 관련해서는 GCP가 더 유용하다고 하던데 이런 부분에서 이점을 가지는 것 같다.

0개의 댓글