AWS - AWS 구조와 로직 이해하기
AWS는 Amazon Web Services의 약자로, 전 세계적으로 분포한 데이터 센터를 기반으로 포괄적으로 사용되고 있는 아마존의 클라우드 플랫폼이다.
실제로 AWS는 현재 클라우드 서비스 점유율 1위로, 2006년에 시작되어 현재까지 매년 새로운 서비스와 기술들을 런칭하며 지속적으로 성장하고 있는 클라우드이다. 기존의 On-premise 나 IDC (Internet Data Center) 의 서버환경을 그대로 클라우드에 적용하여 서비스 구성, 비용, 배포에 시간과 비용을 확연히 줄인다는 장점이 있다.
AWS 안에는 정말 많은 종류의 서비스가 있는데, AWS의 세부 서비스를 알아보기 전에 우리는 먼저 AWS 클라우드가 어떤 구조로 구성되어 있는지 알아야 한다.
AWS Cloud, 어떻게 생겼을까?
AWS는 크게 AWS Cloud 서비스 안에 각 지역별로 분포된 리전이 존재하고, 각 리전 안에 가용영역이라는 단위가 존재한다. 리전은 뭐고, 가용영역은 뭘까?
리전
리전은 AWS 서비스가 제공되는 데이터 서버의 물리적 위치이다. 리전은 동남아, 유럽, 북아메리카 등 전 세계에 분포되어 있으며, 우리나라에도 1개, 도쿄에도 2개가 존재한다. 각 리전에는 고유의 코드가 부여되는데, 예를 들면 서울 리전은 ap-norteast-2, 미국 동부는 us-east-1 등과 같다.
참고로 us-east-1은 모든 리전 중의 대빵이므로 모든 서비스 이용이 가능하다. 다만 그 외에는 리전 별로 가능한 서비스가 다르기 때문에, 리전을 선택할 때는 ⓐ 속도 (거리가 가까울 수록 속도가 빠름) ⓑ 저작권, 세금 등 서비스에 관한 법률 ⓒ 사용가능한 AWS 서비스 등을 고려하여 리전을 선택해야 한다.
가용영역 (Availability Zone, 이하 AZ)
가용영역은 리전의 하부단위로, 하나의 리전은 반드시 2개 이상의 가용영역으로 구성되어 있으며, 하나의 가용영역은 하나 이상의 데이터 센터로 구성되어 있다.
이 AZ는 서로 매우 빠른 전용 네트워크로 긴밀하게 구성되어 있는데, 서로 100km 이내의 거리 안에 위치하여 빠른 네트워킹 구조를 갖추되 최소한의 물리적인 일정거리 Nkm 이상은 반드시 떨어져있도록 구조화 되어 있기 때문에, 여러 사건사고나 재해로 인해 하나의 AZ가 고장났을 경우 다른 AZ가 보완해줄 수 있도록 데이터를 컨트롤 하고 있다.
참고로, 각 User 계정 별로 노출되는 AZ의 코드와 AZ의 실체 위치는 다르다.
즉, AZ의 실제 위치는 보안 상 공개되지 않는다.
만약 User A와 B가 존재한다고 가정했을 때, User A가 중요한 데이터를 Data Center A에 보관하고 있다는 것을 B가 알았을 경우, User B는 Data Center A만 털면 중요한 정보를 유출시킬 수 있을 것이다. 그래서 AWS에서는 가용영역 AZ를 통해 매핑을 두어 Data Center의 보안을 높여준다.
이게 무슨 말이냐면.. 위 그림과 같이 User A에게 보여지는 AZ-A는 Data Center 2와 연결되지만, User B에게 보여지는 AZ-A는 Data Center 3과 연결된다. 이런 식으로 AWS는 가용영역 AZ를 통해 Data Center를 믹스하며 보안성을 높인다. 또한 사용자들은 습관적으로 가장 상위에 노출되는 영역을 클릭하기도 하므로, User A와 User B가 제일 상위에 노출되는 가용영역 AZ-A에 데이터를 몰아서 보관한다해도 가용영역 AZ-A는 User 별 다른 데이터 센터에 정보를 보관하기 때문에 저장소의 과부하를 막는 효과도 있다.
엣지 로케이션
엣지 로케이션은 AWS의 CloudFront (CDN) 등의 여러 서비스를 가장 빠른 속도로 제공하기 위한 거점을 의미한다. 한마디로, CDN을 위한 거점이다.
예를 들어 넷플릭스가 우리나라에 있는 서비스라면, 아프리카나 미국에서 5G짜리 넷플릭스 영상을 다운받기 위해서는 엄청나게 먼 거리를 뚫고 데이터가 전송되어야 하므로 속도가 굉장히 느릴 것이다. 이러한 문제를 해결하기 위해서 AWS는 전 세계에 임시 데이터 저장소인 엣지 로케이션을 둔다. 이를 통해 내가 요청했던 데이터를 더 쉽고 빠르게 엑세스 하는 것이 가능하다.
글로벌 서비스와 리전 서비스
또한 AWS는 서비스가 제공되는 지역의 기반에 따라 ① 글로벌 서비스와 ② 리전 서비스로 분류된다.
① 글로벌 서비스란, 데이터 서비스를 한국, 미국, 호주 어디 할 것 없이 전 세계의 모든 인프라가 공통적으로 사용하는 것이다. CloudFront, IAM, Route53, WAF 등이 해당된다. (지금은 몰라도 된다.)
② 지역 서비스란, 특정 리전을 기반으로 데이터 및 서비스를 제공하는 것이다. 거의 대부분의 서비스가 지역 서비스에 해당하며, AWS에서는 대표적으로 S3가 해당한다. (역시 지금은 몰라도 된다.)
여기서 헷갈리면 안되는 포인트는, S3 역시 전 세계에서 동일하게 사용할 수 있는 서비스라는 것이다. 다만 S3는 데이터를 리전에 종속하여 보관한다. S3 개념을 아는 것보다 현재 중요한 건 AWS 서비스의 구분은 어디서 사용할 수 있느냐가 아닌 '데이터가 어디에 기반하는가' 이다.
ARN (Aamazon Resource Name)
AWS의 모든 리소스에는 ARN이라는 고유 아이디가 부여된다.
"arn[partition]:[service]:[region]:[account_id]:[resource_type]/resource_name/(qualifier)"
이런 형식으로 생겼는데, 지금은 이런게 있다 ~ 정도로만 알고 넘어가기로 하자. 참고로 맨 끝에 와일드카드(*)를 사용하여 다수의 리소스 지정이 가능하다.
( 와일드카드(*)는 전체를 의미한다. table/mytable 이 내정보 테이블을 의미한다면, tabale/*는 전체 테이블을 호출한다. 와일드카드를 모른다면, 데이터 분석을 공부하자!)