How Cloud-Native Architecture Drives Innovation In Product Development
As users are becoming more and more sophisticated today, companies big and small should adjust their processes and practices to meet the demand. On-prem development proves cumbersome, time-consuming and expensive, while cloud-native architecture allows for better transparency, rapid innovation and quick changes. The article explores key benefits of cloud-native architecture for software product development.
Cloud-native architecture takes full advantage of the distributed, scalable and flexible nature of the public cloud to maximize your focus on quality coding, creating business value, and meeting customer needs.
Moving to the cloud means abstracting away many layers of infrastructure such as networks, servers, operating systems, etc., and deploying as much infrastructure as you need just in a matter of seconds by running a quick script.
As a software developer, all you need to worry about is how to organize the entire infrastructure via code. The more you focus on your code quality, the better.
And this is the essence of cloud technology.
How cloud-native architecture helps unleash business ideas
Let’s say that based on your user feedback, you need to build a bill- splitting feature for your mobile banking app.
In the old world, you might first think about how you would deploy it, what networks you would need, what you are going to write it in, and so on. And what really matters (CODE! CLIENT!) slowly slides into the background as niche technical issues cloud the horizon.
In our brave new world, a decent cloud-native setup removes the need for servers, operating systems, orchestration layers, networking, etc., and puts your code at the center of everything you do.
You (or your team) can try everything at once: test hypotheses, experiment, use machine learning tools, and many more.
Questions like “what if we did this …?” can be challenged almost instantly in practice, which will provide you with a data-driven and informed response.
“When you are constrained by infrastructure, your ideas are blocked. When you want to test something, you are instantly hit by a brick wall which is hardware!” says Philippe Peron, Chief Delivery Officer of a Leicester-based software house Evolve. “And whichever solution you come up with, there will always be a trade-off based on the constraints of what you have in your data center. But compromises don’t always benefit customers!
When the cloud removes these limitations, you can focus less on technology and more on the customer experience. Think about your product, not pipelines. Fix bugs right in your application, not in database replication.”
All this means that you can move from idea to application as fast as you can/wish.
In the cloud world, your ideas collect feedback, not dust!
But cloud-native architecture offers many benefits beyond “it lets you focus on your code” concept. And this is what we are going to address now.
So how does cloud-native architecture unlock ideas?
Take a look at the image below. The User is at the top of a software development circle, while the development team is at the bottom.
Image source: evolve-consultants.co.uk
The faster developers can get around this circle, while providing users with features and getting their feedback, the faster your ideas will be brought into fruition.
By removing time-consuming intermediate stations from this circle, cloud technology allows developers to move around the circle much faster than it was previously possible.
There are other tricks as well. Traffic shifting is one example: it allows you to “switch” a given feature to a small percentage of users, get feedback, and then slowly expand access to more users.
Remember our bill-splitting example from above? The difference in time to market between being able to test instantly and waiting for a new database to arrive (for example) DOES add up.
Here’s a rough sketch of the different time frames. (And yes, this is a bit far fetched and not necessarily true everywhere, but it illustrates the point).
On-premises vs cloud-native: time frames
Image source: evolve-consultants.co.uk
In this example, a few days later, a product development team will be able to roll out a bill-splitting feature prototype and collect feedback. In the old world, it would still be waiting for the server!
So what are the key benefits that software development teams can get from cloud-native architecture?
Benefits of cloud-native architecture
Cloud-native architecture brings you closer to the user
Developers often misunderstand what customers and/or end-users really want. Every process you put between users and software engineers is where the original vision can get lost.
The closer you get your development team to the customer, the better product you will deliver. As we’ve seen, this is precisely the key benefit of the cloud-native: eliminating non-customer-centric actions.
But it goes even deeper! With the move towards rapid innovation, customers now expect fast delivery of MVPs that they know will improve over time. People don’t expect new apps to be feature-rich and bug-free right away, but they expect constant improvements over time.
Your customers also want small, fast releases. This shift in customer expectations is permanent, most likely. This means that the prototype is now as important as the product itself!
And since the cloud-native architecture allows you to provide functionality to a small percentage of users, you can test prototypes with real customers in real-life situations, not just testers in a user acceptance testing (UAT) environment!
This way, your product owner can get irrefutable evidence that users do like your new bill-splitting feature before you invest further in developing or pivoting the original idea.
With cloud-native, getting started is cheap and easy
The entry barrier for cloud infrastructure in terms of cost and effort is very low. Here’re the reasons:
First, in the cloud, you only pay for what you use and you don’t have to buy anything in advance. In fact, some cloud providers let you get started for free, giving you complimentary access to some features.
Second, these cloud providers operate with insane economies of scale, which means you can access cutting-edge infrastructure and tools for a fraction of the cost of deploying them in your own data center.
Third, once you’ve done the initial account setup, accessing any of the cloud providers’ extensive infrastructure or tools will be about as easy as ordering a pizza (select ingredients — order — eat).
These benefits mean you can try out new types of instances, tools, databases, whatever you need, with minimal cost, risk and effort.
Cloud-native enables rapid innovation and experimentation
If developers want to check whether X database works better than Y database, they can just try them both! Do you want to test a quick script? Wait five minutes on AWS Lambda and see it. How about seeing what value machine learning can add? Once you have an idea, you can deploy AWS Sagemaker and play around.
Transparency, security and events in the cloud
The main difference between cloud-native and on-prem environments is that in the cloud — by default — anything that happens or changes is “saved” as events that are transparently logged.
You know exactly what happened (or is happening), when and where.
This has thought-provoking implications!
Events in the cloud
By default, the cloud is event-based, and all events can be accessed anytime from anywhere!
Therefore, if a team publishes an event (for example, someone is looking for something), then people in other departments can start using those events as triggers for functions in their own domain. Thus, one event can trigger multiple reactions, each generated by different teams within the business for their own purposes. That being said, in the cloud, everything is completely independent of each other.
To deploy this locally, your developers would need something like three different Kafka instances and a boatload of complex infrastructure elements.
In a Cloud-native environment, developers simply say: When X happens, do Y. They don’t have to worry about anything else!
Transparency and observability
A server running locally is a black box. Cloud computing, by contrast, automatically logs what’s happening and delivers handy metrics, colorful dashboards, and automatic notifications.
This way, developers can create a serverless feature, launch it, and receive notifications via Slack or SMS if something goes wrong.
This opens up tremendous opportunities.
If you write crappy code, it can alert you to problems and fix them before you know they existed at all.
Let’s say you are a bank and your clients can’t transfer money. With the cloud, your development team will find out about the problem even before the call center becomes overwhelmed with angry messages. You can release a new feature to a handful of users for transparent testing and automatic rollback if something goes wrong.
It can also help you make data-driven decisions. Let’s say 50% of customers going through your e-commerce checkout don’t actually complete the transaction. If you suspect that the position of the button is causing the drop, you can easily do a split test, record how many people checked out, and work out the best solution.
This is HUGE from a business standpoint. And it’s that simple from a technical point of view (as long as you are using the cloud).
Cloud is secure by default
With no local security experience, you might have a massive attack surface with many open ports, firewalls, and the like. In my experience, no one even knows which ports are open because the spreadsheet keeping track of them hasn’t been updated for four months.
In the cloud, it is easier to reduce the attack surface. If you, for example, create a container or serverless function, no one will have access to it unless you allow them.
The declarative nature of access controls, roles, and policies prevents unauthorized individuals from poking around where they don’t belong. Less security expertise is required from your in-house team as your cloud provider takes care of most of this.
And security standards can be very easily defined and replicated across your entire infrastructure. It is also easy for others to understand how security is defined in each particular case.
Security configurations can then be automatically deployed and tested, tracked, and drafted across your entire IT infrastructure.
If any of your teams tries to deploy something that violates these rules, their pipelines can identify it and stop before any damage is done.
By making it easier to use security standards (for both humans and machines), you instantly remove the biggest obstacle to fast and effective security (by reading the 97-page security guide) and instantly scale it up into automated scripts.
It also becomes a less mythical dark art that only a few people in the company understand. On the contrary, everyone knows how it works, which destroys the silos of responsibility.
After all, it doesn’t matter how fast your developers can code if they don’t have the means to guarantee security at every stage of software development.
Wrapping up, if you have a new business idea in the morning, cloud-native architecture can help you test and validate it by the evening of the same day — all with no quality, security, or performance compromise.
Cloud can save you time, money and efforts, so it’s definitely worth considering before specifying your next development project.