We were amazed to see how much everyone appreciated our previous article which summarized how enterprises use Node.js, so we decided to do a follow up on the subject and write more about well-known companies building software products with Node.
This article on Node.jsNode.js is an asynchronous event-driven JavaScript runtime and is the most effective when building scalable network applications. Node.js is free of locks, so there's no chance to dead-lock any process. examples shows how Groupon, Lowe’s Home Improvement and Skycatch have successfully deployed their enterprise applications with Node.js.
The source of these case studies is the Node Foundations’ Enterprise Conversation series: https://www.youtube.com/playlist?list=PLfMzBWSH11xYNeUJXap4NTMX3TFtH-_0z
If you’re interested why we joined the Foundation and what are its goals, head over here.
Groupon rebuilt its entire web layer with Node.js
The first participant in Node Foundations Enterprise Conversation series is Adam Geitgey – who’s been the Director of Software Engineering for five years at one of the largest e-commerce companies, Groupon.
When he arrived at the company, it was mainly a Ruby on Rails shop, and everything was running as a huge monolithic application. That was working well for a long time, but eventually, it become too hard to maintain, and they seemed to outgrow it.
Besides that, Groupon made a number of acquisitions in the recent years, thus, in addition to their Ruby on Rails stack they ended up with a new Java stack in Europe and a PHP stack in South America.
Groupon felt the need for replacing their current technology stack, so they started to look for a more suitable software platform around 3-4 years ago.
The reasons for choosing Node
Groupon decided to adopt Node.js for the following reasons:
- JavaScript is close to the universal languages, so it requires less effort to learn and work with, and the communication is also easy for the developers.
- The scaling of Node.js applications worked well on tests. Node did not only allow them to unify their development language but also gave them performance improvements in some cases.
- Node developers can reuse previously written code elements which can be a huge ease from time to time.
- Node.js was the most uniform platform at Groupon. Even though they used Java for a lot of backend services, the frameworks and ways how Java was used were diverse. This gave them a way to move a large chunk of their software onto one platform in one swoop.
As a result of the decision, the Groupon engineering team rebuilt their entire web layer with Node.js. During the rebuilding process, Adam’s task was to manage the team which developed the platform and the framework which was used by other product teams to build and ship Node apps in production.
The team also released several open-source libraries that they built along the way:
- gofer, which is an API client library they used to talk to backend services.
- node cached, which is caching library for Node.js.
Today Groupon is using Node on multiple platforms:
- Around 3-400 back-end services are running with Node.js, mixed with Java and Ruby.
- They use Node as an API integration layer.
- They use it for all of their client apps, including their website.
Currently, Groupon has 70 Node.js apps in production, which are used in 30 countries. Overall, Groupon uses Node.js heavily in the front-end, and here and there for several backend purposes.
The future of Node at Groupon
Regarding the future, they are totally convinced to invest into Node for the web platform. All of their production services are on Node 4 right now, but they are already excited about Node 6, and waiting for the LTSLTS means long-term support. The acronym is often used to mark Node.js release lines that will be maintained and supported for an extended period. There are two separate kinds of LTS releases: Active and Maintenance. The Active release line often gets new features and other improvements beside security patches and bug fixes, and the Maintenance only gets the latter. It... version to come out.
In the past – because Groupon was on Ruby – they have been using CoffeeScript a lot, and it is a great chance for them to finally migrate from CoffeeScript and standardize on plain JavaScript.
Another big project Groupon is working on is moving from a model where developers maintain their own servers to a model where the company provides them with clusters of servers and their apps run on them – more like a Heroku model.
Node.js: the glue of Skycatch
Andre Deutmeyer is the next participant in Node Foundations Enterprise Conversation series. His role is to lead the web infrastructure and development team at Skycatch.
Skycatch is a data company helping to capture, manage and analyze commercial drone data. Skycatch sees the constructions or mining sites as a database that needs to be queried. Existing tools like writing raw SQL queries are hard and time-consuming to create, while Skycatch’s solution makes it easy to extract actionable data from the sites.
Skycatch has small cross-functional teamsA cross-functional team has individuals with different roles like database engineers, testers, infrastructure engineers, etc. Cross-functional teams can ship code faster than functional teams because they can make their own decisions and work independently within an organization. with 20 developers, and as I already mentioned, Andre’s role is to lead the web, infrastructure and development team. He is involved in architecting and scaling out data processing, while his goal is to deliver the data that you send them reliably and quickly.
What helps them with that? Of course, Node.js, but where do they use it?
“We are using node everywhere you can think of – Node is our glue.”
They use it on their drones, and across their management and iOS apps. Almost their entire backend is running on Node. For all of their data processing, they have a lot of microservicesMicroservices are not a tool, rather a way of thinking when building software applications. Let's begin the explanation with the opposite: if you develop a single, self-contained application and keep improving it as a whole, it's usually called a monolith. Over time, it's more and more difficult to maintain and update it without breaking anything, so the development cycle may... that are constantly communicating with each other and Node is what keeps that going smoothly.
What are the benefits of using Node.js at Skycatch?
Node has a great impact on the development at Skycatch, as Andre says:
“You can’t really put a price on the ability to move fluently from the front-end development into a service architecture style and scaling things is easy because there is no hurdle moving between frontend and backend. It scales much more easily than if we had chosen a different language to run on the servers.”
They have a lot of people who were working on the web, API, and the data processing sides as well. Thus, the developers can figure out during the projects which part of the stack they prefer working on and again; there’s not a lot of huge mental hurdle to move from one to the other because the programming language is not a problem.
The future of Node.js at Skycatch
Recently they’ve been looking at AWS Lambda as it has released support for Node 4. Since then, they’ve been in a big hurry to start over coding a lot of their smaller services to make use of the infrastructure on AWS Lambda. They are a small team, so they want to focus on the product, not on having to scale the infrastructure, and AWS Lambda is perfect for that.
Lowe’s Home Improvement thinks differently thanks to Node.js
The latest participant in the Node Foundations’ Enterprise Conversations series was Rick Adam. He is the manager of the IT application portfolio of digital interfaces at Lowe’s Home Improvement.
His role at Lowe’s is the management of the applications and teams that drive the presentation tier of Lowe’s digital properties. Rick manages a team of 25 developers, including the software architecture team.
Lowe’s history and how they arrived at Node.js
Coming out of the recession-era of 2007-2008, the company started to see that the home market continued to grow and the needed to drive further investments into a digital space.
As new consumer technologies began to come out for smartphones and tablets, the company began to look at Lowe’s Digital not only as a valuable sales channel for the company, but also as a true sales driver.
They began to build the engineering team which consisted of about 2-3 web developers back at that time.
Killing the Monolith
They started to look for a new technology because their application was a big monolithic app, and it was a daunting process to release and introduce any change regardless of how small that might have been.
Since Lowe’s is in the retail business, their number one priority is to drive customers through a journey and to enable them finishing the checkout processes. However, in those days minor things, like a text change on the product list page required the full application to be updated and the monolithic app to be packaged and deployed again – which crippled their ability to move fast.
Finally, the risk and the quality assurance behind doing that became so daunting that their business and IT people weren’t comfortable keeping up with the pace that the business required.
Although they’ve looked at more off-the-shelf software solutions or larger applications to drive their digital property, traditionally it has not been a part of their process even to search for open-source technologies. However, they began to reconsider their application portfolio and to figure out introducing a more open-source software or solution.
Lowe’s digital team was on the frontline, trying to drive their technology forward. They were in the middle of a major re-architecturing and redesign project for www.lowes.com and their mobile site, with the goal of to bringing a new experience to the table.
During that project, they started to take a look at what’s the right technology stack that their business and brand needs, which led them to start using Node.js about two years ago.
How Lowe’s profits from adopting Node.js
When they looked at Node.js, it made sense as they had a great team of web developers who were already well skilled in JavaScript. Hence they didn’t have to go and find talent or a new skill set.
“We had a great team here, and the application made sense just from how it plays into our target status quo”!
Node is a perfect technology for their web tier for brokering API requests. Also, Lowe’s has seen a lot of growth both from the company itself and from the technology that they are introducing.
“It’s been exciting to see the growth and the maturity of our development of acumen and where we are going to take the brand.”
One of the aspects that they liked about Node was the asynchronous model, providing the ability to call multiple services at once. When they all finish, they can then render the result with their microservices model.
“It delivers a one-page experience that calls five different little services and not have to do the traditional waterfall approach.”
Node has been doing great regarding performance, especially at scale. The applications are using fewer resources in Node.js compared to what they would traditionally use in Java to render a page. The reason for that is the small fragmented applications do one page better than a monolithic app.
What has also been ideal for them is the reuse of their front-end developer skills to work with JavaScript on the backend. That is especially useful because traditionally they had a segregated teamwork. Back-end guys were traditionally on Java and their frontend guys work on all the front-end CSS, JavaScript, and HTML.
By going with Node.js, the engineering team was able to take full responsibility of owning the entire stack for UI from the backend trough the view layer, to the actual front-end. They were able to reuse their resources that are well-versed in JavaScript and HTML and make it go into the Node.
Now they can put new features together quickly and even do prototyping to do research and some user testing. Then take that idea to production level and release it without putting the other parts of their application stack at risk. Rick even says:
“Node.js really opened some eyes to the potential here to think differently than we’ve ever been able to in the past six years.”
Node.js Examples: The Conclusion
As it has been pointed out, companies can benefit a lot from the adoption of Node.js both on the developer and the application level. The latter is especially considerable when it comes to performance and scalability.
If you’d like to start learning more, I suggest to check out our Node Hero tutorial series and deliver software products using Node!