Should I choose a cloud?

I am going to start development in a project with a very uncertain load / traffic specificity. When it is released, there will certainly be a very low load that can be easily handled by a single desktop quad-core code computer.

The problem is that (after a period of invitation only) there will be strong advertising for the product, so I expect significant traffic / load peaks.

I havenโ€™t read enough about cloud providers, and I'm mostly inclined to Amazon or Azure for trust, which the two companies do not check as I should with others (for example, Rackspace, which, I believe, is also a cloud service provider).

What I want

I would like to create a regular Asp.net MVC web application that can be run on an inexpensive server on a separate machine. It will launch a web server along with a database (relational and possibly a document) and full-text search (not SQL FTS, but rather a high-speed stand-alone product like Lucene or Sphinx). But after the first invitation period, I would like to transfer this application to the cloud to make it more convenient for traffic / load.

As far as I know, Amazon offers a kind of shared hosting, which, as I understand it, is configured as a regular server, but has flexible resources in terms of load. I'm not sure if this can be done on Azure either.

Questions

  • What is your experience moving the application to the cloud and which one did you choose and why?
  • What would you recommend, what should I think about when developing / developing a solution to make the transition as painless as possible.
  • Based on your experience, is it better to go to the cloud (financially wise) or is it better to buy your own servers and load balance application yourself and, possibly, save money in the long run?
+6
source share
4 answers

"Cloud" is such an indefinite term. However, I think this is a very good question.

Basically, IaaS cloud hosting does not magically make your application scale. It is truly a virtual private server with very short contract / cancellation periods.

For scalability, the magic is not so much in hosting, but in the horizontal scalability of the application code itself. This is related to all distributed computing tasks. For example, adding more application servers is not always easy: you have to be sure that you are not storing any user state in the server application (but rather, in the database, static can be evil), caching can be problematic, since local caches can make things worse if you use a roundabout strategy, etc.

  • What is your experience moving the application to the cloud and which one did you choose and why?
  • What would you recommend, what should I think about when developing / developing a solution to make the transition as painless as possible.

You do not need to do anything else, just to host on EC2 or Azure - basically. But of course, itโ€™s not so easy when things grow.

For example, EC2 instance storage is quite limited. However, additional storage on EBS does not provide comparable performance characteristics and may be slightly more lagged than a disk. The point here is that EBS makes a magical scale, and probably more PaaS than IaaS; but it is not a simple hard drive, and therefore it does not behave like a hard drive. I do not know about Azure block storage. In general, expect additional levels of abstraction to create their own problems no matter what they do.

  1. Based on your experience, is it better to go to the cloud (financially wise) or is it better to buy your own servers and load balance application yourself and, possibly, save money in the long run?

Typical cloud providers are more expensive than regular โ€œthird-party VPS providers,โ€ but they are, in my experience, also much more reliable and professional. EC2 has a free tier (but it's pretty small), Azure gives you a small copy for free for 3 months.

Performing the correct calculation is quite difficult; for example, if you need to close the service for any reason, itโ€™s nice to be able to cancel now, and not pay another year โ€” you may want to include this risk in your calculations. On the other hand, both EC2 and Azure will be significantly cheaper if you sign up for 6 or 12 months, instead of paying by the hour.

You might want to check out the free Azure plan, because it's nice to start messing around at no cost. The big advantage of cloud providers is that you can scale vertically very easily: buying a 16-core 64-gigabyte operating server is very expensive, but if there is so much traffic on your site, updating your plan will not be such a big problem.

+4
source

Like someone else hasn't mentioned this ...

AppHarbor was awesome. You can push things in minutes. Deployment is a breeze. And creating your own project is easier for him. And it does not even require any major changes in your decision to fit.

For a full-text search, you might consider something like Websolr .

+3
source

Much depends on what your application does (for example, whether there are shared components that can be useful when working in different instances, as well as a simple CRUD application with an interface). Keep in mind that in a cloud application, you usually do not have a traditional relational database. Thus, you need to choose a cloud or traditional hosting or plan two-time encoding of your access level. Azure has relational databases (SQL Azure), although they are not identical to SQL Server 2008R2. You will have to explore the pros and cons of setting up a cloud for your specific situation.

As far as financial problems are concerned, it is usually much cheaper to just get an account with a hosting company instead of a cloud service, since you pay per month instead of an hour (the last time I checked my account when I started Azure 24/7 per month it would cost about $ 40-50, and you can get hosting for $ 15 per month). Savings with the cloud occur when you need to run several servers, and the cost of maintaining them exceeds the cost of an instance on a cloud platform.

So, sorry, there is no silver bullet for you. Read about the various services available. Think about what your application needs, what the prices will be from there.

+1
source

I just migrated an MVC-based application from a dedicated server to Azure. When migrating an MSSQl database, I first tried to import .bacpak files, but some of the tables failed due to their size. Then I used the SQL Database Migration Wizard , which worked fine for small tables, but failed for tables with BLOB fields. For these tables I had to use temporary staging tables. Then, some time after all the data was transferred, setting up Webapp was a breeze, and we went to production. At first, everything seemed very good, but after a couple of hours, when the load became heavier, all kinds of errors occurred. I entered the Azure portal and it was really easy to see

0
source

Source: https://habr.com/ru/post/903934/


All Articles