One of the questions we get asked frequently by our customers is “should we move to the cloud?”
“The cloud” is often touted as a flexible, scalable alternative to buying, maintaining, and supporting your own servers on-site. But it’s important to understand exactly what “flexibility” and “scalability” mean to you, as well as the comparative costs between the two options. Then, you’ll be able to make a better business decision that balances cost and features effectively.
What is The Cloud?
To start our discussion, first we need to define what “the cloud” refers to. Here, we’re talking about public cloud infrastructure -- services like Amazon AWS and Microsoft Azure. These services are simply a large collection of compute, storage, networking, and other resources that are made available at scale on a subscription basis.
Other “cloud-based services”, like Microsoft 365, Zoom, Slack, and Trello, have been built on top of either public cloud infrastructure, or private infrastructure that uses the same types of automated management systems to provide high levels of scalability and uptime. This allows these services to offer excellent service relatively inexpensively at large scales.
This gives us our first clue for what kinds of workloads are suited for cloud infrastructure -- those that both have a need and have been designed to scale rapidly.
Cloud Native vs. Monolithic Apps
Traditionally, applications used a “monolithic” development model -- where everything that the app needs to do happening in one place, usually connected to a large relational database for data storage, and available through a single API at the frontend.
While this model is fine for simple applications that have limited need for scalability, it makes maintaining and updating the app unwieldy over time. Plus it’s difficult to scale the app to use additional resources -- at least not in the bite-size chunks that cloud compute makes readily available.
So, “cloud-native apps” became the new thing. They break away from the monolithic model by using “microservices” -- where each part of the application can be developed, updated, and deployed separately, but united behind a unified API and able to communicate with each other via a common messaging bus. Storage is handled at the microservice level, with some using relational DBs, but others being able to use advanced storage technologies like NoSQL.
When properly implemented, cloud native apps are able to take advantage of all of the features that public cloud infrastructure -- or a private implementation of cloud computing principles -- can offer.
So Are My Apps Cloud-Native?
In most cases, line-of-business (LOB) apps were developed using the monolithic model. How can you tell?
- My app runs on a single frontend server and a single SQL server instance.
- For scalability or high availability, we depend on external tools that touch things deeper in the stack, like Windows clustering or VMware HA features.
- My app depends on legacy protocols like direct SQL connections, SMB, or Kerberos authentication.
If these statements are true of your application, then it is not a cloud-native app. This means that there is likely little benefit in moving it to a public cloud infrastructure. While it’s certainly possible to spin up cloud VMs to run your app’s frontend, backend, and database -- and AWS and Azure would be more than happy to take your money to do so -- it’s perfectly fine to keep running these applications in-house, especially if you already have infrastructure that is meeting your needs.
Other issues can crop up when non-cloud-native apps are shoehorned into the cloud. As mentioned, they often depend on protocols that do not function well outside of a LAN environment. Cloud-native apps are designed to use protocols like HTTP, which work well even in poor bandwidth or high latency conditions, and can easily be secured with TLS. Legacy protocols are much more sensitive to poor network conditions and are harder to secure.
This isn’t to say that the cloud is all bad -- we’re big fans of Office 365 and other cloud services. But these services have been designed from the ground up to take advantage of what the cloud has to offer, which makes them scalable and cost-effective. But running sub-optimal workloads in the cloud just to do it can end up being a waste of time and money -- something we try to help our customers avoid.
If you’d like help with deciding what’s right for the future of your IT infrastructure, contact us today. E-N Computers helps SMEs strategically use their IT assets to support and grow their business. Contact us today for a free consultation.