ผลิตภัณฑ์ที่เชื่อมต่ออินเทอร์เน็ตได้นั้น อาจดูเหมือนเสร็จสมบูรณ์แล้วนานก่อนที่กระบวนการทางวิศวกรรมจะเสร็จสมบูรณ์ ต้นแบบมีความเสถียร ข้อมูลถูกส่งไปยังคลาวด์ แอปแสดงค่าที่ถูกต้อง และอุปกรณ์ชุดแรกก็อยู่ในมือผู้ใช้แล้ว ณ จุดนั้น ระบบแบ็กเอนด์อาจยังคงเรียบง่ายมากจนทีมงานรู้จักอุปกรณ์เกือบทุกเครื่องเป็นการส่วนตัว การจัดเตรียมสามารถจัดการได้ด้วยสคริปต์ การเปลี่ยนแปลงการกำหนดค่าสามารถทำได้ด้วยตนเอง และหากมีสิ่งใดล้มเหลว วิศวกรก็มักจะสามารถติดตามปัญหาได้โดยตรง

จากนั้นก็ต้องเริ่มใช้งานในโลกแห่งความเป็นจริง การปรับปรุงฮาร์ดแวร์ครั้งที่สองปรากฏขึ้น ลูกค้าบางรายยังคงใช้รุ่นแรกอยู่ เวอร์ชันเฟิร์มแวร์เริ่มแตกต่างกันออกไป จำเป็นต้องมีการกำหนดค่าใหม่สำหรับลูกค้าหรือตลาดที่แตกต่างกัน ในขณะที่อุปกรณ์รุ่นเก่าก็ยังคงต้องการการอัปเดตและการสนับสนุน

ไม่มีอะไรเสียหายอย่างแน่นอน ซอฟต์แวร์ที่อยู่เบื้องหลังอุปกรณ์นั้นมีอายุการใช้งานของตัวเองเท่านั้นเอง

การเปลี่ยนแปลงนั้นอาจมองข้ามได้ง่าย เพราะต้นแบบอาจยังคงทำงานได้อย่างสมบูรณ์แบบ แต่เมื่อผลิตภัณฑ์ทางกายภาพเดียวกันหลายเวอร์ชันต้องใช้งานร่วมกันในภาคสนาม ระบบแบ็กเอนด์จะไม่ใช่แค่โครงสร้างพื้นฐานที่อยู่เบื้องหลังฮาร์ดแวร์อีกต่อไป มันจะกลายเป็นส่วนหนึ่งของสถาปัตยกรรมของผลิตภัณฑ์นั้นเอง

ต้นแบบที่เชื่อมต่อและใช้งานได้จริงยังไม่ใช่ผลิตภัณฑ์ที่สามารถขยายขนาดได้

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

สิ่งที่โดยทั่วไปแล้วไม่ได้พิสูจน์ก็คือ ระบบเดียวกันนี้สามารถจัดการกับความหลากหลายได้ดีเพียงใด

อุปกรณ์ยี่สิบเครื่องแรกอาจใช้เฟิร์มแวร์เดียวกัน ผลิตด้วยฮาร์ดแวร์รุ่นเดียวกัน และได้รับการกำหนดค่าโดยวิศวกรกลุ่มเดียวกัน ในขั้นตอนนี้ การลงทะเบียนด้วยตนเอง การเปลี่ยนแปลงการกำหนดค่าโดยตรง หรือสคริปต์การเริ่มต้นใช้งานขนาดเล็ก อาจเป็นสิ่งที่สมเหตุสมผล การสร้างเครื่องมือระดับการผลิตก่อนที่ผลิตภัณฑ์จะได้รับการพิสูจน์แล้วอาจเป็นการด่วนสรุปเกินไป

ขนาดของปัญหาทำให้สถานการณ์เปลี่ยนไป อุปกรณ์อาจออฟไลน์ ถูกเปลี่ยนใหม่ ใช้เฟิร์มแวร์ที่แตกต่างกัน และต้องการการกำหนดค่าจากลูกค้าที่แตกต่างกัน ฝ่ายสนับสนุนต้องแยกแยะระหว่างอุปกรณ์ที่ไม่ได้รับการตั้งค่าอย่างถูกต้องตั้งแต่แรก กับอุปกรณ์ที่ตั้งค่าผิดพลาด หรืออุปกรณ์ที่ไม่สามารถติดต่อได้

ปัญหาจากต้นแบบมักเริ่มต้นแบบนี้: ไม่ใช่จากการตัดสินใจที่ผิดพลาด แต่มาจากการตัดสินใจชั่วคราวที่ยังคงอยู่แม้ผลิตภัณฑ์จะพัฒนาไปแล้ว และสิ่งแรกๆ ที่ผลักดันให้เกิดการเปลี่ยนแปลงนั้นก็คือตัวฮาร์ดแวร์เอง การปรับปรุงใหม่ไม่ได้มาแทนที่รุ่นเก่าโดยตรง แต่ต้องอยู่ร่วมกันได้ด้วย

การปรับปรุงฮาร์ดแวร์แต่ละครั้งก่อให้เกิดปัญหาเกี่ยวกับวงจรชีวิตของซอฟต์แวร์

โดยทั่วไปแล้ว การปรับปรุงฮาร์ดแวร์รุ่นใหม่มักไม่สามารถทดแทนรุ่นเก่าได้อย่างสมบูรณ์แบบ ในทางปฏิบัติ ทั้งสองเวอร์ชันยังคงใช้งานอยู่ บางครั้งนานหลายปี เมื่อรวมกับชุดการเปลี่ยนผ่าน สาขาเฟิร์มแวร์บางส่วน และการกำหนดค่าเฉพาะของลูกค้าแล้ว กลุ่มผลิตภัณฑ์จึงมีความหลากหลายมากกว่าที่แบบจำลองผลิตภัณฑ์ดั้งเดิมบ่งบอกไว้

ชั้นซอฟต์แวร์ไม่สามารถมองทุกหน่วยเป็น "อุปกรณ์" ที่เป็นนามธรรมได้อีกต่อไปแล้ว มันจำเป็นต้องรู้ว่าหน่วยนั้นๆ สามารถทำอะไรได้บ้าง

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

วิศวกรผลิตภัณฑ์ทางกายภาพทำงานในลักษณะนี้อยู่แล้ว ชิ้นส่วนสองชิ้นที่ดูเกือบเหมือนกันจะไม่สามารถใช้แทนกันได้หากมีการแก้ไข ความคลาดเคลื่อน หรือข้อกำหนดที่แตกต่างกัน ผลิตภัณฑ์ที่เชื่อมต่อกันสร้างปัญหาเดียวกันในฝั่งซอฟต์แวร์: แพลตฟอร์มจำเป็นต้องมีวิธีที่เชื่อถือได้ในการทำความเข้าใจว่ากำลังสื่อสารกับผลิตภัณฑ์ทางกายภาพเวอร์ชันใดและกฎใดที่ใช้กับผลิตภัณฑ์นั้น

ลองพิจารณาผลิตภัณฑ์รุ่นปรับปรุงครั้งแรกที่ใช้ขั้นตอนการสอบเทียบแบบหนึ่ง ในขณะที่รุ่นปรับปรุงครั้งที่สองมีการเพิ่มเซ็นเซอร์ใหม่และชุดพารามิเตอร์ที่แตกต่างกัน สำหรับลูกค้าแล้ว ผลิตภัณฑ์ทั้งสองอาจยังคงเป็นผลิตภัณฑ์เดียวกัน แต่สำหรับแพลตฟอร์มแล้ว มันไม่ใช่เช่นนั้น

หากความแตกต่างเหล่านั้นไม่ได้แสดงออกมาอย่างชัดเจน พวกมันมักจะแทรกซึมเข้าไปในตรรกะการทำงานของแอปพลิเคชันในรูปแบบของกรณีพิเศษ เวิร์กโฟลว์หนึ่งตรวจสอบช่วงหมายเลขซีเรียล อีกเวิร์กโฟลว์หนึ่งใช้เวอร์ชันเฟิร์มแวร์เป็นตัวแทนของรุ่นฮาร์ดแวร์ และเวิร์กโฟลว์ที่สามมีข้อยกเว้นที่เพิ่มเข้ามาหลังจากฝ่ายสนับสนุนค้นพบว่าล็อตเก่ามีพฤติกรรมที่แตกต่างออกไปในภาคสนาม การแก้ไขเหล่านี้แต่ละอย่างดูไม่เป็นอันตรายเป็นพิเศษ แต่เมื่อรวมกันแล้วจะทำให้การเปลี่ยนแปลงในอนาคตทุกอย่างยากต่อการทำความเข้าใจมากขึ้น

