Thời gian khởi động ứng dụng web có thực sự quan trọng?


11

Có một cuộc trò chuyện với ai đó về việc thêm một số mã khởi tạo khi khởi động ứng dụng và anh ta phàn nàn về điều đó gây ra sự gia tăng thời gian khởi động. Anh ta không thể thực sự nêu ra một lý do (cảm giác ruột hoặc cái gì đó, không biết). Đây không phải là một ứng dụng sử dụng nhiều và bắt đầu trong khoảng một phút hoặc lâu hơn, chúng tôi triển khai một vài lần trong năm.

Tôi nhớ đã đọc những lời khuyên như vậy về các câu hỏi trên SO một thời gian trước đây, mọi người khuyên nên khởi tạo khi khởi động thay vì truy cập trang có đóng dấu "nếu bạn có đủ khả năng trả tiền phạt".

Tôi đã làm việc với các ứng dụng web bắt đầu từ 30 giây đến 4-5 phút nhưng một khi trực tuyến, chúng rung chuyển.

Vậy tôi còn thiếu gì? Trừ khi đó là một ứng dụng quan trọng như ... Tôi không biết ... đối với thị trường tài chính, ứng dụng y tế, thám hiểm không gian, v.v., nó có thực sự quan trọng trong thời gian khởi nghiệp không?

PS Tôi hoàn toàn đề cập đến các ứng dụng web, các ứng dụng máy tính để bàn chắc chắn sẽ bắt đầu nhanh như chớp.


Có một yêu cầu phi chức năng được xác định cho ứng dụng khởi động hay đây chỉ là một cuộc thảo luận trong quá trình phát triển?
StuperUser

@StuperUser: không có yêu cầu, chỉ là một cuộc thảo luận cho đến nay.
JohnDoDo

Thực sự có một trang web Trải nghiệm người dùng nơi điều này sẽ được hỏi tốt hơn.
Cyclops

@Cyclops: Tôi thực sự quan tâm nhiều hơn đến các lý do ở phía máy chủ của hàng rào, không phải từ phía người dùng.
JohnDoDo

Câu trả lời:


18

Đây có thể là một yếu tố lớn trong quá trình phát triển: nếu nền tảng của bạn không hỗ trợ thay đổi mã trong ứng dụng đang chạy, thì thời gian khởi động trở thành một phần của chu kỳ phản hồi của bạn và ở đó, thậm chí 30 giây là đau đớn và đe dọa đến năng suất.

Đối với môi trường sản xuất, nó thực sự không quan trọng; hoặc một chút thời gian chết là chấp nhận được và 5 phút vẫn không nhiều, hoặc không và bạn phải thực hiện một số loại chuyển đổi trực tiếp.


Vâng, tôi đã tìm hiểu nhiều về chu kỳ phát triển, nhưng không giống như chúng ta thay đổi dấu phẩy, triển khai, thay đổi tên biến, triển khai, v.v. Cá nhân tôi triển khai phát triển tối đa 10 lần / ngày. Một phút khởi động hoặc 1,2 không phải là quá nhiều sự khác biệt.
JohnDoDo

7
@JohnDoDo: Bao nhiêu trong số đó là quy trình làm việc thực sự tự nhiên và bao nhiêu thói quen tránh việc triển khai kéo dài? Một chu kỳ phản hồi nhanh chóng có thể giúp năng suất rất lớn. Đôi khi thực hiện những thay đổi nhỏ, gia tăng và ngay lập tức nhìn thấy kết quả thực sự là những gì bạn cần. 50 năm trước mọi người đã viết các chương trình trên giấy, gửi chúng cho một nhà điều hành và nhận được một kết quả được in vào ngày hôm sau - đôi khi chỉ là một lỗi biên dịch. Có vẻ như đó không phải là một cách làm việc kém hiệu quả với bạn? Đối với nhiều lập trình viên, 10 triển khai của bạn mỗi ngày có vẻ như vậy.
Michael Borgwardt

1
Nếu có thể, hãy đánh giá tùy chọn thực hiện init "giả" hoặc có các cấu trúc được tuần tự hóa vào đĩa với dữ liệu thử nghiệm để tăng tốc thời gian khởi động trong quá trình phát triển.
Vinko Vrsalovic

Tôi đồng ý với Vinko, có cách nào để bạn có thể tắt các hàm init () tốn kém khi xây dựng ở chế độ Gỡ lỗi không? Đừng bận tâm nếu những gì bạn đang khởi tạo sẽ mang lại cho bạn kết quả khác nhau trên Dev và Sản xuất.
AndyMcKenna

4

Tôi tin rằng đây là trường hợp khi nguyên tắc biện chứng nổi tiếng của Hegel là chuyển từ số lượng sang chất lượng thực sự hoạt động.

