มีบางสิ่งที่ดีเกี่ยวกับวิธีการทำงานของซอฟต์แวร์บนอินเทอร์เน็ต สำหรับการเริ่มต้นมีเครือข่ายขนาดใหญ่ที่ไม่เป็นทางการของผู้คนนับล้านที่มีส่วนร่วมในการจัดเก็บชิ้นส่วนรหัสขนาดใหญ่ที่ช่วยเพิ่มประสิทธิภาพให้กับแอปพลิเคชั่นหลายล้านรายการ
ทุกครั้งที่คุณเห็นลิงก์เล็ก ๆ ที่ด้านล่างของหน้าเว็บที่ระบุว่า“ Powered by So-And-So” คุณจะได้เห็นผลการทำงานร่วมกันนี้ในทางปฏิบัติ
และแน่นอน เหตุผลหลักที่ผู้คนชอบการแบ่งปันและการทำงานร่วมกันโดยบุคคลที่สามก็คือ ช่วยให้คุณประหยัดเวลาในการพัฒนาได้หลายชั่วโมง เนื่องจากคุณไม่ได้คิดค้นสิ่งที่มีอยู่แล้วขึ้นมาใหม่
แต่ถึงแม้จะมีประโยชน์มากมายจากระบบการแบ่งปันโค้ดของบุคคลที่สาม แต่ก็ยังมีเหตุผลมากมายว่าทำไมคุณอาจต้องการหลีกเลี่ยงการใช้ส่วนย่อยของโค้ดเหล่านั้น ดังที่เราจะได้เห็น...
1. ความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น
เนื่องจากโค้ดเกือบทุกตัวที่ขับเคลื่อนทุกสิ่งบนเว็บเป็นโอเพ่นซอร์สจึงเป็นสิ่งที่ยุติธรรมถ้าหากมีส่วนของข้อมูลที่เป็นอันตรายในแอปพลิเคชั่นที่กำหนดมันจะถูกค้นพบโดยชุมชนนักพัฒนาและแก้ไขอย่างรวดเร็ว
แต่ส่วนใหญ่ของรหัสเหล่านี้จะถูกดาวน์โหลดหลายร้อยหรือหลายพันครั้งต่อวันและไม่ใช่ว่าทีมผู้ดูแลระบบทุกคนทำงานได้ดีในการรักษาระบบการแบ่งปันรหัสที่ปลอดภัย
แอปพลิเคชันที่มีขนาดใหญ่และซับซ้อนมากขึ้นจะยิ่งทำให้ติดไวรัสได้ง่ายขึ้นโดยการเพิ่มโค้ดสองสามบรรทัดในที่ที่ไม่ชัดเจน เกือบจะไม่มีใครใช้เวลาในการพิจารณาทุกบรรทัดของรหัสในแอปพลิเคชันเพราะโดยทั่วไปถือว่ารหัสสามารถเชื่อถือได้
โดยปกติโปรแกรมเมอร์ที่มีทักษะสูงสามารถทำงานได้ดีในการทำให้โค้ดที่เป็นอันตรายนั้นสับสนและมีเพียงโปรแกรมเมอร์ที่มีทักษะสูงอีกคนเท่านั้นที่จะเข้าใจได้ว่ามันมีจุดประสงค์อะไร ... หากตรวจพบส่วนของโค้ดที่เป็นอันตราย
2. คุณไม่ได้เป็นเจ้าของมัน
นี่คือการรวมกันของปัญหา ข้อแรกคือคุณอาจต้องปฏิบัติตามข้อกำหนดสิทธิการใช้งานที่หลากหลาย เมื่อคุณมีการใช้แฟรกเมนต์หลายรหัสในหน้าเว็บหรือแอปพลิเคชันเดียวคุณอาจต้องปฏิบัติตามข้อกำหนดและเงื่อนไขการให้สิทธิ์ใช้งานที่แตกต่างกันหลายประการและสิ่งเหล่านี้บางอย่างอาจขัดแย้งกัน
แน่นอนว่าแทบไม่มีใครรบกวนอ่านรายการข้อกำหนดและเงื่อนไขที่น่าเบื่อเหล่านี้ แต่นั่นอาจเป็นข้อผิดพลาดได้
โดยเฉพาะอย่างยิ่ง มันจะเป็นข้อผิดพลาดหากเงื่อนไขบางประการในข้อตกลงสิทธิ์การใช้งานทำให้คุณละเมิดกฎหมายบางอย่างในประเทศบ้านเกิดของคุณหรือในประเทศที่เซิร์ฟเวอร์ของคุณตั้งอยู่
ปัญหาอีกประการหนึ่งก็คือ หากคุณไม่ได้เป็นเจ้าของโค้ด คุณจะไม่สามารถควบคุมมันได้ และคุณอาจไม่จำเป็นต้องเข้าใจทุกอย่างที่โค้ดทำหรือวิธีทำงานของมัน
นั่นหมายความว่าถ้ามีใครทำการเปลี่ยนแปลงโค้ด คุณอาจติดอยู่กับการเปลี่ยนแปลงนั้น โดยเฉพาะอย่างยิ่งหากคุณติดตั้งการอัปเดต แพตช์ อัปเกรดและเวอร์ชันใหม่อย่างซื่อสัตย์ทันทีที่เผยแพร่โดยมีความเสถียร หรือหากคุณพึ่งพาการจัดส่งเนื้อหาทั้งหมด เครือข่ายสำหรับโซลูชันบุคคลที่สามของคุณ
3. คุณมักจะได้รับมากกว่าที่คุณต้องการ
โดยปกติแล้วโค้ดของบุคคลที่สามจะใช้ได้เพื่อทำงานที่คุณต้องการ แต่บางครั้งก็มีคุณสมบัติพิเศษทุกประเภทที่คุณไม่ต้องการและอาจจะไม่มีวันใช้เลย
ในบางกรณี คุณไม่สามารถลบคุณสมบัติพิเศษเหล่านั้นออกได้อย่างง่ายดายหรือไม่ได้เลย คุณอาจต้องประนีประนอม คุณลักษณะนี้อาจทำบางสิ่งที่ใกล้เคียงกับสิ่งที่คุณตั้งใจมาก แต่ไม่ใช่สิ่งที่คุณตั้งใจไว้อย่างแน่นอน คุณกำลังแลกเปลี่ยนความสุดยอดเพื่อจะได้มีงานทำน้อยลง และนั่นก็ไม่ใช่การค้าที่ดีเสมอไป
4. การพึ่งพาบุคคลที่สามหลายระดับสามารถนำไปสู่ปัญหาที่แท้จริง
โปรเจ็กต์โอเพ่นซอร์สจำนวนมากใช้แฟรกเมนต์โค้ดของบุคคลที่สามเดียวกันในรูปแบบที่แตกต่างกันในการผลิตซอฟต์แวร์ โดยส่วนใหญ่แล้วนั่นไม่ใช่เรื่องเลวร้าย แต่อาจนำไปสู่ปัญหาได้
ทุกวันนี้ นักพัฒนาจำนวนมากไม่ได้ติดตั้งแฟรกเมนต์ที่พวกเขาใช้งานอยู่ด้วยซ้ำ แต่ดึงแฟรกเมนต์เหล่านั้นจากเครือข่ายการจัดส่งเนื้อหาตามเวลารันไทม์ตามความต้องการ อันตรายของสิ่งนี้แสดงให้เห็นได้อย่างน่าทึ่งจากเหตุการณ์คนเบาะซ้ายปี 2016
โซ่ทุกเส้นจะแข็งแกร่งพอๆ กับจุดอ่อนที่สุดเท่านั้น การเชื่อมโยงห่วงโซ่ของการขึ้นต่อกันนี้หมายความว่า หากการเชื่อมต่อใดๆ ก็ตามในห่วงโซ่ขาดหรือเสียหาย ห่วงโซ่ทั้งหมดมีความเสี่ยงที่จะทำงานผิดปกติ ในบางสถานการณ์ที่อาจมีค่าใช้จ่ายค่อนข้างสูง
คงไม่มีใครสงสัยถึงพลังที่มีอยู่ในโค้ดทั้ง 11 บรรทัดที่อยู่ในฟังก์ชันเล็กๆ ที่เรียกว่า Left-Pad แต่เมื่อการเชื่อมโยงลูกโซ่นั้นล้มเหลว มันก็ทำให้เว็บไซต์ขนาดใหญ่หลายแห่งต้องหยุดชะงักลง
ส่วนสำคัญคือคนส่วนใหญ่ที่ใช้ Left-Pad ไม่รู้ว่าพวกเขากำลังใช้มันอยู่ มันทำอะไร หรือจะแก้ไขปัญหาอย่างไร ตามที่ระบุไว้ในข้อ 2 หากคุณไม่ได้เป็นเจ้าของคุณอาจไม่เข้าใจมันเสมอไป
Left-Pad เป็นฟังก์ชันง่ายๆ ที่เพิ่มช่องว่างทางด้านซ้ายของบรรทัดเพื่อให้แน่ใจว่าเส้นนั้นมีความยาวที่ถูกต้อง ตอนนี้ปัญหาก็คือโปรแกรมเมอร์ที่มีความสามารถสามารถทำซ้ำฟังก์ชันดังกล่าวได้อย่างง่ายดาย
ไม่จำเป็นเลยที่แอปพลิเคชันใดๆ จะต้องขึ้นอยู่กับฟังก์ชันของบุคคลที่สามนี้ และยังมีเว็บไซต์หลายพันแห่งที่ใช้ซอฟต์แวร์ที่รวมฟังก์ชันดังกล่าว รวมถึง Netflix, Facebook และ Reddit มันเป็นเพียงโชคดีที่ในกรณีนี้ มันเป็นฟังก์ชันที่ง่ายมากที่ทำลาย chain และไม่ใช่ฟังก์ชันที่ซับซ้อนจริงๆ ที่มี chain of dependencies เป็นของตัวเอง
บรรทัดล่างคือถ้าคุณสามารถสร้างมันด้วยตัวคุณเองคุณอาจจะต้อง!
ในที่สุดการตัดสินใจว่าจะใช้บล็อคโค้ดของบุคคลที่สามในโครงการของคุณนั้นเป็นการตัดสินใจที่ซับซ้อนซึ่งไม่ควรนำมาใช้อย่างเบามือ ปัจจัยที่คุณต้องพิจารณาคือความปลอดภัยถูกกฎหมายค่าใช้จ่ายเวลาและความมั่นคง
เพื่อให้กระบวนการตัดสินใจง่ายขึ้นเงื่อนไขการทดสอบต่อไปนี้อาจช่วยได้
หากปัจจัยเหล่านี้เป็นจริง:
- ฟังก์ชั่นที่คุณต้องการนั้นง่าย
- คุณ (หรือทีมของคุณ) มีความสามารถในการสร้างฟังก์ชั่น
- มีเวลาอีกมากในการสร้างฟังก์ชั่น
- แอปพลิเคชันของคุณต้องการความปลอดภัยที่ดี
- คุณมีความกังวลเกี่ยวกับปัญหาทางกฎหมายที่อาจเกิดขึ้นจากการให้สิทธิ์บุคคลที่สาม
- สิ่งสำคัญคือแอปพลิเคชันของคุณไม่ควรล้มเหลว
จากนั้นคุณควรสร้างมันเอง
ELSE อาจมีประสิทธิภาพมากกว่าในการใช้ฟังก์ชั่นของบุคคลที่สามโดยที่คุณทราบถึงปัญหาที่อาจเกิดขึ้นและคุณมีกลยุทธ์ในการจัดการสิ่งที่คุณจะทำหากมีปัญหาเกิดขึ้น
ความคิดเห็น 0 คำตอบ