This article is for you if you are in the midst of deciding where to store your stuff as an entrepreneur & business owner.
Before diving into the deep let’s just define some definitions, just to make sure we are talking about the same thing.
The usual – old – way. In this case you and your company provide all the hardware and infrastructure to run your service and application. The infrastructure should be fail-tolerant, secure, have a back-up system and the list goes on. I think you are already getting the idea of the concept.
According to Wikipedia, in the most basic cloud-service model—and according to the IETF (Internet Engineering Task Force)—providers of IaaS offer virtual machines other resources. IaaS refers to online services that abstract the user from the details of infrastructure like physical computing resources, location, data partitioning, scaling, security, backup etc.
This means you have a virtual machine wherever you want, already set up with the specified resources under the hood and you can install any web or database server on it. It can be a TomCat, a Yetty, or a Netty server or an Oracle database and you have to maintain the softwares you have installed.
Again, according to Wikipedia, Platform as a service (PaaS) is a category of cloud computing services that provides a platform, allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app.
You have everything set up. All you have to do is deploy your application and it’s ready to go. This way you can focus on your application.
Virtual machine is basically an emulation of a real computer, it behaves like one and you maintain it as an actual pc. You can change the memory, storage and the processing unit but you don’t have to tear apart your PC by yourself, you can easily do this just by clicking. Why is it good? Easy to maintain, you can run multiple instances on one actual pc – the virtual machines don’t know about each other.
Azure is Microsoft’s cloud service. It is well supported by the company and the community is quite active. Azure provides three main types of service groups to fulfill your needs:
Azure provides a lot of other services such as SQL and NoSQL databases, which are SaaS – Software as a Service. I’m pretty sure you can find a database for your needs, such as an SQL Server, MySQL, MongoDB and so on. Some of the databases come on pre-configured virtual machines.
Amazon is one of the first cloud service providers and it is still used the most. It provides a wide scale of services, for example: databases, notification services, virtual machines, and the list goes on and on.
Heroku is a PaaS provider with some SaaS – Software as a Service – options. Heroku is built on AWS with better support for app deployment than that of Amazon’s. It has the easiest way to scale your application because you don’t have to handle anything but your software, the deployment of your software and the extra features you want to attach to your application. Heroku provides PaaS, which has an unusual resource measurement system for your needs. To run your application on Heroku’s system, you rely on resource units called “Dyno”. There are dynos with different attributes and SLA levels. (editor’s note: SLA = Service Level Agreement, this is the minimum level of service they agree to provide.)
SoftLayer is the “IBM cloud.” IBM provides bare metal, virtual server basics. On top of the basic server hosting it provides storage, networking and security options for customers. The company focuses on IaaS solutions. A nice to know is that their setup is very user-friendly (set up your environment using just a few sliders). If you want to hear more details, check out their quite geeky website.
Rackspace provides widescale services, but is mostly built on other providers’ solutions. They provide some computing options, storage, database- and data analyses, and some network solutions. The company also provides dedicated hosting which means you have your own machine which no other user can access. Without a registration, they don’t tell you too much about their services… really annoying when you want to dig deep into their solutions & ending up with a “Contact us” message. The company is proud of its support system/team which kinda make sense because you cannot do anything without their assistance.
First of all, I want to take this chance and say I’m not really familiar with the on-premise concept so I had to dig a little bit to make this comparison.
In my eyes the main difference between the cloud and your own infrastructure is how you handle the scaling – doesn’t really matter which way (horizontal or vertical). When you scale on-promise, you buy a new server with better properties and you have to maintain it. If you don’t really need the capacity of the new hardware, you have to shut it down; not efficient because that’s not what it was purchased for. So the scaling up and down in the cloud is way easier and cheaper, because you don’t have to pay for things that you don’t need… beside the fact that usually when companies purchase new hardware for the development of their existing infrastructure, they usually over provision. Meaning, the company spends more money just to make sure the system will be okay. The cloud is more flexible because, with just a few clicks, you can just switch from one VM to another one.
Operating your own infrastructure requires skilled people who understand how the whole system works and can operate it. Moving to the cloud, you don’t really need to know what’s going on in the background and you still have the same infrastructure or hardware or whatever you are paying for. You don’t need highly trained supervisors.
Most people/companies don’t choose cloud because the lack of security which is… total bullshit. The main causes of security issues are the people who forget to properly set up the security system for their companies. Most of the cloud service providers offer security systems compatible with yours or even better security options, because they have to win your trust to move your data/service to their cloud. Cloud providers have an interest in providing better security systems and options.
Usually, you don’t have to buy new hardware to run your application’ s testing and showcase. In this case if you already have your own infrastructure, you can use it. If you don’t really have your own, you can choose some of the free options, too.
So basically, I would choose cloud over on-premise, because of it’s easy and cost-effective scalability.
There are a few factors helping you decide which Cloud service provider will you should end up with. If your company works in the Microsoft world by this I mean the company usually orders/develops C#, .Net apps, you should stick with Microsoft and choose Azure. The reasons: (you are already brainwashed 😀 ) Microsoft provides great features for Visual Studio to develop for Azure. Most of the Azure services have better API for C#, .Net developers. The convenience of development and deployment overrules the fact that this may cost you more, which should not be true at all.
As I mentioned above, there shouldn’t be any security issues in the cloud. Both AWS and Azure offers a huge number of tools for visibility, auditability, controllability and agility. Heroku has its own team to make sure their infrastructure is secure. If you are looking for a certain certificate to feel secure, you can choose accordingly.
The prices are quite similar, the difference is usually the billing unit. Heroku charges by month, Amazon charges by hour and Azure charges by minutes. The pricing of Heroku is pretty simple, because Heroku sits on top, AWS is more expensive.
Amazon’s dashboard is simple and well organized, easy to navigate, haven’t had any problem finding what I was looking for. Azure’s dashboard is fancy while navigating your operation, but it’s not so handy when you know what to do and you have to go through all the ceremonious clicks to get to your destination. Azure’s dashboard is slower because it loads every service of yours on load, so you have to wait ’til all your services are counted – update on the new version of Azure’s managing site, you don’t have to wait til all your services are loaded – , Amazon loads your service type after you decided which group you are interested in. Heroku is very simple with all your required details provided on a clear dashboard.
Each CSP provides its own way of deploying an application really fast and painlessly for main languages such as Node.Js, C#,.Net, Java, Ruby. But most of time you have to define your set up environment on a VM or on a PaaS container. In this area Heroku has the best option for deploying applications and running them. Heroku provides better support for Go, Play! and Scala developers, which means they are forward thinking because in my opinion the world is going towards functiontal programming.
At the other providers you basically need to create a VM and set up your environment then find a way to deploy your code.
If you are not an expert & don’t have experts at hand, you should probably go with the cloud. I know it seems scary at first, but it really is a safe place to store your stuff. Just make sure your own security is set up correctly. I also think if you are planning on expanding quickly, needing more space, you should go with the cloud. (We’ve discussed the scalability issues above.) Finally, if you are anything like me, you will go with AWS, it seems to have found the middle ground in design and usability. … Not to say I don’t like Azure, but they still have some place to grow to. 😉
If you have any questions, don’t be afraid to ask!