[Cloud] Cloud GCP 예시
GCP (Google Cloud Platform)
- 앞서 클라우드 서비스에 대해 알아봤다. GCP 는 구글에서 제공하는 클라우드 벤더이며 이를 기반으로 Cloud 서비스에 대한 감을 더 잡아보자.
GCP 기초 인프라 구성
- GCP 는 첫 가입 시 학습할 때 클라우드 비용을 내면서 쓰는 부담을 줄이기 위해 300 크레딧을 제공해준다.
- 하나의 클라우드 서비스에 익숙해지면, 다른 클라우드도 수월하게 사용할 수 있다.
- 구글 클라우드 플랫폼의 메인 대시보드에서
project_name
,project_id
을 볼 수 있다. 이는 GCP 에 API 요청을 할 때 가장 많이 쓴다. - 모니터링도 가능하며, 활성화를 눌러야 모든 Product 를 사용할 수 있다.
GCP Compute Engine(Server)
- 서버 = 인스턴스 = VM(Virtual Machine) = GCP Compute Engine 또는 AWS EC2
- VM 인스턴스를 만들어보자. Region은 지역으로 사용할 서버가 어디에 위치해 있는지를 뜻한다.
- Region 으로 한국 서버를 설정하면 API 요청 딜레이 속도가 얼마 걸리지 않는다. 그러나 연습할 때는 미국으로 사용해도 괜찮다.
- 비용이 지역마다 조금씩 다르다. 또한 클라우드 서비스마다 다르다. 보통은 미국이 제일 저렴하다.
- 머신 유형에서 CPU, 메모리를 고를 수 있다.
- 이후 서버 사용 예상 가격을 확인한다. GCP 에서 나오는 비용은 컴퓨터 서버를 1 달 내내 사용하면 드는 비용이다.
-
다른 성능의 가격이 궁금하다면 구글에서 Compute Engine Pricing 을 검색하면 알 수 있다.
- Region 을 서울로 지정하고 머신 유형을 e2-micro 로 지정한다. 이는 무료로 사용 가능한 성능이다. 네트워크 관련 설정도 가능하다.
- Free Tier 는 무료로 사용이 가능한 범위다. AWS 에서도 제공하고 있다.
-
이제 아래 사진과 같이 우측의 SSH 를 클릭 후 브라우저 창에서 열어보자.
-
연결 클릭 후 기다리면 아래와 같이 CLI 화면이 보이게 된다. 방금 만든 서버에 접근해서 터미널 환경이 뜬 것이다.
- 사용하지 않는 경우엔 반드시 중지 또는 삭제해야 한다. 중지되는 경우에도 비용이 부과되는 경우가 존재할 수 있기 때문에 주의하자.
GCP Cloud Storage
- Object Storage 인 Cloud Storage 을 만들어보자. “버킷 만들기” 를 클릭한다.
-
버킷은 폴더라고 보면 된다. 만들어진 버킷을 클릭하면 파일 업로드, 폴더 업로드가 가능하다.
- 회사에서 로그를 기록할 때,
log/2024/01/01
와 같은 식으로 저장한다. 즉 폴더에 폴더에 폴더 구조다. - 여기에 직접 업로드 하기 보다는 Python API 를 사용해서 업로드한다. 이 때 보안을 위해 버킷에 접근하기 위한 GCP 관련 몇 가지 환경 설정이 필요하다.
- GCP python 라이브러리인
google-cloud-storage
를 설치한다. 이후 GCP 에서 서비스 계정(Service Account) 과 키를 생성한다. -
서비스 계정은 특정 서비스에서 사용하는 계정을 뜻한다. 서비스에서 사용할 서비스 계정 키를 Json 으로 저장 후, 아래와 같이 권한을 준다.
- 회사에서는 개발용, 운영용(production) 서비스 계정을 만들어서 사용하기도 한다.
- 로컬에서 API 로 Cloud Storage 에 접근하고 싶은 경우, 서비스 계정을 만들어서 로컬에서 이 서비스 계정을 사용한다고 지정해주면 된다.
- 실제로 만들어보면 권한이 엄청 많다. 실무에서는 필요한 권한만 입력을 하게 된다.
-
아래와 같이 서비스 계정을 클릭 후 key 추가를 통해 json 유형의 키를 다운로드 한다.
-
이후 json 파일을 활용하여 로컬에 환경 변수를 설정한다.
- 주의할 점은 해당 json 파일은 절대 유출이 되면 안된다는 점이다.
-
이제 Python 에서 Cloud Storage 의 버킷 내 파일 다운로드 및 업로드를 해보자.
- Bucket 은 저장소(하드 드라이브)라고 생각할 수 있고, Blob(Binary Large Object) 은 저장할 객체라고 볼 수 있다. GCP 에서는 버킷 내의 object 를 Blob 이라고 부른다.
- 위 코드 예제와 같이
Client
를 bucket 에 연결하고 인스턴스를 만들면 해당 bucket 을 제어할 수 있다. 주의할 점은 버킷 이름이 중복되면 안된다.
Cloud 와 친해지기
- 클라우드 서비스는 사용하면 할수록 익숙해지고 많은 기능을 사용해볼 수 있다.
- 특히
FTP
,scp
명령어를 이용해서, 로컬에서 서버(compute engine)로 파일을 보내는 등 많이 사용되는 usecase 를 익히자. - 또한 위와 같이 GCP 를 웹이 아니라 터미널로 SSH 접근해보는 것도 좋다.
- 추가적으로 github action 으로 보내보는 연습은 CI/CD 개념을 잡는데 가장 좋은 방법이다.
- 로컬에서 개발을 충분히 한 후 이를 Docker Image 나 Docker Compose 로 만들고 클라우드로 보내보자.
- 클라우드 서비스를 사용하고 이해하면 회사에서 사용하는 클라우드, 자체 구축한 시스템도 이해하기 쉽다.
-
클라우드 서비스 별로 굉장히 다양한 제품들이 있는데, AWS components, GCP components 와 같이 검색하면 아래 그림과 같은 자료들을 볼 수 있다. 주의할 점은 클라우드 서비스는 계속해서 발전하기 때문에 날짜를 잘 체크해야 한다.
AWS
GCP
- 이런 걸 보면서 내가 필요한 게 뭔지를 찾아볼 수 있다.
- 또한 VPC 네트워크에 방화벽을 달고, 방화벽 규칙을 만들어 보자. GCP 에서 가능하다. 이처럼 네트워크 개념을 잘 알고 클라우드 서비스에서 적용해보자.
-
하나의 예시로 ip 등의 config 설정을 해볼 수 있다. 아래 예제는 주피터 랩을 클라우드로 띄울 때 ip 를 config 로 설정하는 것이다.
- config 에는 내부 ip 를 입력하지만, 만들어진 주피터 랩에 접속하려면 외부 ip 로 들어가야 한다.
nohup
으로 켜 놓으면 터미널을 끄더라도 사용할 수 있다.
- 그 외에 회사에서 많이 접할 수 있는 서비스 계정이나 IAM 및 관리자 등 디테일한 권한도 살펴보고, GCP 의 Airflow 인 Composer 를 사용해보자.
- 현업에서는 github repo 를 하나 만들어서 배포 프로세스로 github action 을 많이 이용한다.
- github action cloud storage 를 github action 으로 다루는 예제가 아래 링크에 있다.
- https://github.com/google-github-actions/upload-cloud-storage
댓글 남기기