2019년에 더 나은 Node.js 개발자가 되는 방법

풀어 주다: 2019-01-11 10:26:29
앞으로
2924명이 탐색했습니다.

이 기사에는 2019년에 가치 있을 수 있는 19가지 기술과 주제가 정리되어 있습니다. 하지만 어떤 부담도 느끼지 마세요. 저와 대부분의 다른 개발자들은 모든 주제에 익숙하지 않습니다. 저는 이러한 것들이 우리의 관심을 받을 가치가 있다고 생각하며 JavaScript 생태계는 결코 끝나지 않습니다.

1. 유형 및 패턴 증가 - TypeScript는 2019년에 매우 좋은 후보입니다.

알고 보니, Typeless 인코딩이군요. 비효율적일 뿐만 아니라 오류가 발생하기 쉽습니다. 그러나 이는 엄격한 유형 구문을 사용해야 한다는 의미는 아닙니다. JSON 스키마나 Joi를 사용하여 엔터티와 모델을 확인하거나 정적 유형을 사용하여 JS에 주석을 추가하는 등 실제 상황에 따라 유형의 엄격성을 선택할 수 있습니다. https: //github.com/facebook/flow)로 이동하거나 전체 TypeScript를 사용하세요.

TypeScript는 2018년에 상당한 발전을 이루었고 Node 영역에 진입한 것 같습니다. TypeScript를 사용할 계획이라면 해당 유형 기능만 사용할 것인지 스스로에게 물어봐야 합니다. 인터페이스와 추상 클래스도 사용하려면 새로운 프로그래밍 패러다임을 배워야 할 수도 있습니다.

2. 린터를 풍부하게 만드세요

Linter는 실제로 무료입니다. 설정하는 데 5분밖에 걸리지 않으며 무료로 자동 코드 보호를 받을 수 있으며 코드를 입력하면 검색됩니다. 주요 문제. 보푸라기가 그저 화려했던 시대는 지났습니다. 오늘날 린터는 제대로 발생하지 않는 오류, 누락된 정보, 이행되지 않은 약속, 코드에 절대로 머물고 싶지 않은 기타 버그 등 심각한 코드 문제를 포착할 수 있습니다.

3. Java는 늘리고 Ruby는 줄입니다. - 아키텍처 지식을 심화합니다.

NodeJS 생태계의 아키텍처와 디자인에 대한 지식은 많지 않으며 모두가 마이크로서비스에 대해 이야기합니다. , 그러나 일부 내부 구조에 대해서만 가능합니다. 따라서 대부분의 애플리케이션과 예제는 Ruby의 다른 패턴과 함께 MVC 개념을 기반으로 합니다. 이게 무슨 문제야? MVC는 콘텐츠 서비스 구축에는 적합하지만 강력한 백엔드 구축에는 그리 좋지 않습니다. 전체 비즈니스 논리, 규칙, 데이터 액세스, 다른 마이크로서비스와의 통신을 설명하기 위해 컨트롤러와 모델이라는 두 가지 클래스를 사용할 수 있습니까?

저는 무거운 Java/Spring 패턴을 사용하는 것을 절대 권장하지 않지만(그래서 우리가 Node 영역에 있는 것 아닌가요?) 애플리케이션 단순성을 희생하지 않고 가치를 제공하는 것을 선택합니다. 생각.

4. 더 나은 추적 및 컨텍스트를 위해 비동기 후크를 활용하는 방법을 계획합니다.

단일 스레드 모델에는 단점이 있습니다. 요청이 여러 파일을 통해 전달되고 수행될 때 컨텍스트가 손실됩니다. 비동기 작업에서는 변수가 수명 동안 유지되지 않습니다. 이것이 왜 나쁜가요? 예를 들어 개발자는 나중에 동일한 요청에 대한 모든 로그 항목을 상호 연관시킬 수 있도록 각 로그 항목에 고유 식별자를 포함하려고 하는 경우가 많습니다. 이는 2018년에 달성하기가 그리 쉽지 않습니다.

2019년에는 새로운 것이 나올 예정이며, Async Hook이 그 중 하나입니다(완전히 새로운 기능은 아니지만 곧 실험 단계가 종료될 예정입니다). 간단히 말해서 A 메커니즘입니다. 비동기 작업이 시작되고 끝날 때 언제든지 사용자 지정 코드를 삽입할 수 있습니다. 이를 통해 동일한 요청에 대한 모든 코드를 연관시키고 컨텍스트를 보존할 수 있습니다. 이는 Node의 추적 및 상황별 기능을 다음 단계로 끌어올리는 많은 사용자 정의 패키지의 기반을 마련했습니다.

