클라우드를 사용할 때와 사용시 고려 요소
Description: 1년 반 동안 MSP사에서 DevOps 프로덕트 엔지니어로서 프로덕트를 통해 클라이언트들의 클라우드 고민을 해결하면 느낀 클라우드 사용이유와 도입시 고려할 점을 정리한 글입니다.
현재 노트: KR-020.20 a 클라우드를 사용할 때와 사용시 고려 요소
상위 분류: KR-020.20 클라우드
1년 반동안 MSP사에서 겪으며 느낀 클라우드 사용하는 이유와 사용 시 고려할 점을 정리 해봤습니다.
클라우드가 필요할 때
대표적으로 클라우드를 사용하는 경우는 변동성이 큰 곳에서, PoC와 같은 진입 장벽이 낮게 시작할 수 있는 곳에 사용한다고 생각합니다
변동성이 큰 경우는 대표적으로 서비스의 갑작스러운 부하가 발생하는 경우입니다. 크리스마스 이벤트와 같은 급격한 이벤트가 발생할 때 쉽게 규모를 늘릴 수가 있습니다(물론 이에 대응하기 위한 구조가 갖춰졌다는 전제하에입니다,)
PoC와 같은 진입 장벽이 낮은 경우 테스트하는 경우에도 사용합니다. 보통 분단위, 짧은 경우 초단위의 과금이기에 처음부터 비싼 서버를 구매할 필요없이 몇달정도 사용한다던가 하는 경우 사용하기에 적합합니다.
이런 클라우드지만 항상 장점만 있는 것은 아닙니다. 그래서 도입전 아래의 요소들을 생각해 봐야합니다.
클라우드를 사용시 고려 요소
- 비용
- 관리 주체
- 확장성 구조
비용
오래 지속되는 24시간 서비스들의 경우 오히려 비용이 더 발생하는 경우가 있습니다. 일반적으로 사용용도에따라 할인되는 방식(savings plan, 예약 인스턴스), 스팟 인스턴스와 같은 가격을 용도에 따라 적절한 할인 방식을 적용하지 않으면
이외에도 넷플릭스의 서비스처럼 구독형이다보니 계획하지 않은 부분에 대해 서비스들을 구독하면서 예상보다 많은 비용이 첨부되기도 합니다
관리주체
관리 주체의 경우 대부분 회사에서 사용하기는 하지만 엄격함이 요구되는 경우 DX와같은 시설이나 일부 public 서비스에대한 private설정 등과 같이 해당 리소스를 관리하기위한 정책이나 보안이 엄격한 경우 검토해보아야할 필요가 있습니다.
확장성 구조
앞서 언급한 것처럼 클라우드 확정성의 경우 서비스를 적용하기 위한 구조가 갖추어져있어야합니다. 흔히 모놀리식 MSA, container, Kubernetes와 같은 진입장벽이 있는 기술들이 인프라레벨에 적용돼있어야 클라우드의 효과를 확실히 볼 수 있으며 이 러닝커브가 고려돼야합니다.
기술적인 기록
주로 사용하는 서비스와 특징. 물론 해당 서비스들을 제대로 사용할려면 더 깊은 이해가 필요함
EC2: cpu 메모리등을 가지느 VM.
- 해당 세대에 따라 메모리나 cpu별 특성
- auto scaling
- launch template(기동시 멱등성)
ELB: Load Balancer 주로 ALB와 NLB사용 - routing 포트, 롤, path 중요
VCP: private 서브넷 - Internet Gateway
- elastic IP
- scurity group
- endpoint
- NAT gateway
RDS: AWS managed DB서비스 - 고가용성
- Aurora 데이터와 cpu파트가 분리된 서버리스 서비스
S3: Storage Cloud - bucket policy
- life cycle
ECR: private 이미지 레지스트리
EKS: AWS managed Kubernetes - eksctl
IAM: 보안 관리 룰, 퍼미션, 유저등 필요에따라 엄밀하게 서비스의 특정 권한을 제한 - Role
- Permissions
- User