There was very little tutorials watched to take notes on this time. All business. I have found that starting a Spring project with Spring Initializr is the suggested way to create the basic project. This may be ‘cheating’, but hey, whatever is reliable and makes your project development faster, go for it!
With that, I needed to make sure that I have all my thoughts worked out fully. So that next week (if my skills are still not needed yet), I will start the coding of the first phase of the project! This is where the fun part lies with me! So, the plan is to have a basic Spring Boot micro-service application up and running, able to make simple communications between each service working, and to have an Angular front-end communicating with this back-end to retrieve generic data. If there is time, I’ll add the 3rd party API authentication and communication with the data set that I will be accessing and manipulating during the application usage.
This diagram displays the different services, their development storage locations, and their designed communication connections. The users, using either a computer or a mobile device, connects with the Angular front end. This communicates with the Gateway Service. The technology used here will be Zuul for now. While creating the starter package of Zuul in the Spring Initializer, there was an indication of Zuul being in maintenance mode. This tells me that the development of Zuul is no longer supported, and that there will be issues with security if Zuul is used into the future. I will be looking into a replacement technology after completion of this stage of the project.
The remainder of the application will be directly communicating with the Discovery Service. Eureka will be the main technology that will power this functionality. There is one exception. The database has been decoupled from the Mail Service, which creates a new service that I named Mail Database Service. These two services will be in heavy communication with each other, and the Mail Database Service will not be utilizing the Discovery Service. The Mail Service will pass any calls to the Mail Database Service if another service requires that information. The Discovery Service will pass any calls that the Mail Database Service would process to the Mail Service. This is against best practices. The reason for this is explained below with storage of development code.
The Authentication Service will handle all authentication for both the application and the 3rd party APIs. The database for this service does not need to be decoupled.
During development, git is being used for version control. I have setup a repository under the name of the ‘Capsuleer’ that is being credited as the creator of the application. Within the EVE Online community, there is a heavy emphasis on ‘OpSec’, or Operation Security. This includes, among other things, the identity of the person who controls the character, or Capsuleer, within the game environment. During development, I will be hosting all public accessible code here. The source code of the services that has database accesses will be hosted within an encrypted secret repository within the Keybase environment. This will be both the Mail Database Service and the Authentication Service. I wanted to make public the Mail Service. This allows me to showcase the functionality to those who are wanting to know how the different aspects of the application is implemented. The Authentication Service will not be made public. To decouple the secret data from the application source is not as straight forward as with the database access.
This is the end of Sprint One of the project. I will be creating a presentation for each sprint of the project development, posting a blog to reflect the information within the presentation. Within the work environment that I am creating the application, I have the luxury to make the presentation to my peers. I will take advantage of this while I have access to it. A recording is planned to be made of the presentation.
With Sprint Two, the following chart shows the functionality that will be completed by the end. Currently I plan to have a two week sprint cycle to get all goals completed.
By the end of Sprint Two, the user of the application should be able to log into the application, allow access to their in-game information, and retrieve the current mail within the database of the EVE Online database, storing it within the application database. Angular will have 3 main components, the Gateway Service and the Discovery Service should have at least 4 restful calls between the application and the front end. The Authentication Service will have at least 5 restful calls, and the Mail Service and Mail Database Service will both have at least 2 restful calls. If, by the end of Week One of Sprint Two more than 75% of this chart has been completed, at least one feature will be planned and added to the project.