Skip to main content

Application Frameworks Project - Review-2


This post focuses on the project of developing a 'Conference Management Tool' under Application Frameworks module. The review of the first phase of this module can be found here . This is the second part of the review.

Once the basic upload and download functionalities are developed, the upload component was needed to be associated with the registration of the research paper presenter. Since the registration form was necessary to be developed for that to be done, the integration part will be done in a future point. This might be a place where the methods of a nested component will have to be called from a parent component.

Apart from just uploading and downloading research papers there were other functionalities that needed to be addressed. The reviewers must be able to approve or reject the research papers after reviewing them. There might be situations that research papers get rejected and researchers need to re-upload the modified file under the same id. There might also be the need to delete an research paper upload entry entirely. Even though completely dropping a research paper entry might seem unnecessary it might be needed in some rare  circumstances such as security concerns.

In implementing reviewers' functionality, reviewer should be able to see every research paper upload entry and details regarding the upload entries. For that a separate component was implemented where all the entries were drawn into a table structure and shown. In the table, the reviewers can mark the entry as approved, or rejected. If they make a mistake, they can revoke the entry status back to pending. After changing the status the changed status should be shown in the table. For updating the status, the componentDidMount method was called if the change of status at the back end was successful. Then the updated component would get rendered if the update was successful.

Here, I noticed a lag when loading the data and updating the status. It would take some time to load the data to the table once the component was rendered. I brought up this issue in a discussion with our team members and apparently the issue was in loading the data from the database. The reason we suspect is the MongoDB cluster we use. We are using a free online MongoDB cluster, and the member who created the MongoDB cluster stated that this cluster may not be located closer to us. So, it is important to keep in mind that if a service we are using is not located closer to us may cause in lags. It will be important to pay attention to where you will create your services when creating an application.

The same issue was present in loading data in the delete component as well. The only apparent solution to this issue will be to recreate the cluster in a location that is closer to us. This will be a more complex issue to solve in an application that will be deployed and consumed globally since users around the world will try to access the resources from the database. Some users who are distant from the location of the database will experience will performance issues. More research must be done on how address those type of issues in large scale application. The apparent solution will be to host the same resources redundantly in several location of cloud service providers.

From this experience we can conclude that we should pay attention to the following points when creating a database cluster.

  • Who are the target audience (users) of the system?  are they concentrated in a single geographical location or are they widespread around the globe? 
  • What is the budget allocation?
  • Where are the majority of the developers located?
  • What will be the plans to improve the performance and speed of the system?

From analyzing the above situation it can be stated that if we pay attention to the above points, formulate a proper strategy implementation as well as deployment of the created system will be more successful. 

Comments

Popular posts from this blog

Flutter for mobile development

As a person who is enthusiastic about programming and developing, I constantly look for new technologies and trends that emerge. Flutter came under my radar a couple of years ago when I was researching about mobile application development.  At that moment, my mobile development skills were limited, but nevertheless, I decided to give it a try. It interested me as it promised to help the developer make an application that would run on android, iOS, an even the web with one code base. I completed one or two tutorials offered by the flutter developer site itself but as time went on due to other areas of my studies I had to focus on, flutter slowly slipped away from me. Fast forward to today, and I have received a fair amount of beginner experience on native android development and I decided to try out flutter again. Although it offers many options, I mainly focused on mobile development. What is flutter?   Flutter is a UI toolkit offered by google intended to be used to develop applic

Installing Ubuntu desktop for Dual Booting with Windows

      Introduction Ubuntu is a Linux distribution published by the canonical team. The term ‘Ubuntu’ is an ancient African word meaning ‘humanity to others'. Ubuntu is a freely available desktop operating system that is easy to use. There are other versions of Ubuntu that are targeted for Servers, IoT and Cloud as well. In this article we are going to focus on installing Ubuntu desktop on a personal machine. Why Ubuntu? There can be several reasons for a person to use Ubuntu as their Operating System on the machine they use. The first obvious point is that is free to use. Therefore, some people may like to use this for their computational tasks. Some people can have use cases that will require a Linux system (or a UNIX like OS) such as programming in C or android platform development (which can be harder or impossible to perform on a Windows environment). For those people, a Linux distribution will be a good option (Since other UNIX like Systems can be cost prohibit

V8s, Monkeys and Chakras of the web world.

At present, many people are connected to the internet and actively using web browsers. So it will be interesting to have a look at JavaScript engines which make these browsers the kind of software they are. What is a JavaScript engine? A java script engine is a program that is mostly run in browsers which executes JavaScript codes. Most of the time, these engines use C++. These are also known as ECMA script engines since ECMA script is the standard specification for java script. First java script engines were interpreters. First java script engine was created in 1995, by Brendan Eich for the Netscape Navigator Browser. This evolved into spidermonkey engine which is used in Firefox browser. Today, most of the java script engines are developed and distributed by web browser vendors like Mozilla and google. Java script engines are run in browsers via the Document Object Model together with the rendering engines. Today java script engines are not only used for browsers, but for other fr