Business domain and Subdomain
ในบทความนี้เราจะพามาทำความรู้จักวิธีการทำงานขององค์กร กลยุทธ์และวิธีการบรรลุเป้าหมาย ผ่านกรอบแว่นที่ชื่อว่า Domain-Driven Design
What Is a Business Domain?
องค์กรมีความรู้และวิธีดำเนินการสิ่งต่าง ๆ ที่เป็นเอกลักษณ์ของตัวเอง ความรู้และวิธีดำเนินงานเหล่านี้เราเรียกว่า business domain ไม่ว่าจะเป็นการให้บริการ การผลิตสินค้า รวมไปถึงวิธีการแก้ปัญหาให้กับลูกค้า
For example:
- Starbucks มีชื่อเสียงเรื่องการทำกาแฟ
- ไปรษณีย์ไทย ให้บริการส่งของ
- FSMART ผลิตตู้บุญเติมและตู้เต่าบิน
เนื่องจากโลกของธุรกิจมีการเปลี่ยนแปลงตลอดเวลา จึงไม่ใช่เรื่องแปลกที่องค์กรจะมองหาธุรกิจใหม่ ๆ หรือปรับเปลี่ยนธุรกิจหลักของตนเอง เลยมีหลาย ๆ องค์กรที่มี business domain มากกว่า 1 อย่าง
SET Group ศูนย์รวมข้อมูลเพื่อการลงทุนในทุกผลิตภัณฑ์ทางการเงิน
- SET ที่ให้บริการซื้อขายหลักทรัพย์
- TFEX ให้บริการเกี่ยวซื้อขายสัญญาซื้อขายล่วงหน้า
- TCH บริการชำระราคาและส่งมอบตราสารการเงิน
- Settrade ให้บริการระบบซื้อขายหลักทรัพย์ผ่านอินเทอร์เน็ต
V-Serve Group ให้บริการด้านโลจิสติกส์
- V-Serve M&E นำเข้าและจำหน่ายอุปกรณ์เกี่ยวกับโลจิสติกส์
- Pack & Move Logistics Service ให้บริการขนส่งและกระจายสินค้าภายในประเทศ
- Warehouse & CargoesDistribution Center ให้บริการคลังสินค้าและกระจายสินค้า
องค์กรมีการปรับเปลี่ยนกลยุทธ์ในการทำธุรกิจอยู่เสมอ สิ่งสำคัญคือเราต้องรู้ business domain ที่เรากำลังทำงานอยู่ และงานที่เราทำตอบ goals ข้อไหนขององค์กร
What Is a Subdomain?
ปัญหาของ business domain คือมีความซับซ้อนและมีระบบขนาดใหญ่ ในความใหญ่นั่น มักจะมีรายละเอียดและฟังก์ชั่นแยกย่อย ๆ ลงไปอีก องค์กรมักจะแยกระบบออกเป็นส่วนย่อย ๆ ดังนั้น subdomain คือ business activity เปรียบเสมือนกิจกรรมย่อย ๆ ที่ช่วยผลักดันให้ business domain เป็นไปตามเป้าหมายที่วางไว้
For example:
V-Serve Group มีชื่อเสียงด้านคลังสินค้าและศูนย์กระจายสินค้า (Warehouse & Cargoes Distribution Center) การที่จะสร้างสิ่งนี้ให้ประสบความสำเร็จนั่น ต้องมีมากกว่าคลังสินค้าที่ดีหรือรถขนส่งที่วิ่งเร็ว ในนั่นมี subdomain ย่อย ๆ เช่น การจ้างบุคลากร กระบวนการรับสินค้าเข้า กระบวนการกระจายสินค้า ทำเลที่เหมาะสมและระบบบริหารจัดการที่ดี
Warehouse & Cargoes Distribution Center - V-Serve Group
ตัวอย่าง subdomain ของ Warehouse & Cargoes Distribution Center
- Receiving (รับสินค้า)
- Put-away (นำไปเก็บ)
- Storage (เก็บรักษาสินค้า)
- Shipping Prepare (เตรียมส่งสินค้า)
- Order Picking (หยิบสินค้า)
- Shipping (ส่งสินค้า)
- HR (ดูแลเรื่องการสรรหา คัดเลือกบุคลากร)
Types of Subdomains
องค์กรมักจะมี resources ที่จำกัด ใน multiverse ของ domain-driven design เราสามารถแบ่ง subdomain ได้ 3 ประเภท เพื่อเป็นข้อมูลให้องค์กรใช้ในการตัดสินใจ
- Core (sub)domains เปรียบเสมือนหัวใจของ business
domain เพราะสิ่งนี้ช่วยให้องค์กรมีความแตกต่างจากคู่แข่ง
และทำให้ธุรกิจมีความได้เปรียบในการแข่งขันมากกว่าธุรกิจอื่น ๆ ดังนั่น core domain
จึงมีความซับซ้อนและยากในระดับที่คู่แข่งไม่สามารถ copy ไปได้ง่าย ๆ
นั่นหมายความว่าองค์กรต้องทำให้ดีที่สุด ถ้ามองจากมุมมองของ software development
ระบบนี้ต้องพัฒนาโดยคนภายในขององค์กร และใช้ avengers team
ที่เก่งที่สุดในองค์กรและมาพร้อม mindset ว่าระบบที่กำลังจะพัฒนาต้อง ready to
change ไปตามการปรับเปลี่ยนกลยุทธ์ของธุรกิจ
สิ่งนี้จะช่วยสร้างความได้เปรียบในการแข่งให้กับองค์กร
For example: เมื่อก่อน Grab คือแอปพลิเคชั่นเรียกรถ เมื่อมีคู่แข่งเริ่มไล่ตามทัน Grab ก็มีการเพิ่มบริการใหม่อย่างบริการจัดส่งอาหาร
สิ่งสำคัญคือ tech stack และวิธีการวาง architecture ต้องพร้อมที่จะเปลี่ยนได้ง่าย ๆ เพื่อป้องกันปัญหา business model shift แต่ technical ไปต่อไม่ได้
core domain ไม่จำเป็นต้องเป็น software ไม่ใช่ทุกปัญหาทางธุรกิจสามารถแก้ได้ด้วย algorithms หรือ technical ความได้เปรียบในการแข่งของบริษัทอาจมาจากหลากหลายทาง
For example: V-Serve M&E ให้ความสำคัญกับ online shop แต่สิ่งนี้ไม่ใช่ core domain เพราะ core domain ของพวกเขาคือการนำเข้าสินค้าและผลิตสินค้าที่เกี่ยวข้องกับโลจิสติกส์ ถึง online shop จะใช้งานไม่ได้ก็ยังมี offline store
- Generic Subdomains คือสิ่งที่ทุกองค์กรทำเหมือนกัน generic
domain มีความซับซ้อน เลยมีบริษัทที่ต้องการแก้ปัญหาเหล่านี้ เราสามารถไปหาซื้อ software
หรือ service ที่พวกเขาทำเสร็จแล้ว มาติดตั้งและและปรับแต่งให้เข้าองค์กรได้
For example:
ระบบ authenticate และ authorize ของ users หรืออีกตัวอย่าง ย้อนกลับไปที่ V-Serve M&E online shop คือ generic domain ที่หลายบริษัทใช้งาน บริษัทสามารถหาซื้อ eCommerce platform และมาปรับใช้กับธุรกิจของตนเองได้ - Supporting subdomains มีหน้าที่คอยสนับสนุนการทำงานของ core domain ดังนั้น subdomain
นี้จะไม่เพิ่มความได้เปรียบในการแข่งให้กับองค์กร ปกติแล้ว supporting domain
จะไม่มี software สำเร็จรูป องค์กรต้องพัฒนาขึ้นมาเอง เราอาจจะจ้าง vendor
ที่ไว้ใจได้และให้ senior 1 คนกับ junior 2 คน ให้เขาช่วยเราทำงาน ส่วนเรามีหน้าที่
capture domain เก็บไว้ โดยทั่วไป subdomain นี้มักจะไม่ค่อยมี business logic
ที่ซับซ้อนอาจจะเป็นระบบ CRUD เพื่อนำข้อมูลส่งให้ core domain สิ่งที่สำคัญคือ
supporting domain ไม่ใช่ core domain เราจะไม่ลงทุนลงแรงกับสิ่งนี้มากจนเกินไป
ถ้าเราสามารถหา software สำเร็จรูปได้ เราจะไม่ทำเองแน่นอน!!