ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS 입문편
    DevOps/AWS 2024. 2. 15. 14:31

    1. AWS - IAM

    - 유저를 관리하고 접근 레벨 및 권한에 대한 관리

     

    2. AWS - EC2

    - EBS (Elastic Block Storage) : EC2를 사용하기 위해 EBS라는 디스크 볼륨을 요구한다.

        ㆍ저장 공간이 생성되어지며 EC2 인스턴스에 부착된다.

        ㆍ디스크 볼륨 위에 File System이 생성된다.

        ㆍEBS는 특정 Availablility Zone에 생성된다.

     

    - ELB (Elastic Load Balancers) : 하나의 서버로 트래픽이 몰리는 병목현상 방지

        ㆍ수많은 서버의 흐름을 균형있게 흘려보내는데 중추적인 역할을 함

        ㆍ하나의 서버로 traffic이 몰리는 병목현상 방지

        ㆍTraffic의 흐름을 Unhealthy instance -> healthy instance 로

     

    - Route53 : AWS에서 제공하는 DNS 서비스

     

    3. AWS - RDS (Relational DB Service)

    - Data Warehousing

        ㆍBusiness Intelligence

        ㆍ리포트 작성, 데이터 분석시 사용 ( Production Database -> Data Warehousing )

        ㆍ매우 방대한 분량의 데이터 로드시 사용

     

    Database Back-ups

    - Automated Backups(AB) - 자동 백업

        ㆍ1. Retention Period(1~35일) 안의 어떤 시간으로 돌아가게 할 수 있음

        ㆍ2. AB는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함

        ㆍ3. 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장

        ㆍ4. AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency

    - DB Snapshot (데이터베이스 스냅샷)

        ㆍ1. 주로 사용자에 의해 실행됨

        ㆍ2. 원본 RDS Instance를 삭제해도 스냅샷은 존재함(vs AB)

     

    - Read Replica

        ㆍProduction DB의 읽기 전용 복제본이 생성됨

        ㆍ주로 Read-Heavy DB작업시 효율성을 극대화를 위해 사용됨(Scaling)

        ㆍRead Replica의 Read Replica 생성 가능 (단 Latency 발생)

        ㆍ각각의 Read Replica는 자기만의 고유 Endpoint 존재

     

    ElastiCache

        ㆍ클라우드 내에서 In-memory 캐시를 만들어줌

        ㆍ데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴

        ㆍRead-Heavy 어플리케이션에서 상당한 Latency 감소 효과를 누림

    종류 설명 이럴 때 사용
    Memcached - Object 캐시 시스템으로 잘 알려져 있음
    - ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
    - EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능함
    - 오픈소스
    1. 가장 단순한 캐싱 모델 필요시
    2. Object caching이 주된 목적
    3. 캐시 크기를 마음대로 scaling시
    Redis
    - Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
    - 오픈소스
    - Multi-AZ 지원

    1. List, Set과 같은 데이터셋을 사용시
    2. 리더보드처럼 데이터셋의 랭킹 정렬시
    3. Multi AZ 기능 사용시

     

    4. AWS - S3 (Simple Storage Service)

    특징 S3 Object 구성요소 S3 Data Consistency Model

    - 안전하고 가변적인 Object 저장공간을 제공
    -
    편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
    - 파일 크기는 0KB부터 5TB까지 지원
    - 저장공간 무제한
    - Bucket이라는 이름을 사용함 (디렉토리와 유사함)
    - Bucket은 보편적인 namespace를 사용함
    - Key
    - Value
    - Version ID
    - Metadata
    - CORS
      (Cross Origin Resource Sharing)
    1. Read after Write Consistency(PUT)
           : 결과를 바로 확인 가능

    2. Eventual Consistency(UPDATE, DELETE)
           : 결과가 바로 나타나지 않는다.

     

    S3 스토리지

    종류 특징
    일반 S3 - 가장 보편적으로 사용되는 스토리지 타입
    - 높은 내구성, 가용성
    S3 - IA(Infrequent Access) - 자주 접근되지는 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용
    - 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생
    - 멀티 AZ를 통한 데이터 저장 (가용성 높음)
    S3 - One Zone IA - 단일 AZ를 통한 데이터 저장
    - 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
    - 데이터 접근시 S3 - IA보다 20% 비용 저렴
    Glacier - 거의 접근하지 않을 데이터 저장 시 유용
    - 매우 저렴한 비용
    - 데이터 접근시 대략 4~5시간 소요
    Intelligent Tiering - 데이터 접근 주기가 불규칙할때 매우 유용
    - 2가지 티어 존재 ( Frequent Tier[비용이 약간 더 높음], Inferquent Tier )
    - 데이터 접근주기에 따라 두가지 티어중 하나로 선택됨
    - 최고의 비용 절감 효율을 누릴 수 있음

     

    버켓 생성시 알아야 할 것들

    S3 요금 S3 사용 용례 최초 S3 버켓 생성 시
    비공개(PRIVATE)
    - GB당
    - PUT, GET, COPY 요청 횟수당
    - 데이터 다운로드시 / 다른 리소스로 전송시
    - Metadata(object tag)
    - 파일 저장소
      (로그, 다양한 파일들(이미지, 비디오, 압축파일 등)
    - 웹사이트 호스팅
    - CORS
    1. 버켓 정책 변경
    2. 접근 제어 리스트 변경

     

    S3 암호화

    - [1] 파일 업로드/다운로드시 - SSL / TLS
    - [2] 가만히 있을시 - SEE-S3, SSE-KMS, SSE-C

     

    5. AWS - CloudWatch

    특징 모니터링 종류
    - AWS 리소스 사용의 실시간 모니터링 기능 지원
    - 다양한 이벤트들을 수집하여 로그파일로 저장
    - 이벤트&알람 설정을 통해 SNS, AWS Lambda로 전송 가능
    - [CloudWatch 사용 가능 서비스들] : EC2, RDS, S3, ELB 등등
    1. Basic Monitoring
        ㆍ무료
        ㆍ5분 간격으로 최소의 Metrics 제공

    2. Detailed Monitoring
        ㆍ유료
        ㆍ1분 간격으로 자세한 Metrics 제공

     

    사용 용례

    - Use Case : 매일 얼마나 많은 사용자들이 모바일 앱을 사용하는지 알고 싶음
    - Potential Issue : 특정날에 수많은 traffic이 몰릴 수 있어 병목현상이 생길 수 있음
    - Solution : 매일 traffic rate과 특정 버튼의 유저 클릭 횟수를 분석하여 더 효율적인 앱개발을 할 수 있는 통찰력을 얻을 수 있음
    - Use Case : 특정 시간대에 웹서버 상태를 점검하여 비용 절감 목표
    - Potential Issue : 똑같은 비용을 내며 AWS 리소스들을 사용하지만 낮시간대와 밤시간대에 필요한 서버의 성능이 달라질 수 있기 때문에
                                   금전적 손실이 생길 수 있음 (주로 밤시간대가 낮시간대보다 서버가 오랫동안 idle)
    - Solution : 알람 설정을 통하여 특정 threshold에 도달했을때 개발자에게 상황을 보고해줌으로서 서버 management를 할 수 있음

     

    - Alarm State

        ㆍAlarm

        ㆍInsufficient

        ㆍOK

     

     

    6. AWS - Lambda

    특징 비용 기타
    - Serverless의 주축을 담당
    - Events를 통하여 Lambda를 실행시킴
    - NodeJS, Python, Java, Go 등 다양한 언어 지원
    - Lambda Function
    - Lambda Function이 실행될때만 돈 지불
    - 매달 1,000,000 함수 호출 시 무료
    - 최대 300초(5분) 런타임 시간 허용
    - 512MB의 일시적인 디스크 공간 제공
    - 최대 50MB Deployment Package 허용

     

    7. AWS - CloudFront

    특징 용어 정리
    - 정적, 동적, 실시간 웹사이트 컨텐츠를 유저들에게 전달
    - Edge Location을 사용
    - 컨텐트 딜리버리 네트워크 Content Delivery Network(CDN)
    - 분산 네트워크(Distributed Network)
    - Edge Location(엣지 지역) : 컨텐츠들이 캐시에 보관되어지는 장소
    - Origin : 원래 컨텐츠들이 들어있는 곳, 웹서버 호스팅이 되어지는 곳
                     S3, EC2 인스턴스가 오리진이 될 수 있음
    - Distribution(분산) : CDN에서 사용되어지며 Edge Location들을 묶고 있다는 개념

     

    8. AWS - DynamoDB

    특징
    - NoSQL 데이터베이스
    - 매우 빠른 쿼리 속도
    - Auto-Scaling 기능 탑재
    - Key-Value 데이터 모델 지원
    - 테이블 생성시 스키마 생성 필요 없음
    - 모바일, 웹, IoT 데이터 사용시 추천됨
    - SSD 스토리지 사용

     

     - DynamoDB - Primary Keys

    파티션키(Partition Key) 복합키(Composite Key)
    - 고유 특징(Unique Attribute)
    - 실제 데이터가 들어가는 위치를 결정해줌
    - 파티션키 사용시 동일한 두개의 데이터가 같은 위치에 저장될 수 없음!
    - 파티션키(Partition Key) + 정렬키(Sort Key)
    - 예시 : 똑같은 고객이 다른 날짜에 다른 물건을 구매
    - 파티션키 : 고객아이디 / 정렬키 : 날짜(Timestamp)
    - 같은 파이션키의 데이터들은 같은 장소에 보관,
        그 다음 정렬키에 의해 데이터가 정렬됨.

     

    - DynamoDB - Index

    특징
    - 특정 컬럼만을 사용하여 쿼리
    - 테이블 전체가 아닌 기준점(pivot)을 사용해 쿼리가 이루어짐
    - 매우 큰 쿼리 성능 효과
    - 두가지의 Index 유형 존재
        ㆍLocal Secondary Index
        ㆍGlobal Secondary Index
    Local Secondary Index(LSI) Global Secondary Index(GSI)
    - 테이블 생성시에만 정의해줄 수 있음
    - 따라서 테이블 생성 후 변경, 삭제가 불가능
    - 똑같은 파티션키 사용, 그러나 다른 정렬키 사용
    - 테이블 생성후에도 추가, 변경, 삭제 가능
    - 다른 파티션키, 정렬키 사용

     

    - DynamoDB - Query VS Scan

    Query Scan
    - Primary Key를 사용하여 데이터 검색
    - Query 사용시 모든 데이터(컬럼) 반환
    - ProjectionExpression 파라미터
    - 모든 데이터를 불러옴 (primary key 사용 X)
    - ProjectionExpression 파라미터
    - Query가 Scan보다 훨씬 효율적임
    - 따라서 Query 사용 추천

     

     

    - DynamoDB - DAX (DynamoDB Accelerator)

    DAX란? DAX의 원리
    - 클러스터 In-memory 캐시
    - 10배 이상의 속도 향상
    - 읽기 요청만 해당사항 (X 쓰기요청)
    - Ex) Black Friday날 쇼핑 웹사이트 운영(수많은 읽기 요청 예상)
    - DAX 캐싱 시스템
        → 테이블에 데이터 삽입 & 업데이트 시 DAX에도 반영
    - 읽기 요청에 맞는 데이터가 DAX에 들어있을시
       DAX 데이터 즉시 반환 (Cache Hit) ↔ (Cache Miss)
    DAX의 단점  
    - 쓰기 요청이 많은 어플리케이션에는 부적절함
    - 읽기 요청이 많지 않은 어플리케이션에 부적절함
    - 아직 모든 지역에서 제공하지 않음
     

     

    - DynamoDB - Streams

    설명
    - DynamoDB 테이블에서 일어나는 일들(삽입, 수정, 삭제 등)이 일어날 시 시간적 순서에 맞게 Streams에 기록
    - Log는 즉각 암호화가 일어나며 24시간동안 보관됨
    - 주로 이벤트를 기록하고 이벤트 발생을 외부로 알리는 용도 (예시 : Lambda Function)
    - 이벤트 전&후에 대한 상황 보관

     

    9. AWS - API Gateway

    - API (Application Programming Interface)

    RESTful API
    - API 종류들 중 하나
    - REpresentational Sate Transfer
    - CREATE(post), READ(get), UPDATE(put), DELETE(delete)
    - JSON 형태로 요청을 받고 해결함
    - ex) { "customer_id" : "phm_01", "category" : "car" }

     

    - API Gateway

    설명
    - 뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링 가능
    - Back-end 서비스 (웹 어플리케이션, EC2)에 들어있는 데이터 접근 허용
    - Pay As You Go (API 사용, API 시간 및 데이터량에 따라 요금부과)

     

    10. AWS - Code Commit & Code Deploy & Code Pipeline

    - CI / CD

    CI :Continuous Integration(지속적인 통합) CD : Continuous Deployment(지속적인 배포)
    - 자동화 시스템(Automation) - 테스트
    - Incremental Change

     

    - Code Commit

    설명
    - 파일들을 보관하는 저장 장소(Repository) - Github과 매우 유사
        ㆍ코드, 사진, 라이브러리, 등등
    - 동시에 많은 사람들이 저장 장소 접근 및 업데이트 가능
    - 버전 컨트롤 기능 제공
        ㆍ예) 언제 어떻게 누가 저장 장소 내용을 변경하였는지

     

    - Code Deploy : 자동 배포 (Automated Deployment)

    장점
    - 새로운 기능들의 빠른 배포
    - 소프트웨어 & 서버 다운 타임 X
    - Manual 에러 X
    Rolling 배포 Blue/Green 배포
    - 서버 하나씩 순차적으로 적용시키는 배포 - Blue : 기존 버전
    - Green : 새로운 버전

    - 점차적으로 Blue에서 Green으로 트래픽을 옮겨준다.
    - 이전 버전으로의 스위치가 쉽다.
    - 두 환경을 만드는 만큼 비용이 들지만, 배포가 복잡해질수록 장점이 크다.

     

    - Code Pipeline

    Code Pipeline이 하는 일은? Code Pipeline 작동 방법
    - 빌드, 테스트, 배포 과정을 관리
        ㆍ코드 변경시 Code Pipeline은 이를 감지할 수 있음
    - 소프트웨어 및 어플리케이션 출시 자동화 가능
        ㆍ빠르고 쉬운 디버깅을 가능케 해줌
    1. Workflow 정의 (Code Pipeline)
    2. 코드 저장소에서 코드 변경 (Code Commit)
    3. 컴파일, 테스트, 패키지 생성 (Code Build)
    4. staging 혹은 production 배포 (Code Deploy)

     

    'DevOps > AWS' 카테고리의 다른 글

    AWS 입문  (0) 2022.10.22

    댓글

Designed by Tistory.