[AWS] AWS 기초와 클라우드 컴퓨팅

Junwon SEO·2023년 7월 25일

AWS 스터디

목록 보기
1/2

0. On-Premise란?

AWS와 클라우드 컴퓨팅에 대해 이야기하기 앞서 이러한 개념들이 무엇이며 왜 등장했는지에 대해 이해할 필요가 있다. 개발자라면 살면서 온 프레미스(On-Premise)라는 말을 들어 보았을 것이다.

온 프레미스(On Premise)란 줄여서 온 프렘(On Prem)이라고도 하는데, 소프트웨어를 사용하는 사람이 조직 내에 있는 전산실 서버에 직접 서버를 설치해 운영하는 방식을 말한다.

특정 서비스를 제공하기 위해 직접 온 프레미스로 데이터 센터를 구축한다고 생각해 보자. 먼저 우리는 서비스 제공을 위해 어느 정도 규모의 스토리지와 컴퓨팅 리소스가 필요한지 고민해 보아야 한다. 또 이를 기반으로 서버 랙, 컴퓨팅 리소스, 스토리지, 여러 네트워킹 장비 등 다양한 하드웨어를 준비해야 한다. 또 이러한 하드웨어가 준비되면 이를 효과적으로 운영하기 위해 데이터 센터를 구축할 장소를 찾아야 하며 해당 시설에 안정적으로 전력을 공급할 수 있어야 한다.

이렇듯 온 프레미스로 데이터 센터를 구축해 서비스를 제공하려면 많은 노력을 거쳐야 한다. 이처럼 온 프레미스로 데이터 센터를 운영하려면 다음과 같이 여러가지 사항을 고려해야 한다.

  1. 막대한 초기 비용이 든다.
  2. 데이터 센터의 용량이나 규모에는 한계가 있다.
  3. 추가적인 트래픽을 감당하기 위해 확장하기에 어려움이 있다.
  4. 안정적으로 전력을 공급할 수 있어야 한다.
  5. 데이터 센터 구축 설계부터 운영까지 많은 시간과 인원이 투입된다.

이러한 단점을 극복하여 언제든지 빠르게 서비스를 제공하기 위해 등장한 개념이 클라우드 컴퓨팅이다.

1. 클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 인터넷을 통해 On Demand로 IT 리소스를 제공하는 것이다.

쉽게 말해 직접 데이터 센터를 구축하고 운영할 필요 없이 데이터 센터를 소유 및 유지, 관리하고 있는 AWS, MS와 같은 기업들로부터 가상 데이터 센터 기술 및 서비스를 빌려 쓰는 것이다. 직접 구축하는 것이 아니고 빌려 쓰는 개념이기 때문에 아래와 같이 여러 이점이 존재한다.

1. 초기 투자 비용이 없다

  • 온프레미스로 데이터 센터를 구축하게 되면 많은 하드웨어 장비를 준비해야 하기 때문에 초기에 많은 투자 비용이 발생한다. 반면 AWS와 같이 클라우드 서비스를 사용하게 되면 초기 투자 비용이 없으며 사용한 만큼만 지불하면 되기 때문에 가격 면에서 유리하다.

2. 운영 비용이 절감된다

  • 클라우드 서비스를 활용하면 서비스의 트래픽 추이에 따라 다양한 전략을 채택할 수 있다.
    On Demand 이기 때문에 사용한 만큼만 비용을 내면 되고 아래와 같이 적절한 전략을 채택해 리소스를 효율적으로 활용할 수 있기 때문에 서비스 운영에 있어 많은 비용을 절감할 수 있다.

3. 탄력적인 운영과 확장

  • 서비스의 트래픽을 예측해서 이를 감당할 수 있는 규모의 데이터 센터를 구축해 놓았는데 막상 그 정도의 트래픽이 발생하지 않거나, 예상치보다 많은 트래픽으로 인해 서비스에 장애가 생긴다면 운영에 어려움을 겪을 수 있다. 하지만 클라우드를 활용하면 실제 트래픽에 Fit하게 리소스를 활용하여 탄력적으로 서비스를 운영하거나 확장할 수 있다.

4. 속도 및 민첩성

5. 비즈니스에만 집중 가능

  • 클라우드를 활용하게 되면 인프라 구축에 비용과 인력을 투입하지 않아도 되기 때문에 비즈니스에만 집중할 수 있다. 이를 통해 혁신을 위한 다양한 시도와 테스팅을 할 수 있다. Airbnb는 호텔을 단 한 채도 보유하고 있지 않지만 클라우드를 활용해 혁신을 이루어 냈으며 Netflix 또한 클라우드를 활용해 전 세계의 고객들에게 안정적으로 서비스를 제공하고 있다.

6. 글로벌 확장성

  • 간혹 특정 기업의 경우에는 특정 국가의 정책이나 규정에 준수하는 서비스를 제공해야 한다. 또 특정 국가에 서비스를 빠르게 제공하기 위해서는 해당 국가에 인접한 데이터 센터를 이용하는 것이 유리하다. 클라우드를 활용하면 전 세계에 존재하는 데이터 센터를 활용해 쉽고 빠르게 글로벌로 서비스를 제공할 수 있다.

