AWS 패턴별 구축/운용 가이드 · · 9 min read

1-1 : AWS란?

AWS란?

  • Amazon Web Service는 Amazon에서 제공하는 클라우드 서비스이다.
  • 네트워크 기반으로 가상 컴퓨터와 스토리지를 비롯한 다양한 서비스를 제공하고 있다.
  • 2004년 Amazon Simple Queue Service(SQS)부터 시작되었다.
  • 2006년 온라인 스토리지 서비스(S3)와 가상 컴퓨터 서비스(EC2)부터 AWS가 본격적으로 시작되었다.

클라우드란?

  • 클라우드 컴퓨팅 : 컴퓨터 리소스의 이용 형태
  • 클라우드는 컴퓨터의 계산 리소스, 스토리지 영역, 어플리케이션 처리를 네트워크 기반 서비스로 제공한다.
  • 인프라스트럭처 서비스(Infrastructure as a Service : IaaS)
    • 가상 서버 또는 스토리지 등의 리소스를 인터넷을 기반으로 제공하는 서비스를 의미한다.
    • 사용자는 물리적인 하드웨어를 관리할 필요가 없으며, 직접적으로 컴퓨터 리소스를 사용할 수 있다.
    • 가장 아래의 기초적이 부분을 담당한다.
    • 물리 장치에 가장 가까운 서비스라고 할 수 있다.
  • 플랫폼 서비스(Platform as a Service : PaaS)
    • 데이터베이스 또는 어플리케이션 서버 등의 미들웨어를 제공하는 서비스
    • OS와 미들웨어의 관리는 제공자가 한다.
    • 사용자는 미들웨어만을 직접 사용할 수 있다.
  • 어플리케이션 서비스(Software as a Service : SaaS)
    • 소프트웨어 또는 어플리케이션의 기능을 인터넷을 통해 제공한다.
    • SaaS를 제공하는 것을 SaaS 제공자(Provider)라고 한다. 이는 ASP(Application Service Provider)와 거의 같은 것이다.
    • ASP라는 형태의 서비스 제공은 클라우드 이전부터 있었지만 SaaS 제공자는 클라우드라는 것에 조금 더 비중을 두어 말하는 것이라고 생각하면 된다.

물리 서버(On Premise)와 AWS의 차이

  • 물리 서버 : 조직 내부에서 사용할 목적으로 준비한 설비

  • On Premise와 AWS의 대표적인 차이

    • 소유자(Owner)
    • 용량(Capacity)
  • 소유와 사용

    • On Premise
      • 설비를 준비한 기업이 소유한다.
    • AWS
      • Amazon이 모든 리소스를 소유하고, 해당 리소스를 서비스로 만든 것을 사용하는 형태
      • 사용자가 물리 장치를 구매할 필요가 없으므로, 초기 비용이 거의 들지 않는다.
      • Amazon이 미리 물리 장치에 투자한 자산을 서비스 제공이라는 형태로 분산해서 회수하는 형태이다.
    On PremiseAWS
    비용초기에 모두 필요함초기 비용은 따로 필요 없으며, 종량제 과금에 따라 비용이 분산되어 발생한다.
    서버 조달 기간몇 주 ~ 몇 달몇 분
    서버 추가/변경시간과 비용이 들어감추가/변경과 관련된 비용이 필요하지 않음
  • 용량

    • On Premise
      • 서버 조달, 추가/변경으로 인한 기간이 길고, 비용이 크기 때문에 자원을 많이 사용할 때의 필요 자원에 맞춰서 모든 것을 준비해야 한다.
    • AWS
      • 자원의 추가/변경이 쉽다.
      • 실제 수요에 맞춰 자원을 크게 만들 수 있고, 작게 만들 수 있다.
      • AWS는 종량제 비용이므로 작게 만들면 비용을 줄일 수 있다.
    • AWS를 효율적으로 사용하려면 Capacity 설계를 기존의 On Premise에서와 다르게 해야한다.

