[TIL 28일자] 데브코스 데이터엔지니어링

·2023년 5월 17일
0

데브코스

목록 보기
27/55
post-thumbnail
post-custom-banner

📚 오늘 공부한 내용

1. IAM

💻 [AWS] IAM 개념, 기능 및 IAM 사용자 추가하기


2. S3 (Simple Storage Service)

1) S3란?

  • 객체 스토리지 서비스로 업계 최고의 확장성과 데이터 가용성, 보안 및 성능을 제공한다.
  • 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다.
  • 스토리지의 크기도 유연하게 조정이 가능하다.
  • 스토리지에 대해서 public으로 열 수도 있지만 보안을 강화하여 private 하게 관리할 수도 있다. 즉, 데이터에 대한 액세스를 특정 비즈니스, 조직 및 규정 준수 요구 사항에 맞게 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다.
  • 스토리지 내에서 세분화된 기능을 제어할 수 있는 기능을 가지고 있다.

2) S3의 기능

  • 스토리지 클래스. 스토리지별로 데이터를 넣을 수 있다.
  • 스토리지를 세부적으로 관리할 수 있다.
  • 액세스에 대해서 Public으로 관리할 건지 Private 하게 관리할 건지 설정이 가능하다.
  • 저장된 데이터에 대해 분석 및 인사이트를 제공한다.
  • 강력한 일관성을 제공한다.
  • 데이터 처리를 해 주며 스토리지 로깅모니터링 기능이 있다.

3) Amazon S3를 사용해 정적 웹 사이트 호스팅

  • 프로젝트에서 활용될 수 있는 기술 중 하나이다.
  • S3를 사용해 정적 웹 사이트를 호스팅할 수 있다.
  • 정적 웹 사이트에서 개별 웹 페이지는 정적 콘텐츠를 포함하고, 클라이언트 측 스트립트를 포함할 수도 있다. (동적 웹 사이트는 PHP, JSP 또는 ASP.NET 등 서버 측 스크립트를 포함한 서버 측 처리에 의존한다.)

4) S3의 구조

  • 버킷
    • 저장된 객체에 대한 컨테이너.
    • 모든 객체는 어떤 버킷에 포함되어 있다.
    • 쉽게 이해해서 윈도우에서는 폴더의 개념이라고 생각하면 된다.
  • 객체
    • S3에 저장되는 기본 개체.
    • 객체 데이터와 메타 데이터로 구성된다.
    • 버킷 내 객체의 고유 식별자
    • 모든 객체는 정확히 하나의 키를 가진다.
    • 버킷, 키 및 버전 ID의 조합이 각 객체를 고유하게 식별한다.
    • 즉, S3는 "버킷 + 키 + 버전"과 객체 자체 사이의 기본 데이터 맵으로 간주할 수 있다.

5) S3 동작 방식

  • 버킷을 생성해 주면 그 생성된 버킷에는 객체를 업로드 해 줄 수 있다.
  • 예를 들어 html 파일을 생성된 버킷에 업로드 해 준 후 속성 -> 정적 웹 사이트 호스팅을 선택해 정적 웹 사이트 호스팅을 활성화해 준 후에 호스팅 유형을 정적 웹 사이트로 해 주고 변경 사항을 저장해 준다.
  • 그렇게 저장해 주게 되면 정적 웹 사이트 호스팅버킷 웹 사이트 엔드 포인트에 URL이 생기게 된다.
  • 권한 -> 퍼블릿 액세스 차단으로 가 차단을 풀어 주고, 버킷 정책에서 정책 생성기 등을 통해 모두가 진입할 수 있도록 설정한 후 정책을 부여해 주면 된다. (이건 부여할 정책에 따라 다르게 설정할 수도 있다.)
  • 이렇게 하면 해당 URL로 접속할 때 권한 오류 없이 정적 호스팅 기능을 사용하여 내가 업로드한 객체를 화면으로 접할 수 있다.

3. CI/CD(CodeCommit, CodeBuild, CodeDeploy, CodePipeline)

✍ [AWS] AWS에서의 CI/CD 서비스


