นักพัฒนาซอฟต์แวร์ทุกคนสามารถสร้าง ทดสอบ และแพ็กเกจโปรเจ็กต์ทุกขนาดหรือทุกความซับซ้อนได้อย่างมีประสิทธิภาพด้วยเครื่องมือที่นำไปใช้และขยายได้ง่าย
วิศวกรสามารถใช้ประโยชน์จากพื้นฐานการสร้างได้ นักพัฒนาซอฟต์แวร์มุ่งเน้นไปที่กระบวนการสร้างสรรค์ในการเขียนโค้ด เนื่องจากกระบวนการสร้างและทดสอบแบบกลไกได้รับการแก้ไขแล้ว เมื่อปรับแต่งระบบบิลด์เพื่อรองรับภาษาใหม่หรือความต้องการเฉพาะขององค์กร ผู้ใช้จะมุ่งเน้นไปที่แง่มุมของความสามารถในการขยายที่เฉพาะเจาะจงกับกรณีการใช้งานของตนเอง โดยไม่ต้องสร้างระบบพื้นฐานขึ้นมาใหม่
วิศวกรสามารถมีส่วนร่วมในโปรเจ็กต์ใดก็ได้ นักพัฒนาซอฟต์แวร์ที่ต้องการเริ่มทำงานในโปรเจ็กต์ใหม่สามารถโคลนโปรเจ็กต์และเรียกใช้บิลด์ได้ โดยไม่ต้องกำหนดค่าในเครื่อง เพียงแค่เรียกใช้ได้เลย ด้วยการดำเนินการจากระยะไกลแบบข้ามแพลตฟอร์ม นักพัฒนาซอฟต์แวร์จึงสามารถทำงานในเครื่องใดก็ได้จากทุกที่และทดสอบการเปลี่ยนแปลงกับแพลตฟอร์มทั้งหมดที่โปรเจ็กต์กำหนดเป้าหมายได้อย่างเต็มที่ วิศวกรสามารถกำหนดค่าบิลด์สำหรับโปรเจ็กต์ใหม่หรือย้ายข้อมูลบิลด์ที่มีอยู่ทีละน้อยได้อย่างรวดเร็ว
โปรเจ็กต์สามารถปรับขนาดเป็นฐานของโค้ดหรือทีมขนาดใดก็ได้ การทดสอบทีละน้อยอย่างรวดเร็วช่วยให้ทีมตรวจสอบการเปลี่ยนแปลงทุกรายการได้อย่างเต็มที่ก่อนที่จะคอมมิต ซึ่งยังคงเป็นจริงแม้ว่าที่เก็บข้อมูลจะขยายใหญ่ขึ้น โปรเจ็กต์จะครอบคลุมที่เก็บข้อมูลหลายรายการ และมีการนำภาษาหลายภาษามาใช้ โครงสร้างพื้นฐานไม่ได้บังคับให้นักพัฒนาซอฟต์แวร์ต้องแลกความครอบคลุมของการทดสอบกับความเร็วในการสร้าง
เราเชื่อว่า 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 จะมอบมูลค่าให้กับสมาชิกของชุมชนภาษานั้นๆ อย่างเต็มที่