엄청나게 빠른 애플리케이션을 구축하는 방법

엄청나게 빠른 애플리케이션을 구축하는 방법


개발자의 목표는 앱의 성능을 높이고 사용자 경험을 향상시키는 것입니다. 종종 시간은 이해관계자가 목을 졸라매고, 그들이 생산할 수 있는 것보다 더 나은 앱을 출시하겠다고 위협하는 경쟁과 경쟁 앱으로 전환할 것을 암시하는 사용자와 함께 개발자와 대립합니다. 따라서 프로젝트 관리 팀은 앱을 엄청나게 빠르게 빌드하는 데 도움이 되는 방법을 항상 찾고 있습니다. 그리고 예, 빠른 것만으로는 충분하지 않습니다. 짧은 대기 시간으로 이러한 앱을 탄력적으로 만들고 뛰어난 렌더링 시간을 제공하는 데 집중해야 합니다.

올바른 기술 스택 선택

기술 스택은 개발자가 기능적인 웹 앱을 만드는 데 사용하는 프로그래밍 언어, 도구, 기술 및 소프트웨어 제품의 집합입니다. 이는 서버측(백엔드) 스택, 클라이언트측(프론트엔드) 스택 및 미들웨어로 분류할 수 있습니다. 많은 수의 gem 라이브러리로 인해 RoR은 빠른 앱 개발을 위해 가장 일반적으로 사용되는 프레임워크입니다. 예를 들어, 사업을 막 시작한 경우 프로토타입을 구성할 수 있는 언어/프레임워크/CMS 도구를 선택할 수 있습니다. 학습 시간이 가장 짧은 도구일수록 더 좋습니다.

조기 최적화를 피하십시오

Donald Knuth는 “성급한 최적화는 모든 악의 근원”이라고 말했습니다.

개발자는 코드의 중요한 부분을 개발하는 것보다 소프트웨어의 중요하지 않은 부분에 대해 생각하는 데 많은 시간을 보냅니다. 그들은 코드의 중요한 부분에 중요성을 부여하지 않으며 최적화가 필요한 코드에 대해 작업하지도 않습니다.

경험 부족이 원인이 될 수 있습니다. 팀에 유사한 일이 발생하지 않도록 팀이 성능에 대해 걱정하지 않고 코드의 첫 번째 버전을 작성하는지 확인하십시오. 나중에 프로파일러를 사용하여 팀은 병목 현상이 있는 위치를 확인할 수 있습니다.

이렇게 하면 실제로 주의가 필요한 영역을 확인하고 그렇지 않은 영역에 대해 신경 쓰지 않을 수 있습니다.

PHP 영역에는 코드를 프로파일링하는 데 사용할 수 있는 몇 가지 도구가 있습니다. xdebug, xhprof, Symphony profiler, Tideways, Blackfire.io 및 The Stopwatch Component입니다.

해야 할 일만 하세요

꽤 자주 코드는 예상 범위를 벗어난 특정 작업을 수행합니다. 특히 복잡한 라이브러리와 프레임워크를 사용할 때 그렇습니다. 경우에 따라 사용하지 않으려는 클래스를 로드하거나 특정 요청에 대한 결과를 생성하는 데 필요하지 않은 데이터베이스 연결을 열 수 있습니다.

성능에 방해가 될 수 있으므로 이러한 일이 발생하지 않도록 해야 합니다. 다음은 더 나은 성능을 달성할 수 있는 방법에 대한 몇 가지 팁입니다.

a) 자동 로딩 – 자동 로딩 기능의 도움으로 스크립트에 포함해야 하는 파일에 대해서만 신경쓰면 됩니다. 과거에는 자동 로딩이 다소 복잡한 작업이었지만 Composer 및 PSR-0 및 PSR-4 표준과 같은 도구의 도움으로 자동 로딩을 구성하는 것이 케이크 조각이었습니다.

b) 종속성 주입 – Java에서 매우 일반적인 디자인 패턴이지만 종속성 주입은 PHP 세계에서도 많은 주목을 받았습니다. Symphony, Laravel 및 Zend와 같은 프레임워크가 널리 사용하기 때문입니다. 종속성 주입을 통해 개발자는 constrictor 메서드를 통해 구성 요소를 주입할 수 있으며 개발자가 종속성 측면에서 생각할 수 있습니다. 이것은 그들이 한 가지에만 초점을 맞추는 작고 고립된 구성 요소를 만드는 데 도움이 됩니다.

