• 로그인
  • 장바구니에 상품이 없습니다.

Google Cloud로 내 사이트 배포하자 (무료 크레딧)

 

(변동사항이 많아서 글로 진행합니다)

 

이제 부끄럽게도 여러분이 만든 서버를 웹에 공개할 시간입니다.

 

 

 

 

배포 전 여러분 프로젝트 확인사항 :

 

1. 여러분 프로젝트 폴더에 app.yaml파일을 하나 만들어줍니다. 

app.yaml 파일은 구글 클라우드 배포시 프로젝트 설정 등을 내포한 파일입니다. 

에디터를 이용해 server.js랑 동일한 위치에 app.yaml 파일을 하나 만드시면 되겠습니다. 

그리고 다음 코드를 복붙합니다. 

 

runtime: nodejs
env: flex

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

위 코드는 구글에서 샘플로 보여주는 app.yaml 파일 예시입니다.

그대로 따라 적으면 되겠습니다. 서버의 CPU, 메모리 용량도 셋팅 가능합니다.

위 예시는 돈많이 안쓰려고 극 저용량으로 셋팅한 예시입니다.

(CPU두개에 메모리 4GB는 되어야 보통 사이트를 운영할 만 합니다.)

 

실제 사이트 운영하시려면 맨 위 두줄만 적어보셔도 됩니다.  

구글이 알아서 트래픽에 따라 서버 크기와 사양을 늘려줍니다.

 

다만 instances : 1 이게 아닌 경우 구글이 서버컴퓨터를 여러대 돌리면서 get post요청을 분산처리해줍니다. 

지금 강의에선 로그인 세션정보를 서버의 램에 저장하고 있는데

로그인은 A서버가 처리해줬는데 했었는데 post요청을 B서버가 채어가면 로그인 안되었다고 나오는 경우도 발생할 수 있습니다. 

그래서 세션데이터를 db나 다른 곳에 저장하는게 안정적으로 서비스가 가능합니다. 

https://github.com/googleapis/nodejs-datastore-session

이런거 찾아보셔도 됩니다 

 

 

 

 

 

 

2. server.js에 서버를 띄울 때 포트가 8080인지 확인합니다.

 

app.listen 이 부분이 8080인지 확인합시다. 

app.listen(8080, function() {
    console.log('listening on 8080')
  }) 

아니라면 8080으로 변경해줍시다.

왜냐면 구글클라우드에서 기본적으로 이용하는 포트가 8080입니다. 

8080쓰기 싫으시면 따로 설정해주시면 되는데 귀찮으니 8080으로 맞춥니다. 

 

 

 

 

3. MongoDB Atlas의 Network Access 메뉴에서 Whitelist IP를 모든 아이피에서 허용으로 변경합니다.

MongoDB Atlas 오랜만에 들어가신 후 

▼ 왼쪽에서 Network Access 메뉴에서 아이피 등록하는 부분 있죠?

 

 

여기서 모든 아이피 (0.0.0.0)에서 DB 접속을 허용하도록 변경해줍니다. 

(혹은 Allow Access from Anywhere 버튼 클릭)

구글 클라우드에 배포한 여러분의 서버에서도 접속을 해야하니 그렇습니다.

나중에 더 안전하게 MongoDB와 google cloud를 연결하고 싶으면 

DB도 서버와 같은 곳에서 호스팅받아서 google cloud VPC 쓰거나 PSC 같은거 설정하도록 합시다.

 

 

 

 

 

1. Google cloud platform 가입 

 

cloud.google.com 혹은

구글에 구글클라우드라고 검색하신 후 들어가서 로그인까지 합시다. 

그리고 시작하기 버튼을 눌러보도록 합시다. 

 

 

 

2. 가입창 버그 해결하기

 

 

시작하기 버튼을 누른 후 정보등록까지 진행하시면 끝입니다. 

https://cloud.google.com/gcp/getting-started/?hl=ko

뭔가 다음으로 안넘어가는 버그가 있을 땐 여기서 가입 진행해주면 됩니다. 

 

 

 

 

▼ 그리고 여기서 무료로 사용 or 활성화 버튼을 눌러서 카드 등록까지 마치십시오. 

 

 

 

필히 카드를 하나 등록하셔야 서비스 이용이 가능하며 등록하면 무료 크레딧 $300을 줍니다. (사용기간 3개월)

