นักพัฒนาซอฟต์แวร์ทุกคนสามารถสร้าง ทดสอบ และแพ็กเกจ โปรเจ็กต์ใดก็ได้ ไม่ว่าจะมีขนาดหรือความซับซ้อนเพียงใดได้อย่างมีประสิทธิภาพ ด้วยเครื่องมือที่นำไปใช้และ ขยายได้ง่าย
วิศวกรอาจมองว่าพื้นฐานการสร้างเป็นเรื่องที่เข้าใจกันอยู่แล้ว นักพัฒนาซอฟต์แวร์ มุ่งเน้นกระบวนการสร้างสรรค์ในการเขียนโค้ดเนื่องจากกระบวนการ ทางกลไกของการสร้างและการทดสอบได้รับการแก้ไขแล้ว เมื่อปรับแต่งระบบบิลด์เพื่อรองรับภาษาใหม่หรือความต้องการเฉพาะขององค์กร ผู้ใช้จะมุ่งเน้นไปที่แง่มุมของความสามารถในการขยายที่เฉพาะเจาะจงสำหรับ Use Case ของตนเอง โดยไม่ต้องสร้างการเชื่อมต่อพื้นฐานขึ้นมาใหม่
วิศวกรสามารถมีส่วนร่วมในโปรเจ็กต์ใดก็ได้โดยง่าย นักพัฒนาแอปที่ต้องการ เริ่มทำงานในโปรเจ็กต์ใหม่สามารถโคลนโปรเจ็กต์และเรียกใช้ บิลด์ได้ ไม่ต้องกำหนดค่าในเครื่อง เพียงแค่ใช้งาน การดำเนินการจากระยะไกลแบบข้ามแพลตฟอร์มช่วยให้วิศวกรทำงานบนเครื่องใดก็ได้จากทุกที่และทดสอบการเปลี่ยนแปลงกับทุกแพลตฟอร์มที่โปรเจ็กต์กำหนดเป้าหมายได้อย่างเต็มที่ วิศวกรสามารถกำหนดค่าบิลด์สำหรับโปรเจ็กต์ใหม่ได้อย่างรวดเร็ว หรือจะค่อยๆ ย้ายข้อมูลบิลด์ที่มีอยู่ก็ได้
โปรเจ็กต์สามารถปรับขนาดให้เข้ากับฐานของโค้ดและทีมทุกขนาด การทดสอบแบบเพิ่มทีละน้อยที่รวดเร็วช่วยให้ทีมตรวจสอบการเปลี่ยนแปลงทุกอย่างได้อย่างเต็มที่ก่อนที่จะ คอมมิต ซึ่งยังคงเป็นเช่นนี้แม้ว่าที่เก็บจะเติบโตขึ้น โปรเจ็กต์จะครอบคลุมที่เก็บหลายแห่ง และมีการนำภาษาต่างๆ มาใช้ โครงสร้างพื้นฐานไม่ได้บังคับให้นักพัฒนาซอฟต์แวร์ ต้องแลกความครอบคลุมของการทดสอบกับความเร็วในการสร้าง
เราเชื่อว่า Bazel มีศักยภาพที่จะทำให้วิสัยทัศน์นี้เป็นจริงได้
Bazel สร้างขึ้นตั้งแต่ต้นเพื่อให้สร้างได้ซ้ำ (อินพุตชุดหนึ่งๆ จะสร้างเอาต์พุตเดียวกันเสมอ) และพกพาได้ (สามารถเรียกใช้บิลด์ในเครื่องใดก็ได้โดยไม่ส่งผลต่อเอาต์พุต)
ลักษณะเหล่านี้รองรับการเพิ่มแบบปลอดภัย (การสร้างอินพุตที่เปลี่ยนแปลงใหม่เท่านั้น ไม่ก่อให้เกิดความเสี่ยงที่จะทำให้ข้อมูลเสียหาย) และการกระจาย (การดำเนินการบิลด์ จะแยกกันและสามารถส่งต่อได้) Bazel ช่วยลดงานที่จำเป็นในการบิลด์ที่ถูกต้องและทำงานแบบขนานในหลายคอร์และระบบระยะไกลได้ จึงทำให้การบิลด์รวดเร็ว
เลเยอร์การแยกส่วนของ Bazel ซึ่งเป็นคำสั่งเฉพาะสำหรับภาษา แพลตฟอร์ม และ ทูลเชนที่ใช้ในภาษาที่ขยายได้ง่าย ทำให้สามารถ นำไปใช้กับบริบทใดก็ได้
ความสามารถหลักของ Bazel
- Bazel รองรับการสร้างและการทดสอบหลายภาษาและหลายแพลตฟอร์ม คุณสามารถ เรียกใช้คำสั่งเดียวเพื่อสร้างและทดสอบทั้งโครงสร้างแหล่งที่มาได้ ไม่ว่า คุณจะกำหนดเป้าหมายภาษาและแพลตฟอร์มใดก็ตาม
- บิลด์ Bazel รวดเร็วและถูกต้อง การบิลด์และการทดสอบแต่ละครั้งจะเป็นแบบเพิ่มขึ้นเรื่อยๆ ในเครื่องของนักพัฒนาซอฟต์แวร์และใน CI
- Bazel มีภาษาที่สม่ำเสมอและขยายได้เพื่อกำหนดบิลด์สำหรับภาษาหรือแพลตฟอร์มใดก็ได้
- Bazel ช่วยให้บิลด์ปรับขนาดได้โดยการเชื่อมต่อกับบริการการดำเนินการระยะไกลและการแคช
- Bazel ทำงานได้ในแพลตฟอร์มการพัฒนาหลักทั้งหมด (Linux, MacOS และ Windows)
- เราทราบดีว่าการนำ Bazel มาใช้ต้องใช้ความพยายาม แต่การนำมาใช้ทีละน้อยก็เป็นไปได้ Bazel จะเชื่อมต่อกับเครื่องมือที่เป็นมาตรฐานโดยพฤตินัยสำหรับภาษา/แพลตฟอร์มที่กำหนด
ให้บริการแก่ชุมชนที่ใช้ภาษาต่างๆ
วิศวกรรมซอฟต์แวร์พัฒนาขึ้นในบริบทของชุมชนภาษา ซึ่งโดยทั่วไปแล้ว คือกลุ่มผู้คนที่จัดตั้งขึ้นเองซึ่งใช้เครื่องมือและแนวทางปฏิบัติร่วมกัน
หากต้องการให้เป็นประโยชน์ต่อสมาชิกในชุมชนภาษา คุณต้องมีกฎ Bazel คุณภาพสูงที่ผสานรวมกับเวิร์กโฟลว์และแบบแผนของชุมชนนั้น
Bazel มุ่งมั่นที่จะขยายและเปิดกว้าง รวมถึงสนับสนุนชุดกฎที่ดีสำหรับภาษาใดก็ได้
ข้อกำหนดของชุดกฎที่ดี
- กฎต้องรองรับการสร้างและการทดสอบที่มีประสิทธิภาพสำหรับภาษา รวมถึงการครอบคลุมของโค้ด
- กฎต้องเชื่อมต่อกับ "ตัวจัดการแพ็กเกจ" ที่ใช้กันอย่างแพร่หลายสำหรับ ภาษา (เช่น Maven สำหรับ Java) และรองรับเส้นทางการย้ายข้อมูลแบบเพิ่มทีละรายการ จากระบบบิลด์อื่นๆ ที่ใช้กันอย่างแพร่หลาย
- กฎต้องขยายและทำงานร่วมกันได้ตามหลักการของ "แซนด์วิช Bazel"
- กฎต้องพร้อมสำหรับการดำเนินการจากระยะไกล ในทางปฏิบัติแล้ว สิ่งนี้หมายความว่า กำหนดค่าได้โดยใช้กลไกเชนเครื่องมือ
- กฎ (และ Bazel) ต้องเชื่อมต่อกับ IDE ที่ใช้กันอย่างแพร่หลายสำหรับภาษา หากมี
- กฎต้องมีเอกสารประกอบที่ละเอียดและใช้งานได้ พร้อมเนื้อหาเบื้องต้น สำหรับผู้ใช้ใหม่ และเอกสารที่ครอบคลุมสำหรับผู้ใช้ผู้เชี่ยวชาญ
แต่ละรายการเหล่านี้มีความสำคัญและต้องทำงานร่วมกันเท่านั้นจึงจะทำให้ Bazel มีความสามารถสำหรับระบบนิเวศนั้นๆ
นอกจากนี้ โดยรวมแล้วก็เพียงพอ เมื่อทำตามข้อกำหนดทั้งหมดแล้ว Bazel จะมอบมูลค่าให้แก่สมาชิกในชุมชนภาษานั้นๆ อย่างเต็มที่