Express v5의 출시는 Node.js 웹 프레임워크의 새로운 시대를 여는 중요한 순간입니다. 이번 업데이트는 10년 전 처음 계획되었으며, 오랫동안 기다려온 커뮤니티의 요구를 반영한 결과입니다. 특히, Express 프로젝트의 핵심 기여자인 Doug Wilson을 비롯한 많은 개발자들의 노력 덕분에 안정성과 신뢰성을 유지한 채로 출시되었습니다.
이번 v5 릴리스의 가장 큰 특징 중 하나는 오래된 Node.js 버전 지원을 중단한 것입니다. 이제 Express는 Node.js v18 이상에서만 작동하며, 이는 성능 개선과 유지보수를 더욱 쉽게 만들어줍니다. 그동안 구버전 지원이 프로젝트의 발전을 저해했던 만큼, 이를 중단함으로써 현대적인 언어 기능과 런타임 최적화를 보다 효과적으로 사용할 수 있게 되었습니다. 또한, 이로 인해 더 이상 필요 없는 의존성들을 제거할 수 있게 되었으며, 지속적인 통합(CI)도 한층 더 안정적이고 관리하기 쉬워졌습니다.
또한, 경로 매칭 및 정규 표현식 처리 방식이 변화했습니다. 기존에는 정규 표현식의 "서브 표현식"을 지원했지만, 이는 ReDoS(정규 표현식 서비스 거부 공격)와 같은 보안 취약점의 원인이 될 수 있어 이번 업데이트에서 제거되었습니다. 대신, Express v5는 더욱 간결한 경로 작성 패턴을 도입하여 보안성을 높였습니다. 예를 들어, :name?와 같은 패턴이 {name}으로 바뀌었으며, 경로에서 선택적 부분을 더욱 명확하게 표현할 수 있게 되었습니다. 이렇게 보안 문제를 해결한 덕분에, 사용자는 보다 안전한 웹 애플리케이션을 구축할 수 있습니다.
Promise 지원 역시 Express v5의 중요한 개선 사항 중 하나입니다. 이전 버전에서는 비동기 코드를 처리할 때 오류 처리가 복잡했지만, 이제는 async/await 구문을 사용해 간단히 비동기 작업을 처리할 수 있으며, 오류가 발생할 경우 자동으로 에러 처리 미들웨어로 전달됩니다. 이는 비동기 코드 작성에 있어 유연성과 안정성을 크게 향상시킵니다. 예를 들어, 미들웨어 내에서 async 함수를 사용해 데이터를 비동기로 가져오고, 오류가 발생하면 이를 자동으로 처리하는 구조를 쉽게 구현할 수 있습니다.
Body parser 변경 사항도 주목할 만합니다. Express v5는 더 이상 bodyParser() 미들웨어를 기본으로 포함하지 않으며, req.body가 항상 {}로 초기화되지 않습니다. 또한, URL 인코딩된 바디의 깊이를 사용자 정의할 수 있는 옵션이 추가되었고, 이는 CVE-2024-45590와 같은 보안 취약점에 대응하기 위한 중요한 변경 사항입니다. 새로운 브로틀리(Brotli) 압축 방식도 추가되어 데이터 전송 효율성이 향상되었습니다.
마지막으로, 더 이상 사용되지 않는 메서드 서명이 제거되었습니다. 예를 들어, res.redirect('back')와 같은 문법은 이제 지원되지 않으며, 대신 req.get('Referrer') || '/'와 같은 명시적인 방법을 사용해야 합니다. 이러한 변경은 API의 일관성을 높이고, 코드 가독성을 향상시키기 위한 것입니다. 오래된 문법이 사라지면서 Express의 API는 더 예측 가능하고, 개발자들이 쉽게 이해할 수 있는 형태로 발전되었습니다.
Express 팀은 이번 v5 릴리스를 “지루한 릴리스”라고 표현했는데, 이는 새로운 기능보다 안정성과 보안성에 더 집중했기 때문입니다. Express는 오랫동안 정체되어 있었던 프로젝트였지만, 이번 업데이트를 통해 생태계를 다시 활성화하고 더 나은 방향으로 나아가려는 의지를 보여줍니다. 이번 릴리스는 단순히 과거의 문제를 해결한 것에 그치지 않고, 향후 더욱 혁신적인 기능들이 추가될 기반을 마련한 단계라고 할 수 있습니다.
마지막으로, Express는 앞으로도 커뮤니티와 긴밀히 협력하여 프로젝트를 지속적으로 개선할 계획입니다. 특히 장기 지원(LTS) 계획을 곧 발표할 예정이며, Express의 사용자가 안정적인 환경에서 최신 버전으로 쉽게 전환할 수 있도록 돕기 위한 여러 지원 프로그램을 준비하고 있습니다. Express v5는 보안, 성능, 유지보수 측면에서 큰 개선을 이루었으며, 앞으로도 다양한 사용자들에게 안정적인 웹 프레임워크로 자리잡을 것입니다.
'코딩 > Javascript' 카테고리의 다른 글
[Node.js] Express 속도제한(Rate Limit) (0) | 2022.03.27 |
---|---|
[Javascript] 시간 포맷하기(며칠 전, 몇시간 전 등) (2) | 2022.02.16 |
ms를 문자열로 포맷하기 (0) | 2021.10.16 |
Node.js 자동 재시작 (supervisor) (0) | 2021.10.16 |
유튜브 영상 iframe으로 만들기 (0) | 2021.07.12 |