I am new to cloud services and need somebody to help me in getting started with my project.
I have been tasked with building a web environment for a production .Net application that utilizes DotNetNuke as a front-end CMS.
My end goal (hopefully) is the following:
Create two always-on web servers running DotNetNuke (with the ability to scale on the fly with autoscaling when under heavy traffic)
Create two always-on SQL servers running SQL Server (with the ability to scale on the fly with autoscaling when under traffic)
Ideally, I'd like my servers to have static private addresses configured as such:
Public IP -NAT-> Private IP (172.x.x.x) -> Interface1 -> [Web Cluster] -> Interface2 -> Backend Private IP (10.x.x.x) -> [Database Cluster]
This particular application sees heavy traffic and currently our managed provider is not really giving us what we need in terms of performance (latency issues, stability issues, etc).
That said, I would like these resources to also be load balanced, and continuously identical to one another. I don't have the option of using Amazon's database services for this, nor do I have the option of using Beanstalk.
Is this even possible? I've found some documentation online that loosely relates to what I'm looking for, but I feel like I'm not experienced enough with Amazon to really understand what these tutorials are talking about.
Any help or guidance would be greatly appreciated.
Thanks!
Jason, don't forget Windows azure. There's an accelerator made to ease the process of installing DNN on azure. Good luck.
Related
I was making a thinking exercise about how could I deploy a chat service like WhatsApp or Slack (just wondering), so people could really use it. You need two main parts, the client software (e.g. the app running on the smartphones), and the server software. So how would you develop the server-side code and make it work?
The first idea that came to me was the classic hosting service, but it cannot be the simple "web hosting service", probably because something like this should be programmed at a lower level and not working with HTTP requests and responses. Maybe using specific server-side technology like Node.js (any other suggestion?) to manage different type of requests at lower level, let's say at the layer where TCP lives, would be a better solution.
So I heard about the Amazon Web Services (AWS), which is not classic hosting, it's a cloud computing service. The problem is that I don't know exactly how this works. Could I deploy a server-side application that works at that low level of networking and also makes requests to databases? Would it be difficult to offer this kinf of service using AWS?.
I would like to hear all your opinions about any aspect of this. Would you use other kinf of technology on the server? What do you think about AWS, and if you would think it's a good option, where can I get some info to learn how to use it?
Server Side Code
You can create a chat service backend using NodeJS + express(or Hapi) to cater input Http Requests.
For Hosting: Cloud servers are pretty available these days and allow you to scale if your app grows with time.
Database:
if you already have your DB available (cool) just use ORMs ( like (Sequelize) which provides easy interaction of Nodejs service with your DB. (I have used MySQL + Sql Server + Oracle)
If not, you can create a new DB (MySql- free on your hosting server (cloud?)
I used Microsoft Azure to host a Nodejs(+ Hapi.js) Backend Service ,to be consumed by my mobile application, over the internet.
Azure gives you $200 free credit which is sufficient for you to try and make your hands dirty with them. There are numerous tutorials available for MS-Azure Api App hosting which will guide you to a successful deployment.
I have not yet explored AWS as of now, but i trust that they will be similar in their learning curves.
I'm just starting to learn more about the Node.js paradigm and finding it hard to grasp basic concepts. I'm familiar with front-end tools (HTML, CSS, JS) and have been using PHP with Apache server and mySQL db to deploy websites until now.
It seems to be that node is it's own server, and I would then need a SaaS platform like Heroku, or AWS (I'm not even sure if i'm understanding the purpose of these) if someone could explain the difference?
Is the database managed inside this service?
Is the website being hosted there?
In steps how would you get the node app to be served onto your domain name?
For Scalability purposes I understand how having dedicated big infrastructure can help, but if building a low traffic website with small number of members is there even a point in using node?
normal hosting services cost between $4-20 usd. per month and AWS or Heroku seem to start at a MUCH higher price. Is Node only to be used for large scale scaling business model?
Thank you for any answers or good recent external resources (websites or books) you could point me to.
You could easily host a low traffic website built with node.js absolutely for free on Heroku.
To see how easy that is, just go through the Getting Started With Node.js Heroku tutorial, in which you will do just that.
When you build your website with node.js, your own code that your write is the web server. You have no separate web server to configure and interact with (such as Apache). So what you see (or code...) is exactly what you get.
You will probably want to use a framework such as Express to build your web server functionality in your node.js app.
As for NoSQL databases, the way to do this on Heroku is to use an appropriate "add-on" from the Heroku Elements Marketplace. For example, you could easily add Heroku Redis or MongoLab. These are just some of the NoSQL "Database as a Service" options. That means that the Database is itself hosted somewhere in the cloud, and your app simply interacts with it. You don't need to worry about database maintenance, security upgrades etc. You just need to concentrate on your app's interaction with the DB.
Almost all add-ons in the Heroku Elements Marketplace feature a free-tier, that may suffice for your needs, at least initially. So you might be able to get your low-traffic website (including the DB) up and running completely for free, at least initially.
One thing you will need to understand is how Heroku free dyno hours work.
If you need your website to be continuously available 24/7, you may need to verify your Heroku account with a credit card (even though no charges would be incurred as long as you deploy only 1 free web dyno and are on a free-tier plan of your NoSQL DB as a Service). For further details, see this answer.
You also need to consider whether you can tolerate dyno sleeping in your low-traffic app. If not, you would need to prevent your web app from sleeping, which can also be done completely for free. For tips on how to do that see here.
As for serving your Heroku node.js app website from your own domain name, see here. Note that for this too you will need to verify your Heroku account with a credit card, although this too does not incur any charges.
Node.js is supported by many web hosting already, especially for those who use Plesk or cPanel as their web hosting control panel. Here is guide about how to setup a Node.js website via Plesk control, https://www.bisend.com/blog/how-to-set-up-a-node-js-site-in-plesk. As you said, it's very easy to host your website with a cheap shared web hosting.
I have developed an enterprise level application(CRM), And planning to provide it as a SAAS/Hosted Solution.
I am very much worried about the Server & It's Architecture to handle the large traffic. I did some work and reached at, I can use AWS Or Rackspace Claude Service with Load Balancer, RDS, S3.
But still I am not sure it is enough to handle the large traffic or not. I have following questions please provide me some suggestion.
Is there any other good Cluod Service provider than AWS and Rackspace.
How to architect the server(Backup Plan, Highly Available, Data Base Server, Staging etc.)
Please suggest some tool to monitor the server performance.
Server Security.
Tools to calculate the server costing.
Thank You
Is there any other good Cluod Service provider than AWS and Rackspace. - There are options like Google Cloud, HP Cloud, SoftLayer, Azure and many more.
How to architect the server(Backup Plan, Highly Available, Data Base Server, Staging etc.) - Pretty big question to address.
Please suggest some tool to monitor the server performance. -- NewRelic can be one of them.
Server Security. -- Pretty big question to address.
Tools to calculate the server costing. -- https://planforcloud.rightscale.com/ - This would help.
We use a Rackspace cloud server (2nd generation) for one of ours SaaS applications. And we want to move one more SaaS app to Rackspace as well. Both applications don't have much traffic/load, but they grow up with time insignificantly.
I'm hesitant if to create one more cloud server and to place the second application there, or to install it as one more virtual host at the first server. My main concerns are:
I'm not sure if it'll be convenient to support both developing projects at one server (they're written using the same tools, so quite similar and need a similar environment)
I'm not sure if it's a good idea to set up one more cloud server with the same environment and to spend time on supporting the same servers in parallel (e.g. updates/packages installs). Maybe there're approaches I'm not aware of on how to maintain similar servers in parallel a simple way at Rackspace?
Thank you for your time.
I have never regretted using separate Rackspace Cloud Server instances for described case. It's very convenient to have decoupled application environments in a long time run.
For easier setup of similar environments it's possible to use templates of Rackspaces's Cloud Orchestration
I am conducting some research on emerging web technologies and have created a very simple Azure website which makes use of web sockets and mongo db as the database. I have managed to get all the components working together and now must perform load testing on the application.
The main criteria is the maximum user load that the app can support, at the moment there is 1 web role instance, so probably I would need to test the max user load for that instance, then try with 2 instances and so on.
I found some solutions online such as Loadstorm, however I cannot afford to pay to use these services so I need to be able to do this from my own development machine OR from another cloud service.
I have come across Visual Studio Load Tests and they seem quite useful, however it seems they require VS Ultimate and an active msdn subscription - the prerequisites are listed here. Also, from this video which shows the basics of load tests, it seems like these load tests are created completely separately from the actual web project, so does that mean I can only see metrics related to the user? i.e. I cannot see the amount of RAM being used, processor etc.
Any suggestions?
You might create a Linux virtual machine in Azure itself or another hosting provider and use ApacheBench (ab) or JMeter to do simple load testing on your application. Be aware that in such a setup your benchmark servers may be a bottleneck themselves.
Another approach is to use online load testing services wich allow some free usage, such as:
loader.io, by SendGrid Labs
LoadStorm
Blazemeter
Blitz
Neotys
Loadimpact
For load-testing, LoadStorm is very reasonably priced, especially compared to on-premises software (and has a free tier with up to 25 virtual clients). You can install code such as jmeter, but you'll still need machines (or vm's) to host and run it from, and you need to make sure that the load-generator machines aren't the bottleneck in your tests.
When you run your tests, you may want to consider separating your web tier from MongoDB. MongoDB will consume as much memory as possible (as that's what gives MongoDB its speed). In a real-world scenario, you'll likely have MongoDB in its own environment. So for your tests, I'd consider offloading MongoDB to its own instance(s), and 10gen has a Worker Role setup that's fairly straightforward to install.
Also remember that NIC bandwidth is 100Mbps per core, which could be a limiting factor on your tests, depending on how much load you're driving.
One alternative to self-hosting MongoDB: Offload MongoDB to a hoster such as MongoLab. This will allow you to test the capacity of your web app without worrying about the details around MongoDB setup, configuration, optimization, etc. Currently MongoLab offers their free tier hosted in Azure, US West and US East data centers.
Editing my response, didnt read the question carefully.
Check out this thread for various tools and links:
Open source Tool for Stress, Load and Performance testing
If you are interested in finding the performance counters of the application under test you can revisit some of the latest features added to Visual Load Cloud base load test.
http://blogs.msdn.com/b/visualstudioalm/archive/2014/04/07/get-application-performance-data-during-load-runs-with-visual-studio-online.aspx
To get more info on Visual Studio Cloud Load Testing solution - https://www.visualstudio.com/features/vso-cloud-load-testing-vs