The brief was to provide a shared source-code solution, working with the Boat International in-house development team, that they could take ownership of and continue development in a co-sourced environment.
The challenge was to produce a system that draws millions of data points from a number of real-time sources, including Boat International’s Superyacht Directory (SYD) database, and to allow dashboarding, charting and analytics data, with real-time location and mapping data, to the yacht industry at large, including brokers, intermediaries and suppliers to the industry.
The Byte9 Solution
The application is supported by full Chai test assertions, running in Mocha and the application deployment is containerised using Docker, with the code managed in GitHub,and deployed using CircleCI, which runs both the tests and linting, to maintain code quality and standards. BOAT Pro also utilises SNYK to manage code smells and to manage any security vulnerabilities across all packages used in the application.
BOAT Pro uses two types of continuous deployment. Firstly, deploying a serverless environment to Amazon Web Services (AWS) using Circle CI and Serverless Framework via AWS CloudFormation Templates. The CloudFormation template creates a serverless environment, the API gateway, an AWS Lambda Function and an AWS S3 bucket which stores the application code, CloudFormation then takes that code and deploys it on a an AWS Lambda function. Using Circle CI to trigger instances on demand allows Boat International perform both tests and health checks, that utilise an environment for only the time that it takes to perform the tests and return the results.
The other kind of Continuous deployment utilises AWS Elastic beanstalk. Elastic Beanstalk provisions the infrastructure and helps manage the BOAT Pro application. Using AWS Auto-Scaling Groups and AWS Elastic Load-Balancing allows Boat International saving on hosting and SysAdmin overhead. Immutable deployment allows us to update the platform with the latest patches and updates ongoing, without any down-time. Between CircleCI and AWS elastic beanstalk we are using AWS CodePipeline, which is picking up the code from the S3 bucket and delivering to Elastic Beanstalk.
The BOAT Pro application is also using AWS CloudFront to deploy the front-end, which allows us to take advantage of the AWS backbone network and CloudFront edge servers to optimise delivery of the application and yacht data globally.
Additionally, we have delivered discrete micro-services for system notifications, using AWS’ Simple Notification Service, AWS Simple Email Service, and AWS Simple Queuing Service to allow BOAT Pro to manage all push notifications and emails in an elegant and scalable way.
Commercially the BOAT Pro application has been a tremendous success for Boat International Media. The recent addition of the world’s first AIS data Global Fleet tracker, by the Boat International in-house team, allowing subscribers to build custom maps and reports based on yacht’s historical activity has really set the product apart, and is testimony to the collaborative, co-sourced approach.
From a development perspective the co-sourced solution has allowed the Boat international team to work seamlessly with the Byte9 team to manage ongoing design and functional change, as we iteratively improve the BOAT Pro application. We are working as a contiguous team, pair programming, reviewing pull-requests, providing technical project management oversight and with full integration of testing, deployment tools and communication in shared Slack channels and within Jira.