크게 4가지
1) IAM access - 사용자계정, 서비스계정, 그룹등 리소스 계층구조
2) VPC - subnet, 방화벽규칙, cidr
3) Storage - GCS, cloud sql, spanner, firestore, bigtable
4) Container - GKE, Cloud Run
5) Serverless - AppEngine, Cloud Funtion, Cloud Run
6) Monitoring - SRE(SLI, SLO, SLA)
PCA 자격증을 목표로 하는 교육이긴 하지만 공식 교육이기 때문에 문제 풀이 보다는 다양한 google products의 서비스들의 특징을 설명해주고 skills boost를 통해 퀴즈를 풀거나 lab실로 제품을 경험 해볼 수 있는 시간
VPC(Virtual Private Cloud)
클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 해주는 가상 네트워크망
VPC를 분리함으로써 확장성을 가질 수 있고, 네트워크에 대한 완전한 통제권을 가질 수 있음.
Subnet이란?
하나의 IP 네트워크 주소를 지역적으로 쪼개서 여러 개의 지역 네트워크로 사용할 수 있도록 하는 작은 네트워크
-> GCP에서는 VPC(메인네트워크)를 쪼개서 여러개의 서브넷으로 나눌 수 있음.
CIDR, SUBNETMASK 역할
사용자마다 얼마만큼에 네트워크(IP)가 필요한지 다르기 때문에 적절하게 사용하기 위해서 subnet mask, cidr 이용
Subnet Mask
IP주소에 대한 네트워크 아이디와 호스트 아이디를 구분하려고 사용하거나 클래스 구분하기 위해 사용됨
클래스(cidr 이전)
A,B,C로 구분하며 A클래스 가까울수록 할당받는 host ip 개수가 늘어남
CIDR(Classless Inter-Domain Routing)
1993년 이전에는 IP 주소를 할당하는 방식으로 클래스 기반 방식을 사용했지만, 사용되는 호스트의 수가 늘어남에 따라 할당 가능한 IP 주소의 수가 고갈되는 것과 라우팅 테이블의 크기가 커지는 문제를 해결하기 위해, 1993년부터 도입한 표준 IP 주소 할당 방식
기존의 사용하던 서브넷 마스크는 8자리 단위로만 끊기게 되어 낭비되는 주소가 많았기 때문에 조금더 세밀한 조정이 가능한 CIDR 표기법이 생기게됨.
CIDR 표기법
A.B.C.D/E
A부터 D까지는 IPv4 주소와 동일하게 8비트씩 끊어 0부터 255까지 10진수 숫자. /뒤에 오는 0~32까지의 숫자로 구성된 E를 추가하는것이 사이더 표기법입니다. CIDR값에 따라 호스트값이 달라지며 값이 적어질수록 할당하는 ip주소 값이 커지게 됩니다.
Subnet mask와 cidr
255.255.255.255 = 32
255.255.255.0 = 24
255.255.0.0 = 16
255.0.0.0 = 8
0.0.0.0 = 0
추가로 기존 클래스로만 구분하자면 8, 16, 24 정도겠지만 CIDR는 9, 17, 25 도 포함가능.
GCP VPC내에서 TCP, UDP 포트나 지정 프로토콜을 허용 해줄때 이용됨.
source filter에서는 ipv4 범위지정, 소스태그, 서비스 계정을 통해 특정 네트워크에만 액세스 를 허용 하게끔 할 수 있음.
영어 뜻대로 길을 뜻하는데 다른 길이 아닌 네트워크 트래픽의 길을 나타내며 가상 머신(VM) 인스턴스에서 다른 대상 위치로 이동하는 경로를 정의하는게 Routes
대상위치는 방법에 따라 내부, 외부 연결 모두 가능함.
다른 영역이나 vpc를 통한 트래픽(ping) 연결
외부 IP주소끼리의 경우
Ping연결 가능 (ICMP 방화벽 규칙에 의해서 제어됨)
다른 vpc 내부 IP주소끼리의 경우
Ping연결 불가능 (동일 VPC가 아닌경우 패킷손실 확인)
->해결책으로는 VPC peering (vpc네트워크를 연결하는 기술)
동일한 프로젝트에 속하는지 또는 동일한 조직에 속하는지에 관계없이 두 개의 VPC의 네트워크 내부 IP 연결을 허용시켜주기 위해 사용
VPC Peering 장점
주의 사항
다른 프로젝트 vm을 연결할 때는 서브넷 ip가 겹치면 안됨.
VPC peering 실습
1) vpc 2개 각 subnet 하나씩 생성
2) vm 생성 후 처음 ping -c 3 내부 ip로 패킷 전송 했을때 100% 실패 확인
3) vpc peering 공개 서브넷 경로를 통해 내보내기로 1->2, 2->1로 peering 전송
활성화 이후 패킷전송 확인됨.
공유 VPC를 사용하는 조직은 여러 프로젝트의 리소스를 공통 VPC 네트워크에 연결할 수 있으므로 해당 네트워크의 내부 IP를 사용하여 서로 안전하고 효율적으로 통신 할 수 있음.
필수 관리 역할이 필요
peering vpc와 shared vpc 차이
shared vpc는 동일한 조직 내에 포함되어 있어야만 내부 연결이 가능
DNS(Domain Name Server)
보유중인 도메인이 있다면 도메인을 등록하여 사람이 읽을 수 있는 주소를 주소창에 도메인 검색 했을때 해당 도메인 ip주소로 이동 시켜주는 서비스
ex)www.naver.com
CDN (Content Delivery Network)은 글로벌 엣지 네트워크를 사용하여 사용자에게 최대한 가깝게 콘텐츠를 제공함으로써 콘텐츠 전송을 가속화 하는 콘텐츠 전송 네트워크를 뜻합니다.
장점
NAT(Network Address Translation)는 사설IP를 공인IP로 변경에 필요한 주소 변환 서비스
외부 ip주소가 없는 특정 리소스들을 아웃바운드 연결을 할 수 있게합니다.
강점
3Tier Architecture Web->WAS->DB (이중화)
1) VPC 서브넷 추가 (10.0.0.0/24, 10.0.1.0/24)
2) Unmanaged instance group 4개 추가 (a-zone, b-zone각자 2개씩)
이유 : 서브넷과 존이 다 달라서
3) instance group 마다 Web VM, WAS VM 생성 (web으로는 apache2, was로는 tomcat사용)
4) VM Tag설정 (http=80, was(tomcat)=8080, mysql=3306)
5) External LB(HTTP), Internal LB 생성(TCP)
6) WEB 인스턴스에서 tcp lb로 프록시 설정이 필요
7) WAS 인스턴스에서 MySQL로 연결
8) MySQL 복제본 생성 (Replication)
해결법
현재 경로와 기존 환경설정 경로가 달라서 에러가 나왔고 로그로 나온 관련 에러 구글링을 통해 환경변수를 재 지정하여 해결
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat8
export CLASSPATH=$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
해결법
Reverce proxy 사용
webserver로 사용하던 apache2에 기본으로 탑재되어 있는 기능인 modeproxy를 활용
/etc/apache2/sites-available/000-default.conf를 수정
000-default.conf
<VirtualHost *:80>
...
# Forward Proxy 경우 On / Reverse Proxy Off
ProxyRequests Off
# 호스트가 받은 HTTP 요청을 Proxy 요청시 사용
# Reverse 경우 On으로 해야함
ProxyPreserveHost On
# Proxy에 연결할 URL
# ServerHost:localhost -> Apache -> ProxyPass URL
ProxyPass / http://192.168.10.146:8080/service/ # 뒤에 슬래쉬는 붙여줘야함
# WAS 가 redirect HTTP 응답을 보냈을 경우 Location, Content-Location HTTP 헤더를 수정 클라이언트에 전달한다.
# reverse proxy가 이 헤더를 수정하지 않으면 클라이언트는 redirect 시 제대로 연결할 수 없으므로 꼭 설정해야 한다.
ProxyPassReverse / http://192.168.10.146:8080/service/
...
수정 후 restart
- 포워드, 리버스 프록시 차이
- 이중화를 하는 이유
포워드 프록시(forward proxy)
클라이언트(사용자)가 인터넷에 직접 접근하는게 아니라 포워드 프록시 서버가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달해주는 역할
리버스 프록시(reverce proxy)
클라이언트가 서버를 호출할 때 리버스 프록시를 호출하게 되고 프록시 서버가 서버를 요청하여 받은 응답을 클라이언트에게 전달하는 방식
VM 이중화
Cloud SQL 이중화 (Replication)
데이터 분석 파이프라인이란?
다양한 데이터 소스에서 원시 데이터를 수집한 다음 분석을 위해 데이터 레이크 또는 데이터 웨어하우스와 같은 데이터 저장소로 이전하는 방법입니다.
데이터는 저장소로 이동 전 일반적으로 데이터 처리 과정을 거쳐 저장이 되며 이후 탐색형 데이터 분석, 데이터 시각화, 머신 러닝 작업에 활용 할 수 있습니다.
데이터 파이프라인에는 일괄 처리(batch processing)와 스트리밍 데이터(streaming data)의 두 가지 주요 유형이 있습니다.
일괄 처리 (batch Processing)
batch는 미리 설정된 시간에 일괄적으로 로드하여, 대용량 데이터를 처리 할 수 있겠끔 하는 일괄 처리 방식
장점으로는 안정성이 높음.
스트리밍 데이터(streaming data)
일괄 처리와 달리, 데이터를 지속적으로 업데이트 할 때 활용됨. 예로 POS(point of Sale) 시스템은 제품의 실시간 재고 여부가 필요하기 때문에 실시간 데이터가 필요함. 필요에 따라 선택 가능
장점으로는 지연시간 짧음.
1. CAPTURE (데이터 수집)
2. PROCESS (데이터 처리)
Hadoop 이란?
대용량의 데이터를 적은 비용으로 빠르게 분석할 수 있도록 하는 플랫폼
빅데이터 처리와 분석을 위해 사실상 표준으로 사용되는 영향력 있는 플랫폼
3. STORE (저장)
4. Analyze (분석)
5. USE (데이터 사용 및 시각화)
1) 데이터 사용
데이터 웨어하우스에 데이터가 있으면 Tesorflow, AI Platform을 통해 활용 가능.
2) 데이터 시각화
프로그래머스 mysql로 풀어보고 pandas로 구현