개발자라면 AWS, 클라우드 이 두 단어를 못 들어봤을리는 없을 겁니다. 하지만 저를 포함해서 단어만 알고 막상 활용을 잘 못한다거나 지식이 부족한 경우도 많이 있는 것 같아 저도 기초부터 차근차근 공부해나가면서 관련 지식을 블로그에 기록하려 합니다.
먼저 클라우드라는 게 뭔지 한 번 살펴보죠.
클라우드 이전의 방식에서 인프라를 구축한다고 하면 서버 장비를 직접 사와서 서버를 구축하는 것이었습니다. 데이터 센터라는 시설을 빌리거나 직접 데이터 센터를 운영할 경우 전력, 냉각, 유지보수 등 모든 사항들에 대해서 직접 관리했어야 했죠. 뿐만 아니라, 24시간 동안 시설의 동작을 감시할 인력도 고용을 해야하고 증설을 하고 싶으면 필요한 만큼 또 장비를 구매해서 직접 설치해야하죠. 최악의 경우, 지진, 정전, 화재가 일어날 경우 데이터 손실은 물론이고 장비들의 재산적 손실까지 발생할 수 있습니다. 진입장벽도 너무나 높고 위험부담도 크기 때문에 이 관리를 외부화하려고 했고 이 때 "클라우드"라는 개념이 등장하게 됩니다.
그렇다면 클라우드 컴퓨팅이라는 것은 무엇일까요?
클라우드 컴퓨팅은 온디맨드 즉, 필요한 만큼의 파워, 데이터 저장공간 등의 리소스들을 그때그때 사용하는 방식입니다. 그래서 사용자는 사용한 만큼의 비용을 지불하면 되고 추가적으로 리소스가 더 필요하다면 즉각 가져와서 쓸 수 있습니다. 서버, 스토리지, 데이터베이스 등에 굉장히 쉽게 접근할 수 있는 것이죠. 그래서 사무실과 데이터 센터를 모두 직접 운영했어야 하는 기업들은 클라우드를 활용하여 관리의 주체를 외부화 시킬 수 있었고 개인/기업의 니즈에 따라 필요한 만큼만 서버를 운영할 수 있게 되었습니다.
클라우드에는 크게 3가지 방식이 있습니다.
1. 프라이빗 클라우드
외부에는 노출되지 않는 하나의 조직만을 위한 클라우드 서비스를 제공하는 것이죠. 모든 제어 권한을 가질 수 있고 민감한 애플리케이션의 경우 보안의 이유로 활용이 가능합니다. 이러한 형태의 대표적인 서비스로는 rackspace가 있습니다.
2. 퍼블릭 클라우드
우리가 흔히 보는 클라우드 형태입니다. 클라우드 서비스 사업자들이 보유하고 있는 리소스들을 인터넷을 통해 제공받아 사용하는 것입니다. 이들의 수많은 장점들은 뒤에서 더 자세히 살펴보도록 하겠습니다. 이러한 형태의 대표적인 서비스로는 Microsoft Azure, Google Cloud, AWS가 있습니다.
3. 하이브리드 클라우드
일부 서버는 직접 설치하여 관리하고 일부는 클라우드를 활용하여 구축하는 형태입니다. 사용자의 개인적인 인프라에 민감한 정보들을 저장할 수 있고 또한 클라우드를 활용하여 확장의 유연성도 챙겨갈 수 있습니다.
클라우드 컴퓨팅의 5가지 특징
1. On-demand self service
유저는 서비스 관리자의 개입 없이 원하는 시점에 바로 사용 가능합니다.
2. Broad network access
네트워크를 기반으로 리소스에 접근 가능하고 다양한 클라이언트가 접근 가능합니다.
3. Multi-tenancy and resource pooling
다양한 사용자들이 같은 인프라와 서비스를 사용합니다.
4. Rapid elasticity and scalability
리소스들을 필요할 때 빠르게 취득할 수 있습니다.
5. Measured service
사용량이 측정 가능하고 사용자는 사용한 만큼 비용을 지불합니다.
클라우드 컴퓨팅의 6가지 장점
1. Trade capital expense(CAPEX) for operational expense(OPEX)
하드웨어, 에너지 비용 등에 대한 자본 비용과 이에 대한 운용 비용을 낮출 수 있습니다. 하드웨어를 직접 소유하지 않아도 되고 사용한 만큼만 지불하면 되기 때문이죠.
2. Benefit from massive economies of scale
서비스의 규모가 커질수록 클라우드 컴퓨팅을 활용하여 비용을 낮출 수 있습니다.
3. Stop guessing capacity
이전에는 사용량을 예측해서 그에 맞게 장비를 구매해야 했지만 측정된 실제 사용량에 맞춰서 서버의 크기를 조절할 수 있습니다.
4. Increase speed and agility
서버에 대한 진입장벽이 낮아져 빠르게 서비스나 애플리케이션을 개발할 수 있게 되었습니다.
5. Stop spending money running and maintaining data centers
데이터 센터의 운영, 유지 비용이 더이상 들지 않게 되었습니다.
6. Go global in minutes
AWS와 같은 글로벌 인프라 사업자들을 통해 서비스나 애플리케이션이 국경을 넘어 어디서든지 접근 가능할 수 있게 되었습니다.
이러한 장점들 덕분에 클라우드 컴퓨팅은 더 쉽고 빠르게 고성능의 서비스나 애플리케이션을 개발할 수 있게 되었고 물리적 장비에 대한 걱정 없이 온전히 개발에만 집중할 수 있게 되었습니다.
그럼 이제 전세계에서 가장 많이 사용되는 AWS에 대해서 살펴보죠.
AWS는 리전(Region) 단위로 전세계에 서비스를 공급하고 있습니다. 버지니아, 파리, 로마, 도쿄 등등 전세계 곳곳에 리전이 있습니다. 참고로 서울도 있습니다. 이 리전이 의미하는 것은 데이터 센터들의 클러스터, 쉽게 말하면 데이터 센터 집합입니다. 위의 도시들에 데이터 센터들이 여러개 모여있다는 것이죠.
그럼 그 많은 리전 중에 어떤 리전을 선택하는 것이 좋을까요?
크게 4가지 고려사항이 있습니다.
1. 데이터 주권 등의 법률을 준수해야 합니다.
2. 유저들에게 근접성을 높여 지연 시간을 줄여야 합니다.
3. 리전 별로 제공되는 서비스의 차이가 있기에 원하는 서비스가 해당 리전에 있는지 확인해야 합니다.
4. 리전 별로 가격이 다르고 이는 모두 투명하게 공개되어있기에 비용을 고려해서 선택하면 됩니다.
AWS 리전 안에는 여러개의 AWS Availabilty Zones 줄여서 AZ가 있습니다. 통상적으로 3개 많게는 6개까지 있습니다. 예를 들어 시드니 리전(ap-southeast-2)에는 ap-southeast-2a, ap-southeast-2b, ap-southeast-2c 이렇게 3개의 AZ가 있습니다.
각각의 AZ는 한 개 또는 그 이상의 구분된 데이터 센터들을 가집니다. 그리고 그 데이터 센터들은 다른 AZ와는 독립적으로 동작합니다. ap-southeast-2a에 있는 데이터 센터에 화재가 나더라도 나머지 2개의 AZ가 서비스를 계속해서 제공할 수 있도록 구성되어있습니다. 그렇기에 재난 상황에 대해서는 크게 걱정할 필요가 없게 됩니다.
여기까지 AWS의 하드웨어적인 부분에 대한 간단한 설명이었습니다.
그렇다면 AWS는 보안에 대해서는 어떠한 운영 정책을 유지하고 있을까요?
AWS는 공동 책임 모델을 준수하고 있습니다.
간단하게 말하면,
클라우드 내에서의 보안 -> 고객 책임
클라우드의 보안 -> AWS의 책임
고객 데이터 관리, 권한 부여 등에 대해서는 AWS 사용자가 책임을 져야하는 부분이고 AWS의 하드웨어, 네트워킹 등의 인프라에 대해서는 AWS가 책임을 지는 것이죠.
또한 AWS는 이용 목적 제한 방침을 살펴보면 불법 또는 사기 행위, 테러나 네트워크의 남용, 이메일이나 메시지 남용 등의 콘텐츠 또는 리소스가 발견되면 사용자의 허가 없이 액세스를 자체적으로 중지시킬 수 있다는 점도 참고하면 좋을 것 같습니다.
'클라우드' 카테고리의 다른 글
AWS IAM이란? (2) | 2024.05.05 |
---|