Cloud Code Functions
클라우드 코드의 복잡성 보고서 생성: Plato 활용 가이드
10 분
클라우드 코드의 복잡성을 보여주는 보고서 작성 방법 소개 이 섹션에서는 https //www npmjs com/package/plato 를 사용하여 클라우드 코드의 코드 복잡성 보고서를 생성하는 방법을 배울 것입니다 클라우드 코드는 설계에서부터 효율적이어야 합니다 여러 번 호출되기 때문에 약간의 성능 저하가 큰 문제가 되어 생산 환경에 심각한 영향을 미칠 수 있습니다 클라우드 코드를 효율적으로 설계하는 데 시간을 투자하면 더 작은 서버를 사용하여 더 많은 요청을 처리할 수 있으며, 이는 시간이 지남에 따라 큰 비용 절감으로 이어질 수 있습니다 반면에 잘못 설계된 클라우드 코드는 더 크고 비싼 기계에서만 확장할 수 있으며, 이 또한 한계가 있습니다 이러한 상황은 코드 재작성의 필요성과 시간이 지남에 따라 더 많은 지출로 이어질 수 있습니다 테스트를 수행하고, 부하 테스트를 하며, 코드 복잡성에 대한 보고서를 지속적으로 확인하는 데 시간을 할애해 주세요 전제 조건 이 튜토리얼을 완료하려면 다음이 필요합니다 단위 테스트를 적용하기 위해 node js가 설치된 로컬 환경 https //nodejs org/en/download/package manager/ 을 따라 터미널에서 node js를 성공적으로 설치하세요 back4app에서 생성된 앱 back4app에서 앱을 생성하는 방법을 배우려면 https //www back4app com/docs/get started/new parse app 을 따라하세요 프로젝트에 구성된 back4app 명령줄 프로젝트에 대한 클라우드 코드를 설정하는 방법을 배우려면 https //www back4app com/docs/local development/parse cli 을 따라하세요 우선, 우리는 플라톤에 대해 이야기해야 합니다 우리는 일반적으로 큰 문제를 더 작고 다루기 쉬운 문제로 나누는 작은 함수 집합을 생성하여 개발을 시작합니다 이 접근 방식은 일반적으로 괜찮으며 이러한 초기 작은 함수는 시간이 지남에 따라 성장하여 더 복잡한 작업을 수행하고 더 많은 데이터를 처리합니다 애플리케이션의 데이터가 증가함에 따라 루프 및 재귀 호출과 같은 계산 집약적인 작업이 점점 더 많이 호출되어 애플리케이션이 느려지는 경향이 있습니다 심한 경우 애플리케이션이 완전히 멈출 수도 있습니다 여기서 https //www npmjs com/package/plato 이 필요합니다 https //www npmjs com/package/plato 는 javascript 소스 코드 시각화, 정적 분석 및 복잡성 도구로, 애플리케이션이 얼마나 복잡해지고 있는지와 프로세스를 잠재적으로 가속화하기 위해 수정해야 할 부분을 보여주는 보고서를 생성합니다 1 plato 설치하기 시스템에 https //nodejs org/en/download/package manager/ 와 https //www npmjs com/ 이 설치되어 있다면, https //www npmjs com/package/plato 를 설치하는 것은 다음을 입력하는 것만큼 쉽습니다 1 npm install g plato 설치하지 않았다면, 진행하기 전에 설치해 주세요 2 plato 실행하기 설치 후 https //www npmjs com/package/plato 를 실행하는 것은 cloud code가 있는 디렉토리에서 다음 명령어를 입력하는 것입니다 1 plato r d myreportfolder t "이 앱을 위한 내 보고서" x json js 옵션의 의미는 다음과 같습니다 r 재귀적, 즉 파일을 찾기 위해 디렉토리와 하위 디렉토리로 들어간다는 의미입니다 d myreportfolder (출력) 디렉토리 plato는 myreportfolder myreportfolder 라는 이름의 디렉토리를 생성하여 결과를 저장합니다 t “my report for this app” 제목 plato는 이 보고서의 이름을 my report for this app my report for this app 이는 시간이 지남에 따라 여러 보고서를 생성하고 추적하는 데 유용합니다 x json json 파일 제외 plato에게 파일 유형을 무시하도록 지시하여 더 빠르게 실행할 수 있습니다 js 평가할 js 확장자를 가진 모든 것을 찾습니다 3 결과 얻기 위 명령어로 생성된 myreportfolder myreportfolder 에서 index html index html 파일이 포함된 보고서를 찾을 수 있습니다 해당 파일을 브라우저에서 열면 다음과 같은 내용을 확인할 수 있습니다 제 경우에는 main js main js ,라는 이름의 파일만 있었지만, 코드에 따라 더 많은 파일이 있을 수 있습니다 아래로 스크롤하여 파일 파일 섹션으로 가서 열고 싶은 파일 이름(제 경우에는 main js)을 클릭하세요 그러면 해당 파일의 보고서가 열립니다 유지보수성은 코드 유지의 상대적 용이성을 나타내는 0과 100 사이의 값입니다 높은 값은 더 나은 유지보수성을 의미합니다 난이도 측정은 프로그램을 작성하거나 이해하는 난이도와 관련이 있습니다 추정 오류는 halstead의 전달된 버그로, 구현의 오류 수에 대한 추정입니다 함수 가중치에는 두 가지 메트릭이 있습니다 복잡성에 따라 이 메트릭은 코드 블록을 통과하는 고유한 경로의 수를 계산합니다 낮은 값이 더 좋습니다 sloc에 따라 소스 코드 라인 / 논리적 코드 라인 이제 아래로 스크롤하여 제안된 경고 및 가능한 수정 사항을 확인할 수 있습니다 내 경우에는 화살표 함수 구문 (=>)은 es6에서만 사용할 수 있습니다 ( 'esversion 6' 사용) 화살표 함수 구문 (=>)은 es6에서만 사용할 수 있습니다 ( 'esversion 6' 사용) , 이는 문제가 아닙니다 하지만 그 함수에 매우 비효율적인 코드를 추가하고 다시 평가해 보겠습니다 1function getsquarerootof(numberone, numbertwo, numberthree){ 2 var finalresult; 3 4 var i = 0; 5 var j = 0; 6 var k = 0; 7 8 for (i = 0; i < 100; i ++){ 9 for (j = 0; j < 100; i ++){ 10 for (k = 0; k < 100; k++){ 11 var resultone = getsquarerootof(numberone); 12 var resulttwo = getsquarerootof(numbertwo); 13 var resultthree = getsquarerootof(numberthree); 14 finalresult = resultone + resulttwo + resultthree; 15 } 16 } 17 } 18} 그리고 결과를 평가해 보겠습니다 우리가 볼 수 있듯이, 이 함수의 복잡도는 4로, 괜찮습니다 숫자가 높아질수록 함수는 더 복잡해지고, 효율성을 보장해야 합니다 https //www npmjs com/package/plato 는 누락된 세미콜론 및 기타 잠재적인 javascript 오류에 대해 경고합니다 결론 코드의 복잡성을 확인하고 클라우드 코드를 가능한 한 빠르고 효율적으로 지속적으로 재작업하는 도구인 https //www npmjs com/package/plato 를 사용하면 시간이 지남에 따라 큰 절약을 가져올 수 있습니다 여러분과 모든 개발자는 요청을 처리할 때 최대의 효과를 얻기 위해 개발 프로세스에 이 단계 또는 유사한 단계를 포함해야 합니다