개발/SQL

[SQL] 2. 데이터 웨어하우스, 클라우드(Cloud), AWS, Redshift

devculture309 2023. 5. 8. 16:07
반응형

데이터 웨어하우스

1. 데이터 웨어하우스(Data Warehouse)

  - 회사에 필요한 모든 데이터를 저장

  - 여전히 sql 기반의 관계형 데이터베이스임

  • 프로덕션 데이터베이스와는 별도이어야 함(비록, 프로덕션 데이터를 복사해와야 하지만...)
  • AWS의 Redshift(고정비용), Google Cloud의 Big Query, Snowflake 등(가변비용)이 대표적

  - 데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스이다

  • 따라서, 처리속도가 아닌, 데이터 크기와 관계없이 원하는 분석을 수행할 수 있는 것이 더 중요하다

  - ETL 혹은 데이터 파이프라인

  • 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 것을 ETL작업이 필요해짐
  • 보통 데이터 웨어하우스 + ETL(데이터 파이프라인) = 데이터 인프라 라고 한다

 

2. 데이터 인프라

  - 데이터 엔지니어가 개발 및 관리하는 인프라

  - 데이터 웨어하우스 + ETL(데이터 파이프라인)

  - 시스템이 발전하면 비구조화된 데이터가 유입될 것이고 이를 처리하기 위해 spark과 같은 것들이 시스템에 추가가 된다

 


Cloud와 AWS

Cloud

1. Cloud

  - 컴퓨팅 자원(하드웨어, 소프트웨어 등)을 네트워크를 통해 서비스 형태로 사용하는 것

  - 키워드(No Provisioning, Pay As You Go)

  - 자원(서버)을 필요한 만큼 (거의)실시간으로 할당하여 사용한 만큼 지불

  - 서비스를 론칭하면서 소모되는 시간이 크게 단축된다는 큰 장점 때문에 비싼 비용을 상쇄할 만한 장점을 가지고 있다

 

2. 클라우드 컴퓨팅이 없었다면?

  - 서버/네트워크/스토리지 구매와 설정등을 직접 수행해야 함

  - 데이터센터 공간을 직접 확보(Co-location)

  - 그 공간에 서버를 구매하여 설치하고 네트워크 설정(보통 서버 구매 후 설치까지 최소 2~3개월 소요)

  - 또한, Peak time을 기준으로 Capacity planning을 해야함(놀고 있는 자원들이 높게 되는 현상 발생)

  - 직접 운영비용 vs 클라우드 비용 → 기회비용을 따져 적절한 것을 선택해야함

 

3. 클라우드 컴퓨팅의 장점

  - 초기 투자 비용(Capex Expenditure)이 크게 줄어듬 → CAPEX에서 운영비용(Operating Expense)로 전환됨

  - 리소스 준비를 위한 대기시간 대폭 감소

  - 노는 리소스 제거로 비용 감소(탄력적 운영)

  - 글로벌 확장 용이

  - 소프트웨어 개발 시간 단축 

 

AWS

1. AWS

  - 가장 큰 클라우드 컴퓨팅 서브시 업체

  - 2002년 아마존의 상품데이터를 API로 제공하면서 시작

  • 현재 100여개의 서비스를 전세계 15개의 지역에서 제공.
  • 대부분의 서비스를이 오픈소스 프로젝트들을 기반으로 함.
  • 최근 들어 ML/AI 관련 서비스들도 내놓기 시작

  - 사용고객: Netflix, Zynga 등의 상장업체들도 사용

  - 다양한 종류의 소프트웨어/플랫폼 서비스를 제공 

 

2. EC2 - Elastic Compute Cloud

AWS EC2 icon

  - AWS의 서버 호스팅 서비스

  • 리눅스 혹은 윈도우 서버를 launch하고 계저을 생성하여 로그인 가능 → 구글앱엔진과의 가장 큰 차이
  • 가상 서버들이라 전용서버에 비해 성능이 떨어짐
  • Bare-metal 서버도 제공하기 시작
  • 다양한 종류의 서버 타입 제공

  - 세 가지 종류의 구매 옵션

  • On-Demand: 시간당 비용이 지불되며 가장 흔히 사용하는 옵션
  • Reserved: 1년이나 3년간 사용을 보장하고 1/3 정도에서 40% 할인을 받는 옵션
  • Stop Instance:일종의 경매방식으로 놀고있는 리소스들을 경매가로 사용할 수 있는 옵션

 

3. S3 - Simple Storage Service 

AWS S3 icon

  - 아마존이 제공하는 대용량 클라우드 스토리지 서비스

  - S3는 데이터 저장관리를 위해 계층적 구조를 제공

  - 글로벌 네임스페이스를 제공하기 때문에 톱레벨 디렉토리 이름 선정에 주의(겹칠 수 있음)

  - S3에서는 디렉토리를 버킷(Bucket)이라고 부름

  - 버킷이나 파일별로 액세스 컨트롤 가능

 

4. 기타 중요 서비스 - AI & ML Service

  - SegaMaker: Deep Learing and Machine Learning end-to-end framwork

  - Rekognition: Image Recognition Service

  - Amazon Alexa: Amazon's voice bot platform

  - Amazon Connect: Amazon's Contact Center Solution, 콜센터 구현이 아주 쉬어짐

  - Lambda

  • Event-driven, serverless compution engine
  • 서비스 구현을 위해서 EC2를 론치할 필요가 없음
  • Google Cloud에는 Cloud Fuction이란 이름으로 존재
  • Azure에는 Azure Function이란 이름으로 존재

 


Redshift

1. Redshift: Scalable SQL 엔진

  - 2 PB까지 지원(하지만, 최대 용량 사용하는 만큼이나 여러 이슈가 있음)

  - Still OLAP (응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용 불가)

  - Columnar storage

  • 대부분의 프로덕션 데이터베이스 관련 SQL들이 레코드 별로 저장하는 반면 컬럼 별로 저장
  • 컬럼별로 압축, 추가, 삭제가 가능하며 그 결과 속도가 아주 빠름 

  - 벌크 업데이트 지원 

  • 레코드가 들어있는 파일을 CSV, JSON에 보과했다가 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사

  - 고정 용량/비용 SQL엔진

  - 다른 데이터 웨어하우스처럼 Primary Key Uniqueness를 보장하지 않음(속도 때문)

  - Redshift는 Postgresql 8.x와 SQL이 호환됨(전부는 아님)

  - Postgresql 8.x를 지원하는 툴이나 라이브러리로 엑세스 가능(JDBC/ODBC)

  - 다시 한번 SQL이 메인 언어라는 점 명심

 

2. Redshift Schema (폴더) 구성

  - CREATE SCHEMA는 admin 권한을 갖고있는 사람만 가능한 명령어이다

  - raw_data 는 주로 데이터 엔지니어가 analytics는 분석가가, adhoc은 테스트용으로 사용한다

반응형