Rust + ARM 프로세서의 흥미로운 세계

PubNub Developer Relations - Feb 20 - - Dev Community

AWS는 더욱 빠르고 성능이 향상된 Graviton 3 ARM 기반 인스턴스를 제공한다고 발표했으며, 이는 기업이 마이그레이션 전략을 계획하기 시작할 때라는 것을 의미합니다. ARM 시스템에서 애플리케이션을 실행하면 더 저렴한 가격으로 더 나은 성능을 제공함으로써 효율성이 향상됩니다. 저희는 애플리케이션을 Rust로 마이그레이션하여 시스템 효율성을 한 단계 더 최적화했습니다. Rust는 효율성과 안전성으로 인해 점점 더 인기를 얻고 있는 프로그래밍 언어입니다. 비즈니스 관점에서 볼 때 이는 운영 비용 절감과 유지보수 비용 절감으로 이어집니다.

스크린샷은 X86-64에서 ARM64로 마이그레이션하는 Rust 애플리케이션의 CPU 사용량을 보여줍니다. 그래프에서 컨테이너가 새로운 ARM 프로세서에서 CPU 사용량을 보고하기 시작한 순간을 확인할 수 있습니다. 이것은 주목할 만한 변화입니다. 워크로드는 수백만 명의 사용자에게 서비스를 제공하는 동시성이 높은 Rust API 웹 애플리케이션입니다.

Graph showing CPU usage by container decreasing over time

ARM 프로세서란 무엇인가요?

일반적으로 우리는 AMD 또는 Intel과 같은 프로세서를 생각합니다. ARM 프로세서는 스마트폰, 태블릿, 라즈베리 파이, 마이크로컨트롤러, 개발 보드, 일부 노트북 등 다양한 장치에 사용되는 범용 CPU입니다. ARM 프로세서는 에너지 효율성과 낮은 전력 사용량으로 잘 알려져 있어 에너지 비용을 절감하고자 하는 임베디드 시스템을 구축하는 기업에게 매력적인 옵션입니다. AWS는 이러한 새롭고 효율적인 프로세서를 사용하도록 장려하기 위해 비용에 따라 시간당 요금을 낮게 책정하여 IoT 및 고성능 에코시스템에 기여.

Chart showing ARM CPU usage at 0.00223 compared with X86-64 at 0.00706

ARM64와 X86-64의 효율성을 비교하면 눈에 띄는 차이를 확인할 수 있습니다. 이것으로 충분하지 않다면 더 나아갈 수 있습니다. 타겟 CPU 최적화 프로그램을 추가하면 최신 ARM 아키텍처 CPU 명령어를 활용하는 추가 명령어를 바이너리에 빌드하여 툴체인과 호환성을 향상시킬 수 있습니다. 이에 대한 자세한 내용은 다음 포스팅에서 다루도록 하겠습니다. 한편 여기서 보여드리는 결과는 일반적인 ARM64 타겟을 대표합니다.

이제 Rust에 대해 이야기해 보겠습니다.

Rust는 오픈 소스 프로그래밍 언어로, 효율성과 안전성을 유지하기 위해 노력하는 활발하고 참여도가 높은 GitHub 커뮤니티가 있습니다. 즉, Rust 코드는 빠르게 실행되며 다른 언어에 비해 버그나 보안 취약점이 많지 않습니다. 프로그래머들은 특히 시스템 프로그래밍에 적합하기 때문에 운영 체제, 디바이스 드라이버 및 기타 로우레벨 소프트웨어와 같은 것을 구축하는 데 적합하다는 점에서 Rust를 좋아합니다. 엄격한 안정성 메모리 안전 검사기 덕분에 Rust는 대규모 애플리케이션 개발에도 매력적입니다. 버그 감소로 소유 비용을 낮출 수 있지만 Rust는 디버깅이 상당히 어렵다고 할 수 있습니다. Microsoft는 가장 일반적인 유형의 버그를 분석했습니다. 그 결과 70% 이상의 버그가 메모리 관리 실패와 직접적으로 관련이 있다고 합니다. Rust는 컴파일 시 이러한 버그를 잡아내는 메모리 안전 메커니즘을 제공합니다.