Bạn thấy đấy, thời gian luôn luôn quan trọng. Tôi đồng ý với những lời của Michael Borgwardt về tầm quan trọng của việc xây dựng nhanh trong quá trình phát triển / thử nghiệm, nhưng tôi khẳng định rằng (có thể theo một cách khác) nó cũng rất quan trọng đối với sản xuất.

Mỗi nhà phát triển đã triển khai một số mã xấu để sản xuất đều biết rằng hotfix được cung cấp trong 5 phút và trong 1 phút là những điều thực sự, thực sự khác nhau.


2

Các câu hỏi thực sự là liệu ứng dụng sẽ hoạt động mà không cần khởi tạo. Chúng tôi có những người tuyển dụng mới, những người ám ảnh về "hiệu suất", câu trả lời của tôi là tôi không quan tâm đến việc bạn đưa ra kết quả sai nhanh như thế nào. IMHO cắt góc, thuật toán xáo trộn vì "nó sẽ nhanh hơn theo cách này" và các ý tưởng tuyệt vời khác chỉ giới thiệu các lỗi.

Nếu việc khởi tạo là bắt buộc thì hãy làm nó. Mất bao nhiêu thời gian khi người dùng cuối nhận được kết quả sai, cuối cùng tìm ra ứng dụng web sai, gọi cho bạn và khiếu nại, và bạn phải quay lại và gỡ lỗi / sửa lỗi / kiểm tra / triển khai lại? Bây giờ hãy hỏi đồng nghiệp của bạn về thời gian đã được tiết kiệm. (và tôi cá là lõi máy chủ của bạn không hoạt động 99%)


2

Câu hỏi này không hỏi về bất kỳ nền tảng cụ thể nào. Có những nền tảng mà thời gian khởi động thực sự rất quan trọng.

Chẳng hạn, trên Google App Engine; nếu trang của bạn không được truy cập (hoặc đúng hơn, được truy cập ít thường xuyên hơn ứng dụng khác trên cùng một nút), đôi khi nó sẽ bị tải.

Do đó, nếu bạn ở dưới 99% tần suất truy cập trang web, thì thời gian khởi động thời gian truy cập; ứng dụng của bạn đang được khởi động lại ở gần như mọi lần truy cập. nếu bạn nằm trong top 1%, thì ứng dụng của bạn sẽ được khởi động trên nhiều nút và mặc dù nhiều lượt truy cập trang sẽ trở lại từ một phiên bản đã bắt đầu, một số vẫn không có, và vì vậy bạn sẽ có thời gian truy cập không liên tục, lâu .

Điều này cũng đúng trên nhiều môi trường lưu trữ khác. Rò rỉ trong các thư viện của bên thứ ba, hoặc thậm chí trong mã của riêng bạn mà chỉ đơn giản là phát hiện ra, có thể có nghĩa là cách đáng tin cậy duy nhất để chạy dịch vụ web của bạn là tải lại mọi yêu cầu (thường từ 100 đến 10.000), và vì vậy thời gian khởi động được trả thường xuyên. Sử dụng mẫu này được chấp nhận khi một ứng dụng bị rò rỉ, nhưng khởi động nhanh chóng; không thể hoạt động khi ứng dụng mất hơn vài giây để bắt đầu.


1

Bạn đang có nguy cơ ứng dụng của bạn bị coi là dưới tiêu chuẩn hoặc tệ hơn nữa là khả năng phát triển của bạn. Giờ đây, ứng dụng này có thể tiết kiệm cho ai đó rất nhiều thời gian và / hoặc thực hiện một nhiệm vụ cần thiết đến mức những người dùng biết ơn có thể nhìn qua quá trình khởi động dài.

Có thể mất nhiều thời gian hơn để lập trình theo cách tải ứng dụng một cách lười biếng, nhưng chỉ các bên liên quan mới có thể xác định liệu nó có xứng đáng hay không. Tôi đã có một báo cáo chạy trong 55 giây. và chúng tôi đã giảm xuống còn 35. Không ai để ý. Mặc dù tôi đã dành gấp đôi thời gian để có được nó từ 35 đến 18, nhưng mọi người đều chú ý và rất biết ơn và ấn tượng. Đi từ 5 đến 3 phút cho một ứng dụng được sử dụng vài lần một năm không phải là vấn đề lớn. Người dùng sẽ chỉ có ít thời gian hơn để sử dụng Facebook hoặc uống cà phê.

Nhận thức là chìa khóa. Nếu công ty không hài lòng với các nhóm phát triển nói chung và ứng dụng này nói riêng, bạn có thể muốn xây dựng một số thiện chí và tăng tốc mọi thứ.


Tuy nhiên, thời gian khởi động ứng dụng web không nên ảnh hưởng đến người dùng bình thường. Nhà phát triển khác cảm thấy khó chịu vì cá nhân anh ta khởi động lại ứng dụng nhiều lần trong ngày như một phần của sự phát triển thường xuyên.
AndyMcKenna
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.