The intelligence to our instruments: Tech and teamwork behind software development at Vaisala Eduardo Murillo Development Manager Published: Jul 5, 2024 Working at Vaisala Vaisala’s software solutions provide real-time environmental data collection, monitoring and analysis to customers from medical laboratories to art galleries, from the Arctic to the eyes of hurricanes. But what does software development look like at Vaisala? In this blog, our Development Manager Eduardo Murillo takes you to behind the scenes of one of our software solutions Vaisala Jade Smart Cloud and the tech and teamwork that goes into software development at Vaisala. Remote monitoring from manufacturing to museums Our team works on Vaisala Jade Smart Cloud, which is a software solution able to monitor a large amount of time series data and serve insights to customers with low latency. When it comes to all the intelligence in this solution, the backend is armed with a wide array of powerful cloud-based tools in AWS: For providing the data to customers, we have a serverless backend API built with TypeScript, Lambdas and API Gateways. The backend is divided into a few larger microservices, or as we like to call them, "microliths". Some separation in serverless context is always necessary to avoid things falling under their own weight, but we want to also avoid unnecessary overhead and complexity due to back and forth communication between a plethora of smaller microservices, especially considering our backend is managed by a single team. Each microlith is built from cleanly separated subservices with clear responsibilities and boundaries aided by hexagonal coding architecture. Kinesis Data Streams is used in conjunction with Lambda processors to process the incoming measurements which are then stored into ElastiCache, DynamoDB and S3 for fulfilling both, our real-time and reporting needs. Finally, MongoDB is our backend’s solution for accommodating use cases requiring flexible querying, with filtering, pagination and sorting. Image The backend of Jade Smart Cloud is available to the frontend via a single access point, BFF (backend for frontend) using the tRPC-server which simplifies making type-safe API calls. BFF is our termination point for authentication and authorization and it provides just the right data for our frontend. The frontend is built on a React framework with TypeScript, utilizing Vaisala’s Rockhopper Design System (RDDS) to ensure a consistent UI/UX design between all Vaisala applications. GitHub Copilot is integrated into the development workflow to improve our development efficiency through AI-based code completion. For testing our backend, we utilize Jest for unit, integration and API tests, and BFF with Cucumber test framework for full features. Playwright is used for end-to-end test cases and Vitest for Frontend unit testing. Additionally, we use Storybook for developing and testing UI components in isolation, and there are also visual tests in place for spotting visual regression bugs. Deployment in both, front- and backend is done using Amazon’s AWS CDK tools, and the process is automated by our pipeline configuration in Atlassian Bitbucket Cloud Agility and ownership move our team Vaisala makes considerable investments into research and development, and with Jade Smart Cloud, we started from an almost MVP project that’s been evolving ever since. It all started with a basic use case, but we then identified the vast possibilities of the product and continued the development. Right from the beginning of what eventually grew into Jade Smart Cloud, our team and its ways of working were built to fit specifically the needs of this product. The project team has been evolving over time, but we currently have: 4 developers 1 QA/test automation developer 1 UX designer Product Manager (also the Product Owner) The role of Product Manager and Product Owner was combined to remove unnecessary steps in the workflow: Based on our experience, it’s good that the product manager and product owner are the same person. That way customer feedback can be added to the backlog very quickly. Image Eduardo Murillo, Development Manager at Vaisala The framework for our team’s work is carefully planned for at least the next six months, to give structure. For us, agility at work does not mean “ad hoc” or “chaos”. Aiming for agility creates stability: we’re investing in the team rather than a very tightly specified project that has a set end date. To keep things running smoothly, we hold biweekly retrospective sessions where team members can bring in any subject that’s causing issues with their work or collaboration. We’ve developed good processes for gathering discussion topics and have managed to handle even very complicated issues this way. Along with agility, a sense of ownership is what really moves our team. The entire team is closely involved in the project, which enables us to take in customer feedback and move very quickly to make improvements. Being able to go from feedback to design to deployment so quickly gives the team a real sense of ownership, and the thanks we receive from customers in turn feeds our creativity and drive. Ideally, we would want this way of working to become the norm at Vaisala. A sense of importance and ownership at work is important for motivation, and we’re pioneering ways to make it happen.