- 아마존처럼 자동으로 과금되진 않습니다. 여러분 승인이 있어야 자동과금됩니다. 

 

 

 

 

3. 새로운 프로젝트를 만들거나 기존 프로젝트를 선택합니다.

 

 

상단에 프로젝트 선택하는 드롭다운 메뉴가 있는데 여기서 프로젝트를 하나 고르시거나 만드시면 됩니다.

하나 새로 만드시면 프로젝트 이름이랑 ID를 예쁘게 맘대로 설정가능합니다. 

(기본적으로 My First Project가 하나 만들어져있는데 그거 쓰셔도 됩니다)

 

 

 

 

 

4. 왼쪽 메뉴에서 App Engine을 선택한 후 애플리케이션 만들기를 진행합시다. 

 

 

App Engine 이라는게 여러분이 만든 웹서버 배포할 수 있는 상품이라고 보시면 됩니다.

아무튼 application 만들기 쭉 따라하시면 됩니다. 

 

Region 선택시 서울로 위치를 설정합시다. (asia-northeast3) 서울 없으면 일본 이런거 하셈 

여러분이 사용할 서버용 컴퓨터를 한대 구매하는거라고 보시면 되는데

그 컴퓨터가 물리적으로 가까워야 응답시간이 줄어듭니다.

 

서버에 있는 HTML 파일이 무슨 위성 전파를 타고 오는게 아니라 광케이블을 타고 빛의 속도로 이동하는데

빛의 속도로 미국에서 한국까지 이동해도 최소 150ms 정도 소요됩니다. 

그래서 미국에 있는 HTML 파일을 가져올 땐 요청 & 응답이 이루어져야하니 최소 300ms 는 지연되고 시작하는 겁니다. 

그래서 여러분이 보는 미국 야동사이트들이 느린것이고

미국인들과 실시간 FPS게임을 즐길 수 없는 이유입니다.

 

 

그래서 국내 서비스를 할거라면 네이버 클라우드, cafe24 등을 이용하는 것도 좋은 옵션인데

이제 구글이나 아마존도 서울서버 제공하니까 뭐 암튼 그렇습니다. 

근데 서울같은 변두리 지역은 요금이 미국 이런 곳보다 약간 비쌉니다. 

 

 

 

 

 

 

 

- 환경은 당연히 Node.js, 표준으로 설정하시면 됩니다.

그럼 끝입니다. SDK 어쩌구 뭘 다운받으라고 하네요. 다운받읍시다. 

 

 

 

 

 

 

5. 배포를 위해 Cloud SDK라는 프로그램을 다운로드하고 설치까지 합니다. 

 

Cloud SDK 설치파일을 다운받습니다. 

 

 

 

이런게 안뜬다면 구글에 google cloud SDK 검색해서 설치하셔도 됩니다. https://cloud.google.com/sdk?hl=ko

설치과정에서의 어려움은 없을테니 뭐 건드리지말고 그냥 쭉 넘어갑시다.

맥북을 쓰신다면 설치 방법이 약간 복잡할 수 있으니 위 링크의 튜토리얼 잘 따라하시길 바랍니다.  

맥 설치시 python2.7이 없다고 나오면 구글에 검색하여 설치하시면 됩니다. 

 

 

 

 

 

 

6. 여러분 여태까지 만든 프로젝트 폴더를 VScode 에디터로 오픈한 뒤 터미널을 엽니다. 

 

빨리 오픈하십시오.

 

6-1. 그 다음에 터미널에 gcloud init 이라고 입력합니다. 

gcloud init

gcloud 명령어를 찾을 수 없습니다 그렇게 나오면 설치가 제대로 되지 않은 것입니다. 

(혹은 윈도우라면 시작 - 검색 - cmd 에서 실행해보시길 바랍니다)

 

 

6-2. 구글 계정으로 로그인합니다. 

To continue, you must log in. Would you like to log in (Y/n)? Y 

Y를 입력하면 됩니다.

당연히 구글 클라우드 플랫폼 개설한 구글아이디로 로그인하십시오. 

 

 

6-3. 원하는 프로젝트를 선택합니다. (프로젝트가 하나면 안나옴)

Pick cloud project to use: 
[1] [my-project-1] 
[2] [my-project-2] ... 
Please enter your numeric choice: 

