Offline Batch Processing เป็นเรื่องปกติที่พบในระบบขององค์กร ซึ่งแนวคิดในการออกแบบที่ดีนั้นแตกต่างกันมากจาก Online Request/Response Processing และ Streaming โดยที่งานแบบนี้จะมีการใช้กันอย่างหนักมากในระบบทางการเงิน-การบัญชี การบริหารองค์กร และการวิเคราะห์ข้อมูลออกรายงานต่างๆ ดังนั้นการทำงานแบบ Offline Batch Processing จึงเป็นรูปแบบที่พบได้ทั่วไปในระบบไอทีขององค์กร บทความนี้จึงมุ่งที่จะสรุปหลักการเบื่องต้นในการออกแบบและตรวจสอบ Offline Batch Processing
Note: รูปแบบสถาปัตยกรรมที่ใช้สำหรับหลักการเบื้องต้นเหล่านี้ เป็นรูปแบบที่ตัว Batch Process ทำงานใน Active-Standby Clustered Servers
- Users ที่ใช้ run ตัว batch jobs จะต้องแยกจาก users ปกติที่ใช้กับ OS และ System
- Users rights/priviledges จะต้องปรับให้ถูกต้องและได้เท่าที่ต้องใช้งานเท่านั้น
- ตรวจสอบให้แน่ใจว่า user ที่ใช้ run ตัว batch job นั้นๆ มีสิทธิ์ใน resource และ file ต่างๆ อย่างถูกต้อง
- Users และ configurations/settings ต่างๆ จะต้องถูกต้องตรงกันระหว่าง active node กับ failed-over/standby node จะต้องไม่มีการ lock ตัว resource ค้างระหว่างกัน
- เมื่อทำการ fail-over จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง Working states/data จะต้องมีการถ่ายโอนกันอย่างถูกต้อง ภายในกรอบเวลาของข้อมูลที่ตกลงกัน
- ถ้าเครื่องที่ทำงาน batch ต้องทำงาน online ด้วย ให้ตรวจสอบให้แน่ใจว่า load balancer รู้และสามารถจัดการย้าย incoming requests/connections จาก clients ไปยังเครื่องที่ทำงานขึ้นมาได้ถูกต้อง
- ถ้ามีการใช้ heartbeat กันระหว่างเครื่อง ควรแยกวง network ของ heartbeat ออกจาก service vlan, data replication vlan, และ management vlan
- ถ้ามีการใช้ heartbeat กันระหว่างเครื่อง ควรมีวง network สำรองให้กับ heartbeat vlan ด้วย
- ระวังการที่ batch jobs ใช้ resource ใดๆของเครื่องสูงจนให้บริการงานอื่นๆไม่ได้หรือผิดพลาด
- ระวังการทำงานของเจ้าหน้าที่้/ระบบ supports/operations อาจขัดขวาง/รบกวนการทำงานของ batch job
- Batch jobs ต้องการระบบการ validate, monitoring, logging, health-checking ที่ให้ข้อมูลที่มีความหมายชัดเจนและมากพอที่จะปะติดปะต่อสถานการณ์การทำงานของระบบในแต่ละขณะได้จนสามารถจำลองทำงานซ้ำได้เสมอทุกครั้งที่ต้องการได้
- หน้าจอ dashboard ที่แสดงสถานะของแต่ละห่วงโซ่ในสายงานของ batch jobs เป็นสิ่งที่จำเป็นมาก
- สิ่งที่ใช้ติดต่อกันระหว่าง batch ทั้งหมดเป็นสิ่งชั่วคราว จะต้องตกลงและออกแบบให้ส่งและรับในช่องทาง, ไดเร็กทอรี่, ช่วงเวลา, users, port ที่ถูกต้องสอดคล้องตรงกัน ถูกที่ ถูกuser ถูกเวลา
- ตัวจัดการและทำการสั่งงาน batch ควรเป็น component ที่แยกจากตัวที่ run batch
- Fault management process ควรแยกต่างหากจากตัว batch
.

