Say your app gets hit with enough users to grind to a halt, does it fire up another instance? How do you plan to get around this in the future?
Ian
Not sure if you mean apps built with 'meteor bundle' or apps deployed on the free hosting with 'meteor deploy'.
Apps deployed to the hosted servers with 'meteor deploy' do not yet have any guarantees or SLAs about scaling. However, the servers can handle a fair bit of load. meteor.com is hosted on meteor deploy, and it survived the Meteor launch.
A server bundle generated with 'meteor bundle' is basically a single process app. It is up to you wire it up to multiple instances, or however you want to implement auto-scaling.
I'm precisely not clear with your question. aren't asking about the meteor framework capability for scalability or meteor app hosting environment scalability. never mind, here it goes
As Meteor framework ecosystem grows, your question of scalability will be answered, currently you can invoke as many as small modules of code through Packages.
Meteor has something called meteor bundle for more which eventually let deploy your application any where around the globe, then you can have your own infrastructure set-up to run your app (something like a network load balancer hosted NodeJS servers and scalable multiple MongoDB instance)
In general, Meteor can scale using by bundling and use your own infrastructure, like mongo, application server. Like #n1mmy said, when the application is bundled, you can specify a certain mongo end point from which you can scale the data storage. In addition, when the bundle is running, it is actually running on nodejs, which means you can scale your web application like nodejs apps. I think in both way can ease your problem if your application has too many users.
Theoretically Meteor scales just fine, but if it really works for you in practise all depends on how you handle your data. This is an excellent post on scalability in Meteor:
https://www.discovermeteor.com/blog/scaling-meteor-the-challenges-of-realtime-apps/
Related
I'm developing my app in Symfony 2, and one of the things that i have kept in mind is that symfony 2 have a lot of requirements. I know that in my pc works. But i've never tryed to deploy my app in a shared hosting. Is not that i want all the functionalities of the framework, i only need that the app works, and also the caching works.
Do i need a special shared hosting or it can run in any hosting that have (of course) PHP and the Database Engine that i'm using?
If i do, which shared hosting may I use?
If i don't, do i need a special configuration?
Thanks in advanced.
These are the requirements for running symfony2
http://symfony.com/doc/2.0/reference/requirements.html
Have a look at it and compare with your hosting provider and see if they matches.
Most of them should match othwise give the support team a call and they will look at it.
usually most of the Hosting companies have symfony2 available as addon so i think they might have all requirements but ask you can confirm with them. like Godaddy
You also want to be cautious for shared hosting servers that use separate php versions for CLI vs Apache. If this is the case, even though you can run parts of your application via ssh, you may not be able to run most of your Symfony2 application via http.
I think you may be better off investing in a cheap VPS for Symfony2 development as it allows more flexibility and will ultimately save you more time. A lot of vps these days are almost as cheap as shared hosting anyway.
Well No doubt Symfony requires lot of pre requsites. specially when it comes to shared hosting. I practice my self managed cloud hosing services of Cloudways. This is so because they provide popular php framework as one click app installation, Moreover, i found installation process of symfony on cloud server over there blog. Just followed the simple steps and symfony 3 was installed on my server.
I would like to deploy web app on Cloud (Which is built on using Spring MVC Farmework,JPA & Oracle ).Could any one suggest me the best way to deploy it on cloud?.
Vijay
Given your comment that you're happy to move to a MySQL database, then I'd suggest Jelastic, which has the easiest deployment for your stack. It also has a free trial.
Alternatively, AppFog is also great, and free for up to 2GB of RAM.
You'll have to first pick your cloud provider.
Given the technology stack, you may be able to deploy to the Oracle Public Java cloud, or you could also configure machine images to deploy on Amazon EC2. The limiting factor will be technology (and licensing) restrictions. If you had, for example, decided to use MySQL as a database (or any other data store), you would have more options.
I currently work with a legacy asp.net web application and one of the requirements going forward is that it be deployable to windows azure.
I would like to know how difficult it will be to manage deployment to both Azure and a traditional IIS web server.
Azure seems to require a specific customized version of a web applicaiton project is it possible to deploy the customized web application to a standard IIS instance once it has been converted.
EDIT:
It is a ASP.NET Web Application rather than a Web Site (compiles everything into one dll)
UPDATE:
In the end due to the amount of work involved in converting the application to work in Azure and the cost of Azure compared with other cloud solutions it was decided to go with a traditional Cloud hosted virtual server.
And thank you for the really good answers.
Whether or not you can deploy your application to Azure almost as is depends a lot on how your application works. Azure pretty much requires your application be stateless. If it's a plain vanilla web application that stores data in the session or application cache only and saves data to a database only, then you can deploy it to Azure.
If you have stateful services running like background threads (which is bad anyways), or if you save data to the file system (besides temporary caching), then you may have issues. Really, the issues moving to Azure are really the same as moving to any multi-server load balanced solution. One caveat is permanent storage.
If you need to store data in a place other than the database, then you're best off working with Azure's storage solution which has an API and client library for storing binary data, key/value data (they call it tables, but really, it's not tables), and queues. They also do have a transparent blob-as-file-system option for compatibility. If you want to use these in your app that also is used outside of Azure then you need to write an extra layer between your code and the Azure client library that supports both Azure services and standard local service. Azure SDK does include emulators for Azure services, but they're definitely not meant for production use.
As far as the mechanics of Azure-specific projects, that is actually not that difficult. Yes, you need to create an Azure-specific project in your solution that defines the Web Role and what gets deployed, but it will reference your existing Web Application, not the other way around. You can deploy the Azure Web Role to Azure or you can continue to deploy the existing application to IIS normally and concurrently.
Web Site, Web Application, MVC, really doesn't make much of a difference. Actually doesn't have to be .NET either. Can be PHP or Java or whatever you want to put on your VM. It'll all work the same as far as Azure is concerned.
MS likes to push Azure as a Platform-as-a-Service (Paas) solution where they have a ton of services they offer and you run apps on their standard platform, and contrasts that with Amazon AWS which they call Infrastructure-as-a-Service (Iaas) which is "just" a Virtual Machine. However, MS is really just as much a IaaS solution as AWS, perhaps even more so. The only difference between AWS and Azure is AWS allows you to choose what to install on your VM and with Azure you have to use Windows Server 2008 R2 as the basis for your VM (but you can customize the VM image to install custom software on top of windows). With both Azure and AWS, the hosts offer additional PaaS services you can take advantage of for data storage and message routing. AWS also offers tons of extra services like video streaming.
Also note that with Azure (and AWS I think) you can use the services they offer even in a non-hosted application. If you want to use Azure's data storage from a non-Azure application, you can do that, it's just HTTP REST calls to get/put data. The only differences you pay for data in/out between datacenter and your non-datacenter-hosted application which would be free if the app was also inside the datacenter (just the data in/out is free in-datacenter, you still have storage and transaction fees).
A few things:
Samuel Neff's answer mentioned mounting a file system in a blob (a Cloud Drive). Only one instance may lock this cloud drive for writing, so it does not behave like a network file share. You'll need to plan for this.
You'll need to integrate with the Windows Azure diagnostics subsystem, to gain visibility into your app's run state (e.g. performance counters, trace logs, etc.).
If there are 3rd-party apps that your web app depends on, you'll need to install these. These actually get installed as part of the role instance's boot process, either via your OnStart() event handler or as a startup task. The latter allows for admin-level installs (including registry changes, COM component installations, etc.). You'll need to carefully manage these installations, as they impact the boot time of the instance.
For an asp.net app, you'll need to think about session state. In-proc session state won't work, because each instance will have its own state store in memory. The SQL Azure session state provider doesn't have background cleanup agents, so you'll need to build this into your web or worker role instance (see this blog post by the SQL Azure team for the implementation). The best option is to use the AppFabric Cache, a new service that just went into production. This cache-as-a-service provides an custom session state provider for asp.net as well. Note: As of today, the AppFabric Cache service is only accessible via a .NET interface; there's no REST interface for it (all other storage services - tables, blobs, queues - have a REST interface). .NET, Java, and PHP all have storage client libraries. Ruby has one from the open source community.
You'll have to manage scaling out to more than one instance, when the need arises. This is not a built-in service today, but there are 3rd-party services such as ParaLeap's AzureWatch. There's also Microsoft's System Center Operations Manager, which now has Windows Azure monitoring support. You'll also need to handle scale-back situations, where you reduce the number of server instances.
I have some additional details in an answer for a similar StackOverflow question, here.
I have not tried Windows Azure Migration Scanner personally, but if it works as advertised, this would really come in handy.
This might be a 'duh' question after all.
Are there any caveats running an asp.net (3.5) application on a local host? Assuming I have all the required services installed, I am looking for pitfalls/ troubles in terms of
database access
reporting/ charting and other such features
performance
The main reason for this is that the app I am developing will be eventually hosted on a proper web server but till then I want to be able to use my app from a browser (for test, demos...).
[Note: till the time the app is hosted on a web server, only I will be using the app]
As long as you install all the same components (and the same versions of them to be 100% sure) on your computer as you have available on the server, there shouldn't be any difference at all in functionality. One thing to watch out for is that the app will certainly be less responsive when someone accesses it over the internet, compared to the client and server being the same machine.
You won't have any problems at all, this is how many people indeed test. When you are ready to move it online, just make sure the host supports everything you need.
Im looking at writing a application for a web 2.0 start up site which will essential monitor specific RSS feeds.
Due to the expected up take of such a service I am expecting that taking advantage of cloud computing would be the way to do it, however with my lack of experience I do not know if it is possible to run a Windows service in the cloud.
There will be a web front end to this but it isn't imagined that that will have a heavy load as it will be just for sign up, then users will recevie notifications by SMS/Email
You can run a "service" in the cloud, when using Azure. It's called a "Worker Role" see the Architecture here.
If you're looking at running Windows Azure (which splits into a web role and worker role).
You'll have to sign up for an Azure key (The Bizspark pack includes one I believe) to get started, download the SDK and Azure tools.
It looks like you would only really need the web role for this, in which case it's just a normal ASP.NET / MVC site that you'd write as normal.
Essentially the benefit you'd get here would be being able to ramp up the number of server instances running your application by tweaking the config file.
The other option is the Amazon EC2 Cloud which allows you to instantiate as many instances of Windows2k3 Data Centre edition as you need. I run Windows Services, IIS, Postgresql etc. on such an instance with no issues.
Managed to find this link to publishing WCF services in the cloud. Im new to WCF so not sure if it will offer the solution I require, it probably will but I need to do some more research
Link