렌탈 서버(공유 서버)와 AWS의 차이

  • 렌탈 서버의 사용 형태

    • 렌탈 서버는 호스팅 서버 혹은 공용 서버라고 부른다.
    • 공용 서버의 문제점
      • 낮은 자유도
        • 공용 서버를 사용하는 경우는 관리자 권한(root)을 가진 계정이 부여되지 않는다.
        • 관리자 권한으로 해야하는 어플리케이션, 미들웨어 변경 등을 할 수 없다.
      • 보안 문제
        • 공용 서버에는 자신이 원하는 환경을 구축할 수 없으므로, 보안 대책도 업자에게 맡기게 된다.
        • 동일 서버에서 작동하는 다른 사람이 만든 어플리케이션에 취약점이 발견되면 그 취약점에 영향을 받을 수 있다.
      • 다른 사용자의 영향
        • 아파치를 사용한 웹 서버를 이용할 때 공용 서버를 사용하면 유저마다 프로세스를 사용하는 것이 아니라, 모두 동일 프로세스를 분할해서 사용하게된다.
        • 1명의 사용자가 부하가 걸리는 처리, CGI 등을 사용한 프로그램 처리가 폭주하면 모든 사용자가 영향을 받는다.
    • 전용 서버와 가상 전용 서버
      • 전용 서버와 가상 전용 서버는 관리자 권한이 부여된 사용자 계정을 만들 수 있다.
      • 전용 서버
        • 1대의 물리 서버를 1명의 사용자에게 주어야 하므로 비용면에서 큰 부담이 된다.
        • 가상화 기술을 이용하여 1대의 물리 서버를 여러 대의 가상 서버로 분할해 비용을 줄인다.
      • 가상 전용 서버
        • 다른 사용자의 영향을 어느 정도 받을 수 있지만 공용 서버에 비해서는 거의 영향을 받지 않는다.
      공용 서버전용 서버가상 전용 서버
      사용 형태1대의 물리 서버를 분할해서 사용1대의 물리 서버를 점유1대의 물리 서버 위에 있는 가상 서버를 점유
      비용적음높음중간
      자유도거의 없음높음높음
      보안관리 불가능관리 가능관리 가능
      다른 사용자의 영향높음없음거의 없음
  • AWS와 렌탈 서버의 차이

    • EC2라는 AWS의 가상 컴퓨터 서비스는 가상화 기술을 사용해 1대의 물리 컴퓨터 위에 여러 개의 가상 컴퓨터를 만들어서 사용한다.
    • 사용자는 관리자 권한ㅇ르 가진 계정을 사용할 수 있으며, 해당 가상 컴퓨터 내부의 모든 것을 관리할 수 있다.
    • EC2는 가상 전용 서버와 비슷하다고 할 수 있다.
    • EC2는 디스크를 동적으로 추가하거나, CPU와 메모리를 다른 인스턴스 유형으로 쉽게 변경하는 등의 기존의 렌탈 서버에 없는 기능이 많다.
    • EC2는 가상 머신 이미지를 생성해서 백업하고, 백업한 이미지를 사용한 여러 서버로 복제하는 것도 가능하다.

프라이빗 클라우드와 AWS

  • 일반적은 퍼블릭 클라우드와 프라이빗 클라우드 정의
    • 일반적인 정의에서 퍼블릭 클라우드와 프라이빗 클라우드의 차이는 “누구에게 서비스를 제공하는가"라는 것이다.
    • 퍼블릭 클라우드
      • 불특정 다수의 사용자에게 제공되는 서비스를 의미한다.
    • 프라이빗 클라우드
      • 특정 기업/조직 전용으로 제공되는 서비스를 의미한다.
    • 원래 클라우드라는 것은 퍼블릭 클라우드만을 나타내었다. 이후에 클라우드 사용 형태의 하나로 프라이빗 클라우드라는 말이 나와서, 기존의 것을 퍼블릭 클라우드라고 부르고 있는 것이다.
    • 프라이빗 클라우드 라는 용어는 기존 데이터 센터 사업자와 서버 벤더들이 자사의 서비스를 클라우드로 재정의하는 과정에서 생겨났다.
    • 이 외에도 퍼블릭 클라우드와 프라이빗 클라우드를 조합한 하이브리드 클라우드, 특정 업종들의 기업들이 함께 운영하는 커뮤니티 클라우드라는 용어도 있다.
  • AWS에서의 프라이빗 클라우드 정의
    • AWS를 제공하는 Amazon은 퍼블릭 클라우드와 프라이빗 클라우드라는 용어를 따로 사용하고 있지 않다.
    • 일반적으로 AWS는 대표적인 퍼블릭 클라우드로 분류한다.
    • AWS VPC(Virtual Private Cloud)를 프라이빗 클라우드라고 표현하는 경우도 있다.
    • AWS에는 AWS GovCloud라는 미국 정부 전용 클라우드가 있다. 정부 전용 프라이빗 클라우드라고 할 수 있다.

