AWS 소개
aws란 amazone web service의 약자로, 아마존에서 운영하는 cloud computing platform이다. 처음 아마존은 단순한 온라인 쇼핑 산업에서 시작했지만 그 규모가 전세계로 확대되면서 엄청난 양의 데이터를 처리하고 보관해야 했기에 그들만의 서버를 구축해야 했다. 그러자 아마존은 해당 네트워크 서비스를 다른 개발자들 또한 필요할 것이라 생각해 이러한 서버를 클라우드로 구축할 수 있는 서비스를 제공하면서 aws는 개발자들에게 대체 불가한 클라우드 컴퓨팅 서비스가 되었다.
aws 이전의 단순한 웹통신을 살펴보면
클라이언트는 특정 정보를 얻기 위해 회사의 서버에 직접 Request를 보내고, 회사 서버는 요청에 대한 Response를 보내 클라이언트가 정보를 브라우저에 렌더링하는 방법으로 웹서비스가 진행되었다. 이러한 구조는 굉장히 단순하지만 보안, 통신 상태 등 실제적인 서비스로 운영하기 위해 생각해야 할 부분이 굉장히 많고, 무엇보다 저 규모의 서버는 매우 비싸고, 회사가 물리적으로 관리하기 어렵다. 더욱이 트래픽이 단기간에 집중되는 특정 서비스라면 최대 크기로 서버를 구축한다고 했을 때 평상시에 사용하지 않을 공간이 너무 많기 때문에 회사 입장에서 막대한 손해가 된다. 결국 아마존이 저 서버를 elastic하게, 즉 서버를 사용하는 만큼만 비용을 지불하고 이를 클라우드로 제공해주면서 aws의 세계가 도래하게 되었다.
aws는 단순한 한 개념이 아니라 그 안에 다양한 서비스를 내포하고 있고, 우리는 이를 적절하게 사용해 원활한 통신이 가능하도록 설정해야 한다.
- 컴퓨팅: aws ec2, auto scaling
- 네트워킹: aws vpc, aws route53, elastic load balancing, aws cloudfront
- 스토리지: aws ebs, aws s3, aws efs, aws glacier
- 관리도구: aws cloudwatch, aws cloudtrail, aws cloudformation
- 기타: aws athena
컴퓨팅
aws ec2는 aws 컴퓨팅서비스의 핵심으로, 새로운 서버 인스턴스를 확보하고 부팅하는데 필요한 시간을 몇분으로 단축하고, 컴퓨팅 요구사항의 변화에 따라 신속하게 컴퓨팅파워를 확장하거나 축소할 수 있다.
네트워킹
DNS 서비스를 제공하고, 사용자에게 aws 상의 가상 네트워킹 환경을 직접 제어할 수 있는 기능을 제공하며 마치 기존 네트워크 내 있는 것처럼 aws ec2와 상호 작용할 수 있다.
스토리지
aws는 데이터 및 사용 유형에 따라 여러 스토리지 옵션을 제공한다.
관리및보안
aws IAM 서비스를 통해 사용자 인증과 권한 부여 관리가 가능하다. 또한 aws cloudwatch 및 aws cloudtrail을 통해 성능지표를 모니터링하고 서비스에 수행된 호출을 기록할 수 있다.
용어 정리
- Region: 모든 서비스가 존재하는 물리적 위치, 리전 내 여러 개 가용영역(AZ) 존재(예를 들면, 미국 버지니아 주 특정 위치)
-> 재해 발생 시에도 서비스 공급, region으로 부터 먼 곳의 서비스 속도 저하 방지 - AZ(Availability Zone): 실제 데이터가 존재하는 데이터 센터(예를 들면, 버지니아 특정 위치의 특정 데이터건물)
-> 한 AZ 손상 시 리전 내 다른 AZ에서 서비스 가능 - Edge Location: CloudFront 사용에 필요한 캐시 서버, CDN 서비스와 사용자가 만나는 곳을 Edge라 표현
- CDN(Content Delivery Network): 콘텐츠를 전세계 캐시 서버에 복제
-> 사용자가 원격지에 있는 서버(Origin Server, 데이터가 있는 곳)로 부터 Content를 다운로드 받을 때 가까이 있는 서버에서 받는 것보다 시간이 오래 걸리기 때문에 사용자와 가까운 곳에 위치한 Cache Server에 해당 Content를 캐싱하고 요청 시 Cache Server에서 응답을 준다.
-> 다시 말해 CloudFront는 CDN 기능을 제공하는 서비스이고, Edge Location은 Cache Server를 말한다!!
aws IAM
실습단계에서 대부분 루트 계정을 사용하지만 여러 개발자가 루트 계정을 공유하는 것은 보안상 좋지 않다. IAM 계정을 생성해 각 개발자 별로 배부하는 것이 좋다.
aws Budget
ec2를 항상 실행시키면 어쩔 수 없이 금액이 나가기 때문에 사용 금액 한도 설정할 필요가 있다. Billing dashboard에서 현재 이용 금액을 확인할 수 있는데 루트 계정만 이용할 수 있다.(IAM 유저는 별도의 권한 부여가 필요) Budgets에서 여러 종류의 알림 설정이 가능하다.