BLOG
우리는 이제 Node. js 8.10 런타임(Node.js에서 현재의 장기적인 지원{LTS} 버전)을 사용해 AWS Lambda 기능을 개발할 수 있다는 것을 발표하게 되어 기쁩니다. 함수를 생성하거나 업데이트할 때 nodejs8.10의 런타임 매개 변수 값을 지정하는 것으로 이 새로운 버전을 사용하세요.
async/await 지원하기
Node.js 8.10용 Lambda 프로그래밍 모델은 이제 async/await 패턴을 사용하여 함수 핸들러를 정의하는 것을 지원합니다.
사용자와 사람 간의 인터페이스는 본질적으로 비동기식으로 처리되기 때문에 비동기식 또는 비차단식 호출은 애플리케이션의 고유하고 중요한 부분입니다. 만약 여러분이 친구와 커피를 마시기로 결정했다면, 여러분은 보통 커피를 주문하고 나서 커피가 준비되는 동안 친구와 이야기를 할 것입니다. 이야기를 시작하기 전에 커피가 준비되는 것을 기다리지 마세요. 이러한 작업은 한 작업을 시작한 후 완료될 때까지 기다리지 않고 다음 작업으로 이동할 수 있으므로 비동기 방식으로 수행됩니다. 그렇지 않으면 다음 활동의 시작을 지연(또는 차단) 할 수 있습니다.
비동기식 호출은 콜백 을 사용해 Node.js에서 처리되곤 했습니다. 이는 다른 콜백에 다양한 레벨로 중첩될 경우 문제를 일으켜 코드를 유지하고 이해하는데 힘들게 했습니다.
“콜백 지옥”으로 인한 문제를 해결하기 위해 프라미스들이 이행되었습니다. 이를 통해 비동기식 작업에서 자체 방법을 사용하고 호출에 성공하거나 실패할 경우에 발생하는 작업을 처리할 수 있습니다. 요구 사항이 점점 복잡해짐에 따라, 프라미스도 제대로 지켜지지 않아 결국 코드를 복잡하게 만들 수 있습니다.
Async/await는 Node.js의 비동기식 작업을 처리하는 새로운 방법이며, 비차단식 호출을 위한 보다 간단하고 쉽고 깨끗한 코드를 만듭니다. 이는 여전히 프라미스를 사용하지만 콜백은 그것이 동기식 차단 함수인 것처럼 비동기식 기능에서 직접 반환됩니다.
예를 들어, Node.js 6.10 런타임을 사용하여 현재 계정 설정을 가져오는 다음 Lambda 기능을 예로 들어 보겠습니다.
새 Node.js 8.10 런타임이 있으면 “비동기” 키워드로 말할 수 있거나 프라미스를 직접 반환할 수 있는 새 핸들러 유형이 있습니다.
이것이 같은 기능을 Node.js 8.10에 async/await를 사용하는 것처럼 보이는 방법입니다.
또는 핸들러가 다음과 같은 프라미스를 직접 반환하도록 할 수 있습니다.
새 핸들러 유형은 콜백 패턴에 대한 대안이며, 여전히 완전히 지원됩니다.
세 기능이 모두 동일한 결과를 반환합니다. 그러나 async/await가 있는 새 런타임에 코드의 모든 콜백이 사라지므로 읽기 쉽습니다. 이것은 특히 프라미스에 덜 친숙한 사람들에게 해당됩니다.
async/await의 또 다른 큰 장점은 더 나은 오류 처리입니다. 비동기 기능의 범위 내에서 try/catch 블록을 사용할 수 있다. 이 기능이 비동기식 작업을 기다리고 있지만, 어떤 오류도 결국 캐치 블록에 걸리게 됩니다.
신뢰할 수 있는 try/catch 오류 처리 패턴을 사용하여 이전의 Node.js 8.10 기능을 개선할 수 있습니다.
두개의 런타임에 비슷한 수의 라인을 사용하는 동안에는 코드는 async/await을 사용해 더 깨끗하고 읽기 쉽습니다. 그것은 비동기식 호출들을 더욱 동기적으로 보이게 합니다. 하지만, 콜백이나 프라미스 기반의 API를 사용하는 것과 같은 방식으로 코드가 여전히 실행되고 있다는 것에 주목하는 것이 중요합니다.
역 방향 호환성
런타임을 업데이트하여 기존의 Node.js 4.3 및 6.10 기능을 Node.js 8.10에 복사할 수 있습니다. Node.js 8.10은 이전 노드 버전에서 많이 끊어지는 변경 사항을 포함합니다.
코드 영향을 미칠 수 있는 다른 변경 사항이 있는지 확인하기 위해 API 변경 사항을 Node.js 4.3, 6.10 및 Node.js 8.10에서 검토하세요. 새 런타임 버전으로 업그레이드할 때 Lambda 기능이 해당 동작에 대한 내부 유효성 검사를 통과하는지 테스트하는 것이 좋습니다.
운영 트래픽을 시스템에 라우팅 하기 전에 Lambda 버전/별칭을 사용하여 Node 8.10에서 예상대로 작동하는지 안전하게 테스트할 수 있습니다.
새 노드 기능
이제 이전의 LTS 버전 6.x와 비교하여 더 나은 성능을 얻을 수 있습니다(최대 20%). 새로운 V8 6.0엔진에는 Turbofan과 점화 파이프라인이 장착되어 있으며, 이로 인해 메모리 소모가 낮아지고 Node.js 응용 분야에서 시동 시간이 단축됩니다.
향후 변경이 필요한 HTTP/2는 개발자가 새 프로토콜을 사용하여 애플리케이션 개발 속도를 높이고 많은 HTTP/1.1 해결책을 무효화하여 애플리케이션을 더 빠르고 단순하고 강력하게 만듭니다.
자세한 내용은 AWS Lambda 개발자 가이드를 참조하십시오.
당신이 즐기길 바라며… Node.js 8.10으로 구축하세요!
원문 URL: https://aws.amazon.com/ko/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/
** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.