이렇듯 클라우드 컴퓨팅을 활용하면 다양한 이점이 존재한다. 현재 전 세계에는 Amazon의 AWS, Google의 GCP, Microsoft의 Azure 등 다양한 서비스들이 존재한다. 이처럼 다양한 CSP 들 사이에서 AWS를 채택해야 하는 이유는 무엇일까?

AWS의 이점은 이와 같이 정리할 수 있다. 이처럼 AWS는 최적의 클라우드 서비스를 제공하기 위해 노력하고 있다. (하지만 아직 Issue 투성이 인 것은 함정...)

2. 리전과 가용영역, 데이터 센터

AWS에서 관리하는 데이터 센터는 전 세계에 존재한다. 지역별로 리전(Region)이라는 단위로 분리되어 있고 지속적으로 확장하고 있다.

일반적으로 리전의 이름은 리전이 있는 위치의 이름을 따서 명명하며 한국에서 주로 사용하는 리전은 ap-northeast-2 아시아 태평양(서울) 리전이다.

AWS는 사용자에게 높은 가용성을 제공하기 위해 하나의 리전에서 최소 2개 이상의 가용 영역(AZ, Availability Zone)을 제공하고 있다. 이를 통해 하나의 AZ에 대규모 장애가 발생해도 다른 AZ를 통해 서비스를 안정적으로 이용할 수 있다.
정리하면 리전은 AZ의 클러스터이며 AZ(가용 영역)은 데이터 센터의 클러스터이다.
ap-northeast-2 아시아 태평양(서울) 리전은 4개의 AZ를 운영하고 있으며 각각 ap-northeast-2a, ap-northeast-2b, ap-northeast-2c, ap-northeast-2d로 명명하고 있다.

3. AWS 루트 사용자 보호

aws 계정에 대한 액세스를 구성할 때 인증(Athentication)인가(Authorization)라는 두 용어가 자주 나타난다. 기본 개념으로 보일 수 있지만 aws에서 액세스 관리를 올바르게 구성하기 위해서는 이러한 용어를 이해해야 한다.

인증(Athentication)은 사용자가 본인임을 보장한다. 단순히 사용자가 본인이 맞습니까? 라는 물음에 대한 답이다. 인증을 받으면 사용자가 aws 계정을 통해 어떤 작업을 할 수 있는지 궁금할 수 있다. 인가(Authorization)는 사용자에게 AWS 리소스 및 서비스에 액세스할 수 있는 권한을 부여하는 프로세스이다.

AWS 계정을 처음 생성하게 되면 AWS 서비스 및 리소스에 대한 전체 액세스 권한이 있는 단일 로그인 자격 증명으로 시작한다. 이를 루트 사용자 혹은 루트 계정이라고 한다. 루트 계정에 대한 정보가 탈취되면 해당 계정을 활용해 모든 aws 서비스 및 리소스에 액세스 해 다양한 작업을 할 수 있다.
따라서 루트 계정은 안전하게 보관해야 하며 일상 작업에는 루트 사용자의 사용을 권장하지 않는다. 루트 계정의 안전을 보장하려면 아래와 같은 사례를 따라야 한다.

  1. 강력한 루트 계정 암호 선택
  2. MFA(Multi Factor Athentication) 사용
  3. 암호 또는 액세스 키 공유 금지
  4. 루트 사용자와 연결된 액세스 키 비활성화 또는 삭제
  5. 일상 작업에 루트 사용자를 사용하지 않음

이렇듯 AWS에서는 루트 사용자 외에도 다양한 사용자를 통해 서비스를 액세스하고 이용할 수 있도록 'IAM' 이라는 서비스를 제공하고 있다.

4. AWS IAM (Identity and Access Management)

AWS IAM(Identity and Access Management)은 AWS 계정 및 리소스에 대한 액세스를 관리하
는 데 도움이 되는 AWS 서비스이다. 사용자는 IAM을 통해 세분화 된 액세스 권한을 지닌 사용자를 생성할 수 있으며 이를 통해 AWS 서비스를 이용할 수 있다. IAM은 글로벌이며 특정 리전에 국한되지 않기 때문에 AWS 관리 콘솔에서 모든 리전의 IAM 구성을 보고 사용할 수 있다.

따라서 루트 계정을 사용하지 않고 적절한 IAM 사용자를 생성해 사용하는 것이 중요하다.

추가로 IAM 사용자 그룹을 만들어 사용할 수 있다. 가령 하나의 팀에서 AWS를 사용한다고 했을 때 직무에 맞게 AWS를 사용해야 하는 권한이나 책임이 다를 수 있다. 이 때 관리자는 전체 액세스 권한을 가진 IAM 사용자를 생성한 뒤 IAM 사용자 그룹을 만들어 팀원마다 적절한 권한을 부여한 IAM 사용자를 분배하여 이용할 수 있다.

0개의 댓글