AWS 서비스를 띄울 때 ARM64와 x86 중 하나를 선택할 수 있다.
그럼 어떤 것을 선택하는 것이 좋을까?
결론부터 말하자면,
대체로 ARM64를 선택하는 것이 좋다.
AWS의 벤치마크에 따르면 전체적으로 ARM 기반 아키텍쳐가 성능이 우수한 것으로 나타났다.
x86 대비 ARM의 performance가 120% 우수했으며, cost는 x86대비 70%에 불과했다. 그리고 가성비 측면에서도 x86 대비 150% 나은 결과가 나왔다.
특히 파이썬에서 두드러지는 성능 향상을 볼 수 있다.
그러나 ARM이 100% 장점만 있는 것은 아니다.
동일한 사양에서 CPU 집약적인 작업에서는 ARM이 x86대비 60% 이상의 월등한 퍼포먼스를 보여주었지만, Memory 사용량이 많고 가벼운 작업에서는 성능이 소폭 하락하는 것으로 집계되었다.
하지만 그럼에도 불구하고, 여전히 work/$에서 ARM이 유리하므로 결과적으로 놓고 보면 ARM을 쓰는 것이 좋을 것이다.
🤔 6~7%의 성능 하락을 감수하고 13~19%의 cost를 save하는 것이 좋을 것이다... 100만원 나올 것을 80~90만원만 낸다고 하면 체감이 확 된다.
That specific and probably somewhat-rare case aside, you can easily get an idea of how much money you’re leaving on the table by not migrating to Graviton2-based Lambdas
(표현이 재밌다)
AWS에서도 특수하게 드문 케이스를 제외하고는 ARM 아키텍쳐(Graviton)로 이전하지 않으면 큰 금전적 손해를 볼 수 있다고 하고 있다.
요약하자면, AWS에서 조차도
"그냥 Arm 쓰세요"
라고 하고 있는 것이다.
Lambda 같은 경우 default 세팅이 x86이기 때문에 ARM으로 한 번 바꿔주는 것을 항상 의식적으로 해주어야한다.
이는 IaC에서도 알 수 있는데,
resource "aws_lambda_function" "xxx_handler" {
function_name = "xxx-handler-${var.environment}"
handler = "xxx-handler.handler"
runtime = "nodejs18.x"
timeout = 30
filename = "${path.module}/lambda.zip"
source_code_hash = filebase64sha256("${path.module}/lambda.zip")
vpc_config {
subnet_ids = var.private_subnet_ids
security_group_ids = [aws_security_group.xxx_handler_lambda_sg.id]
}
role = aws_iam_role.lambda_execution_role.arn
}
architectures = ["arm64"]
이와 같은 Terraform 예제를 보면, 아키텍쳐에 대한 명시가 없을 때 default로 x86 Lambda를 생성하게 된다.
따라서 x86을 사용하기 싫다면 Lambda 사용 시 ARM 아키텍쳐임을 명시하도록 하자.
resource "aws_lambda_function" "xxx_handler" {
function_name = "xxx-handler-${var.environment}"
handler = "xxx-handler.handler"
runtime = "nodejs18.x"
timeout = 30
filename = "${path.module}/lambda.zip"
source_code_hash = filebase64sha256("${path.module}/lambda.zip")
architectures = ["arm64"] // 아키텍쳐 명시
vpc_config {
subnet_ids = var.private_subnet_ids
security_group_ids = [aws_security_group.xxx_handler_lambda_sg.id]
}
role = aws_iam_role.lambda_execution_role.arn
}
글을 쓰다 문득 떠올랐는데,
예전 회사에서 AWS에서 시니어로 일하다 오신 분이 이런 채팅을 남기신게 있어서 찾아왔다. ㅋㅋ
'AWS' 카테고리의 다른 글
[AWS] EC2 인스턴스 Price Type별 비교 (3) | 2024.10.13 |
---|---|
[AWS] IAM 요약 (0) | 2024.10.09 |
[AWS] CDK를 처음 접할 때 알면 좋은 것들 (0) | 2024.03.08 |
MFA란? (0) | 2023.01.29 |
AWS Data Analytics 아는 척하기 (0) | 2022.04.18 |
댓글