Kingdom Strollers started out of a condo in central Florida as a small family business in 2010. It is now a well-oiled, data machine, looking to implement business intelligence solutions next for features like up-selling opportunities on insurance, beverages and other add-ons and better visualization in forecasting inventory levels. Their investment in technology made them an industry leader in Orlando tourism.
SMB/SMEs have many start-up costs that are a priority. Investing in digital and business intelligence tools seems like something that can be developed later, yet delaying the launch of complementary technology can actually be the reason a business rapidly stagnates.
From a rented 6,700 square-foot space to a newly built, 16-000 square foot warehouse they can call their own, Kingdom Strollers can clearly see the return on investment from digitizing the business.
Kingdom Strollers, a stroller and crib rental company serving tourists and one of only a few Disney-preferred providers, has seen its revenue grow 40 percent year over year since working with Concepta on custom web development. This included adding abilities such as inventory tracking, online booking, delivery updates and travel agent referral tracking to its website.
The owner, Matthew Wilhite, knows the world of stroller rentals is not a glamorous one. The investment in technology made the company considerably more “attractive” though.
There is a lot of tracking involved with one simple order, from checking an inventory constantly in flux, to ensuring on-time delivery and knowing the exact stroller location drop-off. One major pain point for the company was constant updates to an order, all previously done through countless phone calls and changes to the master spreadsheet. Now, the order and update process is managed through the website—a win for the company and the customers.
Many small-to-medium size businesses struggle to update their processes as their business grows, not realizing that custom options for automation, insights and analytics are affordable. Kingdom Strollers prioritized the digital transformation of the business early.
Scalability is an essential component of enterprise software. Prioritizing it from the start leads to lower maintenance costs, better user experience, and higher agility.
Software design is a balancing act where developers work to create the best product within a client’s time and budget constraints.
There’s no avoiding the necessity of compromise. Tradeoffs must be made in order to meet a project’s requirements, whether those are technical or financial.
Too often, though, companies prioritize cost over scalability or even dismiss its importance entirely. This is unfortunately common in big data initiatives, where scalability issues can sink a promising project.
Scalability isn’t a “bonus feature.” It’s the quality that determines the lifetime value of software, and building with scalability in mind saves both time and money in the long run.
What is Scalability?
A system is considered scalable when it doesn’t need to be redesigned to maintain effective performance during or after a steep increase in workload.
“Workload” could refer to simultaneous users, storage capacity, the maximum number of transactions handled, or anything else that pushes the system past its original capacity.
Scalability isn’t a basic requirement of a program in that unscalable software can run well with limited capacity.
However, it does reflect the ability of the software to grow or change with the user’s demands.
Any software that may expand past its base functions- especially if the business model depends on its growth- should be configured for scalability.
The Benefits of Scalable Software
Scalability has both long- and short-term benefits.
At the outset it lets a company purchase only what they immediately need, not every feature that might be useful down the road.
For example, a company launching a data intelligence pilot program could choose a massive enterprise analytics bundle, or they could start with a solution that just handles the functions they need at first.
A popular choice is a dashboard that pulls in results from their primary data sources and existing enterprise software.
When they grow large enough to use more analytics programs, those data streams can be added into the dashboard instead of forcing the company to juggle multiple visualization programs or build an entirely new system.
Building this way prepares for future growth while creating a leaner product that suits current needs without extra complexity.
It requires a lower up-front financial outlay, too, which is a major consideration for executives worried about the size of big data investments.
Scalability also leaves room for changing priorities. That off-the-shelf analytics bundle could lose relevance as a company shifts to meet the demands of an evolving marketplace.
Choosing scalable solutions protects the initial technology investment. Businesses can continue using the same software for longer because it was designed to be grow along with them.
When it comes time to change, building onto solid, scalable software is considerably less expensive than trying to adapt less agile programs.
There’s also a shorter “ramp up” time to bring new features online than to implement entirely new software.
As a side benefit, staff won’t need much training or persuasion to adopt that upgraded system. They’re already familiar with the interface, so working with the additional features is viewed as a bonus rather than a chore.
The Fallout from Scaling Failures
So, what happens when software isn’t scalable?
In the beginning, the weakness is hard to spot. The workload is light in the early stages of an app. With relatively few simultaneous users there isn’t much demand on the architecture.
When the workload increases, problems arise. The more data stored or simultaneous users the software collects, the more strain is put on the software’s architecture.
Limitations that didn’t seem important in the beginning become a barrier to productivity. Patches may alleviate some of the early issues, but patches add complexity.
Complexity makes diagnosing problems on an on-going basis more tedious (translation: pricier and less effective).
As the workload rises past the software’s ability to scale, performance drops.
Users experience slow loading times because the server takes too long to respond to requests. Other potential issues include decreased availability or even lost data.
All of this discourages future use. Employees will find workarounds for unreliable software in order to get their own jobs done.
That puts the company at risk for a data breach or worse.
[Read our article on the dangers of “shadow IT” for more on this subject.]
When the software is customer-facing, unreliability increases the potential for churn.
Google found that 61% of users won’t give an app a second chance if they had a bad first experience. 40% go straight to a competitor’s product instead.
Scalability issues aren’t just a rookie mistake made by small companies, either. Even Disney ran into trouble with the original launch of their Applause app, which was meant to give viewers an extra way to interact with favorite Disney shows. The app couldn’t handle the flood of simultaneous streaming video users.
Frustrated fans left negative reviews until the app had a single star in the Google Play store. Disney officials had to take the app down to repair the damage, and the negative publicity was so intense it never went back online.
Some businesses fail to prioritize scalability because they don’t see the immediate utility of it.
Scalability gets pushed aside in favor of speed, shorter development cycles, or lower cost.
There are actually some cases when scalability isn’t a leading priority.
Software that’s meant to be a prototype or low-volume proof of concept won’t become large enough to cause problems.
Likewise, internal software for small companies with a low fixed limit of potential users can set other priorities.
Finally, when ACID compliance is absolutely mandatory scalability takes a backseat to reliability.
As a general rule, though, scalability is easier and less resource-intensive when considered from the beginning.
For one thing, database choice has a huge impact on scalability. Migrating to a new database is expensive and time-consuming. It isn’t something that can be easily done later on.
Principles of Scalability
Several factors affect the overall scalability of software:
Usage measures the number of simultaneous users or connections possible. There shouldn’t be any artificial limits on usage.
Increasing it should be as simple as making more resources available to the software.
Maximum stored data
This is especially relevant for sites featuring a lot of unstructured data: user uploaded content, site reports, and some types of marketing data.
Data science projects fall under this category as well. The amount of data stored by these kinds of content could rise dramatically and unexpectedly.
Whether the maximum stored data can scale quickly depends heavily on database style (SQL vs NoSQL servers), but it’s also critical to pay attention to proper indexing.
Inexperienced developers tend to overlook code considerations when planning for scalability.
Code should be written so that it can be added to or modified without refactoring the old code. Good developers aim to avoid duplication of effort, reducing the overall size and complexity of the codebase.
Applications do grow in size as they evolve, but keeping code clean will minimize the effect and prevent the formation of “spaghetti code”.
Scaling Out Vs Scaling Up
Scaling up (or “vertical scaling”) involves growing by using more advanced or stronger hardware. Disk space or a faster central processing unit (CPU) is used to handle the increased workload.
Scaling up offers better performance than scaling out. Everything is contained in one place, allowing for faster returns and less vulnerability.
The problem with scaling up is that there’s only so much room to grow. Hardware gets more expensive as it becomes more advanced. At a certain point, businesses run up against the law of diminishing returns on buying advanced systems.
It also takes time to implement the new hardware.
Because of these limitations, vertical scaling isn’t the best solutions for software that needs to grow quickly and with little notice.
Scaling out (or “horizontal scaling”) is much more widely used for enterprise purposes.
When scaling out, software grows by using more- not more advanced- hardware and spreading the increased workload across the new infrastructure.
Costs are lower because the extra servers or CPUs can be the same type currently used (or any compatible kind).
Scaling happens faster, too, since nothing has to be imported or rebuilt.
There is a slight tradeoff in speed, however. Horizontally-scaled software is limited by the speed with which the servers can communicate.
The difference isn’t large enough to be noticed by most users, though, and there are tools to help developers minimize the effect. As a result, scaling out is considered a better solution when building scalable applications.
Guidelines for Building Highly Scalable Systems
It’s both cheaper and easier to consider scalability during the planning phase. Here are some best practices for incorporating scalability from the start:
Use load balancing software
Load balancing software is critical for systems with distributed infrastructure (like horizontally scaled applications).
This software uses an algorithm to spread the workload across servers to ensure no single server gets overwhelmed. It’s an absolute necessity to avoid performance issues.
Scalable software does as much near the client (in the app layer) as possible. Reducing the number of times apps must navigate the heavier traffic near core resources leads to faster speeds and less stress on the servers.
Edge computing is something else to consider. With more applications requiring resource-intensive applications, keeping as much work as possible on the device lowers the impact of low signal areas and network delays.
Cache where possible
Be conscious of security concerns, but caching is a good way to keep from having to perform the same task over and over.
Lead with API
Users connect through a variety of clients, so leading with API that don’t assume a specific client type can serve all of them.
It refers to processes that are separated into discrete steps which don’t need to wait for the previous one to be completed before processing.
For example, a user can be shown a “sent!” notification while the email is still technically processing.
Asynchronous processing removes some of the bottlenecks that affect performance for large-scale software.
Limit concurrent access to limited resources
Don’t duplicate efforts. If more than one request asks for the same calculation from the same resource, let the first finish and just use that result. This adds speed while reducing strain on the system.
Use a scalable database
NoSQL databases tend to be more scalable than SQL. SQL does scale read operations well enough, but when it comes to write operations it conflicts with restrictions meant to enforce ACID principles.
Scaling NoSQL requires less stringent adherence to those principles, so if ACID compliance isn’t a concern a NoSQL database may be the right choice.
Consider PaaS solutions
Platform-as-a-service relieves a lot of scalability issues since the PaaS provider manages scaling. Scaling can be as easy as upgrading the subscription level.
Look into FaaS
Function-as-a-service evolved from PaaS and is very closely related. Serverless computing provides a way to only use the functions that are needed at any given moment, reducing unnecessary demands on the back-end infrastructure.
FaaS is still maturing, but it could be worth looking into as a way to cut operational costs while improving scalability.
Don’t forget about maintenance
Set software up for automated testing and maintenance so that when it grows, the work of maintaining it doesn’t get out of hand.
Build with An Eye to the Future
Prioritizing scalability prepares your business for success. Consider it early, and you’ll reap the benefits in agility when it’s most needed.
Are you looking for software that can grow with your company? Set up a free appointment with one of our developers to talk about where you need to go and how we can get you there!
When Kingdom Strollers started in 2010, it was a small family business operating out of a condo. It didn’t stay small for long. The steady flow of tourists to Central Florida created an opportunity to provide an often-overlooked service that makes vacations much more enjoyable for families: quality strollers and cribs delivered on demand to hotels and vacation homes.
By the third year owner Matthew Wilhite was overwhelmed with the tiny details of daily operations. It felt like he couldn’t go 30 seconds without some urgent situation blowing up his phone.
Things were made both better and worse when he secured one of three coveted spots as a Disney stroller provider: better because his business was growing fast and worse because it was now taking up the majority of his time.
At this point Wilhite made an unusual move: he made digital transformation a priority and began pushing high-level technology projects at a point when many small businesses are just becoming profitable.
Updating businesses processes to cope with growing business is something most companies struggle with, and Kingdom Strollers was no different. As demand grew they ran into challenges operating at scale.
They took orders by phone, requiring additional calls every time a customer needed to make a change to their reservation. Inventory management was complicated since had to be updated manually after every call and equipment delivery. That made it hard for staff to know what was available, let alone prospective customers.
Delivery presented more challenges. Drivers planned their own routes and had to update orders manually as they returned to base. There was no easy way to change delivery times. Plus, customers couldn’t track their delivery status in real time.
On top of everything, Kingdom Strollers was spending too much time compiling and processing reports. Wilhite’s business was beginning to boom, and he needed a fast, accurate reporting mechanism to support that growth.
By partnering with Concepta, Kingdom Strollers found solutions to help them scale. They had a new website built complete with a customer service portal.
Now customers can access inventory lists, add additional services or products to their orders, change delivery times, and more at their convenience. With the inventory system linked in, the availability problem was solved as well.
A custom driver app provides more flexibility to both drivers and customers. Optimized delivery routes made drop offs and pickups more efficient and responsive to customer changes.
Drivers can scan in products for up to-the-minute order status, and they have a dynamic view of each order and its special requirements.
Everything is tied together with a customized reporting dashboard. Now Wilhite and his team can pull detailed reports across the business with a few clicks.
Results That Speak for Themselves
With Concepta’s digital solutions in place Kingdom Strollers has been able to continue providing the kind of customer experience that brings visitors back for more. Since putting the system into action they’ve seen an average of 40% revenue increase year over year.
The rise in demand pushed them to move from their rental warehouse to a privately-owned facility with more than double the space. Besides the lucrative Disney contract, Kingdom Strollers is also recommended by popular guide books like Beyond the Attractions: A Guide to Walt Disney World with Preschoolers.
Better yet, Wilhite can now make it through an entire dinner in peace.
You’ve seen what we did for them- now find out what we can do for you! Schedule your free consultation today!
NodeJS is a rising star in the enterprise software world. It’s being used by everyone from fledgeling chains to entertainment giants. For those tasked with leading software projects, though, popularity is the least important aspect of technology.
They’re more concerned with tangible benefits – what NodeJS is, why developers love it, and how it can boost their digital initiatives.
Read on for answers to the most common executive questions about NodeJS.
What is NodeJS?
What do people actually use NodeJS for?
NodeJS may be best known as a tool for real-time applications with a large number of concurrent users, but it also sees use for:
- Backends and servers
- Developing API
- Scripting and automation
Why do developers like NodeJS?
Because developers can use the same language throughout the project developers find working with teammates assigned to other areas of the stack less disruptive.
The Node Packet Manager is another major draw. With half a million NPM packages available for use, developers can find something to suit all but the most specific needs.
There’s also the fact that technical tasks that are usually difficult – for example, communicating between workers or sharing cache state – are incredibly simple with NodeJS.
Finally, many developers just like using NodeJS. Creating performant apps can be fast, easy, and fun. There’s an active and engaged community full of peers to share ideas or coordinate with on a tough problem.
When a tool makes their job more enjoyable, developers are going to want to use it whenever possible.
How does NodeJS benefit enterprise?
When it comes to business value, NodeJS brings a lot to the table.
- Faster development: NPM packages help reduce the amount of code that must be written from scratch. On top of that, using the same language end to end makes for a smoother, more productive development process. It’s faster than Ruby, Python, or Perl. Testing goes faster, as well.
- Scalability: NodeJS uses non-blocking I/O. Processes aren’t held up by others that are taking too long. Instead, the system handles the next request in line while waiting for the return of the previous request. This lets apps handle thousands of concurrent connections.
- High quality user experience: Applications built with NodeJS are fast and responsive, handling real-time updating and streaming data smoothly. They provide the kind of user experience that makes a positive impression on customers.
- Less expensive development: Open source tools are a great way to lower development costs. The productivity offered by NodeJS pushes savings even farther; developers spend less time building the same quality app as they would with other tools. NodeJS can be hosted nearly anywhere, too.
How are companies using NodeJS now?
- Netflix: The largest and best-known streaming media provider in the world reduced their startup time by 70% by integrating NodeJS.
- Walmart: As their online store gained popularity, Walmart experienced problems handling the flood of requests. NodeJS’ non-blocking IO improved their ability to manage concurrent requests for a better user experience.
- Paypal: Originally there were separate teams for browser-specific code and app layer-specific code, which caused a lot of miscommunications. Switching their backend to NodeJS meant everyone was now speaking the same language. More cohesive development allows the Paypal team to respond faster to issues.
Are there times when NodeJS should not be used?
Although it’s a powerful tool, there are times when NodeJS doesn’t fit. Using it for CPU-intensive operations basically cancels out all its benefits.
It doesn’t support multi-threaded programming, meaning it’s not the best choice for games and similar applications.
The best use cases for NodeJS are when there will be a high volume of concurrent requests and when real-time updating is key. Other benefits – low costs, smoother development – can also be found with other tools, but performance at scale is a serious advantage.
Is NodeJS the right tool for your next project? Talk through your options with one of Concepta’s development team to find out!