이 시리즈의 두 번째 및 세 번째 부분에서 ARM 기반 클라우드 네이티브 플랫폼으로 마이그레이션 응용 프로그램이 비교적 간단하다는 것을 보여줍니다. 이 기사에서는이 마이그레이션을 성공적으로 만들기 위해 일반적으로 취해야하는 단계를 설명합니다. 조직 내에서 출발 할 곳
Ampere의 Cloud-Native ARM64 프로세서로 마이그레이션하는 첫 번째 단계는 올바른 응용 프로그램을 선택하는 것입니다. 다른 CPU 아키텍처와 밀접하게 결합 된 일부 응용 프로그램은 특정 명령 세트에 소스 코드 종속성이 있거나 명령 세트와 관련된 성능 또는 기능 제한으로 인해 마이그레이션하기가 더 어려울 수 있습니다. 그러나 Ampere 프로세서는 종종 다음을 포함하여 많은 클라우드 애플리케이션을 위해 잘 설계되었습니다.
MicroServices 응용 프로그램, 무국적 서비스 : 응용 프로그램이 필요에 따라 독립적으로 확장 될 수있는 구성 요소로 분류되면 Ampere 프로세서가 완벽합니다. 응용 프로그램을 분류하고 클라우드가 제공하는 이점을 활용하는 데있어 핵심 부분은 상태 및 무국적 서비스를 분리하는 것입니다. 무국적 응용 프로그램 구성 요소는 수평 적으로 스케일링되어 필요에 따라 더 높은 용량을 제공하는 동시에 데이터베이스와 같은 상태 서비스를 사용하여 비 번도 데이터를 저장합니다. 많은 서비스 복제간에 밸런싱을로드하여 수요 증가에 대처하기 위해 Compute Infrastructure에 더 많은 코어를 추가 할 수 있기 때문에 Sationeless Services 스케일링이 쉽습니다. Ampere의 단일 스레드 CPU 설계 덕분에 응용 프로그램 대기 시간에 영향을 미치지 않고 더 높은 하중으로 이러한 코어를 실행하여 전체 가격/성능을 줄일 수 있습니다. -
AI 추론 : 훈련 AI 모델은 교육을위한 매우 빠른 GPU의 가용성으로부터 이익을 얻을 수 있지만, 프로덕션 환경에 배치 할 때 모델을 데이터에 적용하는 것은 매우 부동 소지가 아닙니다. 실제로, 저렴한 16 비트 플로팅 포인트 작업은 AI 모델 추론의 성능 및 품질 SLA를 충족시키는 데 사용될 수 있으며 범용 프로세서에서 잘 작동 할 수 있습니다. 또한 AI 추론은 거래량의 변화에 대응하기 위해 더 많은 작업자와 커널을 추가함으로써 이익을 얻을 수 있습니다. 대체로 이것은 Ampere와 같은 최신 클라우드 기본 플랫폼이 우수한 가격/성능을 제공한다는 것을 의미합니다. -
인 메모리 데이터베이스 : Ampere 커널은 커널 당 L2 캐시가 크게 설계 되었기 때문에 일반적으로 객체 및 쿼리 캐시 및 메모리 데이터베이스와 같은 메모리 집약적 인 워크로드에서 매우 잘 작동합니다. Redis, Memcached, MongoDB 및 MySQL과 같은 데이터베이스 워크로드는 코어 당 대형 캐시를 활용하여 성능을 향상시킬 수 있습니다. -
Continuous Integration Build Farm - : 빌드 소프트웨어는 매우 컴퓨팅 집약적이고 병렬화 가능할 수 있습니다. 지속적인 통합 관행의 일환으로 빌드 및 통합 테스트를 실행하고 지속적인 전달 사례를 사용하여 생산에 들어가려는 새로운 버전을 검증하면 Ampere CPU에서 실행되는 이점이 있습니다. ARM64 아키텍처로의 마이그레이션의 일환으로 해당 아키텍처에서 소프트웨어를 구축하고 테스트하는 것은 전제 조건이며,이 작업을 기본 ARM64 하드웨어에서 수행하는 것은 빌드의 성능을 향상시키고 개발 팀의 처리량을 증가시킬 것입니다.
-
응용 프로그램 종속성을 분석하십시오
마이그레이션에 적합하다고 생각되는 응용 프로그램을 선택한 후에는 다음 단계는 종속성 스택을 업데이트하는 데 필요한 작업을 결정하는 것입니다. 의존성 스택에는 호스트 또는 게스트 운영 체제, 프로그래밍 언어 및 런타임 및 서비스에 가질 수있는 응용 프로그램 종속성이 포함됩니다.Ampere CPU에 사용 된 ARM64 명령 세트는 최근 몇 년 동안 유명해졌으며, 많은 프로젝트가 최근 몇 년 동안 ARM64의 성능을 향상시키기 위해 열심히 노력해 왔습니다. 따라서이 섹션의 일반적인 주제는 "최신 버전이 더 좋을 것"입니다.
<:> 운영 체제 : ARM64 아키텍처가 지난 몇 년 동안 큰 진전을 보였기 때문에 업데이트 된 운영 체제를 운영하여 성능 향상을 활용할 수 있습니다. Linux 배포의 경우 최근의 주류 분포는 기본 ARM64 이진 설치 미디어 또는 Docker Base 이미지를 제공합니다. 응용 프로그램이 현재 Red Hat Enterprise Linux 6 또는 7 또는 Ubuntu 16.04 또는 18.04와 같은 이전 운영 체제를 사용하는 경우 기본 운영 체제 업데이트를 고려할 수 있습니다. -
> 언어 런타임/컴파일러 : ARM64에서는 모든 최신 프로그래밍 언어를 사용할 수 있지만 최신 버전의 인기있는 언어에는 추가 성능 최적화가 포함될 수 있습니다. 최신 버전의 Java, Go 및 .NET는 ARM64에서 성능을 크게 향상 시켰음에 주목할 가치가 있습니다.
응용 프로그램 종속성 : 운영 체제 및 프로그래밍 언어 외에도 다른 종속성을 고려해야합니다. 이는 응용 프로그램이 사용하는 타사 라이브러리 및 모듈을 확인하는 것을 의미합니다. 각 라이브러리가 ARM64에 사용할 수 있고 배포를 위해 패키지 된지 확인하면서 데이터베이스, 필요에 따라 바이러스 백신 소프트웨어 및 기타 응용 프로그램과 같은 외부 종속성을 고려하는지 확인합니다. 종속성 분석에는 ARM64 종속성의 가용성 및 이러한 종속성이 플랫폼 별 최적화가있는 경우의 성능 영향을 포함한 여러 요인이 포함되어야합니다. 경우에 따라 일부 기능이 손실되면 마이그레이션 할 수 있지만, 다른 경우 마이그레이션은 ARM64 아키텍처 최적화에 적응하기 위해 엔지니어링 작업이 필요할 수 있습니다. -
ARM64에서 소프트웨어 빌드 및 테스트
클라우드 서비스 제공 업체 (CSP)에서 ARM64 컴퓨팅 리소스의 가용성은 최근에 확장되었으며 여전히 성장하고 있습니다. Ampere Computing 웹 사이트에서 시도 할 곳과 페이지를 구매할 곳에서 볼 수 있듯이 ARM64 하드웨어의 가용성은 데이터 센터 나 클라우드 플랫폼에서 문제가되지 않습니다. -
Ampere 인스턴스 (베어 메탈 또는 가상 머신)에 액세스하면 마이그레이션의 빌드 및 테스트 단계를 시작할 수 있습니다. 위에서 말했듯이, 대부분의 현대 언어는 이제 ARM64를 일류 플랫폼으로 완전히 지원합니다. 많은 프로젝트의 경우, 빌드 프로세스는 이진을 다시 컴파일하거나 Java 코드를 ARM64 기본 JVM에 배포하는 것만 큼 간단합니다.
그러나 그러나 때로는 소프트웨어 개발 프로세스의 문제로 인해 이주 과정에서 팀이 상환해야 할 "기술 부채"로 이어질 수 있습니다. 이것은 여러 형태를 취할 수 있습니다. 예를 들어, 개발자는 특정 하드웨어 기능의 가용성 또는 표준에 정의되지 않은 구현 별 동작에 대해 가정 할 수 있습니다. 예를 들어, CHAR 데이터 유형은 구현에 따라 서명 또는 서명되지 않은 문자로 정의 될 수 있으며 X86의 Linux에서는 서명됩니다 (즉, -128에서 127 사이). 그러나 동일한 컴파일러를 사용하는 ARM64에서는 서명되지 않았습니다 (범위 0 ~ 255). 따라서 char 데이터 유형 기호에 따라 달라지는 코드는 제대로 작동하지 않습니다.
그러나 전체적으로 SSE와 같은 X86 특정 하드웨어 기능에 의존하지 않는 표준 및 코드를 준수하는 코드는 Ampere 프로세서를 쉽게 구축 할 수 있습니다. Jenkins, Circleci, Travis, Github Actions 등과 같은 대부분의 지속적인 통합 도구 (지원 플랫폼 매트릭스를 통한 자동화 및 테스트를 관리하는 도구)는 ARM64 빌딩 노드를 지원합니다.
생산에서 애플리케이션 배포 관리
클라우드 네이티브 애플리케이션을 생산에 배포 할 때 인프라 관리에 어떤 변화가 발생할 것인지 확인할 수 있습니다. 가장 먼저 주목해야 할 것은 전체 앱을 한 번에 이동할 필요가 없다는 것입니다. ARM64로 마이그레이션하는 데 가장 큰 도움이되는 앱의 일부를 선택하고 해당 부품으로 시작할 수 있습니다. 대부분의 관리되는 Kubernetes 서비스는 단일 클러스터의 이기종 인프라를 지원합니다. 성가신 CSP는 단일 Kubernetes 클러스터에서 다른 유형의 컴퓨팅 노드를 혼합하기위한 메커니즘에 대해 다른 이름을 가지고 있지만 모든 주요 CSP는 이제이 기능을 지원합니다. Kubernetes 클러스터에 Ampere Compute Pool이 있으면 "Blot"및 "Tolerance"를 사용하여 컨테이너의 노드 친화력을 정의 할 수 있습니다. Arch = ARM64로 노드에서 실행해야합니다.
ARM64 아키텍처를위한 프로젝트 컨테이너를 만들고 있다면 다중 아키텍처 컨테이너가 될 매니페스트를 만드는 것은 매우 간단합니다. 이것은 본질적으로 여러 컨테이너 이미지에 대한 포인터가 포함 된 매니페스트 파일이며 컨테이너는 호스트 아키텍처를 기반으로 이미지를 선택할 때 실행됩니다.
배치 단계에서 사람들이 일반적으로 직면하는 주요 문제는 다시 "기술 부채"로 분류 될 수 있습니다. 배포 및 자동화 스크립트는 특정 플랫폼 별 경로 이름을 가정하거나 X86 전용 이진 아티팩트에 의존하도록 하드 코딩 될 수 있습니다. 또한, 다른 Linux 분포에 의해 반환 된 스키마 문자열은 분포에 따라 다를 수 있습니다. x86, x86-64, x86_64, arm64, aarch64를 만날 수 있습니다. 이러한 플랫폼 차이를 정상화하는 것은 과거에 한 적이없는 일이지만 플랫폼 변환의 일부로 매우 중요합니다.
플랫폼 변환의 마지막 구성 요소는 응용 프로그램의 작동입니다. 클라우드 네이티브 애플리케이션에는 제대로 작동하기 위해 생산에 많은 스캐 폴딩이 포함됩니다. 여기에는 이벤트를 중앙 집중화하기위한 로그 관리, 관리자가 예상대로 작동하는지 확인할 수 있도록 모니터링, 이상, 침입 탐지 도구, 애플리케이션 방화벽 또는 기타 보안 도구가 배우. 적절한 프록시 및 인프라가 애플리케이션 노드에 대해 활성화되도록 투자하는 데 시간이 걸리지 만 모든 주요 모니터링 및 보안 플랫폼은 이제 ARM64를 플랫폼으로 지원하므로 응용 프로그램의 내부 작업을 볼 수 있도록 대개 큰 문제를 구성 할 수 없습니다. . 실제로, 가장 큰 관찰 가능성 소프트웨어로 제공되는 소프트웨어 플랫폼은 애플리케이션 플랫폼을 Ampere 및 기타 ARM64 플랫폼으로 점점 더 마이그레이션하여 플랫폼이 제공하는 비용 절감을 활용하고 있습니다. 수익성을 향상시킵니다
클라우드 네이티브 프로세서로의 전환은 거대 할 수있어 마이그레이션 투자를 노력할 가치가 있습니다. 이 접근법을 사용하면 조직이 시간이 지남에 따라 기대할 수있는 운영 저축을 평가하고 검증 할 수도 있습니다.
성과 향상에 가장 큰 장애물 중 하나는 관성이며, 더 이상 가장 효율적이거나 비용 효율적인 방법이 아니더라도 조직이 자신이하고있는 일을 계속하는 경향이 있습니다. 그렇기 때문에 클라우드 네이티브 기술의 가치를 조직에 증명하기위한 첫 번째 단계를 수행하는 것이 좋습니다. 이런 식으로, 당신은 이해 관계자들과 공유 할 실제 결과를 가지고 클라우드 네이티브 컴퓨팅이 상당한 투자 나 위험없이 애플리케이션 성능과 응답 성을 향상시킬 수있는 방법을 보여줄 것입니다.
클라우드 네이티브 프로세서가 나타났습니다. 문제는 Cloud Native로 전환 할 것인지가 아니라 변환 할 때입니다. 미래를 일찍 받아들이는 조직은 오늘날의 혜택을받을 것이며, 이로 인해 전통과 관련된 경쟁자들에 비해 큰 이점을 줄 것입니다.
클라우드 애플리케이션 설계, 빌딩 및 배포를위한 리소스가 포함 된 Ampere Developer Center의 클라우드 속도 개발에 대해 자세히 알아보십시오. 클라우드 네이티브 컴퓨팅의 이점을 직접 경험할 준비가되면 Ampere Altra 시리즈 및 Ampereone 기술을 기반으로 CSP에 클라우드 네이티브 옵션을 요청하십시오.