Everything Executives Need to Know About NodeJS

nodejs-executives

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?

NodeJS is an open source platform for developing server-side and networking applications. Written in JavaScript, it’s quick to build with and scales extremely well.

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
  • Frontends
  • Developing API
  • Microservices
  • Scripting and automation

Why do developers like NodeJS?

Being easy to work with makes a tool popular with developers, and NodeJS is both lightweight and efficient. The Javascript is written in a clear, easy to read format.

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!

Request a Consultation

 

Why You Should be Leveraging API for Your Software

leveraging-api-software

API aren’t just a catchy tech trend. They are valuable components of modern digital strategy that can boost the scalability, performance, and flexibility of software.

There’s a lot of debate these days over the best types of API to use, but many times the business case for this technology gets glossed over. That’s unfortunate, since there’s a strong argument to be made for why every company needs (or will eventually need) to leverage API while undergoing digital transformation.

API Definition

An application programming interface, or API, acts as an intermediary between software components. It allows for controlled access to internal data and operations by specifying what software accessing the target component does and doesn’t have permission to do.

What API Bring To The Table

API have more to offer than easy social media logins and mobile payment options. The technology’s applications are nearly endless, so when making a business case for API it’s more impactful to highlight the potential enterprise benefits first.

A solid API strategy can:

Boost Customer Experience and Retention

Customers want a rich, uninterrupted digital experience. 83% of them agree that a seamless experience across devices and platforms is important to them. Customers expect to be able use their favorite software in the most convenient manner, meaning in tandem with complimentary tools.

This is where API come in. By exposing select services to third-party use, API make the platform as a whole more functional and interactive. That translates into a richer customer experience. With their need for personalization and interactivity met, customers aren’t motivated to seek other services. After all, why should they go to the effort when they can handle all their product-specific needs in one place?

A great example of this effect in action is the Goodreads – Amazon partnership. Goodreads uses Amazon’s API to provide highly detailed product data. The platform’s users can make purchases or add items directly to Amazon wish lists from Goodreads. The end result is happier, more loyal customers with favorable impressions of both platforms.

There’s also a “fear of loss” effect in play that encourages customer retention. When an API is used in several different ways it becomes an integral part of the customer’s routine. Leaving the original platform disrupts their daily habits, which is a hassle most customers don’t want to handle.

That provides a cushion of tolerance that companies can lean on while fixing issues that might otherwise send churn skyrocketing.

Enrich Interactions With Partners

There are structural barriers preventing perfect cooperation between a company and its business partners. Partners must request data when they need it, causing delays when unexpected requirements come up or misinformation is accidentally passed.

An API takes out the middleman. Partners have controlled access to all the information and processes needed for smooth operations without being privy to more sensitive information.

The risk of expensive misunderstandings is reduced since everyone is working from the same data. It’s possible to allow partners some access for updating information and being active in joint processes, too, so data is always current.

Power Mobile Strategy

The future of digital enterprise lies heavily in mobile. 80% of adults own a smartphone, and they spend nearly four hours a day on mobile devices. That time is valuable from a business standpoint, too: mobile devices have higher conversion rates than desktops.

However, no company can develop their own extensions for every possible mobile device. There’s too much territory to cover. Even when companies choose hybrid apps to speed up smartphone coverage, the growing IoT trend means there are potential applications for smartwatches, fitness wearables, and more. It isn’t cost-effective to try and service them all.

API allow software to be adapted for use in a wider variety of devices. Market demand can determine where connectivity is wanted without additional investment by the parent company.

For example, a smart home platform might use a cleaning company’s API to allow customers to set up and oversee services while on vacation.

The company doesn’t need to develop the software themselves; the smart home company does that in order to provide their own customers with better service.

Modernize Legacy Systems

Outdated legacy systems present a challenge to digital transformation efforts. Often formed as rigid monoliths, they’re complex, hard to scale, and don’t connect easily with new tools and processes.

