개발놀이터

클라우드는 어떻게 대세가 되었는가 본문

배포/AWS

클라우드는 어떻게 대세가 되었는가

마늘냄새폴폴 2024. 7. 5. 22:57

클라우드는 지난 10년동안 개발자들의 삶에 깊숙히 녹아들었습니다. 이번 포스팅에선 클라우드로 개발되지 않은 환경을 찾는게 힘들게 될 정도로 깊숙히 자리잡은 배경에 대해서 공부한 내용을 공유해보고자합니다.

 

클라우드의 특징

클라우드의 특징은 크게 성능, 확장성, 가용성, 같은 클라우드 서비스간 통합 이렇게 네가지 키워드로 정리해볼 수 있을 것  같습니다. 하나씩 살펴볼까요? 

 

성능

클라우드가 성능을 논하는게 이상하다고 느끼실 수도 있을 것 같습니다. 보통 클라우드를 떠올리면 확장성과 가용성을 먼저 떠올리곤 하니까요. 

 

하지만 클라우드를 이용함으로써 일반적으로 따로 구성하는 것 보다 더 높은 성능을 끌어올릴 수 있습니다. 

 

1. 하드웨어 최적화

클라우드는 하드웨어를 관리해주다보니 해당 서비스에 최적화된 하드웨어를 가지고 있습니다. 예를 들어서 AWS의 RDS는 데이터베이스를 위한 서버인만큼 IOPS를 프로비저닝할 수 있습니다. 

 

단지 RDS를 고르지 않더라도 EC2인스턴스에서 IOPS에 최적화된 인스턴스를 선택할 수도 있습니다. 이렇듯 하드웨어를 최적화함으로써 성능을 끌어올릴 수 있습니다. 

 

2. Auto Scaling

Auto Scaling 기능은 확장성과 가용성에서 언급되어야할 것 같지만 아시다시피 서버가 늘어나면 하나의 서버가 부담해야할 부하를 분담해서 처리하기 때문에 서버 하나하나의 컴퓨팅 파워가 일정하게 유지되고 이는 성능 향상으로 이어집니다. 

 

3. 네트워크 최적화

VPC와 같은 네트워크 최적화로 같은 AZ (Availability Zone) 안에 있는 서비스들은 네트워크 연결에 필요한 리소스를 최적화할 수 있습니다. 

 

 

확장성

클라우드의 알파이자 오메가인 확장성에 대해서 말하자면 끝도없죠. 

 

기존 서비스들은 서버를 구하는 비용도 만만치 않았고 유지하는 비용도 만만치 않고, 유연하게 서버를 늘렸다 줄였다할 수 없었기 때문에 스타트업이라는 개념이 쉽게 자리잡을 수 없었습니다. 

 

하지만 클라우드의 등장으로 서버를 유연하게 늘렸다 줄였다할 수 있다는 엄청난 장점과 함께 비용도 쓴만큼만 내면 되기 때문에 새롭게 IT아이템으로 창업하기가 전보다 수월해졌습니다. 

 

그 배경에는 ASG (Auto Scaling Group) 이 있었습니다. 

 

ASG는 CPU의 사용량을 체크하고 있다가 AMI로 똑같은 서버의 이미지를 구워서 복제본을 생성해줄 수 있습니다. 

 

또한, AWS ALB (Application Load Balancer) 의 Target Group에 ASG를 연결할 수 있어서 자동으로 생성되는 서버로 사용자를 유도할 수 있습니다. 

 

우리서버의 성능이 조금 부족한거같다? 그럼 서버의 성능을 한단계 높이면 됩니다. 우리는 A서버는 MySQL을 사용하고싶고 B서버는 PostgreSQL, C서버는 DynamoDB를 사용하고싶다? 그럼 그렇게 하면 됩니다. 유지하는 것도 어렵지 않구요. 

 

가용성

