Project: Participated in the development of dual recording (audio and video recording) system of the bank

  • Description of project

    The project is now being used in a regional (city) bank in Gansu province, belonging to a management category of the project. Main functions such as checking all customer information under a branch according to account permissions, editing customer information, etc. The project has a total of 6 people, including 1 front-end person, 1 back-end person, 1 desktop person, 1 project leader, 1 bank person and 1 test person. I was in charge of golang server.

  • Project feelings

    • All the projects before this project, from the front end to the back end, from the database to the server, were my own work, and I could do as I wanted. This project involves collaboration, collaborative development, with each person dividing into different modules. As I moved from solo development to co-development, I came up with some new ideas.

      • The first is front and rear end separation. I used to think it would be more productive, more cohesive, less coupled to the code. This is true, but a lack of in-depth knowledge, such as inadequate preparation, interface documentation, specification constraints, or a poor technical understanding, can be detrimental to the project.

      • Technology selection needs to be considered, and it is necessary to choose the right technology. The front-end of this project is VUE and the back-end is Golang and mysql. Since this is a secondary development project, Golang is developing on top of the original code, and the front-end code was originally written by Ext. When it comes to refactoring the front-end code, it is impossible to use this ancient technology, so the reactive framework Vue is used here. One of the first questions I had about the choice of back-end technology was, why did I use Golang instead of Java? Now I think the thinking was that the Java Web was dominant on the back end until today. Although there is currently springBoot, put forward the slogan of “convention is greater than configuration”, various dependencies, configuration do not need to be manually completed. But it hasn’t escaped the constraints of spring’s heavyweight framework. Golang, on the other hand, is a good choice because it has a simple syntax, good Support for the Web, and works just fine packaged as a binary file. So for some small projects, Golang can actually reduce costs and become a good choice.

      • A review of some of the more popular auxiliary tools. Git, Docker, Swagger, etc. I tried to bring these tools into the project, but they all failed. My initial task was to document the interface to the existing Golang code. I used the tool Swagger. After 1.2 days, I found that the tool was inefficient and could only write 5.6 interface documents a day. Then I gave up using it.

    • There are no complex technical points in the project as a whole. The only thing left is the bank’s business data for several decades, but it is the data in these databases that give me a lot of different experience. For example, in a business scenario, there is a requirement to find the data that meets the requirement based on several criteria from tens of millions of tables. This requirement is not complicated, just need to write a SQL statement. But I didn’t realize this at first, so I tried to pull all the data from the table into Golang and compare it according to the business rules. As a result, it takes tens of minutes or even hours to query a single piece of data. Fortunately, it wasn’t a big problem and I solved it immediately when I realized it was. From this, I also have some experience.

      • Thoroughly understand the technical principles and optimize its performance. As this example illustrates, EVEN though I understand how to solve such a problem, I’m still stuck implementing it. Here a SQL statement can compress a query in hours into seconds, and I’m curious how this is done. Next, I will go through the superficial content, in-depth study of database related principles.
      • Introduction and in-depth study of new technologies. ** At the end of this project, I learned a free MOOC course, which explained the basic concepts of cloud and DevOps on the website through a complete process of project development, construction, launch, monitoring and simple operation and maintenance. If I had taken this course earlier, I might have saved a lot of effort in the work. Why? Because the front end refactors the code, he mocks the data, and the front and back end develop in parallel, I have to make sure the project on line is bug-free for it to work. When I released the new version to the server, I used SCP and SSH commands more than 100 times, which had a huge impact on me. If I had known DevOps at the time, I would have literally talked about SCP and SSH once from the beginning to the end of the project.