그렇다면 ARM 프로세서로 마이그레이션할 때 Rust가 좋은 선택인 이유는 무엇일까요? Rust는 ARM을 포함한 거의 모든 대상 플랫폼에서 실행되도록 컴파일할 수 있습니다. ARM 기반 시스템은 기존 x86 기반 시스템과 다르므로 x86 시스템에서 잘 실행되는 소프트웨어가 ARM 시스템에서는 잘 실행되지 않을 수 있습니다. Rust의 효율성과 ARM 프로세서에서 잘 실행되는 기능은 워크로드를 ARM 기반 시스템으로 마이그레이션하려는 기업에게 훌륭한 선택이 될 수 있습니다. Rust로 성공적으로 마이그레이션한 사례도 여러 건 있었습니다. ARM에서 Rust 애플리케이션을 실행하면 CPU 성능이 40% 향상됩니다.

CI/CD 및 이중 아키텍처

원활한 마이그레이션 프로세스를 보장하려면 배포 모범 사례를 따르는 것이 중요합니다. 저희는 CI/CD 시스템에 듀얼 아키텍처 파이프라인을 포함하기로 결정했습니다. 이를 통해 Docker 플랫폼에서 Linux AMD64와 Linux ARM64를 모두 지정할 수 있습니다. 이는 우리의 오케스트레이션 계층이 Kubernetes이기 때문에 매우 유용합니다.

Code showing value = arm in a kubernetes cluster

우리는 노드 선택기에 YAML 구성을 사용하여 배포를 위한 ARM 노드를 지정하고 배포 매니페스트에 YAML 허용 오차를 포함합니다. 이것은 자동이 아닙니다. SRE 팀은 X86-64 및 ARM64 이미지를 함께 제공하는 이중 아키텍처 CI/CD 파이프라인을 성공적으로 개발했습니다. 또한 팀이 구현한 YAML 어노테이션을 사용하여 애플리케이션을 배포할 때 노드 그룹을 타깃팅할 수 있습니다. SRE 팀 덕분에 제품 개발팀은 ARM 노드 그룹에 원활하게 배포할 수 있었습니다. 이제 간단한 구성을 통해 워크로드를 ARM 노드 그룹으로 마이그레이션할 수 있습니다. 이를 통해 개발 프로세스의 런타임 및 자동화가 크게 발전할 것으로 기대됩니다 .

Rust + ARM, 업계를 선도하는 기술 조합

Rust는 원래 웹 브라우징 개선을 위해 Mozilla에서 개발했습니다. ARM 프로세서는 스마트워치와 일부 자동차를 포함한 소비자 디바이스의 에코시스템에서 더 많이 사용되는 것으로 알려져 임베디드 개발 팀에게 인기가 높습니다. 여러 기술을 결합하고 활용하여 주목할 만한 이점을 얻을 수 있습니다. 기술이 어떻게 발전하고 우리 주변의 세상을 변화시키고 있는지 놀랍습니다.

오늘날 대규모 애플리케이션을 배포할 때 효율성과 안정성을 극대화하기 위해 Rust + ARM의 조합은 많은 실시간 사용 사례에서 타의 추종을 불허합니다. ARM 프로세서로 마이그레이션하면 비용을 크게 절감하고 성능을 향상시킬 수 있습니다. Rust를 활용하고 배포 모범 사례를 따르면 기업은 이 새로운 기술로 원활하게 전환할 수 있습니다. 이제 Rust와 ARM 프로세서의 흥미로운 세계를 탐험할 준비가 되셨나요?

펍넙이 어떻게 도와드릴까요?

이 문서는 원래 PubNub.com에 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 기기를 위한 실시간 인터랙티브를 빌드, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기

라이브 투어를 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기

PubNub 계정에 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기

사용 사례나 SDK에 관계없이 PubNub 문서를 통해 바로 시작하고 실행할 수 있습니다.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .