จุดจบของยุค Localhost
(dx.tips)- ในอนาคต การพัฒนาทั้งหมดจะเกิดขึ้นบน 'คลาวด์' ไม่ใช่ localhost และโน้ตบุ๊กจะเป็นเพียงไคลเอนต์เท่านั้น
- ถ้าลองเขียน wishlist ของนักพัฒนาในยุค 2030s จะได้ประมาณนี้
- อินเทอร์เน็ตกิกะบิตราคาถูก (5G/Mesh WiFi)
- เครื่องสำหรับพัฒนาราคาถูกที่แบตเตอรี่อยู่ได้หลายวัน
- แอปจะ build ได้ภายในไม่กี่วินาทีไม่ว่าขนาดจะใหญ่แค่ไหน และสภาพแวดล้อมสำหรับ test กับ staging จะ live แบบเรียลไทม์ทันทีที่พิมพ์
- สภาพแวดล้อมการพัฒนาส่วนตัวสามารถพกพาไปกับฉันได้ ไม่ว่าจะใช้อุปกรณ์ไหนก็ตาม
- dependency ด้านสภาพแวดล้อมของแอปทั้งหมด (ตั้งแต่ใบรับรอง HTTPS ไปจนถึง sandbox fork ของ production DB) ถูกเตรียมให้สมาชิกทุกคนในทีมที่ต้องการพัฒนาฟีเจอร์ใช้งานได้ทันที โดยไม่ต้องมีเอกสารหรือ Runbook
- จากไอเดียไปจนถึงส่งมอบให้ลูกค้าได้ภายในหนึ่งสัปดาห์ (โดยใช้ low-code builder และ Backends-as-a-Service)
- เติบโตจาก MVP ไปเป็นยูนิคอร์นได้ภายในไม่กี่สัปดาห์: ใช้ serverless และแพลตฟอร์มอย่าง 'Heroku แบบใหม่' ขณะที่ auth/payment/DB/communication จัดการผ่าน SaaS ระดับโลก
- สิ่งเหล่านี้ส่วนใหญ่ต้องอาศัยการทำงานบน "คลาวด์" ไม่ใช่ localhost
ถ้าเบราว์เซอร์ได้ย่อระบบปฏิบัติการให้เหลือเพียง "ชุดของ device driver ที่ debug มาไม่ดี"
คลาวด์ก็กำลังย่อเครื่องพัฒนาให้เหลือเพียง "ชุดของ environment mock ที่จัดการได้ไม่ดี"
"Future is Just Not Evenly Distributed"
- บริษัทใหญ่ที่ลงทุนอย่างหนักเพื่อเพิ่ม productivity ของนักพัฒนา ต่างก็ทำงานบนคลาวด์กันไปแล้ว
- Google Cider : Web IDE ของ Google ที่เชื่อมกับระบบไฟล์ Piper ขนาดมหึมา และรวม code review/build/testing ไว้ด้วยกัน ไม่จำเป็นต้องดาวน์โหลดโค้ดลงเครื่อง local
- FB On-Demand : provision สภาพแวดล้อมแบบ "On-Demand" เพื่อให้ preview ฟีเจอร์แบบเรียลไทม์ได้สมบูรณ์กว่า local ที่ FB ไม่มีสิ่งที่เรียกว่า "การพัฒนาแบบ local" เลย
- Etsy : การพัฒนาทั้งหมดทำบน Cloud VM "เพราะ VSCode ทำงานโดย SSH เข้าไปที่ VM จึงไม่เคย checkout โค้ดออกมานอก VM เลย"
- Tesla : ย้ายการพัฒนา OS รถยนต์จาก local ไปสู่คลาวด์ (ก่อนหน้านี้เคยต้องแจกเดสก์ท็อปราคาแพงสำหรับ build ให้แก่นักพัฒนา)
- Palantir : ย้ายไปใช้ Remote Ephemeral Workspace ที่ใช้ Coder (SaaS สำหรับสภาพแวดล้อมการพัฒนาแบบรีโมต) และ EKS
- Shopify : นักพัฒนาส่วนใหญ่ย้ายไปใช้สภาพแวดล้อมการพัฒนาบนคลาวด์ที่เรียกว่า Spin (lightweight VM ที่รันบน xhyve)
- GitHub : ย้ายงานพัฒนาส่วนใหญ่ของ GitHub ไปยัง Codespaces
- เพราะพวกนี้เป็นบริษัทใหญ่ จึงตามมาด้วยคำถามว่า "มันจะเหมาะกับบริษัทเล็กด้วยไหม?"
→ คำตอบคือ "น่าจะได้ แต่ก็อาจไม่ใช่ในรูปแบบปัจจุบัน"
→ ส่วนใหญ่เกิดขึ้นได้เพราะต้องมีการลงทุนภายในค่อนข้างมาก และอาศัยโครงสร้างพื้นฐานภายในที่มีอยู่เดิม
→ แต่เมื่อเทคโนโลยีเหล่านี้ถูกทำให้เป็นสินค้า และพบจุดร่วมระหว่างกลุ่มลูกค้ามากขึ้น มันก็จะค่อย ๆ แพร่หลายมากขึ้น - การทำสภาพแวดล้อม Preview ให้เป็นสินค้านั้นเริ่มเกิดขึ้นแล้ว
→ นวัตกรรมช่วงแรกของ Netlify คือทำให้โปรเจ็กต์ฝั่ง frontend สามารถ deploy เพื่อ preview ได้
→ ตอนนี้เว็บเอกสารแทบทั้งหมดใช้ระบบ Deploy Preview ในรูปแบบใดรูปแบบหนึ่ง และแอป Jamstack ก็สามารถใช้ในกระบวนการ release ได้ด้วย
Jobs to Be Done of Localhost
- สิ่งที่เคยเกิดขึ้นระหว่างการพัฒนาแบบ local กำลังถูกท้าทายแล้ว
- แก้ไขและรันโค้ดจากระยะไกล: GitHub Codespaces, Replit, Code.com, CodeSandbax, GitPod
- รันบนเซิร์ฟเวอร์ระยะไกล แต่แก้ไขโค้ดจาก local: VSCode + Azure VM/Amazon Workspace, Jetbrains Fleet, Okteto Sync
- แก้ไขและรันโค้ดใน JS Container แบบเบาภายในเบราว์เซอร์: Stackblitz
- รันโค้ดจากระยะไกล: Bret.dev
- สภาพแวดล้อม staging: Planetscale Branches, Stripe Test mode keys, Railway Ephemeral Environments, Okteto environments, Coherence workspaces
Pushback: It's Still Not Good Enough
- มันยังดีไม่พอ ดังนั้นอย่าเพิ่งตื่นเต้น
- ถ้าการ "ฆ่า localhost" นี้จะสำเร็จ ตัวการ provision เองจะต้องไม่จำเป็นอีกต่อไป
- แม้จะต่างกันไปในแต่ละคน แต่สำหรับฉัน แค่ใช้เวลา 10 วินาทีเพื่อเริ่ม preview ของโค้ดที่เพิ่งเขียนก็ยังนานเกินไป
- การ deploy frontend preview ด้วย Netlify Drop ใช้เวลา 1 วินาที แต่ Netlify CLI ใช้เวลา 10 วินาที
- แต่ตอนนี้ก็ยังใช้สภาพแวดล้อมการพัฒนาแบบ localhost เป็นนิสัยอยู่ดี: เพราะรอบการทำงานซ้ำของฉันอยู่ในระดับมิลลิวินาที
- ปัญหาเรื่อง latency นี้คล้ายกับการที่กฎของมัวร์ถูกนำมาปรับใช้กับโครงสร้างพื้นฐานคลาวด์
- ถ้าวันนี้มันยังไม่ดีพอ ลองกลับมาดูใหม่อีกครั้งในอีก 5 ปี
10 ความคิดเห็น
ดูเหมือนว่าบทบาทของแล็ปท็อปจะกลายเป็นแค่เทอร์มินัล + เครื่องสำหรับประชุมไปแล้วจริง ๆ ครับ/ค่ะ ดูเหมือนว่า Chromebook ที่ใช้ ARM และมีแบตเตอรี่อยู่ได้นานเกิน 20 ชั่วโมง กำลังจะกลายเป็นแล็ปท็อปในอุดมคติ
ถ้าเป็นแบบนี้ได้ก็คงดีมาก แต่ตอนนี้บริษัทที่นำคลาวด์สภาพแวดล้อมเสมือนมาใช้กลับบังคับให้นักพัฒนาใช้สภาพแวดล้อมสเปกแค่หน่วยความจำ 8GB กับ CPU 4 คอร์เท่านั้น (ถ้าอ้อนวอนมาก ๆ ก็อาจได้แค่ 16GB) ช่องว่างระหว่างความเป็นจริงกับอุดมคตินั้นรุนแรงเกินไปจริง ๆ
GitPod ยังรองรับการแก้ไขบน VSCode ในเครื่องด้วย พอลองใช้แล้วลื่นไหลมาก (ยกเว้นว่าการพิมพ์ในเทอร์มินัลหน่วงนิดหน่อย และตอนขยายโฟลเดอร์จะอืดเล็กน้อย แต่โดยรวมแล้วประสบการณ์แทบไม่ต่างกันเลย)
น่าประหลาดใจเหมือนกันที่บอกว่า Tencent ก็ทำด้วย https://zdnet.co.kr/view/?no=20220620003628
หรือว่ายุคของเวิร์กสเตชันกำลังจะมาถึง...
ดูเหมือนว่าแท็บเล็ตจะได้รับความนิยมมากกว่าตอนนี้เสียอีกนะ
แม้จะย้ายโปรเจกต์ส่วนตัวไปพัฒนาบนคลาวด์ให้มากที่สุดเท่าที่ทำได้ แต่ดูเหมือนว่าแค่มี IDE อย่างเดียวก็คงมีข้อจำกัดอยู่บ้าง น่าจะดีถ้าลดเลเทนซีลงได้ด้วย และก็น่าจะต้องมีสภาพแวดล้อมที่ให้ใช้เครื่องมือสะดวก ๆ ที่ใช้อยู่ได้อย่างอิสระทั้งหมด หรือไม่ก็ต้องมีแนวทางเสริมบางอย่าง ถ้าสามารถพัฒนาได้ต่อเนื่องด้วยประสบการณ์การพัฒนาแบบเดียวกัน ไม่ว่าจะเป็น Windows, Mac, Linux หรือแม้แต่อุปกรณ์ VR ก็คงจะดีมาก เหมือนกับเกม Xbox ในตอนนี้ที่ทั้งฝั่งโลคัลและคลาวด์ต่างก็มีข้อดีของตัวเอง เลยยากที่จะมุ่งไปทางใดทางหนึ่งทันที แต่สุดท้ายก็คงไปทางคลาวด์ทั้งหมดอยู่ดีไม่ใช่หรือ
โดยส่วนตัวผมคิดว่า หากคำนึงถึงปัญหาเรื่องเลย์เทนซีและอื่น ๆ แนวทางน่าจะเป็นการเปิดใช้งานสภาพแวดล้อมฟูลสแตกแบบคอนเทนเนอร์บนเครื่องโลคัลเพื่อพัฒนาเหมือน WebContainers แล้วค่อยบันทึกและสะท้อนผลงานนั้นขึ้นสู่คลาวด์ สิ่งที่ยกมาในบทความก็คงเป็นอะไรอย่าง StackBlitz นี่แหละครับ
มองว่าแทนที่จะเป็นจุดจบของ
localhostน่าจะเป็นการกลับมาของ thin client มากกว่า...เริ่มจากความสะดวกสบาย แล้วต่อไปก็น่าจะไหลไปทางเรื่องความปลอดภัย...
นี่ไม่ใช่การแปลทั้งหมด แต่เป็นการสรุป ดังนั้นแนะนำให้อ่านต้นฉบับด้วย
ในช่วงท้ายของบทความที่สรุปปฏิกิริยาของผู้คน มีการบอกว่า "บน Reddit / HN ทุกคนไม่ชอบที่ทุกอย่างจะกลายเป็นแบบนี้" แต่..
สำหรับผม มันเป็นอนาคตที่จินตนาการได้มากพอสมควร แน่นอนว่าระหว่างทางก็คงจะมีช่วงที่ "แก้ไขโค้ดบนเครื่องโลคัล + รันบน VM ระยะไกล" ผสมกันไป
ถ้าบนคลาวด์สามารถรับประกัน latency ในระดับใกล้เคียงกับการแก้ไขโค้ดบนเครื่องโลคัลได้ในระดับหนึ่ง ผมคิดว่าบริษัทส่วนใหญ่ก็น่าจะเลือกทางนี้
ผมก็เป็นแบบนั้นเหมือนกัน แต่คิดว่าใน Reddit กับ HN น่าจะมีคนที่รักแนวคิดว่า "ข้อมูลของฉันอยู่บนอุปกรณ์ของฉัน" กันเยอะ ผมเองก็ไม่อยากปล่อยการควบคุมข้อมูลของตัวเองไป เลยใช้คลาวด์ IDE แค่เป็นครั้งคราวตอนเขียนโค้ดตัวอย่างเท่านั้น