27 điểm bởi xguru 2022-06-21 | 10 bình luận | Chia sẻ qua WhatsApp
  • Trong tương lai, mọi hoạt động phát triển sẽ diễn ra trên "đám mây" thay vì trên localhost, và laptop sẽ chỉ còn là client
  • Nếu viết ra wishlist của lập trình viên trong thập niên 2030
    • Internet gigabit giá rẻ (5G/Mesh WiFi)
    • Máy phát triển giá rẻ với pin dùng được nhiều ngày
    • Ứng dụng, bất kể quy mô, được build trong vài giây, còn môi trường test và staging trở thành live theo thời gian thực ngay khi gõ phím
    • Môi trường phát triển cá nhân có thể đi cùng tôi bất kể tôi dùng thiết bị nào
    • Các phụ thuộc môi trường của ứng dụng (mọi thứ từ chứng chỉ HTTPS đến bản fork sandbox của DB production) được cung cấp ngay lập tức cho mọi thành viên trong nhóm muốn phát triển tính năng. Không cần tài liệu hay runbook
    • Từ ý tưởng đến khi cung cấp cho khách hàng có thể hoàn thành chỉ trong một tuần (dùng low-code builder và Backends-as-a-Service)
    • Có thể tăng trưởng từ MVP lên unicorn chỉ trong vài tuần: dùng serverless và các nền tảng kiểu "Heroku mới". Xác thực/thanh toán/DB/communication được xử lý qua SaaS đẳng cấp thế giới
  • Phần lớn những điều trên đều đòi hỏi chạy trên "đám mây" thay vì localhost

Nếu trình duyệt đã thu nhỏ hệ điều hành thành "một tập hợp các device driver khó debug"
thì đám mây đang thu nhỏ máy phát triển thành "một tập hợp các môi trường mock được quản lý kém"

"Future is Just Not Evenly Distributed"

  • Các công ty lớn đầu tư để nâng năng suất lập trình viên đã và đang làm việc trên đám mây
    • Google Cider : web IDE của Google. Tích hợp hệ thống tệp Piper khổng lồ và hợp nhất code review/build/testing. Không cần tải code xuống máy local
    • FB On-Demand : provision môi trường theo kiểu "On-Demand" để có thể preview tính năng theo thời gian thực sát với thực tế hơn local. Ở FB không hề có khái niệm "phát triển local"
    • Etsy : mọi hoạt động phát triển đều diễn ra trên Cloud VM: "Vì VSCode chạy bằng cách SSH vào VM nên tôi chưa từng checkout code ra bên ngoài VM"
    • Tesla : chuyển phát triển OS cho ô tô từ local lên cloud (trước đó được cho là đã cấp desktop đắt tiền cho lập trình viên để build)
    • Palantir : chuyển sang Remote Ephemeral Workspace dùng Coder (SaaS môi trường phát triển từ xa) và EKS
    • Shopify : phần lớn lập trình viên đã chuyển sang môi trường phát triển cloud tên là Spin (VM nhẹ chạy trên xhyve)
    • GitHub : chuyển phần lớn hoạt động phát triển của GitHub sang Codespaces
  • Vì đây đều là công ty lớn nên sẽ xuất hiện câu hỏi: "Liệu có phù hợp với công ty nhỏ không?"
    → Câu trả lời là "Có lẽ là được, nhưng có thể chưa phải ở hình thức hiện tại"
    → Phần lớn các hệ thống này chỉ khả thi nhờ cần đầu tư nội bộ đáng kể và tận dụng hạ tầng nội bộ sẵn có
    → Nhưng khi các công nghệ này được sản phẩm hóa và tìm ra những điểm chung giữa các nhóm khách hàng, chúng sẽ ngày càng phổ biến hơn
  • Việc sản phẩm hóa môi trường preview thì thực ra đã xuất hiện rồi
    → Đổi mới ban đầu của Netlify là giúp có thể deploy để preview các dự án frontend
    → Gần như mọi site tài liệu giờ đều dùng một dạng hệ thống Deploy Preview, còn các ứng dụng Jamstack thậm chí có thể dùng trong quy trình release

Jobs to Be Done of Localhost

  • Những việc vốn diễn ra khi phát triển local hiện đang bị tấn công
    • Sửa code và chạy từ xa : GitHub Codespaces, Replit, Code.com, CodeSandbax, GitPod
    • Chạy trên server từ xa nhưng sửa code ở local : VSCode + Azure VM/Amazon Workspace, Jetbrains Fleet, Okteto Sync
    • Sửa code và chạy trong JS Container nhẹ ngay trong trình duyệt : Stackblitz
    • Thực thi code từ xa : Bret.dev
    • Staging : Planetscale Branches, Stripe Test mode keys, Railway Ephemeral Environments, Okteto environments, Coherence workspaces