클라우드가 컨테이너와 만나면서 컨테이너 오케스트레이션을 서비스하기 시작한 뒤 많은 기업들이 진입장벽이 굉장히 굉장히 미친놈처럼 높은 쿠버네티스와 같은 오케스트레이션 전략을 사용할 수 있게 되었습니다. 

 

AWS에서는 쿠버네티스를 사용한 EKS (Elastic Kubernetes Service) 와 자체적인 컨테이너 오케스트레이션 서비스인 ECS (Elastic Container Service) 를 이용해서 서버를 더 효율적으로 사용할 수 있게 되었습니다. 

 

16코어 64기가 메모리의 서버에 애플리케이션이 하나만 띄워져 있는 것 보다 4개의 컨테이너로 나누고 이 컨테이너에 각각 4코어 16기가 메모리를 할당하는 것이 성능적으로 훨씬 뛰어납니다. 

 

특히 AWS의 자체 컨테이너 오케스트레이션 전략인 ECS에선 서버를 자동으로 관리해주는 ECS Fargate라는 서비스도 있어서 조금 더 쉽게 접근할 수 있습니다. 물론 가격은 조금 더 나가지만요. 

 

또한, 클라우드는 장애회복에도 특화되어있는데 장애상황에 취약한 데이터베이스의 경우 장애상황에 재시작을 하는 로직이 들어가있습니다. 

 

그리고 백업도 해놓을 수 있죠. 특히 데이터베이스나 인스턴스에 대해서 풀백업과 증분백업을 모두 지원하기 때문에 장애상황에 조금 더 쉽게 대응할 수 있습니다. 

 

 

다른 서비스와 통합

사실 이게 AWS의 비즈니스 모델인 것 같은데... 하나를 사면 모두 사야하는 기적이 일어납니다. 

 

클라우드로 서비스하는데 규모가 조금 크다? 

 

  • EC2는 기본 EBS는 덤
  • 데이터베이스는 RDS 혹은 DynamoDB 혹은 EC2에 직접깔기
  • 네트워크망은 VPC (살인적인 NAT 게이트웨이의 비용은 덤)
  • 장애상황에 서버 죽으면 안되지 안되지 ASG 해야지 (물론 ASG자체는 돈이 들지 않지만 늘어나는 서버의 비용이 있습니다.)
  • ASG를 쓰면? ALB도 무조건 따라와야지
  • 만약 이미지나 영상을 보관해야한다? S3도 사용
  • 데이터베이스 보안 관리 어떻게 할건데? KMS, Secret Manager 사용
  • 모니터링과 알람은 CloudWatch
  • 컨테이너 오케스트레이션은 EKS혹은 ECS 
  • 메세지 브로커가 필요하다? SNS혹은 SQS사용
  • 영상 스트리밍이 필요하다? Kinesis 사용

간단한것만 적었는데 참 많네요. 

 

아무튼 클라우드를 이용하면 이 모든 서비스와 통합하기 정말 쉽다는 것입니다. 

 

비용이 무지막지한건 어쩔 수 없습니다. 

 

 

마치며

클라우드를 잘아는 개발자 한명이 있다면 인프라에 관련된 개발자들을 줄일 수 있다는 점에서 대표님들에게도 좋은 솔루션이 될 수 있습니다. 

 

저도 클라우드를 회사에서도 많이 쓰고 공부도 나름 했지만 아직 알아야할게 많아서 좀 막막하긴 합니다. 

 

하지만 공부할게 많이 남았으니 더 열심히 달려봐야죠. 오늘도 긴 글 읽어주셔서 감사합니다. 즐거운 하루되세요!

 

 

'배포 > AWS' 카테고리의 다른 글

AWS SQS, SNS  (0) 2024.07.30
AWS로 3 Tier Architecture 고도화하기  (0) 2024.05.25
Elastic Load Balancer (ELB) : (2)  (0) 2023.10.13
Elastic Load Balancer (ELB) : (1)  (1) 2023.10.13
EC2 인스턴스 스토리지 (EBS, EFS)  (2) 2023.10.10