본문으로 건너뛰기

· 약 1분
jay.prog

서비스 계정 키 설정

  1. IAM 및 관리자-서비스 계정
  2. 서비스 계정 만들기
  3. 역할 선택
    • 탐색자
    • 편집자
    • 소유자
    • 뷰어
  4. 키 만들기
    • JSON
    • P12
  5. 환경변수 설정
    • GOOGLE_APPLICATION_CREDENTIALS=""
  6. gcloud auth application-default login

· 약 4분
jay.prog

Cloud IAM

  • Identity and Access Management
  • 구글 클라우드 서비스의 ID 및 액세스 관리를 할 수 있도록 제공해주는 서비스
  • 누가(ID) 어떤 리소스(GCP Service)에 대한 어떤 액세스 권한(Role)을 갖는지 제어 할 수 있게 함

IAM ID

  • Google 계정
  • 서비스 계정
  • G Suite 도메인
  • Google Group

Access 관리와 관련 개념

  • 리소스
    • Project
    • Compute
    • Engine instance
    • GCS Bucket
  • 권한
    • service.resouce.verb
  • 역할
    • 권한의 집합

IAM Policy Object

IAM_Policy.json
{
"bindings": [
{
"role": "roles/storage.objectAdmin",
"members": [
"user:user@example.org",
"serviceAccount:my-service@appspot.gserviceaccount.com",
"group:admins@example.com",
"domain:google.com"
]
},
{
"role": "roles/storage.objectViwer",
"members": ["user:asdf@example.com"]
}
]
}
  • bindings : members의 목록을 role에 연결
  • role : 구성원에 배정하려는 역할 (GCS의 객체 관리자, 객체 생성자, 객체 뷰어 등...)
  • members : 해당 권한에 배정될 멤버 리스트
    • 구글 계정 (user:)
    • 서비스 어카운트 (serviceAccount:)
    • 구글 그룹 (group:)
    • G Suite or Cloud ID 도메인 (domain:)

Policy 계층 구조

  • Organization > (Folders) > Project > etc. resources

Cloud IAM 역할

기본 역할

역할 이름역할 칭호권한
roles/owner소유자프로젝트 및 프로젝트 내의 모든 리소스에 대한 역할 및 관리
프로젝트에 대한 결제 설정
roles/editor편집자뷰어 권한에 리소스 변경과 같이 상태 변경 작업까지 포함됨
roles/viewer뷰어읽기 전용 작업에 대한 권한이 부여됨
기존 리소스 또는 데이터의 조회가 해당됨

사전 정의된 역할

커스텀 역할

  • 사용자가 직접 정의
  • 생성하기 위해서는 iam.roles.create 권한이 할당 되어야 함
    • roles/iam.organizationRoleAdmin
    • roles/iam.roleAdmin

서비스 계정

  • 사용자가 아닌 애플리케이션 또는 가상 머신에 속한 계정
  • 리소스이자 ID로 사용 가능
  • 애플리케이션은 사용자 계정이 아닌 서비스 계정을 이용하여 GCP API에 접근 (계정 고유의 이메일 주소로 식별)
    • ID로 사용 : 서비스 계정에 역할을 부여하여 프로젝트와 같은 리소스에 액세스 되게 할 수 있음
    • 리소스로 사용 : 사용자에게 해당 서비스 계정에 액세스할 권한을 부여 할 수 있음
  • 서비스 계정은 서비스 계정 키 쌍과 연결이 되며, 이러한 서비스 계정 키에는 크게 2가지 유형이 있음
    • GCP 관리 : 서비스간 인증에 사용 (키의 순환 주기는 약 일주일 정도)
    • 사용자 관리 : 새로운 키를 만들면 비공개 키를 다운로드하게 됨, 서비스 계정 당 최대 10개의 서비스 계정 키를 만들 수 있으며, 10년이 지나면 자동으로 만료됨

기존 정책 가지고 오기

gcloud project get-iam-policy <project ID> --format json > iam.json

정책 적용하기

gcloud project set-iam-policy <project ID> iam.json

· 약 4분
jay.prog

History

  • Web Application -> App Engine -> GCP

Purpose

  • Google Search, YouTube, Gmail, Google Maps 등과 같은 글로벌 서비스와 동일한 구글의 인프라를 제공 -> 글로벌 단위 서비스를 만들 수 있음
  • Region > Zone > Network Edge Location

GCP 대표 서비스

서비스 명설명
Compute Engine확장 가능한 고성능 VM 인스턴스
App Engine웹 애플리케이션 배포 및 웹 호스팅
Cloud Storage글로벌 에지 캐싱을 제공하는 객체 Repository
Cloud SQLMySQL, PostgreSQL
BigQuery머신 러닝이 내장되어 있으며 확장성이 우수한 완전 관리형 데이터 웨어 하우스
Cloud Dataproc관리형 Hadoop, Spark 서비스
Cloud PubSub메시지 큐잉 서비스
Kubernetes Engine쿠버네티스를 사용한 컨테이너 기반 서비스 구축
Cloud Dataflow실시간 배치 처리 및 스트림 데이터 처리
Cloud Functions이벤트 기반 서버리스 컴퓨팅 플랫폼
Stackdriver통합 모니터링 서비스
Cloud Souce Repositores관리형 버전 관리 서비스
Cloud Dataprep분석을 위해 데이터를 탐색, 정리, 준비해주는 클라우드 데이터 서비스
Cloud Composer아파치 에어플로(Apache Airflow)를 기반으로 하는 관리형 워크플로 서비스
Cloud AutoML고품질의 커스텀 머신 러닝 모델을 간편하게 학습시켜주는 서비스
Cloud ML Engine머신러닝 서비스
Cloud Natural Language자연어 분석 서비스
Cloud Speech-toText음성을 텍스트로 변환해 주는 서비스
Cloud Translation구글 번역기와 동일한 서비스
Cloud Vision이미지 분석 서비스
Cloud IAMID 및 액세스 관리 서비스
Persistent DiskVM 인스턴스용 블록 Repository
Knative서버리스로 빌드, 배포, 관리 할 수 있는 Kubernetes 서비스
Cloud BigtableNoSQL 데이터베이스
Cloud MemorystoreRedis 기반의 인-메모리 DB 서비스
Google Data Studio데이터 시각화 서비스

