Development, Maintainability — Software Architecture
Hi everyone! In this blog post, I want to explain to you all about my understanding of software architecture in Moodah POS and how my team and I implemented it in our Software Engineering project.
What is Software Architecture?
Software architecture is a depiction of the system that helps in understanding how the system will behave. A system represents the collection of components that accomplish a specific function or set of functions. In other words, the software architecture provides a strong foundation on which software can be built.
Software architecture serves as a blueprint for both the system and the project developing it. It defines the work assignments that must be carried out by design and implementation teams.
The architecture is the primary carrier of system qualities such as performance, modifiability, and security. Architecture is an artifact for early analysis to make sure that a design approach will produce an acceptable system. By building effective architecture, we can identify design risks and mitigate them early in the development process.
Software Architecture in Moodah POS
In Moodah POS project, the architecture is that we have the front-end for client-side scripting. We used a React-based front end application in docker-based architecture. We have the backend and we used Odoo’s API, a company management software as the back end fulfilling requests. Lastly, we have a middleware GraphQL Apollo server for connecting these two services.
Here is a diagram that illustrates how our Moodah POS’ services interact with each other
Dockerized Front-end
For our Moodah POS front-end, we are using React-based application in a dockerized environment. Docker helps to build and run applications with a container. There is also a file called Dockerfile that contains all the information and code necessary to run the application.
Here is a snippet of the Dockerfile that we used in our front-end production
After all the instructions in the Dockerfile are executed, we will get a Docker image that will be pushed to the faculty’s docker registry. Then, we used a Portainer, a GUI tool for container management. By using a Portainer, we can make the containers to run quickly. We can also see the applications are running within the cs.ui.ac.id server.
Serverless Middleware
In our project, we use GraphQL Apollo Server, which is a serverless architecture and adopted with AWS Lambda. Serverless architecture means that the applications are hosted by a third-party service. Thus, the developers do not have to manage server software and hardware. In the case of Moodah POS Project, we are using the serverless architecture for “Function as a Service” platform. This is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app.
GraphQL Apollo
GraphQL is a query language API. It is used to receive and handle request and response from the front-end.
By using GraphQL, the front-end will be able to specify what fields that they need and the data they will receive.
Conclusion
Moodah POS project is limited to creating the POS (Point of Sale) of a much larger application. Therefore, we are not given the task to develop anything in the back-end service. There are several parts of the architecture provided by RubyH such as their seeded demo database and API server. Also some conventions are expected to be followed for end product to be easily integrated to Moodah.
Thank you for reading :)