Tôi đoán câu hỏi này có vẻ vô cùng tầm thường đối với một số độc giả, nhưng với tư cách là một nhà phát triển nhưng có ít kinh nghiệm triển khai ứng dụng trong bất kỳ điều gì khác ngoài hướng dẫn sử dụng, hãy nhấn và hy vọng một cách nào đó, tôi hy vọng bạn sẽ hiểu rằng đó là khá khó khăn khi thấy số lượng các phương pháp và công cụ khác nhau đang có, vì vậy tôi có thể làm với một chút lời khuyên để giúp tôi bắt đầu đi đúng hướng.
Tôi là một nhà phát triển, bây giờ chỉ trong thời gian rảnh rỗi, còn hạn chế. Cho đến bây giờ tôi đã làm việc với Java, xây dựng các ứng dụng web và rất hài lòng với việc triển khai tệp chiến tranh vào môi trường Tomcat, giúp mọi thứ được gói gọn.
Tôi hiện đang làm việc trong Python và Django, nhưng khi tôi đến gần điểm cần triển khai hơn, tôi muốn thiết lập một quy trình làm việc chuyên nghiệp để tự động hóa hết mức có thể và đảm bảo tôi có thể triển khai một cách đáng tin cậy, nhưng cho rằng trường hợp sử dụng tương đối đơn giản, tôi muốn tránh học một bộ công cụ to béo, được thiết kế quá mức cho nhu cầu của tôi và đòi hỏi một khoản đầu tư lớn về thời gian tôi muốn sử dụng mã hóa ứng dụng của mình.
Vì vậy, tôi đang tìm kiếm một nền tảng trung gian cho phép tôi triển khai và quản lý (các) ứng dụng của mình một cách đáng tin cậy mà không cần đầu tư một lượng lớn thời gian để thiết lập và tìm hiểu một hệ sinh thái sùng đạo lớn.
Một số chi tiết khác ...
Bối cảnh
- Tôi phát triển trên máy Mac, sử dụng PyCharm để xây dựng Django 2, Python 3.
- Tôi sử dụng git (nhưng không phải trên github) để quản lý phiên bản phần mềm.
- Tôi cảm thấy thoải mái với các ngôn ngữ và ngôn ngữ kịch bản khác và đã viết một vài tập lệnh bash (có lẽ khá nghiệp dư), mặc dù tôi không thích bash. Tôi cũng đã từng học hỏi về Perl, điều mà tôi nhận ra không thực sự là một ngôn ngữ để học hỏi (nghĩa là bạn cần dành thời gian để học nó đúng cách)
- Tôi dự định triển khai trên môi trường VPS, có thể là DigitalOcean.
- Ứng dụng của tôi không phải là nhiệm vụ quan trọng nhưng điều quan trọng là tôi biết nếu trang web bị sập và cần có cách phục hồi đáng tin cậy nếu có, liệu điều này có khởi động lại ứng dụng, khởi động lại máy chủ hoặc chuyển sang máy chủ khác không hoặc khác).
Yêu cầu cụ thể
Khả năng thiết lập một môi trường mới để nhận ứng dụng.
Cho đến bây giờ khi tôi đang học, điều này là thủ công và mỗi khi tôi thực hiện nó, tôi đã bắt đầu lại từ đầu với một Giọt mới. Tôi muốn điều này đơn giản hơn nhiều (tự động) để nếu tôi phải thiết lập một môi trường mới trong trường hợp khẩn cấp, tôi có thể làm điều đó một cách đáng tin cậy.
Khả năng triển khai ứng dụng đến môi trường dàn dựng giống hệt với môi trường sống nhất có thể, lý tưởng nhất là quy trình tự động được kích hoạt bằng cách đẩy git bằng cách sử dụng phương pháp tích hợp liên tục (điều mà tôi chưa từng làm trước đây).
Khả năng "nhấn nút" khi tôi hài lòng với ứng dụng trong môi trường dàn dựng để tự động chuyển sang môi trường sống một cách lý tưởng.
Cách theo dõi trang web (chỉ cần một cuộc thăm dò ý kiến cho một trang)
Cách để chuyển trang web trực tiếp sang máy chủ khác nếu tôi cần khôi phục từ lỗi ứng dụng hoặc máy chủ trên trang web trực tiếp. Tôi nghĩ có lẽ một cách tiếp cận Blue-Green sẽ làm việc cho tôi?
Những gì tôi đã cố gắng hoặc xem xét?
Hướng dẫn thiết lập môi trường trực tiếp với ứng dụng Django, sau đó sao chép thủ công cơ sở mã mới vào đó khi có thay đổi. Điều này cảm thấy dễ bị lỗi của con người và tôi sợ phạm sai lầm trong việc triển khai gây ra một thất bại không thể phục hồi.
Docker. Tôi thừa nhận khi tôi phát hiện ra Docker, nó dường như là một giấc mơ trở thành sự thật nhưng sau một chút thử nghiệm và nghiên cứu, tôi cảm thấy thất vọng bởi mình cần phải học và biết bao nhiêu để có được điều này và chạy và quản lý nó. Có thể điều này đáng giá bởi vì một khi nó hoạt động thì rủi ro rất thấp nhưng hiện tại nó cảm thấy như một khoản đầu tư lớn hơn trong thời gian của tôi hơn tôi hy vọng.
Kịch bản Bash. Sử dụng chúng để thiết lập môi trường ban đầu và cho các tác vụ cụ thể như cập nhật ứng dụng. Tôi lo lắng về điều này là các tập lệnh sẽ là mã cần thử nghiệm và tôi sợ rằng sẽ mất rất nhiều thời gian để xây dựng một bộ công cụ đáng tin cậy theo cách này.
Tôi đã xem xét các tùy chọn của Digital Ocean cho các địa chỉ IP nổi và khả năng có hai máy chủ cho cách tiếp cận "xanh lục" có vẻ khá hợp lý. Nếu tôi đi theo con đường này, tôi vẫn cần có thể tự động hóa việc triển khai.
Vì vậy, ... tôi đang tìm kiếm lời khuyên về cách tiếp cận của các tín đồ tìm thấy sự cân bằng phù hợp giữa việc giảm thiểu rủi ro (ví dụ: rủi ro phá vỡ ứng dụng trực tiếp bằng bản cập nhật hoặc rủi ro không thể phục hồi sau thất bại) và giảm thiểu thời gian Tôi cần đầu tư để thiết lập môi trường và quy trình làm việc.