Pushback: It's Still Not Good Enough

  • Vì vẫn chưa đủ tốt nên đừng vội quá hào hứng
  • Để việc "giết localhost" này thành công thì ngay cả provision cũng phải không còn cần thiết nữa
  • Tùy mỗi người, nhưng với tôi, ngay cả việc mất 10 giây để bắt đầu preview đoạn code vừa viết cũng là quá lâu
  • Dùng Netlify Drop để deploy frontend preview chỉ mất 1 giây, nhưng Netlify CLI thì mất 10 giây
  • Nhưng tôi vẫn theo thói quen dùng môi trường phát triển localhost: vì chu kỳ lặp của tôi ở mức mili giây
  • Vấn đề độ trễ này giống như việc định luật Moore được áp vào hạ tầng cloud
  • Nếu bây giờ vẫn chưa đủ, hãy quay lại xem sau 5 năm nữa

10 bình luận

 
botplaysdice 2023-10-19

Có vẻ như vai trò của laptop thực sự đã trở thành một cỗ máy để dùng terminal + họp. Có lẽ Chromebook nền tảng ARM với thời lượng pin hơn 20 giờ đang dần trở thành chiếc laptop lý tưởng.

 
ahwjdekf 2023-10-19

Nếu được như vậy thì quá tốt, nhưng hiện nay tình hình ở các công ty đã áp dụng cloud cho môi trường ảo là họ đang ép buộc nhà phát triển dùng môi trường cấu hình 8GB memory, 4 cpu (nài nỉ mãi thì lắm mới được 16GB). Khoảng cách giữa thực tế và lý tưởng nghiêm trọng đến mức quá lớn.

 
colossus 2023-04-02

GitPod cũng hỗ trợ chỉnh sửa bằng VSCode cục bộ. Dùng thử thì thực sự rất liền mạch (ngoại trừ việc gõ trong terminal hơi bị trễ một chút, và khi mở rộng thư mục thì hơi chậm một chút, còn lại thì trải nghiệm gần như không có khác biệt)

 
525hm 2022-06-22

Nghe nói Tencent cũng làm việc này nên khá bất ngờ. https://zdnet.co.kr/view/?no=20220620003628

Có lẽ thời đại của workstation đang đến chăng...

 
nuthatch 2022-06-21

Có lẽ máy tính bảng sẽ được chú ý hơn bây giờ.

 
ragingwind 2022-06-21

Tôi đang chuyển các dự án cá nhân sang phát triển trên nền tảng đám mây nếu có thể, nhưng có vẻ chỉ riêng IDE thì vẫn có giới hạn. Sẽ tốt hơn nếu độ trễ được cải thiện, và cũng cần một môi trường nơi có thể tự do sử dụng tất cả các công cụ tiện dụng mình vẫn dùng, hoặc có lẽ cần một cách tiếp cận bổ trợ nào đó. Sẽ thật tuyệt nếu có thể liên tục phát triển với cùng một trải nghiệm lập trình bất kể là Windows, Mac, Linux hay thiết bị VR. Giống như game Xbox hiện nay, cả môi trường cục bộ lẫn đám mây đều có những ưu điểm riêng, nên khó mà ngay lập tức theo đuổi chỉ một cách, nhưng cuối cùng chẳng phải tất cả rồi cũng sẽ chuyển lên đám mây sao.

 
kunggom 2022-06-21

Cá nhân tôi nghĩ rằng, nếu xét đến các vấn đề như độ trễ, thì có lẽ hướng đi sẽ là phát triển bằng cách chạy một môi trường full-stack được container hóa trên máy cục bộ như WebContainers, rồi lưu và áp dụng kết quả đó lên đám mây. Trong số những gì được nhắc đến trong bài, có lẽ StackBlitz là một ví dụ như vậy.

 
kallare 2022-06-21

Tôi nghĩ đây không hẳn là sự kết thúc của localhost, mà đúng hơn là sự tái xuất của thin client...

Bắt đầu từ tính tiện lợi, rồi về sau có lẽ sẽ chuyển dần sang vì lý do bảo mật...

 
xguru 2022-06-21

Đây không phải bản dịch toàn bộ mà là phần tóm tắt, nên hãy xem cả nguyên văn.

Ở phần cuối bài, trong mục tổng hợp phản ứng của mọi người, có câu: "Trên Reddit / HN, mọi người đều ghét việc mọi thứ trở thành như thế này"...
Tôi có thể hình dung đây là một tương lai hoàn toàn khả dĩ. Dĩ nhiên, trong quá trình chuyển đổi sẽ có giai đoạn pha trộn kiểu "chỉnh sửa mã cục bộ + chạy trên VM từ xa", nhưng
chỉ cần trên cloud có thể đảm bảo được độ trễ ở mức tương đương với việc chỉnh sửa mã cục bộ, thì có lẽ đa số công ty sẽ chọn cách này.

 
ffdd270 2022-06-21

Tôi cũng vậy, nhưng có lẽ trên Reddit và HN có khá nhiều người yêu thích kiểu 'dữ liệu của tôi nằm trên chính thiết bị của tôi'. Tôi cũng không muốn buông quyền kiểm soát dữ liệu của mình, nên thường chỉ thỉnh thoảng dùng cloud IDE khi viết mã ví dụ thôi.