Team Jublia at PyCon APAC 2018
Article actual date: Jun 5, 2018
PyCon APAC 2018 was held in NUS this year, and we were back as the sponsors of the event! We had the great honour of sharing with the community some of the lessons we have learned over the past one year from our experiences in Python and frameworks such as Flask. One of the critical lessons we spoke about was how to handle customisations to Match 360° for our clients while keeping it easy to maintain and deploy without using up too many resources on the server.
Our original solution for handling customisations was to duplicate the entire Match 360° code and perform our customisations in the copied code. This made sense since we previously wrote our mobile web app code in PHP where routing is directory-based. We could route a request to the directory meant for a specified event. On top of that, all the events are isolated from each other, making maintenance easy. It ensures that a bug in the customisations for one event would not affect any other events. In Python (Flask), routing is done differently as we have to run the backend as one application. If we were to copy the PHP solution, we would need to have one running application for each customised event. This is extremely resource-intensive, and on top of that, each application would be idle most of the time making this solution inefficient. Our Python solution is to make use of the application dispatcher middleware in Flask. Application dispatching allows us to combine multiple Flask applications on the WSGI level. This means different Flask applications can run side by side while sharing resources. The dispatcher will then route requests to the correct Flask application depending on which event it is. This solution achieves isolation while keeping resource utility to a reasonable level.
Sharing our experience in Python was an excellent opportunity for Jublia to give back to the community and hopefully, help other Python developers and B2B SaaS companies who are facing the problems we have encountered before.
We had many takeaways from Pycon as well! Data anonymisation was a huge focus at Pycon this year. It came as no surprise since the EU General Data Protection Regulation came into effect recently and new software innovations are getting increasingly data-centric. During her keynote, Katharine Jarmul, founder of Kjamistan, shared about how we can achieve data anonymisation while still maintaining accurate machine learning models. Her keynote highlighted the importance of privacy and why we need better methods of managing our data. It was interesting to hear her views on how data could be handled, primarily since we collect and manage human data as well in Jublia.
There were many other exciting topics at the conference as well. David Tan from Thoughtworks demonstrated how to use Continuous Integration/Continuous Deployment methods to reduce deployment time significantly while keeping your code safe. His setup automated not just deployment, but also unit testing, integration testing, and metric testing. This ensures a high level of reliability and makes testing quick and easy. These are steps we could take to improve our workflow at Jublia as well. Google also shared another interesting open source product called the Apache Beam. It allows the streaming and batch data processing in a single data pipeline. This can simplify the data pipeline design and fewer code changes if you want to switch between streaming and batch data processing which significantly reduces the time it takes to push changes to production. It could be a useful tool for improving the handling of massive data processing that the Jublia Event App received on the event day itself.
Pycon APAC was an enriching experience for all of us, especially the interns who got the opportunity to enjoy their first ever Pycon. We have learnt a lot from other software developers, and we can’t wait to apply what we have learnt at Jublia. We hope to come back again next year!
p.s. We hope anyone who picked up our maze puzzle managed to link up the dots too