5. "서버리스"의 최신 정보를 알아보세요.

참고: 여기서는 FaaS와 서버리스라는 용어가 정확히 동일하지는 않지만 같은 의미로 사용됩니다.

원래 FaaS는 "마이크로서비스" 애플리케이션이 아닌 마이크로태스크 개발에 사용되었습니다. 인기가 높아짐에 따라 클라우드 제공업체의 욕구도 커졌고 곧 새로운 기능이 쌓이기 시작했으며 2019년에는 강력한 애플리케이션 인프라처럼 보였습니다.

이제 Kubernetes와 경쟁하여 대규모 애플리케이션을 제공할 수 있습니까? 일부에서는 서버리스와 FaaS를 직교 기술로 간주하지만 실제로는 2019년의 모든 새로운 클라우드 애플리케이션은 베어 메탈 인스턴스(예: EC2 또는 GCP Compute), Kubernetes 또는 FaaS 중 하나를 선택해야 합니다. 따라서 K8S와 FaaS/Serverless를 이해하고 차이점을 아는 것이 필수적인 설계 스킬이 될 것입니다.

6. 최신 JavaScript 기능에 대해 알아보세요.

저는 모든 새로운 언어 기능을 쫓는 것을 별로 좋아하지 않습니다. 때때로 이 빛나는 장난감은 코드 단순성 원칙을 위반할 수 있습니다. 진정으로 가치 있는 일부 JavaScript 기능은 시간이 지남에 따라 안정화될 것이므로(예: 2년 전에 도입된 async/await) TC39 제안 목록과 node.green을 확인해 볼 가치가 있습니다.

7. 하나 이상의 API 기술에 익숙해지세요 - GraphQL은 2019년에 좋은 후보입니다

REST 스타일 API는 엔터티의 수정 및 쿼리를 효과적으로 제어할 수 있도록 설계 목표를 보완합니다. 금융 기록 시스템이 있다고 가정하면 끝점을 매우 엄격하게, 즉 단일 명시적 데이터 모델로 설계할 수 있습니다. 그러나 다양한 데이터 세트를 반환할 수 있는 일련의 쿼리 실행, API 페이로드를 최소화해야 하는 저대역폭 네트워크, 속도가 강조되는 기계 간 통신 등 REST가 부족한 매우 일반적인 다른 시나리오도 있습니다. 등. 그럼 다른 것으로 교체해야 할까요? 물론 그렇지 않습니다. 혼합하여 선택할 수도 있습니다. API는 아키텍처가 아니며 단지 애플리케이션에 대한 포트(예: 진입점)일 뿐이며 Express와 같은 단일 웹 프레임워크 위에서도 여러 API 스타일이 공존할 수 있습니다.

그럼 어떤 것을 배워야 할까요? 가장 좋은 방법은 아마도 주류가 되고 있는 GraphQL일 것입니다. 생태계는 매우 성숙했으며 동적 검색 및 계층적 데이터 소스와 같은 매우 널리 사용되는 사용 사례를 제공합니다. 반면, gRPC는 오버헤드가 거의 없기 때문에 여전히 서버 간 통신에 적합한 틈새 기술입니다(예: Pub-Sub/메시지 대기열 시스템에 사용됨).

8. 단위 및 통합 테스트를 넘어서

테스팅 피라미드, 단위, 통합 및 엔드투엔드 테스트에 이미 익숙하십니까? 좋습니다. 이것이 성공적인 테스트 전략의 기초입니다. 지난 10년 동안 개발 환경이 크게 바뀌었지만 테스트 모델은 거의 동일하게 유지되어 마이크로서비스, 풍부한 프런트엔드, 서버리스 등을 테스트하는 방법이 궁금합니다. 일부 최신 기술은 기존 기술 스택을 보완하고 때로는 대체하여 보다 효율적인 테스트 전략과 더 높은 ROI를 가능하게 합니다.

9. 모니터링 시 SRE/DevOps 모범 사례를 따르세요.

2019년에는 중간 규모 애플리케이션에도 수십 개의 움직이는 부품이 포함될 수 있습니다. 그러나 대부분의 개발자는 SRE 엔지니어가 가르치는 모니터링 및 경고 측면을 배우는 데 어려움을 겪지 않습니다. 예를 들어 개발자는 오류율이나 대기 시간과 같이 최종 사용자 경험에 직접적인 영향을 미치는 지표를 생각하기보다는 CPU 및 메모리와 같은 내부 하드웨어 지표에 우선 순위를 지정하고 집중하는 경우가 많습니다. 이러한 고객 대면 지표를 "황금 신호"라고도 하며, 2019년에는 이러한 지표에 주의를 기울이고 유사한 모범 사례를 채택하는 것부터 시작하는 것이 좋습니다.

