How Batch Processing challenges are different from GUI-based programming
We all are aware of the challenges faced when you are designing a GUI-based application or website. To freshen up your memory here are a few to list.
- Security Issues → Who can access applications who can’t access. What someone can access and what is a restricted resource. Basically issues related to authorization and authentication.
- Data validation → We should be able to validate data that is being sent to server from the client.
- User-friendly error handling → You should build a product that can talk to customers. Users should be able to resolve the error by messages provided by server.
- Spike in resource utilization → If something goes viral then Instagram and Twitter might face a lot of load on their server suddenly.
All these are well-known issues to every software developer and there are several solutions to each and every problem mentioned above.
However batch is totally different it doesn’t have any user interaction. Almost 70% of traditional issues which are valid for GUI-based programming don’t hold any ground in the case of batch programming. Issues like security and data validation are still valid in the case of batch processing. In the case of batch processing, you don’t have to take the headache of spikes in resource usages. You don’t have to worry about error handling. You can always decide how much load you want to give and design accordingly. Here you need to worry more about logging and notifications if anything goes wrong.
Whenever you are developing anything in the software world there are few things which we need to always care
- Maintainability → How easy is your software to manage
- Usability → How good your software is from user experience
- Extensibility → How nice it is when you want to extend it
- Scalability → How good your software is when you want to scale it
- Availability → It should be 100% available
Let’s discuss in detail how they hold ground in case of batch processing
Maintainability → In batch processing maintaining your batch is not very difficult. As with good logging and debugging you can easily identify where the issues are. And you don’t have the stress of overutilization of resources where infra starts behaving crazy.
Usability → Usability doesn’t hold any ground in batch processing as no client intervention is provided.
Extensibility → In the case of extensibility they are as good as other software. You have units or modules and you can extend them just like other software.
Scalability → Batches are way more scalable than GUI-based sites. A million request on a site is kind of something which needs a celebration but in batch, you need to process 10 million records in a single day.
Availability → Availability is a bit different in the case of batch processing. Batch processing need not be available 100% of the time but they need to be available when processing is going on. Most batches are being run on same hardware where a GUI-based server is running but at different times.
Credit: Michael T. Minella — The Definitive Guide to Spring Batch