2.1 애플리케이션 개요와 AWS 기본

SummerToday·2024년 8월 9일
0
post-thumbnail
post-custom-banner

예제 애플리케이션 개요


출처: 아이자와 고지 외 1명, ⌜클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트⌟, 동양북스, 2021, p.39.

  • 마음에 드는 장소를 등록하는 서비스. ex. 인천, 서울, 강릉, ...

  • 장소를 표시, 등록하는 웹 애플리케이션과 장소 정보를 일괄 등록하는 배치 애플리케이션으로 구성된다.



출처: 아이자와 고지 외 1명, ⌜클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트⌟, 동양북스, 2021, p.39.

  • 싱글 페이지 애플리케이션(Single Page Application)의 프론트엔드, REST API를 제공하는 벡엔드로 구성된 웹 애플리케이션과 스케줄된 배치 애플리케이션 으로 구성된다.

  • 웹 애플리케이션의 프론트엔드 파일은 S3에 저장하고 CloudFront를 통해 정적 웹 콘텐츠로 배포한다.

  • 백엔드는 EKS 클러스토 워커 노드에 컨테이너로 배포하고 RDS 데이터베이스와 접속한다.

  • 가용성을 위해 백엔드로의 접속은 ELB를 통해 분산 시킨다.

  • ECR을 통해 백엔드 애플리케이션의 컨테이너 이미지와 배치 애플리케이션의 이미지를 관리한다.

  • 배치 애플리케이션도 EKS에 배포되며 S3에 저장된 파일을 처리하고 RDS에 접속하여 쓰기를 실행한다.

  • RDS의 데이터베이스 조작을 위해 EC2 인스턴스로 배스천 호스트(Bastion Host)를 구성한다.

    • 배스천 호스트
      네트워크 보안을 강화하기 위해 설계된 특별한 목적의 서버이다. 해당 서버는 일반적으로 내부 네트워크와 외부 네트워크(인터넷) 사이에 위치하며, 외부에서 내부 네트워크의 자원(ex. 데이터베이스, 파일 서버, 애플리케이션 서버 등)에 접근할 수 있는 유일한 접속 지점 역할을 한다.

AWS 관련 서비스 및 용어

  • S3(Simple Storage Service)

    • 기본 스토리지 단위는 버킷이다.

    • AWS가 제공하는 클라우드 스토리지 서비스

    • 미리 스토리지 용량을 정의하지 않고 사용 가능하다.

    • 프론트엔드 콘텐츠 배포 장소로 사용하며, 배치 애플리케이션에서 파일을 읽어오는 장소로도 사용한다.

    • 위 애플리케이션에서는 프론트엔드용 버킷과 배치 입력 파일용 버킷 2개를 생성한다.


  • CloudFront

    • AWS가 제공하는 CDN(Content Delivery Network) 서비스이다.

    • 웹 콘텐츠, 이미지, 동영상 애플리케이션 등을 빠르게 전송하기 위한 구조로 되어있다.

    • 전 세계에 많은 에지 로케이션(데이터를 전송하기 위한 지점)을 갖고 있어 사용자가 접속한 가장 가까운 장소에서 콘텐츠를 제공한다.

    • 위 애플리케이션에서는 프론트엔드 콘텐츠는 S3에 저장하고 CloudFront를 통해 접속한다.


  • RDS(Relational DataBase)

    • AWS가 제공하는 관계형 데이터베이스이다.

    • Amazon Aurora, PostgreSQL, MySQL, MariaDB 등이 존재한다.

    • RDS에서는 멀티 AZ 구성(여러 개 가용 영역에 인스턴스를 배치하여 다중화하는 구조)을 지원하여 가용성을 높일 수 있다.


  • ECR(Elastic Container Registry)

    • AWS가 제공하는 컨테이너 레즈스트리 관리형 서비스이다.

    • 컨테이너 이미지를 저장하고 다운로드할 수 있는 구조로 컨테이너 레지스트리를 사용한다.

      • 컨테이너 레지스트리
        컨테이너 이미지를 보관하는 리포지토리이며, 도커 명령어 등을 사용하여 컨테이너 이미지를 등록 및 다운로드한다.
    • 컨테이너 이미지를 ECR에 등록해두고 EKS 클러스터로 배포한다.


  • EC2(Elastic Computing Cloud)

    • AWS에서 가상 머신을 사용할 수 있는 서비스로 다양한 형태의 가상 머신을 쉽게 구축할 수 있다.

    • 배스천 호스트와 EKS 클러스터의 워커 노드에 사용된다.


  • ELB(Elastic Load Balancing)

    • AWS가 제공하는 로드밸런서 서비스이다.

    • ALB(Application Load Balancer)

      • HTTP/HTTPS에 특화된 L7(응용계층) 로드밸런서이다.

      • 경로 기반 라우팅, 호스트 기반 라우팅(HTTPS 헤더에 설정된 Host에 따라 경로 변경) 등 HTTP 특화 처리가 가능하다.


    • NLB(Network Load Balancer)

      • TCP/UDP에 특화된 L4(전송계층) 로드밸런서이다.

      • HTTP 트래픽에도 동작하지만, HTTP 레이어에서의 고급 기능이 필요하다면 ALB를 선택하는 것이 더 적합하다.


    • CLB(Classic Load Balancer)

      • HTTP/HTTPS와 TCP로 분산 설정이 가능하고 기본적인 로드 밸런서 기능을 제공한다.

      • 하지만, 기능상 제약사항이 많아 AWS 측에서도 ALB와 NLB를 사용할 것을 권장하고 있다.


    • GLB(Gateway Load Balancer)

      • 다른 회사의 가상 네트워킹 어플라이언스의 배포, 확장, 실행을 돕는다.

      • 여러 회사의 어플라이언스에 대한 로드 밸런싱 및 자동 조정 기능을 제공한다.

      • 전 세계적으로 분산된 리소스에 대해 지리적 기반 트래픽 라우팅이 필요한 경우 주로 사용된다.


  • IAM(Identity and Access Management)

    • AWS 리소스에 접속하는 사용자나 권한을 관리하는 서비스이다.

    • AWS 관리 콘솔이나 AWS CLI 작업, 혹은 애플리케이션이나 도구를 이용하는 사용자는 사용 형태에 맞는 권한을 가진 IAM 사용자를 생성하여 이용하는 것이 권장된다.

    • IAM 역할을 생성하여 리소스에 설정함으로써 해당 리소스에 다른 리소스에 대한 접근 권한을 부여할 수 있다.

    • 예를 들어 워커 노드에는 IAM 역할을 통해 ECR에 접속할 수 있는 권한을 부여한다.