ฮาร์ดแวร์รุ่นเก่ามักไม่หายไปตามกำหนดเวลา ทีมพัฒนาผลิตภัณฑ์มักมุ่งเน้นไปที่รุ่นใหม่ล่าสุด ในขณะที่ลูกค้ามักเก็บรุ่นเก่าไว้นานกว่าที่คาดไว้ ดังนั้นแพลตฟอร์มจึงต้องรองรับหลายรุ่นพร้อมกัน แทนที่จะคิดว่าฐานลูกค้าจะเปลี่ยนมาใช้รุ่นปัจจุบันเพียงรุ่นเดียว

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

และก่อนที่จะสามารถตอบคำถามเหล่านั้นได้อย่างน่าเชื่อถือ อุปกรณ์แต่ละชิ้นจะต้องเข้าสู่ระบบด้วยวิธีการที่สอดคล้องกันเสียก่อน

การจัดเตรียมทรัพยากรคือจุดที่วิศวกรรมด้วยตนเองหยุดการขยายขนาด

การจัดเตรียมอุปกรณ์ดูเหมือนจะง่ายเมื่อจำนวนอุปกรณ์ไม่มาก: สร้างบันทึกอุปกรณ์ ป้อนหมายเลขประจำเครื่อง สร้างข้อมูลประจำตัว กำหนดอุปกรณ์ให้กับลูกค้า กำหนดค่า และดำเนินการต่อไป แต่สำหรับอุปกรณ์จำนวนหลายสิบเครื่อง การจัดการบางส่วนด้วยตนเองอาจยังคงเป็นทางเลือกที่เหมาะสม

อย่างไรก็ตาม ในระดับการผลิต การจัดเตรียมอุปกรณ์นั้นเกี่ยวข้องกับข้อมูลประจำตัวของอุปกรณ์ ข้อมูลรับรอง ความเป็นเจ้าของ การกำหนดค่า และสถานะวงจรชีวิต ข้อผิดพลาดที่เกิดขึ้นระหว่างการเริ่มต้นใช้งานอาจส่งผลต่อวิธีการใช้งานและการสนับสนุนอุปกรณ์นั้นไปอีกนานหลังจากที่ออกจากโรงงานแล้ว

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

เมื่อการตอบคำถามเหล่านั้นต้องให้ผู้พัฒนาตรวจสอบฐานข้อมูลหรือเรียกใช้สคริปต์ภายในเป็นประจำ กระบวนการนั้นก็ไม่สามารถรองรับการเติบโตของผลิตภัณฑ์ได้อีกต่อไป

การทำซ้ำเป็นอีกสัญญาณเตือนหนึ่ง ผลิตภัณฑ์แต่ละรุ่นเริ่มมีสคริปต์การเริ่มต้นใช้งาน เครื่องมือการกำหนดค่า หรือขั้นตอนการติดตั้งเป็นของตัวเอง ความแตกต่างเหล่านั้นอาจดูเล็กน้อย แต่ความรับผิดชอบพื้นฐานนั้นเหมือนกัน การจัดเตรียมได้กลายเป็นโครงสร้างพื้นฐานของแพลตฟอร์มที่นำกลับมาใช้ใหม่ได้ แทนที่จะเป็นเพียงงานการตั้งค่าที่ผูกติดกับอุปกรณ์ใดอุปกรณ์หนึ่ง

และนั่นก็ไม่ใช่ความสามารถเพียงอย่างเดียวที่จำเป็นต้องนำกลับมาใช้ใหม่ได้เสมอไป

ชั้นแพลตฟอร์มควรกลายเป็นโครงสร้างพื้นฐานที่สามารถนำกลับมาใช้ใหม่ได้

เมื่อผลิตภัณฑ์หรือฮาร์ดแวร์หลายรุ่นมีความต้องการพื้นฐานเหมือนกัน ฟังก์ชันการทำงานของซอฟต์แวร์บางอย่างก็จะไม่ใช่เฉพาะผลิตภัณฑ์นั้นๆ อีกต่อไป ตัวอย่างเช่น การระบุตัวตนอุปกรณ์ การจัดเตรียม การเชื่อมต่อ การส่งข้อมูลทางไกล การส่งมอบเฟิร์มแวร์ สถานะวงจรชีวิต การมองเห็นกลุ่มอุปกรณ์ และการวินิจฉัยปัญหา การสร้างฟังก์ชันเหล่านี้ขึ้นใหม่สำหรับทุกรุ่นย่อยจะสร้างโค้ดและเส้นทางการทำงานที่ต้องบำรุงรักษามากขึ้น โดยที่ตัวผลิตภัณฑ์เองไม่ได้มีความโดดเด่นมากขึ้นแต่อย่างใด

