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