EKS 구축에 사용하는도구

EKS 클러스터 구축에는 eksctl을 사용하는 방법과 AWS 관리 콘솔(AWS CLI)을 이용하는 방법이 존재한다.
보통은 eksctl을 사용하여 EKS 환경 구축을 한다.

eksctl

  • EKS 클러스터 구축 및 관리를 하기 위한 오픈소스 명령줄 도구이다.

  • eksctl create cluster란 명령만으로 EKS 클러스터를 구축할 수 있다.

  • VPC, 서브넷, 보안 그룹 등 EKS 클러스터를 구축하는 데 필요한 리소스를 한번에 구성할 수 있다.

  • VPC 등의 기본 리소스를 먼저 생성해두고 EKS 클러스터 구축 시 리소스 ID 설정을 통해 구성할 수도 있다.

  • EKS 클러스터와 VPC 등의 리소스를 별도로 구축하면 EKS 클러스터를 삭제해도 다른 리소스가 삭제되지 않기 때문에 EKS 클러스터만 재생성하면 다시 작업을 시작할 수 있다.

  • VPC 등의 기본 리소스는 EKS 클러스터와 별도로 구축하는 것이 구성을 유연하게 할 수 있어 보편적인 방법이다.


VPC 관련

  • AWS 계정에서 여러 VPC를 생성할 수 있지만, 기본적으로 VPC는 독립적인 환경이므로 VPC를 명시적으로 연결하지 않는 한 VPC 간 통신은 할 수 없다.

  • VPC는 기본적으로 1개의 리전을 선택하여 그 안에 서비스를 구축한다.

  • 가용 영역 여러 개에 리소스를 배포하여 다중화할 시 데이터센터 수준의 장애가 발생해도 정상적인 서비스가 가능하다.

  • VPC는 서브넷을 사용해 네트워크를 분할하여 관리한다.

  • 서브넷은 가용 영역 여러 개를 동시 사용할 수 없고, 여러 가용 영역을 사용할 경우 서브넷도 그만큼 나눠야 한다.

  • 라우팅 설정은 서브넷 단위로 이루어지며, 퍼블릭 서브넷과 프라이빗 서브넷을 구분하여 운영하는 경우가 많다.


CloudFormation을 이용한 환경 구축

  • CloudFormation은 AWS에서 인프라를 코드로 관리(Infrastructure as Code, IaC)할 수 있도록 해주는 서비스이다.

  • CloudFormation을 사용하면 AWS 리소스를 텍스트 형식의 템플릿으로 정의하고, 이 템플릿을 기반으로 AWS 인프라를 자동으로 생성, 업데이트, 삭제할 수 있다.

  • AWS 리소스는 AWS 관리 콘솔, AWS CLI 등 여러 방법으로 구축이 가능하지만, 여러 리소스를 한번에 구축하고 변경 및 삭제할 때는 CloudFormation이 적합하다.

  • JSON 또는 YAML 형식으로 리소스 구성을 정의한다.

     MyEC2Instance:
       Type: "AWS::EC2::Instance"
       Properties:
         InstanceType: t2.micro
         ImageId: ami-0abcdef1234567890
    
     MyS3Bucket:
       Type: "AWS::S3::Bucket"
       Properties:
         BucketName: my-bucket

AWS 관리 콘솔

  • AWS 서비스를 관리하기 위한 웹 사용자 인터페이스이다.

  • CloudFormation으로 구축한 환경 확인은 AWS 관리 콘솔에서 한다.


AWS CLI

  • AWS가 제공하는 명령줄 도구이다.

  • 파이썬으로 만들어진 도구로 인스톨러가 제공되며 파이썬 패키지 관리 도구인 pip를 이용해 설치할 수 있다.




해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
아이자와 고지 외 1명, ⌜클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트⌟, 동양북스, 2021, 370쪽
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글