โดยปกติแล้ว ทีมงานมักไม่ได้ตั้งใจสร้างความซ้ำซ้อนเช่นนี้ ความแตกต่างเล็กๆ น้อยๆ สะสมขึ้นเรื่อยๆ ในแต่ละผลิตภัณฑ์ จนกระทั่งทีมงานต้องดูแลการใช้งานหลายเวอร์ชันของสิ่งที่กลายเป็นความรับผิดชอบทางวิศวกรรมเดียวกันไปโดยปริยาย

การแบ่งขอบเขตที่ชัดเจนกว่าคือการแยกชั้นผลิตภัณฑ์ออกจากชั้นแพลตฟอร์ม ชั้นผลิตภัณฑ์ประกอบด้วยพฤติกรรม กระบวนการทำงาน อินเทอร์เฟซ การบูรณาการ และตรรกะเฉพาะด้านที่ทำให้ผลิตภัณฑ์หรือแพลตฟอร์มมีคุณค่า ในขณะที่ชั้นแพลตฟอร์มจัดการกลไกต่างๆ ซึ่งควรคงที่แม้ว่าฮาร์ดแวร์จะเปลี่ยนแปลงไปก็ตาม

เมื่อผลิตภัณฑ์ที่เชื่อมต่ออินเทอร์เน็ตพัฒนาไปไกลกว่ารุ่นแรก การจัดเตรียมอุปกรณ์ การจัดการวงจรชีวิตอุปกรณ์ การจัดการกลุ่มอุปกรณ์ และเครื่องมือสนับสนุนจะกลายเป็นโครงสร้างพื้นฐานที่ใช้ร่วมกัน แทนที่จะเป็นรายละเอียดของโครงการเฉพาะกิจ แพลตฟอร์มPaaS สำหรับ IoT ในองค์กรสามารถมอบเลเยอร์แพลตฟอร์มที่นำกลับมาใช้ใหม่ได้สำหรับผลิตภัณฑ์หรือรุ่นต่างๆ มากมาย โดยจัดการอุปกรณ์และข้อมูลมาตรฐานผ่านส่วนประกอบพื้นฐานที่นำกลับมาใช้ใหม่ได้ ในขณะที่ทีมวิศวกรรมยังคงมุ่งเน้นความพยายามในส่วนที่เกี่ยวข้องกับฮาร์ดแวร์ เวิร์กโฟลว์ และประสบการณ์ผู้ใช้

พื้นฐานทั่วไปยังคงต้องเว้นที่ว่างสำหรับความแตกต่างของผลิตภัณฑ์ที่แท้จริง อุปกรณ์ใหม่ๆ อาจต้องการโมเดลข้อมูล กระบวนการกำหนดค่า การบูรณาการ หรือตรรกะการควบคุมที่แตกต่างกัน และความแตกต่างเหล่านั้นควรจะยังคงง่ายต่อการนำมาใช้ เป้าหมายก็คือการหลีกเลี่ยงไม่ให้ความแตกต่างทุกอย่างต้องลากเอาการลงทะเบียนอุปกรณ์ใหม่ ระบบส่งข้อมูลทางไกล กลไกการจัดเตรียม หรือชุดเครื่องมือการจัดการกลุ่มอุปกรณ์ใหม่ไปด้วย

แพลตฟอร์มอาจดูเหมือนเป็นภาระในขณะที่ทีมกำลังสร้างผลิตภัณฑ์แรก แต่จะกลายเป็นสินทรัพย์เมื่อถึงผลิตภัณฑ์ที่สองหรือสาม เมื่อกลไกการทำงานพื้นฐานพร้อมใช้งานแล้ว ผลิตภัณฑ์รุ่นใหม่สามารถใช้พื้นฐานที่ใช้งานได้จริงแทนที่จะต้องมีระบบแบ็กเอนด์ใหม่ที่ทีมต้องดูแลรักษาตลอดอายุการใช้งานของผลิตภัณฑ์นั้น

