Summary: It’s a growing trend in the business world: More application development is moving to the cloud. More developers are opting for cloud-based development platforms, and more businesses are moving their application development off-site and onto a cloud host. The problem is, many make the move without understanding how the cloud changes development. In this article, we explore a few of these changes and outline important questions to ask before making the move.
While cloud computing isn’t a new trend by any means, it has picked up steam over the last year. As it matures, we’re seeing more businesses move to the cloud.
How big is this trend? According to Gartner, “More than $1 trillion in IT spending will be directly or indirectly affected by the shift to cloud during the next five years. This will make cloud computing one of the most disruptive forces of IT spending since the early days of the digital age.”
This move to the cloud isn’t just driven by cloud services or SaaS offerings. More companies are hosting their enterprise applications and developing new applications on the cloud. With the rise of low-code and cloud-based development platforms, more application development is moving to the cloud.
Why is this happening? Forrester answers the question in this article, “Enterprise are turning great ideas into software and insights faster and the cloud is the best place to get quick insights out of enterprise data.”
However, while cloud-based development is growing…there’s a problem. Many make the move without understanding the differences between developing on the cloud and developing applications in-house.
The result: They face challenges that they didn’t anticipate. These challenges can slow them down or completely derail their efforts.
If you are considering moving your development to the cloud–how does this affect development? What changes (or surprises) can you expect when you move your application development to the cloud? What questions must you ask before making the move?
Today, let’s answer those questions. Here a few questions to ask before moving your application development to the cloud.
1. Why are you moving development to the cloud?
As mentioned above, cloud development is a growing trend. We’re seeing low-code and cloud-based development platforms gain traction in the enterprise. More and more businesses are moving their enterprise applications to the cloud.
When trends grow quickly, they generate press. Soon, it grows even faster because everyone is talking about it.
That’s where potential problems arise. As a new trend gains momentum, there’s always those who jump on board simply because it’s new. They hear about the benefits that others are seeing from the cloud, and make the move. For instance, they hear that the cloud saves money, and they jump on board.
The problem: Not every business will see the same results. As explained below, make sure your expectations are in line with reality before making the switch.
“Are your expectations of the benefits of building an app in the cloud realistic; or are you following a trend?,” asks Dennis Allio, Group President, Cloud Technology Services at Workstate. “This is important because many people simply decide to build in the cloud because they think they will save a ton on capital or operational expenditures. Another reason is that they may be following a trend for a new piece of cloud technology such as an extremely high performing NoSQL database that may be useful, but may have a number of non-cloud alternatives. Reduction of cost is never sufficient to justify a move to the cloud. A few very good reasons for going to the cloud are to improve performance, gain businesses agility, eliminate specific problems such as performance issues or to improve availability and disaster recovery.”
2. How much will this cost? (tip: it can spiral out of control)
As mentioned above, some companies choose the cloud based on the perceived cost savings. The problem is, the cloud can have the opposite effect on costs if not managed correctly.
“Cost can rack up easily if you don’t pay attention,” says Christian Mendy, Director of Engineering at Evus Technologies. “In an AWS (Amazon Web Services) with a new account I can get started with virtual servers and cloud systems for next to nothing, but I can also spin up a thousand dollars worth of systems with just a couple of clicks and never use them.”
It’s a common problem that impacts many businesses. Developing on the cloud is different than developing in-house. When developing applications on the cloud, extra consideration must be given to resource usage. If not, you’ll wind up using more resources than you need, which can raise costs quickly.
3. Do we have the right skills to handle implementation?
It’s a common mistake. Companies assume they can use their existing skills as they move to the cloud. The problem is, not every skill translates correctly. New skills are often needed.
What type of skills do you need? We won’t get into everything here, but here’s a recent article that outlines 5 important cloud skills.
As explained below, make sure you understand what skills you need before making the move. If you don’t currently have those skills in-house, gaining these additional skills will drive up the time and expense of the cloud.
“The big questions are security & cloud Implementation: Do you have the right skillset for implementing cloud services the right way?,” asks Adeel Ahmad, President of XohoTech. “There are many cloud service providers, and unfortunately, each has its cloud based services, their APIs, usage, and way of integration. Once you select your cloud service provider, you need to be 100% that your team has what is takes to get the job done. Working in-house is very smooth and manageable especially regarding web development and its security, but as soon as your move to the cloud you need to make sure that you have correct security and ACLs setup for your cloud infrastructure. The Internet is full of stories where your cloud app is hacked, or your cloud account is hacked, and you are getting billed for services that you are not even using.”
4. Will your existing services be available on the cloud?
Modern applications consist of different services. For instance, email is a common example. Email capabilities aren’t built into the application itself–it’s a service that the application uses.
Additionally, many applications pull data from different locations. For example, a reporting application might pull data from a couple of different databases or software packages.
When you move to the cloud, you might find that some of your existing services don’t translate to the cloud. Or, maybe connecting to other data sources isn’t as simple as it was in-house.
As explained below, this is an area you can’t ignore. You must ensure that your application can connect to the data and the services it needs before moving to the cloud.
“Did you know that a major hang up with new development can be that your existing services may not be available to your cloud applications?”, asks Allio. “Many new applications will use techniques like OAuth2 for application authentication, but if your application relies on an on-premises directory service, then you will have to make certain that you solve that identity and access management problem before coding. Similarly, your application may need to email your application users and your mail server may not be configured to send mail from your cloud environment. And one final example, does your application collect data that you would like to analyze either from other applications or systems? If so, you need to be certain that all of that valuable information is available where you need it before you begin building on the cloud.”
5. How will you handle security?
Some assume that a move to the cloud will improve their security. After all, cloud hosting providers invest a lot in their security. They most likely have a larger security team than you have in-house.
There are a couple of problems with that mindset.
First, don’t confuse platform security with application security. The cloud host controls platform security, but you’re still in charge of your application security. If your application contains vulnerabilities, the platform can’t protect you.
For instance, in a cloud environment, applications are still vulnerable to the same SQL injections, DDoS, and other attacks experienced by on-premises applications. In other words, a vulnerable application on a secure platform is still vulnerable to attacks.
Second, you’re still in charge of security in the cloud. You must manage user access and privileges. You must set controls to ensure that users can’t change configurations. As explained below, you must constantly monitor your applications, regardless of where they’re hosted.
“Continually monitoring for security and for configuration vulnerabilities is crucial,” explains Matt Fuller, Founder of Cloudsploit. “Even the most secure cloud providers only offers security OF the cloud. The user is responsible for security IN the cloud. As groups, roles, devices, etc. change, oversights and misconfigurations open vulnerabilities that lead to outright hacks or just a Financial DDOS. Unfortunately, a single misstep can compromise your entire infrastructure.”
6. Is your web app cloud ready?
I spend a lot of time touting the importance of application architecture. Why? A well-architected application will adapt to future changes.
I wrote up a short article on the topic a few years back. It explains how the use of open, flexible architecture helped us adapt our applications and move some of them to the cloud. Without this emphasis on architecture, these changes would have been difficult, if not impossible.
This is a critical area to consider before moving to the cloud. As explained below, you must ask one important question before you make the move.
“Is your web app cloud ready?,” asks Ahmad. “And does its architecture allows you to utilize cloud-based services (Load Balancers, Object Storage, and other services)? If the architecture allows to integrate it within the cloud smoothly, Considering few minor changes in the code that great. Otherwise, you have to make a decision either utilize the cloud services and rewrite the app code or run the app without using the cloud perks and services in an old fashion way.”
7. What happens if you switch providers?
Perhaps a better way to phrase the question: What’s your “Plan B?” What happens if you need to switch to a different cloud host, or just move your data and applications back in-house?
I believe in development freedom. If that calls for in-house development, so be it. If that means you move your application development to the cloud, that’s fine too. The most important aspect of development isn’t WHERE your applications are developed, it’s HOW.
What does that mean? If you’re building applications in-house or on the cloud, architecture should be your primary focus. Are your applications built for flexibility and portability? Inflexible applications lock you down and limit your options.
This is extra important if you’re using a cloud-based development platform. Here are a few questions to ask any development platform vendor before you use it:
- How portable are the applications you create?
- Will applications work outside of the development platform, or are they tied to the platform?
- Does this platform give us flexibility to move from the cloud to in-house, and vice-versa?
These are critical questions to ask if you want future-proof applications that won’t lock you down. As explained below, focus on building flexible applications that port anywhere–to the cloud or in-house. This opens your future options to make a move to the cloud (and back), if so desired.
“The portability of your business applications can greatly reduce your costs in the long run,” says Tyler Wassell, Software Development Manager at mrc. “With so much variation in service provided by cloud vendors, it is important to consider the fact that the first provider you select may not end up being the best for your business. What happens if you need to migrate your applications more than once? How much might that cost your business? We recently experienced this question first hand here at mrc. After successfully migrating several business-critical applications to the cloud, we learned that another cloud provider would better suit our business needs. It was the portable architecture of our java web applications and database that let us move to the first cloud provider with relative ease and then again later to another provider.”
8. Where are your applications in relation to your data?
While this may seem like an obvious question to a developer, it’s often overlooked. If you move your applications to the cloud, but keep your database in-house (or in another location), you’ll run into problems.
What types of problems? First, you’ll face security issues. For example, if my database is in New York, but my application server is in San Francisco, I’m opening my data up to the public internet every time the application queries the database. That increases the chances that someone could spy on or steal my data.
Second, your application will face performance problems. The physical distance between a database and application server will increase the amount of time required to pull data from the database into the application. For even a moderately-sized application, this can destroy performance.
The best way to avoid these issues? Keep your database and your application server on the same network. If you want to move development to the cloud, but can’t move all of your data, maybe you should reconsider.
Now, these are just 8 questions to ask before moving your application development to the cloud, but the list could be much longer. Would you add anything to this list? If so, feel free to share in the comments.