2012-09-18 23 views
7

Tôi đã sử dụng java + spring trên tomcat trong 2 năm qua và ứng dụng của tôi đang nhận được sự chú ý lớn. Thời gian khởi động bây giờ đã gần 3 phút và nó tiêu thụ rất nhiều tài nguyên trong quá trình phát triển.Làm thế nào để bạn phát triển/triển khai các ứng dụng doanh nghiệp lớn trong java

Vì vậy, tôi quan tâm đến các ý tưởng về cách làm cho việc phát triển một phần mềm thú vị trở lại. Tôi đã xem xét bản thiết kế Spring DM/Gemini để làm cho nó trở thành một mô-đun nhưng trải nghiệm không thuận tiện.

Bây giờ nhiều mô-đun sắp được thêm vào, hãy nghĩ về việc phát triển một ứng dụng web khác và sử dụng tích hợp Spring cho nhắn tin. Rõ ràng, đây sẽ là một kinh nghiệm rất đau đớn để phát triển nó trên một máy tính để bàn.

Có ai có kinh nghiệm về phát triển đám mây không? Làm cách nào để cải thiện tất cả các tác vụ tốn thời gian và tài nguyên này? Việc phát triển trên đám mây có giúp tôi không?

+0

Câu hỏi thực tế có liên quan đến việc cắt thời gian triển khai cho tomcat đang chạy trên máy phát triển của bạn không? Bạn đã xem xét jRebel chưa? – Affe

Trả lời

8

Đây là vấn đề rất phổ biến với các ứng dụng web java + spring điển hình. Với độ tuổi họ bắt đầu nhận được bloated và Context Loading bắt đầu trở nên đau đớn. Tôi có thể đề xuất một vài gợi ý để giảm thiểu vấn đề, nhưng chỉ bạn mới có thể đánh giá tốt nhất cho bạn tùy thuộc vào những gì chính xác trong ứng dụng của bạn.

  1. Không phụ thuộc nhiều vào máy chủ trong khi phát triển. Viết các bài kiểm tra Đơn vị và chạy chúng bên ngoài thùng chứa servlet. Mùa xuân đã hỗ trợ tuyệt vời cho việc này.

  2. Tách logic doanh nghiệp của bạn trong các dịch vụ web Rest/Soap (thận trọng và cẩn thận). Điều này cho phép bạn tự do phát triển và thử nghiệm giao diện người dùng độc lập với logic kinh doanh cốt lõi.

  3. Nếu sử dụng maven/gradle, hãy thử plugin jetty. Nó có thể tiếp tục quét cho các thay đổi và tải lại webapp tự động (tôi nghĩ rằng plugin tomcat có thể làm tương tự). Nó có khả năng lưu trữ phiên giữa khởi động lại, do đó bạn không bị ảnh hưởng bởi khởi động lại. Vui lòng xem chi tiết này để biết thêm chi tiết How can I speed up Maven and Netbeans

  4. [Tùy chọn trả phí] có thể dùng thử JRebel.

  5. Sử dụng máy chủ CI, tiếp tục tích hợp/thử nghiệm/triển khai ứng dụng của bạn, lấy một số tải ngoài máy phát triển của bạn.

+0

Cảm ơn bạn! Câu trả lời của bạn là điều tôi đang tìm kiếm. Tôi đặc biệt quan tâm đến máy chủ CI. Vì vậy, chúng tôi sẽ phát triển thêm khoảng hai ứng dụng mùa xuân riêng biệt. Máy chủ CI sẽ cứu tôi khỏi nỗi đau khi chạy hai ứng dụng song song trên máy tính cục bộ của tôi (mà vẫn có cơ hội KHÔNG chạy thành công do giới hạn tài nguyên)? – beku8

+1

Tôi rất vui vì nó đã giúp ích. Máy chủ CI sẽ thực sự tỏa sáng khi bạn có phạm vi kiểm tra tốt. Máy chủ CI có thể tiếp tục triển khai các ứng dụng đến máy chủ dev và trong khi phát triển trên máy cục bộ của bạn, bạn có thể trỏ đến máy chủ thông thường khi truy cập chức năng do các ứng dụng khác cung cấp để bạn chỉ chạy một ứng dụng cục bộ. – kunal

8

Trước tiên, hãy quan tâm đến các tắc nghẽn. Họ có xu hướng leo vào các dự án khi họ phát triển. Thiết kế ban đầu đã bị xâm nhập một lần nữa và một lần nữa để đáp ứng thời hạn điên rồ và bây giờ sưng lên đã giết chết một ứng dụng một lần sống động.

Đừng đoán vấn đề nhưng sử dụng dữ liệu thực để xác định điều gì làm cho ứng dụng của bạn chậm. Sử dụng profiler như jProfiler: http://www.ej-technologies.com/products/jprofiler/overview.html

Tiếp theo, hãy sử dụng những gì bạn đã học để làm cho mô-đun mới hiệu quả hơn. Điểm mấu chốt là thay đổi công nghệ không phải là một sửa chữa tất cả, như tất cả các công nghệ có thể trình bày tắc nghẽn. Bạn phải tìm lý do đằng sau vấn đề và khắc phục điều đó.

Khi bạn sửa chữa các nút cổ chai, bạn có thể tạo một số dự án thử nghiệm trên một công nghệ mới để xem liệu nó có nhanh hơn, dễ dàng hơn hay không, những gì bạn cần. Nhưng, rất có thể chỉ là sửa chữa các vấn đề trên ngăn xếp hiện tại của bạn là tất cả những gì cần thiết.

+0

Cảm ơn bạn đã bình luận, nhưng tôi cho rằng các trình biên dịch có nhiều liên quan đến hiệu suất sản xuất hơn là bắt đầu phát triển (đó là câu hỏi ban đầu tôi định hỏi)? – beku8