รักษาการออกแบบทางวิศวกรรมเฉพาะด้านไว้ในกรณีที่ผลิตภัณฑ์มีความแตกต่างอย่างแท้จริง

แพลตฟอร์มที่นำกลับมาใช้ใหม่ได้ไม่ควรทำให้ผลิตภัณฑ์ที่เชื่อมต่อกันมีความคล้ายคลึงกันมากขึ้น หน้าที่ของมันคือการกำจัดขั้นตอนการออกแบบที่ซ้ำซ้อนออกจากชิ้นส่วนที่ไม่สร้างความแตกต่าง

การปรับแต่งเฉพาะด้านยังคงมีความสำคัญในด้านพฤติกรรมของอุปกรณ์ ตรรกะเฉพาะโดเมน กระบวนการทำงาน ประสบการณ์ผู้ใช้ การบูรณาการเฉพาะทาง และวิธีที่ผลิตภัณฑ์นั้นๆ โต้ตอบกับโลกทางกายภาพ ซึ่งเป็นส่วนต่างๆ ที่การเลือกทางวิศวกรรมสามารถทำให้ผลิตภัณฑ์หนึ่งดีกว่าอีกผลิตภัณฑ์หนึ่งได้อย่างมีนัยสำคัญ

สิ่งที่มักไม่ได้รับการปฏิบัติอย่างเท่าเทียมกันคือระบบท่อการทำงานโดยรอบ เครื่องจักรรุ่นพื้นฐานและรุ่นอุตสาหกรรมอาจต้องการเซ็นเซอร์ ตัวควบคุม และอินเทอร์เฟซที่แตกต่างกัน แต่ไม่ควรต้องมีวิธีการแยกต่างหากในการระบุอุปกรณ์ ติดตามเวอร์ชันเฟิร์มแวร์ หรือจัดการกลุ่มเครื่องจักร

ผมอยากให้วิศวกรใช้เวลานั้นไปกับการปรับปรุงพฤติกรรมของผลิตภัณฑ์ในภาคสนามมากกว่าการสร้างกลไกใหม่ที่ทีมมีอยู่แล้วสำหรับผลิตภัณฑ์อื่น พื้นฐานร่วมกันไม่ได้ลดขอบเขตของการออกแบบทางวิศวกรรมเฉพาะด้าน แต่เป็นการปกป้องความพยายามนั้นไม่ให้ถูกใช้ไปกับโครงสร้างพื้นฐาน

บททดสอบที่แท้จริงจะมาถึงเมื่อทีมเริ่มผลิตผลิตภัณฑ์รุ่นที่สอง

แพลตฟอร์มที่ดีจะทำให้การพัฒนาผลิตภัณฑ์ในครั้งต่อไปง่ายกว่าการพัฒนาผลิตภัณฑ์ครั้งแรก

หากผลิตภัณฑ์หมายเลขสองต้องใช้แพลตฟอร์มการทำงานเกือบเหมือนกับผลิตภัณฑ์หมายเลขหนึ่ง ก็หมายความว่าแทบไม่มีการนำส่วนใดส่วนหนึ่งกลับมาใช้ใหม่เลย

รุ่นใหม่ควรจะสามารถสืบทอดส่วนต่างๆ ของแบบจำลองการทำงานที่ยังไม่เปลี่ยนแปลงได้ เช่น กระบวนการจัดสรรทรัพยากร การระบุตัวตน กลไกวงจรชีวิต เครื่องมือสำหรับกลุ่มอุปกรณ์ กระบวนการเฟิร์มแวร์ การมองเห็นการสนับสนุน และการบูรณาการทั่วไป จากนั้นจึงทุ่มเทความพยายามทางวิศวกรรมไปที่ส่วนที่แตกต่างกัน เช่น ชุดเซ็นเซอร์ใหม่ กระบวนการทำงานควบคุมแบบใหม่ หรือการบูรณาการเฉพาะสำหรับลูกค้า แทนที่จะสร้างพื้นฐานใหม่ทั้งหมด

ฮาร์ดแวร์รุ่นใหม่ยิ่งเพิ่มแรงกดดันให้กับแนวคิดเดิม ความสามารถของมันอาจเปลี่ยนแปลงไปอย่างมาก ในขณะที่รุ่นเก่าก็ยังคงใช้งานอยู่ แพลตฟอร์มที่พัฒนาแล้วสามารถรองรับทั้งสองอย่างได้โดยไม่ต้องบังคับให้ทีมต้องดูแลรักษาแพลตฟอร์มสองชุดแยกกัน สำหรับสิ่งที่ลูกค้ายังคงมองว่าเป็นผลิตภัณฑ์ตระกูลเดียวกัน

