Software Architecture

A good and proper structure in our software will create a great app for the customer like a well build house for the people that will live in it.

Davin Iddo
Moodah POS
3 min readNov 21, 2019

--

A well build house like we build our software

To show you the power of architecture I will use our application Moodah as an example!

Architecture in Moodah

In Moodah, we use React on the front-end for client-side scripting, back-end for the server-side scripting, and GraphQL Apollo for the middleware to connect these two services.

This is the visualization of our services and how they are connected.

Moodah Architecture

FRONT-END

For Moodah front-end we are using React in a dockerized environment. Docker will help us deploy and run our application by using a container, through the use of dockerfile we could create all the necessary parts that are needed to run our application which is called a docker image.

Dockerfile to create the Docker image

By following the instruction above we could make the docker image that will be pushed into the docker registry. The connection between docker image and container is that, a running instance of an image is called a container.

We used a portainer, which is a tool to help us manage our container and provides a detailed overview of our Docker environments. Below is our container that’s currently running.

Detail about our container

SERVERLESS MIDDLEWARE

In the middle we are using a GraphQL Apollo server and is adopted by AWS Lambda. In the case of our software, we are using this serverless architecture concept called Function-as-a-Service (FaaS) for our platform.

Serverless architecture means that the application are hosted by a third-party service, eliminating server software the need for server software and hardware management by the developer.

GraphQL

GraphQL is a query language API that’s 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 needed and the data that they’ll received will be precise.

We also use the GraphQL to handle naming convention inside the software as well, for example we use a camelCase for our front-end snake_case for the back-end.

Leftover

Sadly, our project in Moodah is only limited to creating the POS (point-of-sale) of a much larger application. Thus, we are not given the task to develop anything in the back-end service. Furthermore, there were already some conventions plan that we have to follow so that it could be easily integrated back into Moodah.

This conclude a very small overview of our project’s architecture.

bey

--

--

Davin Iddo
Moodah POS

A useless blob whose memory is worse than a goldfish