Cloud Service

  • Intrastructure as a Service (IaaS) : Compute Engine, Cloud Virtual Network, Cloud Service (시스템 인프라 / Server, Network, Storage, OS)
  • Platform as a Service (PaaS) : App Engine Cloud SQL (개발 및 운영 환경 / Middleware, Framework)
  • Software as a Service (SaaS) : Application Program

GCP vs AWS vs Azure

ServiceGCPAWSAzure
ComputeGoogle Compute Engine (GCE)EC2
Lightsail
Batch
Virtual Machines
VMSS
Batch
ContainerGoogle Kubernetes Engine(GKE)
Knative
EKS
ECS
Fargate
ECR
AKS
Comtainer Instances
Web App for Container
ServerlessGoogle Cloud Functions (GCF)LambdaFunctions
App HostingApp EngineElastic BeanstalkApp Service
Service Fabric
Cloud services
Object StorageGoogle Cloud Storage (GCS)S3Blob Storage
Data Lake Storage
Block StoragePersistent DiskEBSPage Blob
Disk Storage
File StorageCloud FilestoreEFS
FSx for Lustre
Windows File
Server
File Storage
Zaure NetApp Files
Relational DatabaseCloud SQL
Cloud Spanner
RDS Oracle
MySQL
MariaDB
SQL Server
PostgreSQL
Aurora MySQL
Aurora PostgreSQL
SQL Database
Database for MySQL
Database for POstgreSQL

· 약 3분
jay.prog

Region

  • 대륙 규모
  • 미국, 유럽, 아시아 등

Zone

  • Region 내부에서 물리적으로 지역이 나뉘는 것

영역

  • 'Region' - 'Detail Region' - 'Zone'
  • Region 이나 Zone 별로 제공되는 리소스나 접근 가능 범위에 제한이 있을 수 도 있음

프로젝트

  • 프로젝트를 만들고 해당 프로젝트 내에서 리소스를 이용함
  • 모든 GCP 리소스는 하나의 프로젝트에 속해야 함
  • 네임 스페이스 역할을 하기 때문에 각 프로젝트 내의 모든 리소스는 고유한 이름을 가져야 함
  • 하나의 결제 계정과 프로젝트는 연결 됨, 하나의 계정으로 여러개의 프로젝트를 생성 할 수 있고, 각각의 프로젝트는 독립적인 환경으로 운영 됨

프로젝트 식별자

구분고유성할당 방법변경 유무
프로젝트 이름고유 하지 않음직접 선택변경 가능
프로젝트 IDGCP 전체에서 고유직접 선택변경 불가
프로젝트 번호GCP 고유GCP 에서 직접 할당변경 불가

GCP 글라우드 콘솔

  • 웹 기반의 GUI 환경 제공
  • Cloud Shell : GCP용 브라우저 기반 대화형 Shell 환경 제공
    • Bash
    • Vim
    • Python
    • Java
    • Go
    • Docker
    • Cloud SDK(gcloud)
  • 인스턴스에 명령줄로 접근
  • 기본 제공 코드 편집기
  • 5GB의 영구 디스크 Repository
  • 사전 설치된 구글 클라우드 SDK 및 기타 도구
  • Java, Go, Python, Node.js, PHP, Ruby, .NET 언어 지원
  • 웹 미리보기 기능
  • GCP 콘솔 프로젝트 및 리소스 접근을 위한 자체 승인 기능

클라우드 SDK (gcloud)

  • CLI 도구
  • 로컬에 설치 및 cloud shell을 통해 사용 가능

Client library

  • 구글 클라우드 API를 호출하기 위한 클라이언트 ㅇ라이브러리
  • 로컬에서 작업하기 위해서는 서비스 계정 키 설정gcloud 설정등의 사전 작업이 이루어 져야 함
  • 지원 언어 : Go, Java, Node.js, Python, Ruby, PHP, .NET ..

· 약 1분
jay.prog

@SpringBootTest

  • 전체 컨텍스트를 로드하여 빈을 주입, 속도가 느리고 통합 테스트를 할 경우 많이 사용됨
  • 필요한 빈 만을 등록하여 테스트를 진행하고자 할 경우, @WebMvcTest 사용

@WebMvcTest

  • 보통 컨트롤러 하나만 테스트 하고 싶을 경우 사용
  • @WebMvcTest() 의 프로퍼티로 테스트를 원하는 컨트롤러 클래스를 전달 해 준다

· 약 1분
jay.prog

Spring web layer

Web Layer

  • @Controller, JSP 등의 뷰 템플릿 영역
  • @Filter, @ControllerAdvice 등 외부 요청과 응답에 대한 전반적인 영역을 지칭

Service Layer

  • @Service
  • Controller / DAO 중간 영역에서 사용됨
  • @Transactional이 사용되어야 하는 영역

Repository Layer

  • Database와 같이 데이터 저장소에 접근하는 영역 (DAO)

DTOs

  • DTO : 계층간에 데이터 교환을 위한 객체

Domain Model

  • 도메인 이라고 하는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유 할 수 있도록 단순화 시킨 것
  • @Entity

· 약 1분
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

· 약 1분
Joel Marcey
Sébastien Lorber

Congratulations, you have made your first post!

Feel free to play around and edit this post as much you like.