여러분이 클라우드 플랫폼에서 만든 프로젝트 중 하나를 택하라고 합니다.

숫자를 입력해서 택하시면 됩니다. 

끝입니다. 뭔가 해커가 된 느낌입니다. 

 

 

 

 

7. 터미널에 다시 gcloud app deploy라고 입력합니다. 

 

gcloud app deploy

(여러분 작업폴더에서 터미널을 여신후 이 명령어를 입력하십시오 제발!)

 

 

그럼 이상한 안내문이 뜨는데 여러분이 배포할 소스파일, 이름, url 등을 알려줍니다.

(target url이 여러분 사이트 주소입니다)

source : 어쩌구 부분이 여러분 작업폴더가 맞으면 y를 입력합니다. 

이제 구글 AI가 우리 프로젝트 뭔지 분석하고 npm install도 해주고 알아서 다 해줍니다.

AWS ec2였다면 인스턴스 생성부터 시작해서 어려운거 하라그러고 개발이 처음이라면 불편한 점이 많았을 텐데 

구글 클라우드 서비스는 알아서 다 해줍니다. 5~10분 기다리는 것 밖에 할 일이 없습니다.

뭔가 서비스 개발에 집중할 수 있고 좋음 

 

 

 

 

8. 에러가 뜨면 해결합니다.  

 

보통 에러메세지가 뜨면 구글 검색하시면 대부분 쉽게 해결가능합니다.

하지만 AWS 이런거보다 검색결과가 적어 문의 채팅 보내는게 더 빠를 수 있습니다. 

대표적인 에러 몇개만 봅시다.

 

 

0. app.yaml 파일이 없어요 에러

위를 참고해서 빨리 만드십시오.

 

1. 결제가 안되었습니다 에러 

에러 메세지에 Billing Must be Enabled~ 카드 등록이 안되었어요~ 결제 계정 등록이 안되었어요~ 그러면 빨리 구글 클라우드 홈으로 가서 카드를 등록하십시오

 

2. MongoDB 연결 에러

DB 접속 어쩌구가 안된다고 하면 MongoDB Atlas로 가서 왼쪽 Network Access 에서 IP whitelist를 모든 아이피 접속가능하도록 등록하십시오.

 

3. deploy중 계속 멈춰있는 에러 (Updating Service [default]...)

대부분 2번 문제입니다. MongoDB Atlas에서 Network Access - 모든 IP가 접속가능하도록 바꿔주십시오.

혹은 진짜 에러메세지는 좌측 App Engine - 대시보드 - 하단에서 구경가능합니다. 

 

MongoDB 어쩌구라면 95% 확률로 2번과 동일한 문제입니다. 

 

 

 

 

 

 

9. 사이트 어떻게 접속하나요?

 

배포 완료하면 터미널에 여러분 사이트 주소 뜹니다.

까먹으면 여러분 구글 클라우드 플랫폼 - 좌측 App Engine - 대시보드에 가면 주소 나옵니다. 

 

 

 

 

 

10. 업데이트는 어떻게하나요?

 

위의 gcloud init, gcloud app deploy 하던걸 똑같이 반복하시면 됩니다.  

 

 

 

 

 

11. 테스트용이지만 과금이 두렵습니다. 어떻게 완전 삭제합니까?

 

어짜피 자동과금 안되니까 걍 냅두세요.

일시정지하려면 좌측 App Engine - 설정 - 어플리케이션 사용중지 누르시면 됩니다.

(데이터 보관 비용은 쪼끔 청구될 수도 있을 듯 합니다)

아예 삭제하려면 파란 상단메뉴에서 원하는 프로젝트 선택 - 좌측 메뉴 IAM 및 관리자 - 설정 - 삭제 누르시면 됩니다. 

 

 

 

 

구글 클라우드 만으로도 충분히 웹서비스 구현이 가능합니다.

AWS에 비해선 사용자가 적어 참고문헌은 떨어질 수 있으나

초심자에게 매우 쉬운 인터페이스와 사용법을 제공하고 있습니다. 

그리고 AWS에 비해 모든게 자동화되어있어서 입문자에게 좋습니다.  

실은 AWS에도 Elastic Beanstalk 쓰면 이거랑 비슷하게 쉽게 배포가 가능합니다.

 

 

 

 

 

SEE ALL Add a note
YOU
Add your Comment

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