클라우드에서 애플리케이션 성능을 최적화하기 위한 5가지 원칙

클라우드에서 앱 성능 최적화

빠르게 변화하는 오늘날의 세상에서 느린 속도는 더 이상 용납되지 않기에, 속도와 민첩성은 여전히 기업이 클라우드를 도입하는 주요 동기 중 하나입니다. 그렇다면 앱 배포를 가속화하는 동시에 앱 성능을 개선하고 보안을 보장해야 하는 DevOps 실무자는 클라우드 환경의 느린 속도를 극복하기 위해 시스템과 프로세스를 어떻게 현대화해야 할까요? 몇 가지 방법을 제안해 드리겠습니다.

1. 코드형 인프라는 든든한 친구입니다

99%의 경우 ‘수동’이라는 말은 느리고 예측 불가능하다는 의미와 다름없습니다. 속도와 안정성을 추구한다면 자동화부터 시작하는 것이 좋다는 데 대부분 동의할 것입니다. 애플리케이션을 확장하기 위해 추가 클라우드 리소스를 가동하든, 필수 애플리케이션 서비스를 배포하고 구성하든, API 호출을 실행하거나 콘솔에서 한두 번 클릭하는 것만큼 간단해야 합니다. 여기서 성공의 핵심은 코드형 인프라(IaC)를 활용하는 것입니다. 인프라/NetOps/SecOps 담당자와 협력하여 무엇을 어떻게 배포할지 상세히 기술한 검증된 정의 파일을 마련하면 인프라와 서비스를 빠르고 반복 가능하며 안정적인 방식으로 프로비저닝할 수 있습니다.

이 템플릿 기반 접근 방식을 활용하면 셀프서비스 배포 시 다른 팀에 대한 의존도를 줄이고, 수동 인프라 프로비저닝을 위한 티켓 기반 요청으로 인해 발생하는 배포 병목 현상을 방지할 수 있습니다.

2. CI/CD 파이프라인을 최대한 활용하세요

코드형 인프라(IaC)는 배포 속도를 높이는 데 올바른 방향으로 나아가는 한 걸음이지만, 완전한 CI/CD 파이프라인의 가치를 최대한 활용하면 훨씬 더 큰 효과를 얻을 수 있습니다. 새로운 애플리케이션 코드를 더 자주 통합하고 해당 업데이트를 프로덕션 환경에 자동으로 배포하는 것뿐만 아니라, 앱 서비스를 파이프라인에 추가하는 과정도 통합할 수 있다는 사실을 알고 계셨나요? 이러한 서비스를 코드(IaC)로 정의하고 정기적으로 모니터링, 업데이트 및 검증할 수 있는 소스 제어 도구에 저장하면 Ansible 및 GitLab과 같은 CI/CD 도구가 API 호출을 통해 해당 서비스를 배포에 자동으로 포함할 수 있습니다. 이를 통해 배포를 지연시키지 않으면서 모든 앱이 적절한 보안 및 규정 준수 제어를 갖춘 상태로 배포되도록 할 수 있습니다.

3. 컨테이너를 도입하되… 보안을 철저히 유지하세요

전체 애플리케이션에 필요한 코드, 라이브러리 및 바이너리를 여러 플랫폼에 빠르고 일관되게 배포할 수 있는 경량 패키지로 묶는 기능은 최근 컨테이너 도입이 급증한 기반입니다. 이러한 특성은 클라우드에서 속도를 최적화하는 데 유리합니다. 즉, 필요에 따라 즉시 애플리케이션을 구동하고 확장하며, CI/CD 프로세스를 가속화하고, 매우 동적이면서 관리하기 쉬운 마이크로서비스 아키텍처를 구축할 수 있습니다.

이러한 과대광고는 차치하더라도, 속도 향상에만 몰두한 나머지 애플리케이션 포트폴리오의 다른 앱과 동일하거나 그보다 높은 수준의 보안 및 앱 성능 최적화가 필요한 앱이 여전히 존재한다는 사실을 간과하기 쉽습니다. 안타깝게도 기존 앱 서비스를 컨테이너의 고유한 요구 사항에 맞게 개조하려 해도 성공 가능성은 제한적입니다. 대신 컨테이너 오케스트레이션 시스템과 통합되는 더욱 동적인 서비스 세트를 파악하여 실질적으로 컨테이너를 지원하고 원치 않는 서비스 중단과 보안/규정 준수 문제를 방지해야 합니다.

4. 가시성은 힘입니다

애플리케이션을 신속하게 가동하는 것과 가동 상태를 유지하면서 사용자가 계속 이용할 수 있도록 하는 것은 전혀 다른 문제입니다. 프로덕션 환경에 배포된 애플리케이션의 안정성을 위협할 수 있는 요인은 네트워크 장애, 플랫폼 문제, 사이버 공격, 코드 버그 등 매우 다양합니다. 이 때문에 단일 애플리케이션의 중단 원인을 해결하는 일조차 건초 더미에서 바늘을 찾는 것처럼 느껴질 때가 많습니다. 하물며 서로 다른 클라우드 환경에서 여러 애플리케이션에 동시에 장애가 발생한다면 어떨까요? 어디서부터 시작하시겠습니까?

이러한 상황에서는 가시성이 지식의 전제 조건이므로, 앱 문제를 해결하는 데 매우 중요합니다. 애플리케이션 스택의 각 계층에 대한 가시성이 높을수록 운영상의 이상 징후와 근본 원인을 더 잘 파악할 수 있습니다. 이를 위해서는 멀티 클라우드 아키텍처 전반에서 앱 문제를 더 신속하게 해결할 수 있도록 클라우드와 앱에 구애받지 않는 중앙 집중식 가시성 솔루션을 구현하는 것이 중요합니다.

5. 팀워크가 꿈을 현실로 만듭니다

마지막으로, 클라우드 민첩성은 단지 적절한 도구와 기술을 갖추는 것만으로 달성되는 것이 아닙니다(물론 큰 도움이 되기는 합니다). 사람과 프로세스도 중요합니다. 다음과 같은 말에는 어느 정도 일리가 있습니다. “네트워크의 속도는 가장 느린 회선의 속도를 넘을 수 없다.” 이 말은 클라우드에서 앱을 구축, 배포 및 관리하는 팀에도 그대로 적용됩니다. 일반적으로 최소한 DevOps, SecOps, NetOps 및 아키텍트가 함께하는 팀 차원의 노력이므로, 개인 또는 협업 과정의 비효율은 팀 전체에 영향을 미칠 가능성이 큽니다.

2020년 애플리케이션 서비스 현황: DevOps 에디션 보기

사일로를 허물고 팀 간에 정기적이고 체계적인 협업 모델을 확립하면 계획 수립, 문제 해결, 정보 공유를 가속화하고 모두가 같은 방향으로 나아갈 수 있는 탄탄한 기반을 마련할 수 있습니다. 또한 여러 직무의 전문성을 더욱 효과적으로 활용해 업무 부담을 줄일 수 있을 뿐 아니라, 다른 직무에서도 자동화와 프로세스 최적화 등을 적극적으로 추진함으로써 서로 도움을 주고받으며 모두가 더 빠르게 움직일 수 있습니다.