Internal API can be used to expose portions of a monolith architecture. They let existing functions interact with more modern tools or pull them out into more independent microservices.

Using API in this way has two main benefits. It increases the system’s performance and scalability by reducing the strain on its overall structure. Plus, internal systems that weren’t previously connected can talk to each other using the API.

This streamlines internal operations and breaks down data silos between departments.

Making the Call

The applications of API are so diverse and produce such marked results that it’s hard to find reasons not to develop them. In fact, as a company grows so does the social pressure to provide interconnectivity and data portability through public API. Those who don’t risk being passed by in favor of more tech-ready competitors.

How can API improve your business? Set up a free appointment with one of Concepta’s experienced developers to learn what this technology can do for you.

Request a Consultation

Web Application Performance: Building Your Application For Growth

Building-Your-Web-Application

When talking about building web applications for growth, the conversation often devolves into a technical debate over whether to scale up or out or which specific technologies will suit an application.

These debates forget one of the most important rules of enterprise technology: business goals should drive the tech, not the other way around. Leaders should start by clarifying what is needed from the app as it grows before nailing down the tools.

There are three key concepts which all scaling technology should support in order for an app to be considered “built for growth”.

User-based Performance

Application performance can be measured many ways, but for public-facing apps the focus should usually be on user-centric metrics. “User-centric” refers to traits which directly affect the user’s experience. For example:

  • Load times
  • Reaction times to button clicks
  • Fast and reliable return of updated information

Applications are highly sensitive to user perception. More than half of users will abandon a web app entirely if it seems too slow. It damages their overall perception of the sponsoring business’ modernity, as well.

On the flip side, better performance leads to higher revenue and better ROI on advertising campaigns. Apps that load in 5 seconds or less see 25% more ad visibility and 70% longer session duration on average. They’re also enjoy higher user retention rates than slower applications.

When deciding between two technologies, choose the one that reduces the user-perceived delay the most. Determine how much of the delay is caused by each step of the data retrieval and presentation process, then prioritize tools that target the problem areas.

Scaling Cost

Web apps shouldn’t have a bigger cost to grow than to build in the first place, but that’s what can happen when growth isn’t considered from the start. Companies sometimes make design choices that are less investment during development but require complex, expensive scaling techniques.

An app can’t be called fully scalable unless it has a fixed marginal cost to grow. Adding users or capacity should be predictably priced and simple to implement. “Predictable” is a big part of being scalable. There’s no way to tell exactly how quickly an application will grow, but it is possible to create a scaling plan that shows leaders how much they can expect that growth to cost at each stage.

Surprises when scaling generally mean the original plan wasn’t thorough enough. Be sure to take into account vendor stability and projected rate increases. Also, don’t leave out any higher costs for maintenance at scale.

Security At Scale

Application security is one of the top concerns for CIOs in 2018. 45% of companies plan to spend more this year than they did in 2017. Despite the interest, 90% of web applications have at least one avoidable vulnerability. Common weak areas include encryption, authentication, and access control.

Hard-coded passwords are another serious risk. A full tenth of applications still use them for administrator-level privileges despite general discouragement by the security industry.

The risks from these vulnerabilities increase exponentially as an app grows into an appealing target for malicious actors. When planning for scalability, focus on growing securely as well as quickly. Don’t take risks with customer data that could lead to breaches, legal issues, and loss of reputation.

On a hopeful note, the problem does seem to be shrinking. In 2016 the average number of vulnerabilities per application was four, and that fell to three per app in 2017. That average may fall even more if the emphasis on security continues to drive safer design practices.

The True Measure of Scalability

Scalability isn’t only about whether applications do or don’t crash under unpredictable workloads. Availability is part of the puzzle, but not all. The true measure of scalability is whether a system is flexible enough to efficiently meet a company’s needs within an acceptable range of quality regardless of workload. Make that the focus of technology decisions and an highly scalable app will always be the result.

Concepta has more than ten years experience designing web applications that maintain high performance and security at scale. To learn more about the technologies we use and how they can benefit your business, set up a free consultation with one of our skilled developers.

Request a Consultation

The Dos and Don’ts of Scalable Architecture

Design-Scalable-Architecture

Scalability is having its moment in the sun. After being dismissed as something to think about down the road, leaders have begun to realize how important it is to plan for scalability from the start. This strategy puts companies in a solid position to take advantage of unexpected growth without taking a hit to service quality.

As scalability grows in importance, some common themes are beginning to emerge. Companies are realizing their legacy architecture is too rigid to handle a sudden increase in workload, and adjusting for growth is more expensive than they’d planned.

Read on to find out where they’re going wrong and how to learn from their mistakes.

Principles of Scalability

Simply put, scalability is the ability of a system to handle sudden changes in workload without negatively impacting performance. It’s usually broken down into three areas.

  • Availability: The system should be available for use as much as possible (ideally, always). Uptime percentage has the most immediate effect on customer experience. After all, it doesn’t matter how useful an application is if no one can access it.
  • Performance: The system must maintain a high level of performance even under heavy loads. Speed is critical to providing a good user experience, and customer experience is fast becoming the most important factor in preventing churn.
  • Reliability: The system must accurately store, retrieve, and edit data under stress. It should return the most current data on request without defaulting to old or inaccurate data or failing to record new data. Unlike availability and performance, reliability builds good customer experiences in the long run rather than just in the moment.

How to Design Scalable Architecture

Rather than focusing on specific brands or tools, keep a set of design principles in mind.

Don’t use vertical scaling

Vertical scaling is scaling by adding more powerful resources (ie, more RAM). It’s secure and fast under light loads, but it does not scale well at all. More powerful equipment is increasingly more expensive, and there’s only so high it can scale. Plus, vertical scaling tends to lock companies into technology without an easy path to modernization. It’s unavoidable sometimes- especially when dealing with many atomic transactions or high-grade security concerns- but whenever possible don’t scale up.

Do favor horizontal scaling

Horizontal scaling involves adding more nodes to a distributed network (ie, adding another server) rather than more powerful nodes. It’s the fastest, most cost-effective way to scale since increasing its capacity is as simple as increasing the size of the network.

Don’t default to physical servers

Physical servers are only really valuable for multinational companies with high security requirements and a lot of usable capital. For the vast majority of companies, they’re a waste of time and money. Servers are expensive to build, maintain, and secure. New projects have to be put on hold while waiting for the storage to be finished. Plus, there’s always the risk of hardware becoming outdated.

Do take advantage of cloud storage

Cloud storage puts data in logical pools spread out over a number of servers. Vendors then sell access to that storage through subscriptions. This model takes the burden of security and hardware maintenance off companies and allows them to purchase only what is needed at launch while remaining prepared for rapid scaling. Because the cost is spread out like a utility instead of an upfront investment, the project can reach ROI faster and begin to pay for itself much sooner.

Don’t create unnecessary bottlenecks

Bottlenecks form when multiple processes require the same resources to proceed. Plan the application architecture to maximize the availability of resources that will be in high demand. What does that look like?

  • Caching stores data closer to end users. It’s an excellent way to facilitate the return of data that’s needed often but changes rarely.
  • Non-blocking IO calls serve more requests with limited resources by letting processes continue before a slower one has finished.
  • Load balancing software intelligently spreads the workload across the network to reduce pressure on any one single node.
  • Redundancy safeguards against lost data as well as providing more access to high-demand resources.

Do consider a microservice architecture

Microservice architecture breaks large software into smaller pieces that can operate independently of each other. When one node is in high demand others can work without adding to its load. Fault isolation is a major advantage of using microservices. If something does go wrong, the majority of the system can usually remain up while that part is repaired.

A Final Thought

