Our team is active in the tight-knit NodeJS open source community. So when the Engineering Lead from a top Fortune 500 Tech company began looking for support on a project that required expertise in NodeJS, they reached out to us. Our partnership was a natural one since we have consistently contributed to hapi.js, their framework of choice, and collaborated on other similar projects in the past.
The product team wanted to bring-in additional expertise and resources to help port pieces of their existing .NET monolith to node.js under a more service-oriented architecture.
Like many teams working with outdated web applications, they had a code base that was hard to change, hard to debug, hard to diagnose performance issues, and offered minimal granularity for horizontal scaling. Slow performance and other issues were affecting the platform’s user experience, so this became a priority for the team.
Two of our top fullstack developers with expertise in NodeJS joined their team onsite for a month and then remotely for 6 months to support their core product team. This allowed their internal engineers to continue building the platform while simultaneously refactoring to microservices and improving performance and user experience.
- 2 Fullstack Developers
- 6 months
Tools and technologies used:
NodeJS, hapi.js, hapi pal, Elasticsearch, PostgreSQL, RabbitMQ, some .NET-oriented event bus.
The company's engineering team was taking a leap of faith using open new source platforms hapi.js and nodejs, and it was our responsibility to help them enable those tools at scale. The success of using these tools was a huge win for them and for us. We were involved in high-level decisions around architecting and tooling the platform, and educated team members who were new to using NodeJS to establish best practices.
We worked side-by-side with the engineering team leadership to ensure we delivered on the KPIs set by all stakeholders from Engineering, Sales, Customer Experience and leadership.
Our top priority was improving the development process, making it simple to develop and deploy the platform. We were thoughtful to base our work on reproducible conventions. We also balanced those goals with the product team's roadmap, enabling development work to continue at a steady pace, so they could restart their agile development, moving the product forward again rather than refactoring.
Onboarding began with pair-programming to become familiar with their team/stack/processes while completing work that was valuable to them. Once we had an understanding of their product and stack, Big Room’s team divided the refactoring work based on our individual strengths. We strategically completed services to iteratively test microservice interactions in order to catch and fix bugs incrementally.
Working with an inherently complex platform with several services and databases presented some challenges. With user experience as a priority we often prioritized time-intensive practices to ensure end-users would be unaffected by the new deployment.
With two Big Room Studios developers (Devin and Max), two architects from the internal team, four or five other developers, and one technical QA tester, the team was all hands on deck over the course of the project with many others providing support throughout the process.
Our collaborative teams also tackled new technologies and tools. We deploying microservices via hapi pluginization. We used CQRS / materialized views for quick reads. And during our collaboration the team authored OSS tools for modeling and creating test data from Joi schemas, and a client for RabbitMQ.
The team was able to deliver the refactored platform on time and on budget. This was a significant milestone for their product & engineering teams.
Together we were able to re-write two primary .NET services inside their software ecosystem which drastically improved performance by reducing the average response time from 17 seconds to ~200 to 300ms (⅕ to ⅓ of a second). Our work met and exceeded SLA requirements, specifically round-trip time from request to response. The code was released through a successful blue/green deployment and had no downtime.
In addition to the improvements to the code, we also were able to impact the overall team by training them on Node/hapi.js as well as advising on internal best practices. Overall, we really loved working together as a team and felt completely integrated into the tech, and culture of the company which made the project progress smoothly and also was just a lot of fun.