Table of contents
As enterprises leverage a host of digital technologies and strategies to drive innovation and growth, a key aspect that many in our experience struggle with is making digital products that succeed at scale.
To be sure, not every digital initiative needs to scale to millions of users. A internal-focused digital solution built to make the sales force more efficient, or to help recruitment teams collaborate better is unlikely to see millions of users. Many external-facing initiatives, the kind offer efficient digital interfaces to suppliers or distributors, for example, are similar in nature.
And yet, we’ve found, even building these very focused, well-defined solutions often proves hard for large enterprises, and they struggle with execution as well as relevance. What’s even harder, however, is delivering on digital initiatives that can scale successfully to a million or more users.
In the age of cloud and data centers, most people understand ‘scale’ to be a matter of server space, bandwidth and uptime, but there is, in fact, a lot more to building digital products that scale to a million users, and scalability of the pipe, while critical, is only a part of it. There are some key differences between small scale digital products that serve a niche or a small, limited user base, and large scale digital products that scale to millions of users. The differences come from how the digital product is conceived, what processes are during development, and more.
At [x]cube LABS, we have the experience of conceiving and executing on multiple digital initiatives that scaled successfully to millions of users. And we have been able to deliver these successes for a wide variety of large enterprises globally, Our practiced approach to achieving product-market fit, as well as our DevOps driven execution processes, have been instrumental in this success. In the writeup below, we leverage our experience to offer you quick guidelines on the four key areas you need to excel at if you are looking to build a product that scales to a million or more users.
Having a relevant solution that finds a clear product market fit is rarely the result of inspiration, and invariably requires clear focus, rigorous discipline, and the use of methodologies and models that enable you to identify problems as well as target audiences clearly and envision relevant solutions. At a most basic level, your product must meet the following criteria:
It is common that the correct answers to these questions are discovered in an iterative manner, as your perspective evolves over time. In fact, this iterative, rapidly evolving method of functioning–where you test hypotheses quickly, and move forward in quick sprints–will be central to your entire product development life cycle, and is a precursor of sorts to the DevOps engineering methodologies you will need to implement to achieve scale on all fronts.
The DevOps engineering practice enables you to identify wrong paths quickly. Through continuous testing, you could revise your development every two days as against spending over six months in code development and then testing, only to identify glitches after months of effort.
2. Design and Experience
Having established the relevance of your digital product, it’s time to move ahead and plan the design and experience aspects of it. Avoid complexity in your UX/UI by having the following points in place.
The above points are still basic hygiene. It’s possible that you get the above specifics right and still mess up the overall experience. It’s important that the design, apart from being aesthetically pleasing, also focuses on serving specific user needs with minimum friction.
You could follow the four steps mentioned below to use the ‘jobs to be done’ framework and stay on track.
What job does the customer want to get done through your product or service? The concept of JTBD revolves around this central question. It helps the developer understand that customers don’t buy products and services; they hire solutions to get an array of jobs done. A JTBD is not a product, service, or a specific solution; it’s the higher purpose for which customers buy products, services, and solutions.
Consider this, for instance, if you want to be a disruptor in the education sector, you should ideate on delivering the main job that an aspirant wants to get done, which is, learning with a validated certification. An online course is a disruptor that serves the purpose here. You must find new ways to fulfill the jobs customers need to get done.
The JTBD remains constant over time, it’s your product and service offerings and value proposition that should change at strategic intervals.
The quality of the process involved in product creation also impacts the overall experience of the user. With a high level of complexity involved in your process, it becomes essential to adopt some of the best practices such as DevOps that foster the culture of collaboration to combine all the efforts into a seamless process and get your product off to a great start. Besides, it helps you to evaluate design and experience timely. Here’s how you can merge UX in DevOps Lifecycle.
1. Understand your users. Formalize a process for creating customer journey and identify different personas. Using these journey maps, you can create scripts for synthetic monitoring that simulate user behavior and if any issue is found, development teams can promptly resolve that issue before end users discover it.
2. Measure what matters. Having understood your users well and how they journey through your app, you’ll know exactly which metrics linked with UX to measure.
3. Monitor the UX. Like any other DevOps practice, monitoring should be continuous and proactive, and should trigger alerts to the DevOps teams if problems occur.
4. Collect Data. The DevOps capability allows you to trace transactions end to end. This means that your DevOps team can collect the data required to set benchmarks and recognize trends over time.
We’ll now talk about the software development life cycle and how you could break it into three stages. Maintaining a quality SDLC would enable you to generate quality output.
Lay out the structure of the product and pay attention to its functionalities, utility, and reliability. From the CX perspective, produce a design that buyers would like. Also, focus on the accessibility and the pleasure derived from using the product. If at all you want to scale your product organically, your core functionalities should be flawless and the UX/UI should be designed keeping in mind the customer journey points.
You could adopt practices such as source code management, automated static code analysis and implementation of CI. These will help you make your development process quick and effective.
Use automation to identify bugs and fix them. The testing is automated and applies to the development of segregated functionalities, POC, prototype, and integrated product.
Recommended testing areas and categories include unit, performance, web and service testing. The adoption of code coverage technique further strengthens continuous testing. Vulnerability scans should be a mandate while testing. Applying practices like Pen Testing on your application helps to find security vulnerabilities that an attacker could exploit. The primary goal of a pen test is to identify weak spots in your product, as well as to measure the compliance of its security policy.
The development teams must automate the merging and testing of code. Artifacts produced from CI systems should serve as inputs for release processes to run frequent deployments. Automated release processes consume these artifacts to release new versions and fixes to existing systems. If you use GitLab, on committing a code, the file gets pushed into internal repository. For backend, the file could be packaged as a zip file or a docker file. For frontend, the build generates .apk and it could be downloaded from your internal app store. Deploy and test in multiple environments to ascertain the quality of your product.
To ensure optimum performance of your product, adopt a continuous improvement framework that performs metrics-based monitoring. This continuous monitoring is applicable to deployment as well as post-deployment. For every service, aggregate logs. If anything goes wrong, you can check dashboard for logs. You can also set alarms for specific cases that require attention due to a potential fault. Establish a centralized knowledge repository that keeps track of incidents for later referencing.
Tools used during SDLC
Tools commonly used and over the software development life cycle.
|Development||Git, SVN, SonarQube, Jenkin, Cruise control, Puppet|
|Testing||TestNG, JMeter, Selenium, Cucumber, Jacaco, Cobertura|
|Release||ANT, Maven, Gradle|
|Deployment||Custom deployment scripts, file copy scripts, deployment plugins for Jenkins / CI tools|
|Monitoring & maintenance||Web analytics scripts, Gomez, application health-check monitoring tools, server monitoring tools, real-time user monitoring tools|
3. Distribution and Reach
You’ve now reached the moment you’ve been building up to. Your product is now ready to be unveiled. We suggest you have the following checklist in place to have a successful launch, for being a little cautious in the beginning, can give your product the positive start it needs.
What’s interesting to note here is that DevOps compliments your launch process by facilitating a seamless and reliable soft launch for every update.
4. Ability to Scale
In an attempt to reach more and more users, you could continue marketing your product. But often what’s not considered in this process is whether the infrastructure is capable of supporting the increasing load or not. As your infrastructure crosses a certain load limit, the existing users experience poor performance, low response time, slower loading, and worst- app crashes.
The pursuit of acquiring new users could cost you the loss of the existing ones if the infrastructure isn’t capable of scaling up with your app. That’s only one type of scaling requirement. As you work around your product, you would come across various such scaling needs and you’d want to assess your ability to scale.
Scaling could refer to increasing or decreasing any parameter based on your needs. The most common needs that demand scaling include the following.
Your scaling-up needs could include a lot more parameters such as sessions, engagement efforts, development roadmap, etc. Have a self-assessment ready to know the possible areas that may need attention should there be a requirement for scaling up or down.
Practicing DevOps has another advantage here, which is, it has provision for auto scaling that allows your application to always have the compute capacity needed and eliminates the need to manually monitor server capacity. The auto scaling could be done based on incoming requests, number of jobs in the queue, and how long jobs have been in the queue.
Creating a product that has the potential to scale to a million users could be enormous and complex with challenges occurring at every stage. Partnering with DevOps service provider is a great way to equip yourself well to overcome those challenges. By leveraging the guidelines mentioned above, you’re more than half-way to your aspiration already.
[x]cube LABS, a division of PurpleTalk Inc., is a leader in digital innovation and strategy consulting. Established in 2008, we are born digital with deep expertise in all things digital – Social, Mobile, Analytics, Cloud, wearables & IoT. We have delivered over 700 solutions across industries with the DevOps philosophy, won 25+ International awards, worked with 500+ clients & created value over $2.0 bn for our clients. Being one of the earliest adopters, we have developed an expertise in implementing DevOps. [x]cube is also one of the first 12 agencies globally to be approved by Google as a Certified Developer Partner.