Choosing components which lend themselves to a scalable architecture saves both time and money. The slightly higher cost of emphasizing scalability during development is offset by greater agility and lower operational costs.

Concepta specializes in the kind of scalable architecture businesses need to meet the demands of digital transformation. Set up a complimentary appointment to discuss how to position your next application for success!

Request a Consultation

Key Considerations For Building Scalable Web Applications

scalable-web-applications

The growing emphasis on digital transformation has led companies to focus on one area of development which was once considered an afterthought: scalability. Companies stand to reap healthy rewards from their enterprise software and analytics initiatives; it makes good business sense to prepare for that success by building for scalability.

Vertical Vs. Horizontal Scaling

There are two different schools of thought about scaling:  vertically – called “scaling up”- and horizontally – called “scaling out”.

Vertical scaling begins with one central system and adds more resources (like more RAM) to raise its capacity.

In horizontal scaling, the emphasis is on distributed architecture. Capacity can be increased by adding more nodes to the system.

For most purposes, horizontal scaling will be easier, cheaper, and more performant.

Vertical scaling has lower administration and operation costs when the server is on site, but with cloud databases becoming the norm that isn’t a consideration.

Requirements of Scalable Applications

What does scalability look like? There are three areas where an app needs to excel to be considered scalable.

  • Performance: First and foremost, the system must operate well under stress with low latency. User experience is becoming a key brand differentiator. If UX suffers as more demands are placed on an app, there’s a serious risk of falling retention rates.
  • Availability and Reliability: These are closely related and equally necessary. Scalable apps rarely if ever go down under stress. They need to reliably produce data upon request and not lose stored information.
  • Cost: Highly scalable apps don’t have to be unreasonably expensive to build, maintain, or scale. Planning for scalability during development allows the app to expand as demand increases without causing undue expenses.

Components Of Highly Scalable Architecture

When scalability is a priority, developers have several options for building it into an application’s architecture. Here are a few of the most helpful:

  • Cloud StorageUsing cloud storage allows companies to buy only what they need when the app is created. Adding more storage is as simple as upgrading a subscription. New storage is ready to use right away, no maintenance or construction fees required. Cloud storage lowers development costs since the upfront investment is relatively small. There are plenty of dependable options for SQL or NoSQL cloud databases available, too, so developers can choose one that meets the specific needs of a project.
  • Caches: Data that’s been called up once is likely to be needed again; caching puts it where it can be accessed more quickly. A distributed cache structure works well for distributed architecture. Data is cached with nodes that check with each other before checking database. The lets the system store data closer to the user for faster access.
  • Load-balancing Software: Horizontal scaling wouldn’t be as popular as it is without load-balancing software. It tracks stress on nodes and services, then spreads the workload across nodes to prevent bottlenecks and avoid applying too much stress to a single component. Apps that use load-balancing software handle sudden spikes or dips in demand better than their counterparts. The software makes adding nodes easy, too: developers just have to change the rules for handling a new node and routing traffic.
  • Proxies: Think of proxies like middlemen. They’re essentially intermediary software that can be used to coordinate multiple server requests. Proxies collect simultaneous duplicate responses to a server, send a single request for the information, then share the data out among all the requests for the same resources. Using a proxy raises latency rises slightly, but stress on the server drops significantly.
  • Microservices: Microservices are large services split into a number of loosely connected smaller services. Components can then be scaled independently of each other depending on actual usage. Microservice architectures handle asymmetrical demand well since only the service that’s needed is used while others are free. These systems are faster to develop and easier to upgrade.

Scalable From The Start

The decision about how to approach scaling should be made up front. Though planning for scalability is surprisingly simple, shifting directions down the road is complicated and expensive. Make this a talking point when discussing requirements during Discovery.

At Concepta, we’ve created beautifully scalable apps for clients as large as Disney and Warner Music Group. Schedule a free, no-strings consultation to discuss how we can build your next app with an eye to future growth.

Request a Consultation