AWS의 서비스 구성

  • AWS를 사용할 때 필요한 사고방식
    • AWS 서비스의 특징 중하나는 초기 비용이 필요 없지만, 사용 시간에 따라 비용이 발생한다.
  • 여기에서 사용하는 AWS 서비스 (다이어그램 : AWS Simple Icon)
    1. AWS Elastic Compute Cloud(EC2)
      • 가장 핵심적인 서비스로 가상 서버를 나타낸다.
      • 가상 서버를 실행하는 이미지를 Amazon Machine Image(AMI)라고 하며, 실행된 가상 서버는 인스턴스라고 한다.
    2. AWS Elastic Load Balancing(ELB)
      • 부하 분산 장치
      • EC2 인스턴스의 앞(Front)에 두고, 여러 개의 EC2 인스턴스에 통신을 분산해준다.
      • 가용성과 확장성 높은 시스템을 쉽게 구축할 수 있다.
    3. Auto Scaling
      • CPU 또는 메모리 사용량 등에 따라 EC2 인스턴스를 자동으로 늘리고 줄이는 서비스
      • 부하에 따라 자원을 자동으로 최적화할 수 있다.
      • ELB와 함께 사용하는 경우가 많다.
    4. Amazon Simple Storage Service(S3)
      • 온라인 스토리지 서비스
      • 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문에 온라인이라는 글자가 붙는다.
      • 높은 내구성, 높은 가용성, 높은 신뢰성, 안정성 확보, 무제한적인 용량
      • EC2와 함께 AWS의 가장 핵심적인 서비스라고 할 수 있다.
    5. Amazon Glacier
      • 데이터를 장기 보관하기 위해 설계된 서비스
      • S3와 동등한 신뢰성 설계지만, 1/3의 비용으로 사용할 수 있다.
    6. Amazon Elastic Block Store(EBS)
      • EC2 인스턴스에서 사용하는 스토리지
      • EC2와 네트워크를 기반으로 연결되며, 내부적으로는 RAID1과 같은 구성으로 디스크가 확장된다.
      • 사용자에게는 단순 스토리지 볼륨으로 보인다.
      • 스토리지 이미지를 스냅샷 형식으로 S3에 백업해서 보관 혹은 복제를 쉽게 할 수 있다.
    7. Amazon Relational Database Service(RDS)
      • 데이터베이스 PaaS
      • 트랜잭션 로그를 이용한 레플리케이션으로 마스터/슬레이브 구성이 가능하다.
      • 데이터베이스 엔진으로는 Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, SQLServer 등이 있다.
    8. Amazon ElastiCache
      • 인 메모리 캐시 시스템 PaaS
      • 지원하는 엔진은 Memcache와 Redis이다.
      • ElastiCache를 사용하면 데이터베이스 캐시를 통한 고속화, 어플리케이션 세션 스토어를 통한 장애 해결 능력 향상 등이 가능해진다.
      • RDS처럼 풀 매니지먼트 서비스이다.
      • 서버 유지 관리, 장애가 발생했을 때의 페일오버 등을 따로 하지 않아도 된다.
    9. Amazon Virtual Private Cloud(VPC)
      • AWS 네트워크 내부에서 논리적으로 분리된 네트워클르 생성하는 서비스
      • 원하는 프라이빗 주소로 네트워크 생성 또는 서브넷 분할을 할 수 있으므로, On Premise처럼 DMZ 세그먼트 또는 Trusted 세그먼트 구성 등을 할 수 있다.
      • 인터넷 게이트웨이 설정을 하면 인터넷과도 통신이 가능하다.
      • VPN 게이트웨이도 생성할 수 있으므로, 기존의 데이터 센터 또는 회사 내부의 네트워크와도 연결할 수 있다.
    10. Amazon Direct Connect
      • AWS의 VPC에 접속하기 위한 전용선 접속 서비스
      • 자신의 회사 또는 데이터 센터에서 전용선을 AWS에 직접 연결할 수 있다.
      • 더 큰 용량의 트래픽을 안정적으로 구성할 수 있다.
      • 하이브리드 클라우드 형태를 구성할 때 Direct Connect를 사용한다.
    11. Amazon CloudFront
      • AWS가 제공하는 콘텐츠 전송 네트워크(CDN) 서비스
      • 콘텐츠를 엣지 로케이션이라고 부르는 전 세계에 퍼져 있는 거점을 기반으로 전달한다.
      • 사용자로부터 가장 가까운 엣지 로케이션에서 데이터를 제공하므로, 굉장히 빠르게 데이터를 전송할 수 있다.
      • 비용의 형태는 “통신비용 + 요청비용"이라는 종량제이므로, 일반적인 CDN 서비스와 비교해서 비용이 적게 나온다.
    12. Amazon Route 53
      • 도메인 네임 시스템(DNS) 서비스
      • 취약성 또는 DDos 공격에 대한 대응, 시간이 오래 걸리는 DNS 운용을 굉장히 쉽게 할 수 있게 해주는 서비스
      • DNS는 인터넷의 근단을 담당하는 서비스이므로, AWS 서비스 중에서 유일하게 100%의 SLA(Service Level Agreement, 서비스 품질)를 보증하고 있다.
    13. Amazon Simple Queue Service(SQS)
      • 메시지 큐 서비스
      • 메시지의 가용성, 확장성, 큐 시스템의 신뢰성 등을 AWS가 굉장히 높은 수준으로 구현하고 있다.
    14. Amazon Simple Notification Service(SNS)
      • 푸시 형태의 메시지 전달 서비스
      • 이메일, 모바일 푸시, SQS, HTTP/HTTPS 등의 다양한 프로토콜로 알림을 할 수 있다.
    15. Amazon Simple Email Service(SES)
      • 메일 전송 서비스
      • 단순 전송 기능뿐만 아니라 메일 전송 품질을 위한 다양한 기능을 제공한다.
    16. AWS Identity and Access Management(IAM)
      • AWS 계정 관리 서비스
      • 사용자 또는 그룹에 대한 AWS 리소스 접근 권한 제어를 해준다.
    17. AWS CloudTrail
      • AWS API 호출을 기록하는 로깅 서비스
      • AWS를 적절하게 운용하고 있다는 것을 증명하려면, CloudTrail과 같은 서비스를 사용해서 로그 데이터를 축적/분산하고 감시해야 한다.
    18. Amazon CloudWatch
      • AWS의 리소스 또는 어플리케이션 모니터링 서비스
      • 각각의 리소스를 특정 조건을 사용해 감시할 수 있다.
    19. AWS Elastic Beanstalk(EB)
      • 웹 어플리케이션 서버 PaaS
      • 서버를 구축하지 않고도 Java, .NET, PHP, Node.js, Python, Ruby, Docker 플랫폼 등을 사용할 수 있다.
      • Auto Scaling 설정을 하면 어플리케이션의 확장 등을 자동으로 수행해준다.
      • EC2에서 자체적으로 미들웨어를 구축하기 전에 EB만으로 구축할 수 없는지 검토해보면 좋을 것이다.
    20. AWS CloudFormation
      • AWS 환경 구축을 자동화하는 도구이다.
      • 서식에 따라 템플릿을 작성하면, 해당 템플릿을 기반으로 환경을 쉽게 재현할 수 있다.
      • AWS를 사용할 때 인프라 구축을 효율적으로 할 수 있다.
      • 템플릿은 JSON 형식의 파일이며, Git 등의 리포지토리로 관리할 수 있다.
      • AWS 환경 자체를 코드로 관리할 수 있게 된다.
    21. AWS 지원(AWS Support)
      • 전화, 메일, 채팅 등을 통해 기술적인 지원을 해주는 서비스
      • 용도에 따라 여러가지 단계가 존재한다.
    22. AWS Trusted Advisor
      • AWS의 적절한 사용을 추천해주는 도구
      • 최적화 관련 추천 대상은 보안, 비용 절감, 가용성을 높이는 방법, 성능 문제와 같은 것들이 있다.