หยุดใช้ AWS เดี๋ยวนี้! (จริงเหรอ?) หรือเมื่อไหร่กันแน่ที่เราควรเริ่มมองหา Cloud Services
เคยเห็นไหมครับ? โปรเจกต์ MVP (Minimum Viable Product) ที่อัดแน่นไปด้วยสารพัดเครื่องมือสุดล้ำจาก Cloud แต่สุดท้ายก็ไปไม่รอดผมอยู่ในวงการนี้มา 10 กว่าปี ทั้งเป็น Frontend Developer, DevOps แล้วก็เคยช่วยลุยทำ Start up มาก่อน เห็นมาเยอะครับ โปรดักต์ที่มีทั้ง Lambda, API Gateway, Cognito, S3, CloudFront, DynamoDB, CloudWatch, IAM Policies จัดเต็มจน Architecture Diagram ดูยุ่งเหยิงเหมือนแผนที่รถไฟใต้ดินแต่สุดท้าย... ไม่มีคนใช้
ความจริงมันเรียบง่ายกว่านั้นครับ: คุณไม่จำเป็นต้องใช้ AWS (หรือ Cloud เจ้าไหนก็ตาม) เพื่อสร้างสิ่งที่ผู้ใช้รัก
ปัญหาของการ "จัดเต็ม" เกินเบอร์
มีกับดักที่นักสร้างสรรค์หลายคนมักจะตกลงไปครับพอได้อ่านบทความสักสองสามชิ้น หรือเห็น Diagram เท่ๆ บน Twitter ก็คิดไปว่าโปรเจกต์เล็กๆ ของตัวเองต้องการสถาปัตยกรรมระดับเดียวกับ Netflix ซึ่งจริงๆ แล้ว... ไม่เลย
โปรเจกต์ส่วนใหญ่ในช่วงเริ่มต้นไม่ได้ล้มเหลวเพราะขาด Scalability แต่เพราะขาดผู้ใช้งานต่างหากหรืออาจเป็นเพราะตัวโปรดักต์มันสับสน ใช้งานยาก มีบั๊ก หรือไม่ได้แก้ปัญหาที่ผู้ใช้เจอจริงๆ การ Overengineer Infrastructure ของคุณเป็นวิธีที่ยอดเยี่ยมในการเสียเวลา เผาผลาญพลังงาน หรืออาจจะไม่ได้เปิดตัวโปรเจกต์เลยด้วยซ้ำ
แล้วจริงๆ เราต้องการอะไรกันแน่?
ถ้าคุณเป็น Solo Developer หรือทีมเล็กๆ ที่พยายามจะสร้างและส่งมอบอะไรที่มีประโยชน์จริงๆ นี่คือสิ่งที่คุณอาจจะต้องการทั้งหมด
- VPS (Virtual Private Server) ราคาประมาณ $5 - $20 ต่อเดือน จากผู้ให้บริการอย่าง Hetzner, DigitalOcean หรือเจ้าอื่นๆ ที่คล้ายกัน
- Docker Compose เพื่อรันแอปพลิเคชันและฐานข้อมูลของคุณ
- หรือถ้าอยากจะหลีกเลี่ยงการจัดการเซิร์ฟเวอร์ไปเลย ก็ลองมองหา Managed Container Platform อย่าง Sliplane
คุณไม่จำเป็นต้องใช้ Kubernetes คุณไม่จำเป็นต้องกังวลเรื่อง Auto-scaling คุณไม่จำเป็นต้องเชื่อมต่อ AWS Services 6 ตัวเพื่อแสดงผลหน้าเว็บแค่หน้าเดียว
โปรดักต์อินดี้ส่วนใหญ่รันบนเซิร์ฟเวอร์ตัวเดียวได้สบายๆ เป็นเวลานานแล้วครับ
แล้วเมื่อไหร่ AWS ถึงจะสมเหตุสมผล?
เอาล่ะ พูดกันอย่างยุติธรรม มันก็มีสถานการณ์ที่ AWS เป็นตัวเลือกที่ใช่ครับ
- คุณอยากเรียนรู้ AWS เพราะกำลังหางาน หรือต้องการพัฒนาทักษะด้าน Cloud
- คุณมีข้อกำหนดเฉพาะมากๆ เช่น ต้องการเก็บข้อมูลบน Cloud ของรัฐบาล หรือต้องการให้ระบบอยู่ใกล้กับ Infrastructure ของลูกค้าที่ใช้ AWS อยู่แล้ว
- คุณกำลังแก้ปัญหาที่ต้องการ Global Scale ตั้งแต่วันแรกจริงๆ
- คุณอยู่ใน Ecosystem ของ AWS อยู่แล้ว และมีความเชี่ยวชาญเป็นอย่างดี
เหตุผลเหล่านี้ฟังดูดีครับแต่ลองซื่อสัตย์กับตัวเองดูนะครับ โปรเจกต์ส่วนใหญ่ไม่ได้เริ่มต้นจากจุดนี้
และถึงแม้ว่าคุณจะต้องการ AWS ในภายหลัง นั่นก็ไม่ใช่ปัญหาครับคุณสามารถย้ายระบบได้เสมอเมื่อถึงเวลาเมื่อถึงจุดนั้น หวังว่าคุณจะมีรายได้ มีผู้ใช้งาน และเข้าใจความต้องการของตัวเองได้ดีขึ้นแล้ว
จำไว้นะครับ: โปรดักต์ของคุณมีโอกาสล้มเหลวจากสิ่งที่มันทำ มากกว่าจากที่ที่มันรันอยู่
เริ่มต้นยังไงโดยไม่ต้องพึ่ง AWS?
อยากจะเปิดตัวอะไรสักอย่างให้เร็ว โดยไม่ต้องเสียเวลาเป็นสัปดาห์ๆ ไปกับการเรียนรู้ Cloud Architecture ใช่ไหมครับ? นี่คือจุดเริ่มต้นที่แข็งแรง
- ใช้ Docker Compose เพื่อกำหนด App, Database และ Background Worker ต่างๆ ของคุณ
- Deploy ขึ้น VPS ด้วย
ssh
และdocker-compose up
- หรือใช้ Platform ที่ช่วยจัดการเรื่อง Operation ให้ และให้คุณโฟกัสกับการเขียนโค้ดได้เต็มที่
- เลือกใช้เครื่องมือ Open-source สำหรับ Monitoring, Authentication หรือ Task Queues
แค่นั้นเองครับคุณสามารถเปลี่ยนจากศูนย์ไปสู่การ Deploy ได้ภายในบ่ายวันเดียว โดยไม่ต้องมี Certificate ใดๆ ทั้งสิ้น
บทสรุปส่งท้าย
คุณไม่จำเป็นต้องใช้ AWS เพื่อสร้างสิ่งที่ยอดเยี่ยมสิ่งที่คุณต้องการคือการโฟกัส โปรดักต์ที่ใช้งานได้จริง และความสามารถในการส่งมอบงานได้อย่างรวดเร็ว Infrastructure ที่ใหญ่โตไม่ได้ช่วยให้โปรดักต์แย่ๆ ดีขึ้นได้ฉันใด Infrastructure ที่เรียบง่ายก็ไม่ได้ทำให้โปรดักต์ดีๆ ตายฉันนั้น
เริ่มจากเล็กๆ เปิดตัวให้เร็ว เรียนรู้ให้ไวคุณสามารถ Scale ได้เสมอเมื่อถึงเวลาครับ