Công cụ prompt-to-app nào cũng có một phiên bản của câu "bạn sở hữu code". Emergent nói thẳng: code sẵn sàng cho production mà bạn sở hữu, tải về được, sửa được và host ở đâu tùy ý. Lời khẳng định đó là đúng, và nó hẹp hơn những gì phần lớn người nghe hiểu.
Sở hữu code không đồng nghĩa với rời đi được, vì một ứng dụng gồm bốn lớp và chỉ một lớp trong đó là code.
Bốn lớp, và lớp nào đi theo bạn
Khi một công cụ sinh ra ứng dụng, bạn rốt cuộc phụ thuộc vào bốn thứ tách biệt. Khả năng mang đi của chúng rất khác nhau.
- Code ứng dụng — thường là của bạn, thường xuất được, và đúng là lớp dễ di chuyển nhất. Đây chính là lớp mà quảng cáo đang nói tới
- Dữ liệu — các bản ghi là của bạn, nhưng cấu trúc bảng, các bước migration và những gì nền tảng quản lý thay bạn có thể không đi cùng ở dạng dùng được
- Danh tính và phân quyền — nếu xác thực là tính năng của nền tảng chứ không phải một thư viện trong code của bạn, nó không xuất ra được. Dựng lại xác thực là một trong những việc tốn kém nhất mà một đội nhỏ có thể bị đẩy vào
- Triển khai và môi trường chạy — code sẽ chạy được ở nơi khác, nhưng môi trường, quy trình build, các khóa bí mật và tên miền thường phải dựng lại bằng tay
Lối xuất code thường là tính năng trả phí
Chỗ này khiến rất nhiều người vấp. Ở Emergent, tích hợp GitHub và hosting dự án riêng tư bắt đầu từ gói Standard chứ không có ở gói miễn phí — nên một dự án dựng hoàn toàn trên gói Free thì không có lịch sử phiên bản và không có đường ra.
Điều đó không bất thường cũng không gian dối; gói miễn phí tồn tại để trình diễn sản phẩm, và lối xuất code đúng là loại tính năng khiến gói trả phí đáng đồng tiền. Nó chỉ thành vấn đề khi có người dựng một thứ thật trên gói miễn phí với giả định sẽ tải về được sau này.
Nguyên tắc: nếu dự án có khả năng trở nên quan trọng, hãy ở một gói có lối xuất code ngay từ đầu. Đó là khoản bảo hiểm rẻ nhất trong nhóm công cụ này.
Phép thử cho bạn biết sự thật
Đừng đọc tài liệu. Hãy diễn tập lối ra một lần, khi dự án còn nhỏ.
Xuất code ra. Clone về một máy chưa từng đụng tới nền tảng đó. Thử chạy. Ghi lại mọi bước mà bạn phải quay lại nền tảng để lấy một thứ gì đó — một biến môi trường, một đường dẫn cơ sở dữ liệu, một mẩu cấu hình chỉ tồn tại trong bảng điều khiển của họ.
Danh sách đó chính là mức phụ thuộc thật của bạn. Không phải lời nhà cung cấp, không phải giả định của bạn: là những thứ cụ thể bạn không tái tạo được. Phần lớn mọi người phát hiện code chạy được còn tầng dữ liệu thì không, và biết điều đó trong một buổi chiều tốt hơn nhiều so với biết giữa lúc đang di dời.
Hãy làm lại sau mỗi thay đổi đáng kể về những thứ ứng dụng phụ thuộc vào. Danh sách này chỉ có dài thêm.
Phụ thuộc nền tảng là một cái giá, không phải một tội lỗi
Cần nói thẳng: chọn một nền tảng khó rời bỏ thường lại là quyết định đúng.
Một nền tảng trực quan lo host, vá lỗi, sao lưu và bảo mật công cụ nội bộ của bạn đang làm công việc thật, thứ mà nếu tự làm thì bạn sẽ làm dở vào lúc 11 giờ đêm. Nếu ứng dụng chỉ là một cái bảng kèm vài quy tắc cho tám người dùng, thì khả năng mang đi là cái giá bạn trả cho một lợi ích chẳng bao giờ bạn dùng tới.
Sai lầm không phải là bị phụ thuộc. Sai lầm là không biết cái giá của nó. Hãy quyết định có chủ ý, ghi lại lý do, và xem lại khi ứng dụng trở thành thứ doanh nghiệp phụ thuộc vào — vì đó là lúc phép tính thay đổi mà không ai để ý.
Nếu bạn đã lỡ gắn chặt rồi
Bạn không cần di dời mới giảm được rủi ro. Hãy làm những việc sau, xếp đại khái theo mức hữu ích.
- Cho chạy xuất dữ liệu theo lịch, và phục hồi thử một bản để chứng minh nó dùng được. Một bản sao lưu chưa kiểm thử là một niềm tin, không phải bản sao lưu
- Ghi lại những gì chỉ tồn tại trong bảng điều khiển của nền tảng — biến môi trường, tích hợp, tác vụ theo lịch, quy tắc phân quyền. Đây mới là phần thực sự chặn đường di dời
- Giữ một bản sao code được sinh ra trong repository của chính bạn, kể cả khi bạn không bao giờ build từ đó. Đó là khác biệt giữa một cuộc di dời và một cuộc viết lại
- Bảo đảm ít nhất hai người có quyền quản trị, và quyền đó vẫn còn khi có người nghỉ việc
- Hãy tự hỏi gói của bạn xử lý ra sao chuyện nhật ký kiểm toán và nơi lưu dữ liệu, trước khi có người bên tuân thủ hỏi bạn