10. 공격자처럼 생각하기: 공격 도구와 기술을 학습하여 보안 수준을 높이세요.

공격자처럼 생각할 수 없다면 방어자처럼 생각할 수도 없습니다. 2019년에는 방어를 타사에 아웃소싱하거나 정적 보안 스캐너에만 의존해서는 안 됩니다. 공격 유형의 수가 압도적이고 애플리케이션 변경 속도는 통제할 수 없습니다. 보안 워크숍을 이틀 동안 진행한 후, 팀은 몇 가지 새로운 AWS 서비스, 데이터베이스 유형 및 새로운 IAM 역할을 추가했을 수 있습니다. 따라서 개발자는 실제로 가장 큰 숨겨진 위협이며, 그들을 교육하는 것이 궁극적인 해결책인 것 같습니다. 보안 DNA를 자신과 팀에 뿌리 내리고 모든 것에 보안을 추가해야 합니다.

이 작업을 시작하면 결국 보안 문제는 그다지 무섭지 않다는 것을 알게 됩니다. 일반적인 공격 유형과 도구에 익숙해지고, 애플리케이션 아키텍처와 흐름을 그려보고, 직접 공격할 방법을 생각하면 됩니다. 시간이 지남에 따라, 그리고 깨닫기도 전에 모든 디자인 결정과 작성하는 모든 코드 줄에서 보안에 대해 생각하게 될 것입니다.

11. 패키지 업데이트 전략 개발

2018년의 교훈: 너무 일찍 업데이트하는 것은 위험할 수 있습니다. 팀은 일반적으로 다음 두 가지 패키지 업데이트 전략 중 하나를 사용합니다. 하나는 가능한 한 빨리 업데이트하는 것이며 때로는 자동화된 프로세스를 사용하는 경우도 있습니다. 하나는 업데이트 전략이 전혀 없고 기분에 따라 업데이트가 이루어지는 경우도 있다는 것입니다. 첫 번째 방법이 더 나은 것처럼 보였지만 놀랍게도 2018년에는 가장 위험한 방법이 되었습니다. 40일 이내에 커뮤니티에서는 플랫 스트림과 같은 악성 패키지 사고가 여러 건 발견되었습니다. 기다리고 있는 사람이나 업데이트하지 않은 사람은 괜찮았습니다. 업데이트 전략을 공식화하고 업데이트 없음과 업데이트 사이의 최적 지점을 찾으려면 자동화된 도구를 사용하는 것이 좋습니다.

12. 점진적인 설치와 별도의 배포 및 릴리스 단계를 수행하세요

2019년에는 보다 안전한 배포를 수행하는 것이 중요할 수 있습니다. 즉, 모든 프로덕션 환경에 한꺼번에 롤아웃하지 말고 Banging과 같은 작은 마음을 갖도록 하십시오. 망치처럼. 세분화된 배포(일명 카나리아 배포) 수행은 3단계로 나눌 수 있습니다. 배포 – 격리된 새 프로덕션 환경(예: 새 Kubernetes 서비스 또는 새 머신 인스턴스)에 새 코드를 보냅니다. 이 단계에서는 실제 사용자에게 서비스를 제공하지 않으므로 걱정할 필요가 없습니다. 테스트 – 이제 소수의 사람들이 프로덕션 환경의 인스턴스를 사용하고 새 코드를 테스트할 수 있습니다. 출시 - 점차적으로 더 많은 사용자가 새 버전을 사용할 수 있도록 허용하고, 충분히 확신이 들면 이전 버전을 제거할 수 있습니다.

참고: 본격적인 카나리아 배포를 수행하려면 라우팅 및 모니터링과 같은 많은 인프라 부분을 조정해야 하기 때문에 2019년에도 여전히 비용이 많이 듭니다. 따라서 간단한 반수동 카나리아 배포부터 시작하는 것이 좋습니다(예: 모니터링 지표를 기반으로 배포된 새 버전으로 더 많은 호스트를 수동으로 가동).

13. Kubernetes가 세상을 먹어치우고 있습니다.

분명한 추세가 있습니다. 애플리케이션 구성 요소에 네트워킹, 확장, 배포 및 기타 백본 서비스를 제공하는 인프라인 Kubernetes(K8S)는 이제 거의 독점적으로 애플리케이션을 호스팅하는 데 사용됩니다. 사실 표준. 그 인기는 엄청납니다. 모든 클라우드 공급업체의 지원과 독보적인 확장 에코시스템을 통해 기업의 54%가 이미 하나 이상의 K8S 클러스터를 보유하고 있습니다.

