ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.05.04
    내일배움캠프 2023. 5. 4. 19:17

    VPC란?

    VPC는 Virtual Private Cloud의 약자로, AWS에서 제공하는 클라우드 컴퓨팅 리소스를 사용할 수 있는 가상의 사설 네트워크입니다. 사용자는 VPC 내에서 IP 주소 범위, 라우팅 테이블, 서브넷 및 보안 그룹을 설정할 수 있습니다. 또한, VPC를 사용하면 사용자는 가상 서버, 스토리지 및 데이터베이스와 같은 다양한 AWS 리소스를 시작하고 관리할 수 있습니다.

    서브넷, 게이트웨이, NAT

    • 서브넷은 VPC 내에서 IP 주소 범위를 지정하는 가상의 네트워크입니다. 서브넷은 라우팅 테이블에 연결되며, 각 서브넷은 하나의 라우팅 테이블에만 연결될 수 있습니다. 서브넷을 사용하면 VPC 내에서 다른 서브넷과 격리된 가상 네트워크를 생성할 수 있습니다. 이를 통해 다양한 서비스를 실행하는 데 필요한 보안 요구 사항을 충족시킬 수 있습니다.
    • 퍼블릭 서브넷은 인터넷 게이트웨이와 연결된 서브넷으로, 인터넷에 직접 연결되어 있는 서브넷입니다. 퍼블릭 서브넷을 사용하면 인터넷에서 직접 액세스할 수 있는 인스턴스를 실행할 수 있습니다. 이러한 인스턴스는 공인 IP 주소를 사용하며, 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 보낼 수 있습니다.
    • 프라이빗 서브넷은 인터넷과 직접 연결되지 않는 가상의 네트워크입니다. 이러한 서브넷에서 실행되는 인스턴스는 인터넷에 직접 액세스할 수 없습니다. 대신, NAT 게이트웨이를 사용하여 인터넷을 통해 인스턴스에 연결하거나, VPC 피어링 등을 사용하여 다른 VPC와 연결할 수 있습니다.
    • VPC의 라우팅 테이블은 VPC 내에서 트래픽이 전달되는 방법을 제어하는 데 사용됩니다. 라우팅 테이블은 서브넷과 연결되며, 각 서브넷에는 하나의 라우팅 테이블이 있어야 합니다. 라우팅 테이블은 목적지 IP 주소와 대상 게이트웨이 또는 NAT 게이트웨이와 같은 대상을 매핑합니다. 라우팅 테이블은 여러 개의 라우팅 규칙을 포함할 수 있으며, 이를 사용하여 서브넷에서 트래픽을 전달하는 방법을 제어할 수 있습니다.
    • IGW (Internet Gateway)
      • VPC와 인터넷 간의 통신을 가능하게 하는 게이트웨이입니다.
      • 인터넷을 통해 인터넷 게이트웨이를 통해 VPC 내부로 들어오는 트래픽을 받아 해당 VPC에 연결된 서브넷으로 라우팅합니다.
    • NAT (Network Address Translation) Gateway
      • 프라이빗 서브넷에서 아웃바운드 인터넷 트래픽을 가능하게 하는 서비스입니다.
      • NAT 게이트웨이는 프라이빗 서브넷 내 인스턴스가 인터넷으로 나가는 트래픽을 대신하여 공인 IP 주소를 사용하고, 인터넷 게이트웨이로부터 들어오는 트래픽을 프라이빗 서브넷으로 라우팅합니다.

     

     

    S3 서비스 소개

    Amazon Simple Storage Service(Amazon S3)는 인터넷 스토리지 서비스입니다. 이 서비스는 개발자나 IT 운영자가 웹 규모 컴퓨팅 작업을 수행하는 데 필요한 데이터 저장 공간을 제공합니다. Amazon S3는 웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용됩니다.

    S3 서비스의 사용 예

    • 웹 사이트 호스팅
    • 멀티미디어 파일 저장 및 스트리밍
    • 애플리케이션 데이터 저장
    • 백업 및 복원
    • 아카이브

    S3 서비스의 장점

    • 높은 내구성, 가용성 및 안정성
    • 손쉬운 사용 및 관리
    • 보안성
    • 높은 확장성

    Buckets?

    버킷이란 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너입니다!

    S3에 저장되는 파일들을 ‘객체’ 라고 부르고 모든 객체는 ‘키’(디렉토리)로 식별됩니다.

    prefix/delimiter/object-name
    
    s3://my-bucket/my_folder/my_file.txt
    

    Amazon S3에서 버킷은 다음과 같은 목적으로 사용됩니다.

    • 데이터를 저장하는 컨테이너 역할
    • 객체에 대한 공용 또는 개인적인 접근 권한을 설정하기 위한 위치
    • 객체에 대한 특별한 이벤트 알림을 설정하기 위한 위치
    • AWS 계정에서 버킷 및 객체 사용에 대한 비용 추적 및 모니터링을 위한 위치

    버킷 네이밍 컨벤션

    • 대문자 금지, 언더스코어 금지
    • 버킷 이름은 3자(최소)에서 63자(최대) 사이여야 합니다.
    • 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성될 수 있습니다.
    • 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
    • 버킷 이름에 두 마침표를 나란히 붙여 사용하면 안 됩니다.
    • 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하지 않습니다.

    버킷 폴리시

    버킷폴리시

    • IAM과 유사하며 JSON 형식의 문서입니다.
    • 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다.
    • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
    • 특정 객체 또는 객체 그룹에 대한 액세스를 제어할 수 있습니다.
    • 액세스를 허용하는 IP 주소 또는 범위를 지정할 수 있습니다.
    • 액세스할 수 있는 리소스의 범위를 제한할 수 있습니다.
    • 암호화된 연결을 사용하도록 강제할 수 있습니다.

    폴리시 예시

    • Resource : 버킷 혹은 오브젝트
    • Effect: Allow 혹은 Deny
    • Principal : 대상 유저
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AllowUserToGetBucket",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::ACCOUNT-ID:user/USERNAME"
                },
                "Action": "s3:GetBucketLocation",
                "Resource": "arn:aws:s3:::BUCKET-NAME"
            }
        ]
    }
    

    이 정책은 IAM 사용자 "USERNAME"이

    GetBucketLocation 작업을 수행할 수 있도록

    지정된 버킷 "BUCKET-NAME"에 대한 액세스를 허용합니다.

    ARN

    • AWS에서 사용하는 고유한 식별자로 AWS의 모든 리소스에 대한 고유한 식별자 역할을 합니다.
    arn:partition:service:region:account-id:resource-id
    arn:partition:service:region:account-id:resource-type/resource-id
    arn:partition:service:region:account-id:resource-type:resource-id
    
    //예시
    arn:aws:iam::123456789012:user/johndoe
    arn:aws:s3:::my_corporate_bucket/
    arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0e9801d129EXAMPLE
    
    • ARN은 다음과 같은 형식으로 구성됩니다.
      • arn: AWS 리소스 이름을 가리키는 고정 문자열
      • aws: 리소스가 AWS에서 호스팅되는 것을 나타내는 고정 문자열
      • service: AWS 서비스 이름을 나타내는 문자열 (예: s3, lambda, ec2 등)
      • region: AWS 리전 이름을 나타내는 문자열 (예: us-east-1, ap-northeast-2 등)
      • account-id: AWS 계정 ID를 나타내는 숫자
      • resource-id: 해당 리소스의 고유 식별자 (예: S3 버킷 이름, Lambda 함수 이름 등)

    ACL

    • Access Control List : 접근 권한을 가진 경우들을 명시합니다.

    S3로 정적 웹사이트 배포하기

    index.html

    <!DOCTYPE html>
    <html lang="ko">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>프론트엔드</title>
      </head>
      <body>
        <h1>S3에 배포한 내 정적 사이트</h1>
        <p>
          Lorem ipsum dolor sit amet consectetur adipisicing elit. Earum culpa
          temporibus saepe sunt porro fugiat minima, voluptatem similique esse odit
          officiis possimus aut, enim necessitatibus. Et facere temporibus excepturi
          quis.
        </p>
      </body>
    </html>
    

    S3로 배포한 정적 웹사이트에 도메인 달아주기

    • 반드시 버킷 이름과 도메인 이름이 같아야 합니다

     

     

    Cloudfront 소개

    Content Delivery Network

    장점

    • 향상된 속도 : 지리적으로 가까운 서버에 캐싱된 데이터를 갖고 오기 때문에 무척 빠르다.
    • 안전 : CDN 서비스를 해주는 업체에서 방화벽을 제공할 뿐만 아니라 DDoS 공격이 와도 서버가 분산되어 있고 캐시기능으로 오리진 서버 트래픽은 늘어나지 않는다.

    단점

    • 캐시 : 최신 동적 컨텐츠를 제공해야하는 경우에 적합하지 않다.
    • 비용이 추가 발생한다

    탁월한 시청 경험 제공을 위한 넷플릭스(Netflix)와 전 세계 인터넷 서비스 제공업체(ISP)의 협업 현황 - About Netflix

    Cloudfront 사용해보기

    • Architecture
      • Route53 → Cloudfront → S3
    • Route53과 Cloudfront가 연결되기 때문에 더이상 버킷이름을 도메인명과 맞출 필요가 없습니다.
    • Distribution 생성 시 CNAME과 root를 잊지마세요!

    Invalidation 해보기

    • 캐싱이 되어있는 cdn을 초기화하는 방법입니다.
      1. AWS Management Console에 로그인하고 CloudFront 콘솔을 엽니다.
      2. 무효화를 생성하려는 배포(distribution)를 선택합니다.
      3. "Invalidations" 탭을 클릭한 다음 "Create Invalidation" 버튼을 클릭합니다.
      4. "Create Invalidation" 패널에서 무효화하려는 객체의 경로를 입력합니다. 와일드카드(*)를 사용하여 여러 개의 객체를 동시에 무효화할 수 있습니다.
      5. "Create Invalidation"을 클릭하여 요청을 제출합니다.

     

     

    Elastic Beanstalk 소개

    EBS 등장배경

    1. Public Subnet: 로드 밸런서
    2. Private Subnet: 비즈니스 로직을 처리하는 레이어입니다. 보통 웹 애플리케이션 서버
    3. Data Subnet: 데이터를 저장하는 레이어입니다. 보통 데이터베이스 서버, 파일 서버 등이 사용

    3-tier 아키텍처는 애플리케이션의 확장성과 유연성을 향상시키고, 높은 가용성과 성능을 제공합니다. 각 레이어를 독립적으로 확장할 수 있으며, 부하 분산과 장애 극복 기능을 쉽게 추가할 수 있습니다. 또한, 애플리케이션의 유지보수와 업그레이드가 용이하며, 보안성이 높습니다.

    대부분의 웹앱은 같은 아키텍처를 가지고 있다.

    서비스를 만들때마다 같은 인프라를 만들어야 한다면?

    EBS는 개발자 관점으로 AWS를 접근한다.

    • DB설정, 로드밸런서 자동 설정
    • 그러면서 자동으로 스케일링(확장성)을 지원

    기본적인 초기 설정들을 도와주어서 개발자는 코드에 집중할 수 있게 해주지만 세부설정은 여전히 다 건들일 수 있기 때문에 각 서비스들에 알고 있는 것은 필수입니다!

    EBS 개념

    • Application
      • 애플리케이션 코드, 구성 및 관련 파일
      • Elastic Beanstalk는 다양한 프로그래밍 언어와 프레임워크를 지원합니다
    • Environment
      • Amazon EC2 인스턴스, 데이터베이스 인스턴스, 로드 밸런서 등

    AWS Elastic Beanstalk란 무엇입니까? - AWS Elastic Beanstalk (amazon.com)

    •  

    '내일배움캠프' 카테고리의 다른 글

    WIL 내일배움캠프 8주차  (0) 2023.05.05
    TIL 2023.05.05  (0) 2023.05.05
    TIL 2023.05.03  (0) 2023.05.03
    TIL 2023.05.02  (2) 2023.05.02
    TIL 2023.05.01  (0) 2023.05.01
Designed by Tistory.