I’m new to software engineering. I’m designing a architecture for a bus ticketing system for my assignment which provide the following functions for customers:
- book tickets
- check schedule
- check real-time bus location
- get notification when bus schedule is delayed or canceled
I’m assuming that the system should have these 2 quality attributes:
- reliability (any changes on information such as schedule and bus location should be reflected immediately in the app)
- maintainability (for future improvement and maintenance)
However, I found out that there are not many architecture patterns to achieve reliability.
Here’s my current solution. Since it is a mobile app, I think a client-server architecture (maybe 2-tiers or 3-tiers) is suitable to achieve maintainability. However, for reliability, I have these few options:
Broker (Event-driven) architecture
This is to broadcast changes to components in the systems to react to changes. I don’t think this is practical because most examples I saw are for systems that need fast response (and my lecturer seems not agree with this idea too).
Observer architecture
Similar to what Broker does but the observers only monitor selected observees, but I’m still not sure how Observer is different from Broker.
Microservice architecture
This is so far my top choice because it can have redundant components to handle the work, but from most information I saw, it is mainly for systems with a lot of APIs, not for monolithic system.
What do you guys think? Are there any related articles I can refer to?
Ginn is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.