Skip links
View
Drag

สิ่งเล็ก ๆ ที่ถูกมองข้ามไปในการพัฒนา Software

การที่จะพัฒนาซอฟต์แวร์หรือว่าการสร้างสรรค์ชิ้นงานขึ้นมา หน้าที่หลักของนักพัฒนาซอฟต์แวร์ก็จะเป็นเรื่องของการรับ Input เพื่อนำไป Process ตาม Requirements ที่มีอยู่เพื่อให้ได้ Output ออกมา ซึ่งสิ่งที่ควรคำนึงถึงนั่นก็คือช่วงที่มีการรับ Input

จากมุมมองของคนทำงานด้าน Security

“การตรวจสอบ Input ยิ่งถูกตรวจสอบน้อย ยิ่งเป็นเหมือนสนามเด็กเล่นของ Hacker” เพราะการไม่ตรวจสอบ Input มักจะทำให้เกิดปัญหาด้าน Security ตามมา ปัญหาที่พบได้บ่อย เช่น SQL Injection, Cross-site Scripting (XSS) และอื่น ๆ ทำให้สิ่งเล็ก ๆ อย่างเรื่องแรกที่อยากให้นักพัฒนาเว็บไซต์คำนึงถึงคือการตรวจสอบ Input ที่รับเข้ามา จะทำให้ลดความเสี่ยงไปได้เป็นอย่างมาก

ปัญหาต่อมาคือเรื่องของการตรวจสอบสิทธิ์โดยไม่ได้รับอนุญาตที่มากเพียงพอ ตัวอย่างเช่น มีคนกรอก Username และ Password เข้ามา ตรงนี้จะถือเป็นเพียงการตรวจสอบว่าคนที่ทราบ Username และ Password แต่ไม่ได้มีการตรวจสอบสิทธิ์การเข้าถึงของเขา ดังนั้นจึงอยากให้ตระหนักว่าระหว่างที่เรากำลังพัฒนาซอฟต์แวร์ ก็ควรวางแผนในเรื่องของการทำ Authorization ให้ละเอียดมากพอ โดยเฉพาะอย่างยิ่งในปัจจุบันที่เรื่องของ Privacy เป็นเรื่องที่สำคัญมาก

ปัจจุบันมีผู้ใช้งานซอฟต์แวร์หรือเว็บไซต์ต่าง ๆ เพิ่มขึ้นอย่างรวดเร็วผู้พัฒนาซอฟต์แวร์จะต้องมีการเตรียมรับมือ สำหรับการรองรับ Workload มหาศาลที่จะเข้ามา วิธีการรับมือกับสถานการณ์แบบนี้ทำได้ใน 2 มุม แบบแรก Scale up เป็นการขยายความสามารถของระบบโดยการเพิ่ม CPU เพิ่ม Memory เข้าไปให้รองรับ workload ได้ อีกวิธีจะเรียกว่า Scale out เป็นการขยายจำนวนระบบให้มีหลายเครื่องมากขึ้น ซึ่งแต่ละเครื่องก็จะทำงานสอดคล้องกัน ก็เป็นอีกวิธีที่ทำให้รองรับ workload ที่เพิ่มขึ้นได้ แต่บางครั้ง Scale out ก็ไม่ได้ดีกว่า Scale up ในกรณีที่ผู้ใช้ไม่ได้มีจำนวนมาก และมีจำนวนคงที่ ก็จะไม่จำเป็นต้องทำ Application ให้พร้อมกับ Scale out

ในการพัฒนาระบบการคำนึงถึงการใช้ทรัพยากรก็เป็นเรื่องสำคัญ และมีบางปัจจัยที่อาจจะถูกมองข้ามเช่น Time Consuming การสิ้นเปลืองเวลาไปกับการขอข้อมูลจากคนนอกองค์กร จะต้องมีวิธีการจัดการอย่างไร? เรื่องของการเขียน Process ต้องมีการคำนึงถึง Algorithms ที่เลือกใช้พื้นที่ของ CPU ที่มีอยู่อย่างจำกัด และเรื่องของการใช้ Bandwidth Network บ่อยครั้งที่นึกอะไรไม่ออก Query อะไรมาได้ ก็จะขนส่งไปที่ฝั่ง Client ก่อน ส่งข้อมูลจำนวนมากเกินไป และให้ฝั่ง UX/UI ทำหน้าที่ในการเลือกใช้เองอยากให้ผู้พัฒนาซอฟต์แวร์สนใจเรื่องพวกนี้มากขึ้น

หากพูดถึงปัญหาเรื่องการพัฒนาซอฟต์แวร์สำหรับขนาดหน้าจอที่แตกต่างกัน ต้องออกแบบการแสดงผลในหลายรูปแบบ ปัญหาเรื่อง Browser Compatibility ก็เป็นสิ่งสำคัญ ความแตกต่างของเว็บไซต์ เช่น Firefox, Safari, Microsoft edge, Google Chrome, และ Opera ดังนั้นนักพัฒนาจึงต้องเตรียมความพร้อมในการรับมือกับอุปกรณ์ และแพลตฟอร์มที่หลากหลายขึ้นด้วย

สิ่งสำคัญที่ต้องคอยสังเกตนั่นก็คือเรื่องของ 3 A ได้แก่

1. Authentication การพิสูจน์สิ่งใด ๆ ก็ตาม ว่าถูกต้องหรือไม่เป็นการรับรองความถูกต้อง

2. Authorization การตรวจสอบสิทธิว่าสามารถเข้าไปได้หรือไม่เป็นการอนุญาต

3. Accounting บัญชีที่ใช้ตรวจสอบ และอนุญาต มีการเก็บ Log อย่างเหมาะสมหรือไม่