top of page

Custom WIFI Captive Portal Enhancements

Updated: 2 days ago

Problem to Solve

A major travel industry client was struggling to make a great first impression with customers connecting to their captive WiFi portal. Limitations of their existing systems often left customers in limbo, watching a loading screen instead of being wowed by the free access. Our client sought our help in optimizing the software to ensure customers had a great experience, leading to increased engagement. For any business, connecting with as many customers as possible during peak usage is important to drive acquisition. The goal for our client was to ensure the system would handle surges in customer usage. The challenge was constrained by the existing hardware infrastructure that could not be cost-effectively replaced. We were tasked with providing a smoother customer journey by squeezing the maximum performance out of the existing on-location hardware.


Challenges

This was a challenging project as the design goes counter to the typical design used in modern cloud computing. One big advantage of cloud computing is the ready availability of computing resources. This drives design that is less concerned with optimizing the solution for minimal CPU and memory requirements. For this project we found it necessary to investigate technologies that could scale to support the user load without increasing the resource utilization. Some of the project goals included:

  • Evaluate the existing technology for improvements

  • Ensure the new solution would outperform the existing

  • Recommend technologies that perform and are also supportable in the future

  • Ensure the solution was built to tolerate periods of loss of network connectivity


Legacy Technology

The existing service utilized serverless API Gateway + NodeJS Lambda for the cloud infrastructure. The existing on location services were also built using NodeJS, a technology the clients development team was familiar with. Our investigation revealed that under the minimal CPU and Memory requirements this solution would be unable to scale to support the desired load.


Unfortunately the on location operating environment had fixed resources. Upgrading the hardware was not cost effective. Our solution would need to ensure an increase in performance to the end user while utilizing the same resources as the existing solution. This project required Commerce Architects engineers to evaluate a number of alternate technologies. In order to ensure long term supportability we were also asked to ensure that our client’s existing developer team would be able to support this solution in the future.


Service Provider Limitations

The client's internet service provider added further challenges. Our solution needed to be able to tolerate periods of loss of network connectivity. This was another unique aspect of our design compared to most modern cloud services which are not designed to handle a complete loss of internet connectivity while still offering basic functionality to the end users. While the users would not be able to complete the WiFi sign in process, the users should be presented an informational fallback page. Our solution needed to provide a positive customer experience regardless of the adversities.


Our solution

Technology Evaluation

We started this project with a technology evaluation. The core chokepoint of the system was the on location API’s used by the SPA. In order to test different technologies we built very basic API servers in a number of different technologies. Each was tested for low, medium and high concurrent simulated users. The following technologies were compared.


  • NodeJs w/ ExpressJS

  • Java w/ Spring Boot

  • Go Lang w/ Echo

  • Rust w/ Axum

  • C++ w/ Crow

  • Java(GraalVM) w/ Quarkus


All servers were tested under the same operating conditions, for this test all servers were run inside a container. The containers were limited to 50 Millicore of CPU and 256 MB of memory. 


Evaluation Result

We tested NodeJs with Express as the existing solution was built with this technology. We wanted to evaluate if the performance of the existing application was limited by the technology used or by the actual code running on that technology. We found this technology underperformed all other technologies tested under the conditions enforced.


Initial testing immediately eliminated Java w/ Spring boot as starting the application consumed all the allowed memory in the container. It was decided to continue the test by substituting Java compiled with GraalVM using the Quarkus framework.


The most performant solutions were those built with Go Lang and Rust. These are both modern languages optimized web applications. C++ also showed promise for performance, but was clearly the most time consuming to develop a solution in. Our client’s development team had little experience with any of these languages and platforms. After discussion with our client it was decided that supportability in the future would rule out these solutions if another suitable technology could be identified.


Fortunately we found a great compromise with GraalVM and Quarkus. The GraalVM is a technology that allows for Java code to be compiled to a native binary. This allows for much smaller memory and CPU loads while offering most of the functionality developers expect when using Java. Quarkus is an API framework built to be lightweight and with built in support for compiling with the GraalVM. Code optimized for use with GraalVM has some limitations, but none of those were a major limiting factor for this use case.

Final Design Recommendation

As our client’s development teams had extensive experience with Java our final recommendation was to build the solution with GraalVM and Quarkus. This solution gives a good balance between performance and supportability. The final architecture had the following design elements:


  • The API development utilizes Qaurkus. During development the engineers can utilize a standard Java Virtual Machine to ensure ease of setup for developers and ability to easily debug code.

  • Build pipelines to compile the code with GraalVM and build a container image with the optimized server.

  • Our team developed a custom solution for server logging and user metrics. All log and metrics events are stored in a database inside the container. Events are batched and compressed to be sent to the Cloud as bandwidth permits.

  • The code was built in a modular fashion to allow for easily switching between internet service providers in the future.

  • Our team created Cloud infrastructure to accept the logs from the on location server and insert them into CloudWatch for easy access by the support team.


Our Results

Trusted Partnership in Action

Other consulting firms often recommend solutions unfamiliar to the clients in house team, this results in a long term dependency. Commerce Architects is committed to deliver “The right solution, on time, as promised”. This means partnering with our clients to ensure long term success with no surprise long term support expenses.

Approach

  • Client Team Capability Alignment: Careful consideration in collaboration with the clients development team resulted in technology choices that ensure a solution maintainable by the client’s existing team.

  • Comprehensive Knowledge Transfer: All design choices were documented to ensure future developers understood the context and rationale behind all technology decisions.

  • True Partnership: In order to deliver on our promise of no surprises we empowered the clients team with training sessions and frequent on-site visits to ensure a collaborative engagement.


Results that Matter

Your business deserves a consulting partnership that delivers faster and better results. Our experience and commitment to quality deliver on that promise.

  • User Experience First: We delivered technology to ensure our client makes a great first impression while protecting existing brand loyalty.

  • Optimized Resource Utilization: Through careful evaluation our solution delivered a superior customer experience utilizing existing infrastructure.  

  • Future-Proofed Solution: Taking time to understand our clients business model and future needs informed our choices to build a modular system. The design ensures a clear path to new functionality in the future.

  • Data Continuity: Our solution ensures user metrics and diagnostic logs are protected against upstream service outages. This ensures continuity in the data feeding reports utilized by our clients management team.


Key Takeaways

This project highlights the importance of choosing a partner with deep experience in providing solutions customized to your industry and business needs.

  • Test Before Recommending: Our thorough testing of multiple solutions prior to proposing a final design ensured success for our client. We quickly eliminated ineffective options (like nodeJS and bulky Java frameworks) while finding an unexpected novel approach with GraalVM and Quarkus.

  • Challenge Standard Cloud Practices: Cloud computing with virtually unlimited memory and processing power often results in in-efficient solutions. This drives up long term costs. While a necessity for this project, our commitment to ensuring efficient solutions decreases all of our clients long term expenses.

  • Novel Problems Deserve Novel Solutions: Our clients' businesses are each unique and we deliver the correct solutions to match your needs. Commerce Architects is committed to finding the correct solutions to deliver a winning customer experience. 


Sometimes the most elegant solution isn't about using the newest technology, but finding the optimal balance between cost, performance, system constraints, and team capabilities. This case study demonstrates our commitment to practical solutions that create real business value in spite of tight constraints.


Comments


bottom of page