주니어 개발자 1호

[ Devops PT ] 클라우드, AWS의 다양한서비스, Terraform 관련 정리 본문

Server 관련

[ Devops PT ] 클라우드, AWS의 다양한서비스, Terraform 관련 정리

No_1 2022. 8. 28. 22:26

목차

1️⃣AWS 클라우드의 이해 및 서비스 소개


AWS 클라우드의 이해

클라우드란 무엇인가?

  1. 클라우드란 하드웨어나 소프트웨어 등을 직접 구축하지 않고, 제 2의 전문 업체로 인터넷을 통해 필요한 IT자원을 원하는 만큼 받아 즉시 사용할 수 있으며, 사용한 시간 만큼 비용을 지불하면 되는 서비스를 의미
  2. 가상화 기술을 토대로, 자원의 확대와 축소를 가능하게 하며 필요한 자원을 제공할 수있는 IT환경을 의미
  3. 용이, 유연하게, 주문형 셀프서비스로 제공, 사용량을 기반으로 과금됨
  4. 장점: IT자원의 소유가 아닌 대여로 비용 절감, 완성형 서비스 활용으로 시간 절감
  5. 어디서든 접속 가능으로 인한 생상성 향상, 자원의 유연성 향상

클라우드 제공 업체

  1. AWS, MS Azure, GCP등이 있음
  2. 전 세계적으로 많이 사용하는 클라우드는 AWS임
    1. 2021년 기준 전체 클라우드 시장중 38.9% 차지
    2. 글로벌 서비스 확대
    3. 사용자 Needs에 알맞는 서비스 출시
  3. AWS는 클라우드의 최초 선도자로 IT관련 기업의 대부분이 사용함

AWS 클라우드 소개

  1. AWS 클라우드란 Amazon에서 제공하는 클라우드 서비스
  2. 2000년대 도서구매 사이트를 만들었는데, 사용하고 남은 서버등 컴퓨팅 자원들에 대한 활용에 대해 고민이 있었음
  3. 남는 서버 자원들을 사용자들에게 빌려주면 어떨까? 하는 아이디어에서 시작
  4. 초기에는 가장 기본적인 서비스만 존재하였음
    1. 컴퓨팅: EC2
    2. 스토리지: EBS, S3
    3. 데이터베이스: RDS, DocumentDB

AWS의 장점

  1. 타사대비 서비스, 기술등이 많음
  2. 시장 점유율이 높기 때문에 사용 경험, 기술력을 가진 사람들이 많음
  3. 저렴한 가격으로 많은 고객을 확보
  4. 대규모 자원을 바탕으로 컴퓨팅 자원의 활용률을 높게 유지해 단위당 비용이 낮아짐

AWS 클라우드 서비스 소개

  • 컴퓨팅: 컴퓨팅 가능한 자원 제공하며, VM 형태로 제공
  • 컨테이너: 컴퓨팅 가능한 자원을 제공하며, VM 위에 실행되는 컨테이너 형태로 제공
  • 스토리지: 컴퓨팅 자원 사용중 생성되거나 사용되는 파일등을 저장 할 수 있는 저장소 제공
  • 네트워크: 인터넷망 및 컴퓨팅 자원간 통신 및 연결, 서비스 제공을 위한 네트워크 제공
  • 데이터베이스: 데이터를 저장, 관리하고 활용 할 수 있는 데이터베이스나 저장소 제공
  • 보안: 각종 자원이나 데이터를 안전하게 관리하고 특정 접속자에 대해서만 접근하도록 제어
  • 기타: 위에서 명시된 서비스들을 관리할 수 있는 보조적인 서비스 제공

AWS 네트워크 서비스

  • AWS 네트워크: VPC, Subnet, Gateway, Routing, LoadBalancer
  • VPC: 특정 IP 대역으로 할당 가능한 가상의 네트워크 범위
  • Subnet: VPC 네트워크 범위를 특정 CIDR로 구분해서 분리한 영역 → 논리적인 그룹핑된 모음, 네트워크 범위
  • Gateway: 인터넷망이나 다른 네트워크등 외부망과 연결을 위해 사용되는 요소
  • Routing: 특정 네트워크 대역으로 연결을 하기 위한 연결 정보를 설정
  • LoadBalancer: 트래픽의 부하 분산을 위해 여러 엔드포인트로 연결을 나누어서 처리

AWS 컴퓨팅 서비스

  • AWS 컴퓨팅: EC2, EKS
  • EC2 : 서버 구축을 위해 필요한 컴퓨팅 자원을 제공, VM형태로 OS 및 HW 자원
  • EKS: 컨테이너 구축을 위해 VM위에 컨테이너를 배포/실행 가능한 컴퓨팅 자원을 제공, Kubernets 기반으로 컨테이너 운영/관리를 위한 플랫폼 제공