압축

콘텐츠에 사용할 수 있는 압축 기술을 사용하여 데이터 크기를 줄일 수 있습니다. REST 서비스는 오버헤드가 적고 데이터의 이미지 크기가 올바른지 확인합니다. 로드하기 어려운 이미지가 앱 로드에 실제로 영향을 미칠 수 있기 때문입니다. 또한 웹 서버와 함께 사용할 때 HTTP 압축이 켜져 있는지 확인하십시오.

캐싱 방식을 사용하여 반복 작업 수행

요즘 웹 앱이 정말 복잡하다는 것은 의심의 여지가 없으며 들어오는 모든 요청에 대한 응답을 생성할 수 있을 만큼 충분히 유능해야 합니다. 반복적인 작업을 수행하는 현명한 방법은 캐싱을 이용하는 것입니다. 이것은 어디에서나 볼 수 있는 널리 사용되는 기술입니다. 웹 프로그래밍에는 바이트 코드 캐시, 애플리케이션 캐시, HTTP 캐시 및 프록시 캐시와 같이 사용할 수 있는 다양한 수준의 캐싱이 있습니다. 이는 콘텐츠 인프라 및 모바일 네트워크를 통한 과도한 이동을 방지할 수 있습니다.

콘텐츠 전송 네트워크(CDN)

CDN 또는 콘텐츠 전송 네트워크를 통해 네트워크 대기 시간, 콘텐츠 프리페칭, 네트워크 라우팅 최적화 등을 줄입니다. 이들은 응용 프로그램의 속도를 상당히 높일 수 있습니다. 가장 널리 사용되는 CDN 중 일부는 Akamai, Edgecast, Limelight, Amazon CloudFront 및 심지어 AT&T 및 Level3와 같은 통신 회사입니다.

백엔드가 성능 재퍼인 경우

백엔드 서버가 많은 성능 시간을 차지한다고 생각되면 이식성, 확장성, 변경 가능성 및 확장성이 앱 성능에 영향을 미치지 않는 방식으로 소프트웨어 구조를 구성하십시오. 앱의 어떤 부분이 속도를 내는지 결정하기 위해 아키텍처 평가를 수행해야 할 것입니다. 이를 위해 타사 서비스를 선택하는 경우 고용하기 전에 올바른 질문을 모두 확인하십시오.

자산의 지연 로딩

주문형 또는 지연 로딩 자산은 웹 앱의 성능을 향상시킬 수 있습니다. 그러나 이것은 주로 이미지에 적용됩니다. 이미지 지연 로딩으로 인해 페이지 로딩 시간이 빨라질 수 있습니다.
서버의 부하를 줄이고 브라우저의 메모리 사용량을 줄입니다. 지연 로딩은 관련 플러그인 또는 확장을 통해 수행할 수 있습니다. 다음은 React – react-lazy-load에 대한 이미지 지연 로드를 처리하는 플러그인입니다.

DOM 조작 라이브러리를 사용할 때 배열 ID 사용

React, Angular, Ember 또는 기타 DOM 조작 라이브러리를 사용하는 경우 array-id를 사용하면 동적 사이트의 성능을 개선하는 데 큰 도움이 됩니다. 배열 ID는 특정 노드가 배열의 특정 요소에 매핑될 수 있을 때 DOM 조작 엔진에 표시를 제공합니다. 이 기능이 없으면 라이브러리는 기존 노드를 파괴하고 새 노드를 생성하여 성능을 저하시킵니다.

“이 팁을 따르고 프로젝트에 적합한 코드를 작성하는 데 집중하면 앱의 성능과 확장성을 크게 높일 수 있습니다.”

  1. 엄청나게 빠른 웹 서버 애플리케이션을 구축하기 위한 6가지 경험 법칙
  2. 놀랍도록 빠른 Android 앱 빌드

Flickr.com / Bjorn Gruenwald


저자 소개: Reema는 PHPBabu에서 사고 리더로 일하고 있습니다.

Leave a Comment