Sharing: mala-video server side improment
Cyril Yu

Agenda

  • How many issues we met?

  • Comparison (before vs after)

  • Challenges

  • Plans

How many issues we met

  • Vod update time cannot be updated when vod information is updated.

  • Cannot use vod image from external url.

  • Cannot choose vod category using drop-down menu.

  • Cannot use bullet screen function.

  • API response time average is more than 600ms.

  • Hard to deploy and setup.

  • Etc..

Comparison

Before After
Cannot sticky or change the sorting of vides. Use the video update time to be the sorting rule.
Hard to assign a category for videos intuitively. (need to input the id of category, doesn't make sense) Implemented drop-down menu to list video categories.
Video bullet screen doesn't work. Implemented a websocket server to handle bullet screen function.
API response time average is not good. (more than 600ms) Refactor APIs using golang, and rewrite  SQL commands, the response average is less than 200ms. (On going)
Hard to deploy and trace codes. Remove useless and old version functions, then dockerize it.
API returns db query result directly, it would be hard to do error handling. Refactor APIs, make it return and object or array, not query result.

Challenges

  • The system architecture is hard to scale. (All function would be scale even though some functions are not necessary needed.)

  • No storage service, it would be hard to manage video or profile images. (store in runner server.)

  • Bad security, there are some known security issues about the db version which we are using, and the framework(maccms) is fade out, too. 

Plans

  • Split frontend and API part, it would be easier to scale up and dockerize. If we care about SEO, could use server side rendering.
  • Implement DB cluster and memory cache function to increase server availability.
  • Upgrade DB version from MySQL 5.6 to MySQL 8.x, change the API language from PHP 5.6 to Golang 1.12.x. (isolate backend and frontend.)
  • Use k8s or docker swarm to management containers, it would help us the scale up services.

Comparison

Before After
It would cost more than half hour to deploy the backend server. It could be deployed in 10 mins.
Database security and query performance is not good enough. Could fixed known security issues, and increase the performance more than 20 percent.

https://severalnines.com/database-blog/mysql-performance-benchmarking-mysql-57-vs-mysql-80
API response time average is about 200ms. API response time could be less than 100ms after refactoring. 
Service scale time would be slow because all function need to be run up. Service scale time would be increased more than 50%.
Made with Slides.com