지난 몇 년 동안 Akamai 네트워크는 수십만 건의 라이브 스트리밍 스포츠 이벤트, 대량의 소프트웨어 다운로드, 수십억 시간의 스트리밍 비디오 콘텐츠, 실시간 응답성과 전 세계적으로 일관된 성능을 요구하는 수천 개의 웹 애플리케이션의 수요를 지원해 왔습니다. 2015년 이래로 이러한 대규모 성장을 지원하기 위해 당사의 글로벌 네트워크는 250Tbps 이상으로 성장하여 300개의 PoP에 수천 대의 새로운 서버가 필요합니다.
끊임없이 증가하고 변화하는 네트워크 풋프린트를 구축해야 하는 과제를 해결하기 위해 운영 팀은 StackStorm을 사용하여 IT 자동화 플랫폼을 개발했습니다. 글로벌 네트워크에서 서버 인구의 95% 이상이 서버 인프라를 배포, 변경, 복구 및 폐기하는 방식을 혁신한 것은 엄청난 도약입니다.
다음은 우리가 어떻게 자동화 플랫폼을 구축하여 다음과 같은 작업을 수행할 수 있었는지 살펴보겠습니다.
- 3년 이내에 네트워크에 12,000대 이상의 서버를 추가할 수 있습니다.
- 어떤 경우에는 티켓 생성을 자동화하고 다른 경우에는 티켓 없이 문제를 해결합니다.
- 팀원들이 실시간으로 협업할 수 있도록 도구를 제공하십시오.
- 엔지니어가 일련의 수동 단계를 수행하는 데 소요되는 시간을 줄입니다.
StackStorm을 프로젝트 가재로 사용자 지정
IT 자동화 플랫폼의 가치를 인식하고 성숙도를 높이기 위해 2015년에는 프로젝트 이름 Crayfish로 인프라 자동화 팀을 구성했습니다. 우리는 본격적으로 IT 자동화 솔루션을 개발하기 시작했습니다. 우리 규모의 조직에 대한 작은 작업이 아닙니다. 우리가 여전히 사용하고 있는 프로젝트 이름의 선택은 의도적인 것이었습니다. 우리는 오랫동안 물고기와 항해에 대한 주제를 가지고 있었지만, 그 이상으로 가재를 선택했습니다. 가재는 필터 피더로 작용하여 깨끗한 환경을 유지하는 데 도움이되기 때문입니다.
처음에는 자체적인 IT 자동화 프레임워크 개발을 고려했으나, StackStorm을 통해 고유한 요구 사항과 확장성을 지원하기 위한 추가 개선을 통해 가장 효과적으로 발전할 수 있다고 결정했습니다. StackStorm은 DevOps 자동화에 대한 “코드로서의 인프라” 접근 방식을 지원하는 오픈 소스 이벤트 중심 플랫폼입니다. 이벤트에 기반한 워크플로우 실행에 탁월하고, 운영 팀 전체에서 사용하는 Slack과 통합되며, 기본 ChatOps 지원이 제공됩니다.
StackStorm이 필요한 규모로 실행될 수 있도록 일부 구성이 변경되었습니다. 주로 실행 중인 서비스 인스턴스의 수를 늘리고 데이터 보존을 줄이는 것이 그 주요 원인이었습니다. 프로젝트를 시작했을 때 네트워크는 8,000대의 서버로 구성되었습니다. 현재 서버 수는 20,000대이며 그 수는 계속 늘어나고 있습니다. 확장성의 핵심은 단일 StackStorm 인스턴스가 모든 것을 처리하도록 만들지 않고 여러 개의 StackStorm 인스턴스를 작업자로 실행할 수 있다는 점입니다. 아래 그림에서 볼 수 있듯이, 이는 비즈니스 로직을 기반으로 StackStorm에 요청을 제출할 수 있도록 지원하는 Policy Engine을 개발하여 가능합니다. Policy Engine은 선택적으로 요청을 큐업하고 정책에서 안전하다고 판단될 때 자동으로 실행할 수 있습니다. 이러한 정책은 동시성, 용량, 트래픽, 운영 상태, 인프라, 블랙리스트 및 장애율을 모니터링합니다.
제출 요청은 거의 무제한의 확장성을 위해 정책 엔진 인스턴스를 통해 원하는 수의 StackStorm 작업자에게 라우팅됩니다.
부족 지식을 코드화
모든 IT 자동화 프로젝트의 기본 접근 방식은 기존 프로세스와 워크플로를 캡처하여 수동 개입 없이 워크플로 단계를 구현할 수 있는 코드로 변환하고, 코드화된 워크플로를 다른 자동화의 일부로 또는 ChatOps 명령을 통해 필요에 따라 호출할 수 있는 중앙 저장소에 저장하는 것입니다.
프로젝트가 진행되면 Crayfish 팀은 조직 전체의 기존 워크플로와 프로세스를 캡처했습니다. 다행히도, 네트워크 운영 센터 (NOC), 데이터 센터 운영 또는 SysOps와 같은 다른 그룹에서 사용하는 가장 중요한 프로세스의 대부분은 잘 문서화되었으며 파이썬 프로그래밍 언어를 사용하여 신속하게 성문화되고 가재에 추가 될 수 있습니다.
예를 들어, NOC가 재부팅 워크플로우를 구현하려는 경우 다양한 정책 검사를 기반으로 컴퓨터에서 작업하는 것이 안전한지 확인해야 합니다. 예를 들어 서버가 운영 중인 경우 시스템은 연결을 해제하고 상태를 업데이트하는 단계를 수행합니다. 그런 다음 실제 재부팅을 수행하고 머신을 프로덕션으로 되돌리기 전에 프로덕션 준비가 되었는지 확인하는 데 필요한 단계를 수행합니다.
확실히, 많은 케이스가 있었다. 가장 어려운 과제는 문서화되지 않은 프로세스였습니다. 이러한 부족 지식 사례는 교차 기능 협업과 전문성이 올바르게 처리되도록 보장하는 개인과의 대화가 필요했습니다. 자동화 노력의 한 가지 이점은 이러한 지식을 포착하여 조직 내에서 계속 진행할 수 있다는 점입니다.
어떤 경우에는 특정 작업에 대한 진행 상황이나 특정 문제를 해결하는 방법을 이해하는 여러 엔지니어 및 기술자와 연결하여 특정 작업을 보다 효율적으로 처리하는 방법을 파악할 수도 있었습니다. 어떤 경우에는 다양한 팀 구성원 간에 지식 수준이 다르다는 것을 발견했습니다. 그 때 우리는 모든 사람의 지능을 수집하고 모든 사람들이 가장 효율적인 솔루션을 제공하기로 동의한 단일 워크플로를 개발할 것입니다.
주문형 새 서버 배포
Crayfish는 서버 관리 단순화, 서버 가동 중지 시간 감소, 서버 배포 속도 향상 등 다양한 수준에서 IT 운영을 혁신했습니다. 2018년 한 해에만, ITops는 글로벌 네트워크에 22Tbps의 용량을 추가했습니다. 가재의 자동화 없이는 수천 대의 서버를 추가할 수 없었을 것입니다. 그리고 직원 수준을 크게 높이지 않고도 달성되었습니다.
현재 가재 물고기는 약 20가지 서버 유형에 대해 강력한 자동화를 제공합니다. 우리 조직에서는 서버 유형을 동일한 서비스를 더 많이 또는 덜 실행하는 서버 그룹으로 정의합니다. 서로 다른 응용 프로그램은 서로 다른 서버 유형에서 실행되며, 각 서버 유형은 운영 환경에서 서로 다른 지원 요구 사항을 갖습니다. 오늘날 Crayfish는 약 10개의 서버 유형에 대해 전체 서버 수명 주기를 지원하며, 약 10개의 추가 서버 유형에 대해 대부분의 수리, 수정 및 패치를 수행할 수 있습니다. 또한 약 40 ~ 50 개 이상의 다양한 지원을 제공합니다. 가장 널리 배포된 서버 유형에 중점을 두었기 때문에 Crayfish는 전 세계 서버 인구의 약 96%를 지원합니다.
가재 사용으로 인해 CDN의 성능이 전반적으로 향상되고 예기치 않은 이벤트를 수용할 수 있는 능력이 향상되었습니다. 주니퍼 네트웍스의 네트워크는 주요 스포츠 이벤트 스트림 및 피크 소프트웨어 다운로드로 인해 지속적으로 증가하는 대규모 트래픽을 지원할 수 있도록 잘 갖춰져 있습니다. 예를 들어, 더 많은 서버를 운영 환경에 유지하고 피크 트래픽 시간 동안 운영 서버를 제거하는 데 따른 중단을 줄입니다.
우리의 규모는 성능 관점에서 가재가 왜 필수적인지에 기여합니다. 회사에 데이터 센터가 하나만 있는 경우 다운타임을 예약하고 해당 데이터 센터의 요구 사항을 파악할 수 있습니다. 하지만 아래 네트워크 맵에 나와 있는 것처럼 거의 모든 시간대의 데이터센터에 대해 이야기할 때는 서로 다른 프로필, 사용량 및 사용 시간을 고려해야 합니다. 케이스별로 이러한 모든 요소를 고려하는 것은 매우 복잡할 수 있지만 가재는 쉽게 처리합니다.
가재 요리를 사용하면 프로비저닝 또는 업그레이드와 같은 작업이 자동으로 수행되도록 예약할 수 있지만 시스템은 현지의 요구를 수용할 수 있을 만큼 스마트합니다. 라트비아의 뉴스 이벤트가 라트비아의 모든 서버를 재프로비저닝하려고 할 때 비디오 스트리밍이 급증했다고 가정해 봅시다. 가재와 메트릭 수집 시스템이 통합되어 있기 때문에 트래픽 증가와 재프로비저닝이 중단됩니다. 필요한 경우 더 많은 서버를 운영 환경에 배치할 수도 있습니다.
서비스 중단으로 이어지기 전에 인프라스트럭처 장애 감지
가재 및 기타 모니터링 시스템은 개별 서버 가동 중지 시간과 수리 시간을 크게 줄여줍니다. 당사의 시스템은 지속적으로 네트워크에서 문제나 장애를 모니터링하며 자동으로 티켓을 생성하거나 직접 수정을 적용할 수 있습니다. 자동화된 시스템을 사용하면 직원들이 네트워크 오류를 발견하기 위해 “유리에 눈”을 갖지 않아도 되므로 컴퓨터가 지루하거나 피곤해지지 않으며 지속적으로 모니터링할 수 있습니다.
이러한 방식으로 수행할 수 있는 검사량에는 거의 제한이 없습니다. 당사의 메트릭 시스템은 기계의 생산을 중단할 필요가 없는 하드웨어 검사를 지속적으로 실행하는 반면, 다른 시스템은 잘못된 값을 찾고 문제가 발견되면 가재를 호출하여 기계를 점검합니다. 이 접근 방식을 사용하면 하드웨어 장애를 초기에 파악할 수 있습니다.
예를 들어, 메트릭에 하드 드라이브가 고장나기 시작하는 것으로 나타난 경우, 자동화된 시스템은 영향을 받는 시스템의 오류를 확인하고 장애에 대한 세부 정보(예: 어떤 슬롯에서 고장난 하드 드라이브, 차폐 번호 등)를 수집하는 Crayfish의 워크플로우를 시작합니다. 그런 다음 데이터 센터 운영 그룹에 대해 특수하게 조작된 티켓을 생성하고 대체 설치를 위해 기술자가 파견됩니다.
과거에는 여러 부서에서 단계를 조정하거나 각 단계를 넘겨야 하는 수동 워크플로우가 진행되는 동안 상당한 지연이 발생했습니다. 자동화된 워크플로우를 사용하면 요청 팝업을 기다리는 티켓 대기열에서 며칠이 걸리던 완료 시간이 단 몇 분일 수 있습니다. 따라서 시스템 및 애플리케이션을 가장 잘 알고 있는 개별 운영 팀이 더 많은 제어 권한을 갖게 됩니다.
엔지니어에게 생산성 향상을 위한 도구 제공
NOC 작업에 대한 이전의 접근 방식은 명령을 내리고 일이 일어나기를 기다리는 것이었습니다. NOC 기술자가 서버가 정상적으로 종료되기를 기다리는 데 10, 20 또는 30분을 소비하는 경우 그 이유를 물어봐야 합니다. 그게 시간을 잘 활용하는 것일까? 가재는 많은, 많은 실행을 병렬로 실행할 수 있습니다. 그리고 앞서 언급했듯이 가재는 수평으로 확장되도록 설계되었습니다. 따라서 더 많은 작업이 필요하면 새 노드를 추가할 수 있습니다. 갑자기 많은 작업을 한꺼번에 처리해야 한다면 전체 CDN에 걸쳐 노드 몇 개를 확장한 다음 다시 축소할 수 있습니다.
또한 기술자는 한 번에 얼마나 많은 기계에서 작업할 수 있는지에 대한 많은 메모리만 가지고 있습니다. 가장 뛰어난 멀티태스킹 전문가만이 트랙을 잃거나 오류를 일으키지 않고 서로 다른 상태에서 5 ~ 6 대 이상의 기계를 처리 할 수 있습니다. 그러나 가재를 사용하면 다양한 작업 사이를 이동할 필요가 없으며 명령을 내리고 계속 진행할 수 있습니다.
소프트웨어 인프라 및 시스템 운영 팀에서 개발한 기존의 스마트 프로비저닝 시스템을 기반으로 구축된 서버 라이프사이클의 다른 측면은 가재 요리 내에서 완벽하게 지원되며 운영 체제 업데이트, 서버 프로비저닝 또는 펌웨어 업데이트 재프로비저닝, 보안 패치 등 대부분 자율적으로 이루어집니다. 새 패치가 출시되면 Crayfish는 패치가 출시되어도 괜찮은지 확인하기 위해 검증 테스트 속도를 높입니다.
가재류는 Slack과 통합되어 있으므로 일반적인 IT 프로세스를 지원하고 요구 사항의 변화에 따라 협업 작업을 촉진합니다. 이제 팀은 단일 부서에서 변경 사항을 구현할 때까지 기다리지 않고 수동 프로세스를 자동화된 워크플로로 정의할 수 있습니다. 그런 다음 최종 사용자가 필요할 때 실행할 수 있도록 워크플로를 제공할 수 있습니다. 워크플로를 안전하게 실행할 수 있는 시기를 제한하는 정책도 구현할 수 있습니다. 또한 데이터 센터의 서버 앞에 서 있는 엔지니어가 작업하려는 서버의 운영 상태를 변경하는 명령을 실행할 수 있습니다.
최종 생각
매일 2만 대 이상의 서버로 구성된 글로벌 네트워크를 통해 수천 명의 고객이 테라바이트의 데이터를 전송하고 있는 상황에서 StackStorm의 구현은 서비스를 건강하고 안전하게 유지하는 데 필수적인 운영 도구가 되었습니다. 이를 통해 네트워크를 보다 빠르게 확장하여 고객의 요구를 충족하는 동시에 동적인 변화와 예상치 못한 트래픽 급증에도 불구하고 더 나은 성능을 제공할 수 있었습니다. 이러한 운영 민첩성은 스트리밍 미디어 및 웹 애플리케이션 요구를 충족할 수 있도록 확장할 수 있는 보다 안정적인 서비스 프로바이더로 자리매김했습니다.
대부분의 조직이 우리와 같은 규모로 운영되지는 않지만 다음과 같은 기능을 포함하여 자동화를 매력적으로 만들 수 있는 몇 가지 운영 테이블 스테이크가 있습니다.
- 더 높은 수익을 창출하는 작업에 개발자를 집중
- 일상적이고 일상적인 작업을 표준화합니다.
- 부서 간 협업 개선
- 서버 가동 중지 시간을 줄입니다.
- 펌웨어 업데이트 및 보안 패치를 구현하여 보안을 강화합니다.
의심의 여지없이 IT 자동화로의 전환은 매우 매력적인 투자 수익을 제공하지만 올바른 이유로 전환하는 것이 중요합니다. 좋은 접근 방식은 자동화를 엔지니어에게 보다 생산적이고 능숙하게 만들고 개선에 집중할 수 있는 도구를 제공하는 방법이라고 생각하는 것입니다.
워크플로 기반 자동화로의 전환은 부족 지식을 사회화하고 코드화하는 훌륭한 방법입니다. 모든 사람이 각자의 접근 방식을 취하는 대신, 부족을 하나로 모으고, 공통의 워크플로를 마련하고, 모든 사람이 미래의 지식을 단일 수익에 기여할 수 있도록 합니다.