Bạn có thể quen thuộc với TJ Holowaychuck từ một trong 550 mô-đun của mình trên npm, bao gồm cả express . TJ nổi tiếng với công việc Node.js của mình, nhưng gần đây anh ấy đã chuyển sang Go và đang làm việc cho công ty khởi nghiệp tự tài trợ của mình được gọi là Apex . Chúng tôi muốn theo kịp anh ấy về dự án mới của anh ấy và tìm hiểu thêm về công nghệ mà anh ấy đã chọn cho sản phẩm đầu tiên của mình có tên Ping .

Lý lịch

Auth0: Bạn có thể cho chúng tôi biết một chút về bản thân bạn không?

TJ: Tôi là một kỹ sư phụ trợ và frontend từ Canada. Trước đây tôi là một phần của nhóm phụ trợ giúp mở rộng phân khúc.com lên hàng tỷ sự kiện mỗi ngày. Gần đây tôi đã thành lập công ty phần mềm của riêng mình, Apex, với tư cách là một liên doanh tự tài trợ độc lập, với Apex Ping là sản phẩm "vi mô" đầu tiên của tôi.

Auth0: Bạn có thể cho chúng tôi biết thêm về Apex Ping không? Nó là gì và nó làm gì?

TJ:  Apex Ping là một công cụ giám sát hiệu suất và thời gian hoạt động với khả năng báo cáo và cảnh báo phong phú. Bất cứ ai duy trì trang web, ứng dụng hoặc API đều có thể tạo "kiểm tra", các yêu cầu HTTP được thực hiện đối với điểm cuối HTTP mỗi phút từ một số vị trí có thể chọn trên toàn cầu.

Cảnh báo và báo cáo hàng tuần giữ cho nhóm thông báo để khách hàng của bạn luôn được cung cấp trải nghiệm tốt nhất có thể.

Ngăn xếp công nghệ

Auth0: Bạn đang sử dụng ngăn xếp nào cho Apex Ping?

TJ: Ngoại trừ máy chủ ứng dụng và trang tiếp thị, toàn bộ sản phẩm là "serverless", chạy trên AWS Lambda. Tất cả cơ sở hạ tầng phụ trợ và mã API được viết bằng Go.

Kiểm tra và cảnh báo được thực hiện theo đợt và song song, với SNS nằm giữa mỗi phân đoạn của đường ống cho khả năng thoát quạt, rất hữu ích cho những việc như lưu trữ S3. Tôi cũng đang sử dụng AWS Firehose một chút. Công cụ được sử dụng để quản lý và triển khai các chức năng là Apex .

Cơ sở dữ liệu lựa chọn chính của tôi là Postgres (RDS) và kết quả "kiểm tra" được lưu trữ trong Elaticsearch (được lưu trữ bởi AWS). Tôi cũng sử dụng Elaticsearch & Kibana để đăng nhập nội bộ, với một số mã tùy chỉnh để cảnh báo, cũng chạy trong Lambda.

Trên frontend, các gói đáng chú ý tôi đang sử dụng là React, D3, Browserify, PostCSS và Babel.

Auth0: một số lý do bạn quyết định về ngăn xếp này là gì?

TJ: Động lực lớn nhất đối với tôi là khả năng mở rộng, hiệu suất và bảo trì thấp. Giá AWS Lambda hiện tại hơi dốc đối với các trường hợp sử dụng chuyên sâu I / O như thế này, nhưng khả năng mở rộng, quy trình làm việc và bảo trì rất tuyệt vời. Tôi đã căng thẳng thử nghiệm nền tảng với tương đương 5.000 người dùng không có vấn đề và không có công việc bổ sung nào từ phía tôi.

Tôi cũng sử dụng Lambda cho nhiều chương trình nhỏ, trong đó "thu thập rác" các chỉ mục Elaticsearch, cảnh báo chống lại cụm đăng nhập của tôi, thực hiện cuộn chỉ số cho Postgres, trong số những thứ khác.

Tôi đã đi với Elaticsearch vì tính linh hoạt và hiệu suất truy vấn của nó. Tôi tin rằng có một số cải tiến có thể được thực hiện cho trường hợp sử dụng chuỗi thời gian, đặc biệt là về nén, nhưng nó đã hoạt động tốt cho đến nay. Ngôn ngữ truy vấn JSON có thể hơi khó xử, nhưng nó rất linh hoạt và Elaticsearch có một số tùy chọn tuyệt vời để phân loại tỷ lệ, thông qua các phím định tuyến, v.v.

Ở mặt trước, tôi chọn React. Tôi bị thu hút bởi khía cạnh chức năng và tính mô đun mà nó cung cấp. Đường cong học tập rất thấp, loại bỏ một số thói quen cũ. Nếu không, nó đã là một công cụ tuyệt vời để làm việc với!

Xác thực và ủy quyền

Auth0: một số cân nhắc bạn cần thực hiện liên quan đến xác thực và ủy quyền là gì?

TJ: Mối quan tâm chính của tôi là trải nghiệm người dùng. Tôi muốn sử dụng OAuth phía trước và trung tâm để loại bỏ quá trình đăng ký cho người dùng. Nó cũng quan trọng đối với tôi để có một cái nhìn tùy chỉnh, để phù hợp với thiết kế tối giản của Apex Ping.

Tôi cũng thực sự muốn sử dụng JSON Web Tokens (JWT) để xác thực và ủy quyền không trạng thái, cắt giảm lượng cơ sở hạ tầng cần thiết.

Auth0: Auth0 đã giúp với điều này như thế nào?

TJ: Tài liệu của Auth0 rất tuyệt vời, thật dễ dàng tìm thấy một ví dụ cho React & Go để bắt đầu ngay lập tức. Phần mềm trung gian Go JWT nguồn mở được cung cấp hoạt động như quảng cáo.

Sử dụng Auth0 có nghĩa là tôi không phải mất nhiều ngày loay hoay với các giải pháp nửa vời, điều này đặc biệt gây khó chịu với các thông số kỹ thuật mới, chẳng hạn như OpenID Connect. Với Auth0, tôi chỉ có thể tập trung vào việc xây dựng ứng dụng của mình, thay vì phát minh lại auth.

Auth0: Gần đây, bạn đã xuất bản một gói có tên auth0-lite đến npm. bạn có thể nói với chúng tôi về nó không?

TJ: Các thư viện máy khách JavaScript được cung cấp bởi Auth0 thông qua CDN của họ cung cấp một số khả năng mạnh mẽ. Tuy nhiên, với trường hợp sử dụng của tôi khá đơn giản và có giao diện tùy chỉnh, tôi quyết định giảm nhẹ mọi thứ. Gói npm auth0-lite của tôi là một phần nhỏ của kích thước chỉ với các yêu cầu tối thiểu cho trường hợp sử dụng của tôi. Tôi đã đưa ra ý tưởng về các gói nhẹ với nhóm Auth0, và họ rất tuyệt vời và dễ tiếp thu ý tưởng này!

Kết thúc

Auth0: Cảm ơn bạn đã dành thời gian trò chuyện với chúng tôi về dự án mới của bạn, chúng tôi chúc bạn mọi điều tốt đẹp nhất với nó! Có bất cứ điều gì khác độc giả có thể kiểm tra?

TJ: Hãy xem các tính năng của Ping và kiểm tra gói miễn phí nếu bạn quan tâm. Hãy theo dõi các dự án Apex sắp tới!