Scripting CycleStreets setup (Tech post)
This is a tech post, so if you’re not a techy person, feel free to stop reading now!
We’ve been reorganising the CycleStreets codebase to get ready for open-sourcing the remainder of our software.
This has been a challenging task involving learning how to write scripts that automate the installation of the CycleStreets website. The job has taken rather longer than expected, but has resulted in a much clearer structure to the highest level of the CycleStreets system and given us greater control of how the system is deployed.
It is fair to say that this aspect of our system had become rather complex with a lot of hidden dependencies. This would have been a real barrier for new coders to our project and so it had to be sorted out. The work now allows our codebase to separate out into these scenarios:
- Live deployment – provides the main CycleStreets website
- Failover deployment – holds a replicated copy of all CycleStreets data that can be used, should the live site fail for some reason
- Import – processes the latest OpenStreetMap extracts into a routing system
An immediate benefit of the work will be that we can much more easily deploy each of these roles. So for instance we could have multiple import machines, and each could be configured to serve different regions of the world.
We still have a little further work to clean and clarify the codebase before we can open the core code. This has been our main priority for the last few months, and will remain so for the next few weeks. It won’t be perfect, but we’ve aimed to get rid of the really bad dependency gremlins.
We’ve also been doing various cleanups, such as removing this blog installation from the main repository, daemonizing the routing process (optionally), and adding SMS monitoring.
The ongoing work on the scripts part of our system can be viewed at our public CycleStreets setup repository.