4. 실습

  • 해당 구조의 프로그램을 구현하기 위해 순서대로 실습해 보았다.
  • 실습 관련 내용은 가볍게 서술해 보았다.
  1. 먼저 백엔드(Back-end)단의 서비스Spring Boot를 통해 만들어 준다.

  2. Github Repository에 1에서 만든 백엔드(Back-end) 서비스를 commitpush 해 준다.

  3. VPC 구성

    • 연관되어 있는 서브넷이 있으면 VPC 삭제가 되지 않아 서브넷부터 삭제해 주어야 한다.
    • 다음 구조 사진을 보면 두 개의 가용 영역(AZ)이 있기 때문에 VPC를 생성할 때 가용 영역을 2 개로 설정해 준다.
      • a와 c로 설정해 주는 것을 추천
    • Public SubnetPrivate Subnet은 각각 두 개씩 존재하며 Private Subnet을 위한 하나의 NAT Gateway가 필요하다.
    • 기본적으로 Internet Gateway 하나는 default로 존재하기 때문에 설정을 바꾸지 않는다.
  4. Elastic Beanstalk 애플리케이션 생성

    • Spring Boot를 사용했기 때문에 플랫폼은 JAVA를 선택해 준다.
    • 추가 옵션에서 앞서 만들었던 VPC를 선택해 준다.
    • 구조에서는 애플리케이션이 Private subnet에 존재하기 때문에 인스턴스 설정 시 서브넷 영역으로 선택해 주어 서브넷에 애플리케이션이 생성될 수 있도록 해 준다.
    • Elastic Beanstalk을 생성할 때 VPC 설정을 무조건 해 주도록 한다. (필수는 아니지만 절차가 복잡하다.)
    • Elastic Beanstalk이 생성되면 자동적으로 그에 해당하는 EC2가 생성된다.
  5. Baston host에 해당하는 EC2 생성

    • VPC를 선택할 때 Public subnet을 선택해 준다. (구조 참고)

🔎 어려웠던 내용 & 새로 알게 된 내용

1. 멀티 팩터 인증(MFA) - 다요소 인증

  • Password (내가 아는) + Security Device (내가 소유한)
  • 내가 아는 비밀번호와 내가 가진 물리적 장치
  • 특정 User가 비밀번호를 해킹 당한 상황이라고 해도 해커에게는 User가 소유한 물리적 장치(휴대 전화, 컴퓨터 등)이 추가로 필요해지기 때문에 계정에 침해할 수 없다.
  • MFA 장치는 어떤 장치가 있을까?
    • Virtual MFA device (가상 MFA 장치)
    • Universal 2nd Factor (U2F) Security Key
    • Hardware Key Fob MFA Device
    • Hardware Key Fob MFA Device for AWS GovCloud (US)

2. ID 페더레이션

  • 외부에서 인증된 사용자에게 액세스 권한 제공하는 것을 말한다.
  • 사용자가 이미 AWS 외부 자격 증명을 보유 중이라면 사용자가 AWS 리소스를 사용해야 할 때 해당 사용자에게도 AWS 보안 자격 증명이 필요하다. 자격 증명이 조직 내에서 페더레이션되는 사용자의 권한을 IAM 역할을 사용해 지정할 수 있다.

✍ 회고

- 어제 작성할 때 벨로그 서버가 불안정하더니 결국 RDS 게시글의 반절이 날아갔다. 분명 올라간 걸 확인한 것 같은데 대체 왜. 복습하는 기분으로 오늘 강의 시작하기 전에 추가 작성했다.

- 강의로 들은 내용을 위주로 AWS 포스팅을 하고 있는데 추후에 AWS 공부를 하면서 따로 시리즈를 만들어서 따로 포스팅 하는 것도 나쁘지 않겠다고 생각했다. 강의를 통해 배운 AWS는 전체적인 프로젝트에서 AWS를 사용하기 위한 하나의 흐름을 배우는 기분이고, 조금 더 개념 정리가 필요할 것이라는 생각이 들었다.

profile
송의 개발 LOG
post-custom-banner

0개의 댓글