초보자라면 시작하기 좋은 개요가 여기에 있습니다. 또한 Istio, K-Native, Kuberenes 작업, 네트워크 정책, Helm, Scaffold에 대해 알아보세요. 결론: K8S 기술에 대한 더 깊은 이해를 개발하는 데 소비한 시간은 궁극적으로 성과를 거둘 것입니다.

14. 블록체인 기술은 훌륭한 기회를 제공합니다

매우 분명한 추세: 블록체인은 비트코인 ​​및 암호화 기능에만 사용되는 것이 아니라 모든 분산 거래 시스템에도 사용할 수 있습니다.

15. 머신러닝 기술을 습득하고 최소한 몇 가지 논점을 확보하세요.

아주 분명한 추세입니다. 안타깝게도 저는 머신러닝 라이브러리에 대해 아무것도 모릅니다. 빠른 성공 기회를 식별할 수 있습니다(예: tensorflow.js 및 Brain.js와 같은 JS 라이브러리는 강력한 인프라 없이 일부 통찰력을 제공할 수 있음).

16. 다른 오픈 소스 라이브러리 코드 이해하기

한 프로젝트에서 동일한 기술을 오랫동안 사용하면 시야가 좁아지고 많은 대안이 숨겨질 수 있다는 점에 유의하세요. 따라서 다른 프로젝트, 주로 성공적인 오픈 소스 프로젝트에 대해 자세히 알아보십시오.

17. Linux 프로세스에 초점을 맞춰 Linux 운영 체제에 대한 이해를 심화하세요.

Linux 프로세스를 이해하면 모니터링, 프로세스 보호, Docker 사용, 우아한 종료 및 다른 작업. 프로세스, 신호, 권한 모델, 일반적인 명령, 프로세스 유형 등을 이해하려고 노력하십시오.

18. Node.js 내부를 살펴보세요

Node.js의 원저자인 Ryan Dahl이 "모든 것을 이해할 수는 없습니다. 하지만 시스템은 스스로 이해해야 합니다."라고 말한 말이 정말 마음에 듭니다. 기본 머신에 대한 깊은 이해는 프로덕션 문제를 해결하거나 이벤트 루프 성능 모니터링과 같은 일부 인프라 구성 요소를 설계해야 할 때 유용합니다. 여러분은 이미 v8 및 libuv와 같은 핵심 빌딩 블록에 익숙할 것입니다.

그래서 2019년은 Node.js에 대해 더 많이 배울 수 있는 좋은 시기입니다. 예를 들어, 각 libuv 이벤트 루프 주기에서 정확히 무슨 일이 일어나는가? 아니면 운영 체제 IO와의 상호 작용 방식(예: 활동 핸들)을 이해하고 계십니까?

19. 과학적인 방법을 사용하는 법을 배우십시오

배우고 내면화하는 것이 미래의 경력을 형성할 것입니다. 그러나 많은 개발자들은 학습 전략도 없고 효과적인 학습을 위해 과학적 방법을 사용하는 방법도 배우지 않았습니다.

"JavaScript 유형 오류 방지"에 대한 회의에서 VP는 전체 코드베이스를 리팩토링하지 않고(TypeScript를 사용하지 않고...) JavaScript를 계속 사용할 것을 요청했고 갑자기 동료 중 한 명이 Facebook Flow 사용을 제안했고 방에 있던 모든 사람은 모두가 동의합니다! 당신은 이전에 그것에 관한 기사를 본 적이 있다는 것을 갑자기 기억하지만 그것은 결코 당신에 의해 내면화되지 않았으며 단지 당신의 마음을 스쳐 지나갔습니다.

무슨 일이에요?

분명히 우리가 이러한 것들을 잊어버리는 이유를 설명하는 "경쟁 환상"이라는 현상이 있습니다. 블로그 게시물을 읽는 데 한 시간이 걸렸지만 며칠 내에 기억하지 못할 수도 있습니다! 연구에 따르면 나중에 이러한 사항에 대해 누군가와 이야기를 시도하거나 다음 날 기사 요약을 다시 읽으면 기억력 성공률이 크게 향상될 수 있습니다. 물론 적시에 올바른 지식을 기억하고 획득하는 데 도움이 되는 다양한 기술이 있습니다. 공부하는 방법을 배우는 데 몇 시간을 투자하면 경력에 큰 이익을 얻을 수 있습니다!


위 내용은 2019년에 더 나은 Node.js 개발자가 되는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:微信公众号InfoQ
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