ทั้งหมดนี้ไม่จำเป็นต้องใช้ระบบแบ็กเอนด์แบบครบวงจร ผลิตภัณฑ์ที่แตกต่างกันอาจยังคงต้องการขอบเขตทางสถาปัตยกรรมที่ชัดเจน สิ่งที่สำคัญคือการหลีกเลี่ยงการสร้างระบบวิศวกรรมเดียวกันซ้ำซ้อนโดยไม่มีเหตุผลที่ดี

นั่นคือช่วงเวลาที่แพลตฟอร์มกลายเป็นสินทรัพย์แทนที่จะเป็นค่าใช้จ่ายที่สะสมเพิ่มขึ้น การสนับสนุนจะมีเครื่องมือคู่ขนานที่ต้องทำความเข้าใจน้อยลง การออกเวอร์ชันใหม่เป็นไปตามเส้นทางที่สม่ำเสมอมากขึ้น และการเพิ่มผลิตภัณฑ์ใหม่จะกลายเป็นส่วนขยายที่ควบคุมได้ แทนที่จะเป็นระบบแบ็กเอนด์อีกตัวที่บริษัทต้องรับช่วงต่ออย่างไม่มีกำหนด

พิจารณาแพลตฟอร์มเป็นส่วนหนึ่งของสถาปัตยกรรมผลิตภัณฑ์

ผลิตภัณฑ์ทางกายภาพได้รับการออกแบบโดยคำนึงถึงการปรับปรุง การบำรุงรักษา การผลิต และการเปลี่ยนแปลงในอนาคต ผลิตภัณฑ์ที่เชื่อมต่ออินเทอร์เน็ตก็ต้องการระเบียบวินัยแบบเดียวกันในด้านซอฟต์แวร์เช่นกัน

ส่วนหลังบ้านแรกอาจเป็นแบบชั่วคราวได้ เช่นเดียวกับสคริปต์การจัดเตรียมหรือเครื่องมือสนับสนุนแรก ซึ่งไม่มีอะไรผิดปกติโดยเนื้อแท้ ปัญหาจะเริ่มขึ้นเมื่อกลไกชั่วคราวเหล่านั้นกลายเป็นสถาปัตยกรรมถาวรไปโดยปริยาย ในขณะที่ตัวผลิตภัณฑ์เองยังคงพัฒนาต่อไป

ในเวลานั้น ผลิตภัณฑ์ที่เชื่อมต่ออินเทอร์เน็ตจะไม่ใช่แค่ฮาร์ดแวร์ เฟิร์มแวร์ และแอปพลิเคชันอีกต่อไปแล้ว แต่ยังขึ้นอยู่กับโครงสร้างพื้นฐานที่สามารถระบุอุปกรณ์แต่ละชิ้น เข้าใจความสามารถของอุปกรณ์นั้น กำหนดค่าที่ถูกต้อง รองรับการอัปเดต และช่วยให้ทีมงานวินิจฉัยปัญหาได้หลายปีหลังจากการจัดส่ง

เมื่อพิจารณาเลเยอร์นั้นเป็นสถาปัตยกรรมของผลิตภัณฑ์ การแบ่งแยกก็จะชัดเจนยิ่งขึ้น: กลไกมาตรฐานยังคงสามารถนำกลับมาใช้ใหม่ได้ ในขณะที่งานที่กำหนดเองจะเกี่ยวข้องกับสิ่งที่ทำให้ผลิตภัณฑ์หรือกลุ่มผลิตภัณฑ์หนึ่งแตกต่างจากอีกผลิตภัณฑ์หนึ่งอย่างแท้จริง

แพลตฟอร์มที่แข็งแกร่งที่สุดไม่ใช่แพลตฟอร์มที่ทำให้ผลิตภัณฑ์ที่เชื่อมต่อกันชิ้นแรกเป็นไปได้เท่านั้น แต่เป็นแพลตฟอร์มที่ช่วยให้ทีมวิศวกรรมสามารถสร้างผลิตภัณฑ์ชิ้นที่สอง สาม และสี่ได้โดยไม่ต้องรับช่วงต่อระบบแบ็กเอนด์ใหม่ทุกครั้ง

ผู้เขียน