AWS 기타 서비스 목록

  • EBS: 컴퓨팅 자원의 파일 저장 관리를 위한 디스크 볼륨
  • ECR: 컨테이너 이미지 저장/관리 Push및 Pull을 위한 저장소
  • S3: 다양한 자원의 파일(문서, 동영상, 이미지등)을 저장하고 웹상에서 제공하기 위한 저장소
  • RDS: 관계형 데이터베이스 제공, CRUD등 다양한 SQL 쿼리로 데이터 저장/관리 기능
  • Security Group:특정 AWS 자원 대상 방화벽과 같은 접근 제어 기능
  • IAM: AWS를 사용하는 특정 사용자나 시스템에 대한 인증, 권한 관리등을 제공

 

2️⃣Infrastructure as Code 소개


GUI 및 CLI를 통한 관리 방법의 장단점

  • 장점
    • GUI 콘솔은 직관적으로 그래픽 화면에서 메뉴 및 기능을 실행할 수 있음
    • CLI 콘솔은 빠르게 다수의 항목이나 출력 정보에 대한 필터링 가능
    • 상호 작용을 통한 적용 여부등 처리 내역에 대한 부분을 바로 확인 가능
    • 복잡한 코드를 학습하지 않고도 직관적으로나 문서 확인후 바로 적용 간으
  • 단점
    • GUI 콘솔은 적용 정보를 확인하기 위해 일일이 화면에서 확인을 해야함
    • CLl 는 메뉴 및 기능의 한정에 따라 기능 적용되는 부분과 출력되는 부분이 한정
    • GUI, CLI 모두 연관관계 있고 의존성 있는 서비스를 동시 혹은 순차적으로 적용하기 어려움
    • GUI, CLI의 경우 클라우드 서비스 생성, 변경, 삭제를 자동화 하기 어려움

Infrastructure as Code

  • 클라우드 인프라를 코드 기반으로 관리
  • AWS CloudFormation을 통해 Infrastructure as Code가 나오게 됨
  • GUI 및 CLI 관리시 구현하기 어려운 자동화 및 한번에 여러 서비스를 동시에 추가/변경/삭제 하는 기능을 구현하고자 나옴
  • 클라우드 인프라에 반영된 서비스 자원들을 모두 코드로 작성된 형상과 일치하므로, 클라우드 자원을 코드 기반으로 형상 관리 가능

관련 툴

  • AWS CloudFormation
    • AWS에서 제공하는 대표적인 Infrastructure as Code 서비스
    • 독창적인 코드로 AWS 클라우드 모든서비스를 Code기반으로 추가/변경/삭제 가능
    • AWS 서비스 대상에만 한정되어 사용할 수 있으며, AWS CLI를 통해 실행
    • GUI로 아키텍처를 구성하면, 그대로 프로비저닝 할 수 있는 모델러를 제공
  • TerraForm
    • AWS에 한정되지 않고, 다양한 클라우드에서 사용 가능
    • 레퍼런스가 다양함, 코드를 익혀두면 다른 클라우드에서 동일 코드로 사용 가능
    • 커스텀한 설정 및 다양한 서비스를 동시나 순차적으로 연동해 처리 및 관리 가능

3️⃣Terraform 소개 및 적용


Terraform을 통한 Iac( Infrastructure as Code ) 구현

  • AWS의 VPC, Subnet 등 인터넷 망 혹은 내부망 연결을 위한 네트워크 연결 및 구현
  • AWS의 EC2 VM 형태의 컴퓨팅 자원을 생성 및 관리하기 위한 템플릿 코드 제공
  • 구축시 복잡하고 연관 관계가 AWS EKS 서비스를 생성 및 관리 하기 위한 템플릿 코드 제공
  • 자원 스펙 변경이나 증설에 경우, Terraform을 통해 쉽게 업데이트가 가능
  • 생성/변경/삭제 AWS 서비스 자원에 대한 정보는 코드에 작성이 된 상태 그대로 클라우드 인프라에 반영
  • Github등 버전 관리 시스템에 코드를 버전 및 형상 관리 가능

Terraform을 통한 운영/관리 사례

  • Terraform을 이용해 네트워크 부터 컴퓨팅 자원까지 하나의 실행으로 한번에 많은 서비스를 한번의 프로비저닝 실행으로 순차적으로 생성가능

[ 참고 ]

-> 코멘트 PT 자료