Structuring a multi-tiered system with web frontend and backend processing

Hey everyone, I’m working on a project and could use some advice. We’re building a system with a website for entering transactions and a separate backend processor. The website uses a workflow, and we’re planning to use the typical layers like BLL, DTO, and DAL.

The tricky part is the backend processor. It deals with transactions after the workflow is done, talks to other systems (some are a bit shaky), and updates transaction status. Each website will have its own processor.

I’m not sure if we should treat this as one big system or two separate ones. Should we have one BLL for everything or split it up? The backend and website do different things, but they’re connected.

What do you think is the best way to structure this? One unified system or two separate ones? I’d really appreciate your thoughts on the pros and cons of each approach. Thanks!

hey there, good question! i’d lean towards treating them as separate systems. keeps things cleaner and easier to maintain. you could use a shared data layer for common stuff, but separate BLLs for website and processor. this way, you can scale and update each part independently. just make sure ur communication between em is solid. good luck with ur project!

From my experience, treating the website and the backend processor as separate systems can offer significant benefits. Separating them allows each to evolve at its own pace and scale independently. A shared data layer maintains consistency while distinct business logic layers ensure that maintenance is more straightforward and issues in one area do not cascade to the other. This approach promotes fault isolation, clearer responsibilities, and adaptability. Ensuring robust communication between the systems, perhaps through a reliable message queue, further enhances the integration without compromising on separation.

hmm, interesting setup! have you considered a microservices approach? it could help separate concerns while allowing communication between components. what’s your main priority - maintainability or tight integration? also, how much overlap is there between website and processor logic? might affect whether to split or unify the bll. curious to hear more about your specific use case!