The term is getting 'hotter' with Microsoft Azure and Windows 7.
What are the benefits + how does the status quo of desktop computing now change? Does the machine no longer need an OS installation (or a highly stripped down version of a typical OS)... what is needed to interact with the 'Cloud' ?
Update: Received my first RTFM on SO today.
To elaborate.. I'm interested in knowing how different is the 'new way' w.r.t. the services provided by a typical desktop OS today (read Win XP/Vista, linux flavors galore, etc.)... NOT the benefits of cloud computing.
Two buzzwords.
Basically its Microsoft's form of competition against Google's recent web-apps boom. So if you want to know what it's all about just open up google docs and gmail, and there you go :)
Now on a personal note, I'm glad Microsoft and Apple(Mobile Me) are trying to fight back against Google. We need the competition, so us the users can choose and get better apps.
Also I'm really not a fan of any corporation, so I'm not all that excited about Google killing off everyone else any more than Microsoft doing the same to others.
When Microsoft says Azure is a Cloud OS, what they mean is that it provides the same kind of services to developers targeting the "Cloud" abstractions that are akin to what a Desktop OS provides developers targeting desktop.
Amitabh Srivistava gave a great interview on Channel 9 explaining it. Basically, if you want to write a notepad application for a desktop user, you don't have to be concerned with writing code that interprets key strokes from the keyboard, or that sets up communications with a printer. This is due to the desktop os. Similarly, Azure lets a developer focus on their cloud app better by abstracting things like load balancing, authentication and authorization, failover, and a lot of concerns that one would normally have to address when developing for the Cloud.
Old school network diagrams always showed the internet as a cloud. Microsofts approach is still a client-server model, although a real 'cloud' os in theory would be a SOA architecture of loosely fit components interconnecting and working together without really being aware of eachother. Example: creating services for email, document authoring, file storage, etc- which could all be interconnected by different services that don't erally need to be aware of the final product.
So different way of thinking of it: the 'system' exists in the network- not one single location.
Gains: Transparency, redundancy (not only of each service, but for replacing parts if vendors drop out) and availability (as long as you are also connected to the network).
Losses: Vendor lock-ins, vendor's dropping out, interoperability nightmare, as far as I know- there are no real standards for this model.
Microsoft did not coin 'cloud' computing term. Please refer to the wikipedia entry for a more specific definition and etymology.
whats with the RTFM questions on SO lately? unless I'm missing some deeper meaning, your questions are obvious.
http://en.wikipedia.org/wiki/Cloud_computing
Cloud computing is Internet-based
("cloud") development and use of
computer technology ("computing"). The
cloud is a metaphor for the Internet
(based on how it is depicted in
computer network diagrams) and is an
abstraction for the complex
infrastructure it conceals.[1] It is a
style of computing in which IT-related
capabilities are provided “as a
service”,[2] allowing users to access
technology-enabled services from the
Internet ("in the cloud")[3] without
knowledge of, expertise with, or
control over the technology
infrastructure that supports them.[4]
According to a 2008 paper published by
IEEE Internet Computing "Cloud
Computing is a paradigm in which
information is permanently stored in
servers on the Internet and cached
temporarily on clients that include
desktops, entertainment centers, table
computers, notebooks, wall computers,
handhelds, sensors, monitors, etc."[5]
http://en.wikipedia.org/wiki/Azure_Services_Platform
Microsoft's Azure Services Platform is
a cloud platform (cloud computing
platform as a service) offering that
"provides a wide range of internet
services that can be consumed from
both on-premises environments or the
internet"[1]. It is signficant in that
it is Microsoft's first step into
cloud computing following the recent
launch of the Microsoft Online
Services offering.
...
The idea and push from Microsoft to
compete directly in the software as a
service model that Google's Google
Docs have offered is increasingly seen
by them and others as an important
next step in application development.
In this idea, a software doesn't have
to be installed and managed on the
user's computer. It also allows files
and folders to be accessed from the
web.
So far, it looks like the idea of having software & your data hosted at msft's data centre.
SOA seems to be related to what cloud is offering.
No need to have local software (office will run from internet, your docs will be saved there. so that, you can access it anywhere). I think, the target could be big companies - thereby giving them services (software + hardware (data storage + processing power)) on subscription basis.
An expert can shed light on how this can be useful?
Will people be willing to put everything in the cloud?
Cloud is Time Sharing. Us old timers remember those days. You either wrote your own apps and ran it on their (the Time Share/Cloud providers) systems or you use the software they supplied. Usually word processors and accounting apps.
Google Apps is cloud. And since you get HD space you can already serve up your own app running on their systems.
Time Share was all the rage in the 70's and 80. Cause maintaining a system of your own wasn't cheap. Back then the smallest system any company ran was a mid-range (like Honeywell, AS400, Dec, etc, etc). Fell out of favor as the PC became popular. I remember when Lotus 1-2-3 came out and everyone predicted it would destroy what was left of Time Sharing. And it (along with dBase and other aps) did.
It's funny how we re-invite everything.
PS: Forgot one thing about Time Sharing. Since the Net wasn't around, you had to schedule your time. SO your staff would go to the providers Data Center and work. It was like renting space and the systems. Time Share and Cloud operate differently, but the function is the same.
Well like many new terms, there can be more than one answer. Frequently it can be defined as a compute platform, where the developer doesn't have to worry about resource management, scalability or hardware failures, because the cloud infrastructure handles it. Here is a link to some information the company I work for has:
http://www.appistry.com/resource-library/index.html
There are some good white papers linked here that might be helpful to you.
-Brett
A cloud operating system primarily manages the operation of one or more virtual machines within a virtualized environment.
Microsoft Windows Azure and Google Chrome OS are among current examples of cloud operating systems.
Azure App Service is one of the common and most used services. While it is possible to immediately deploy apps, jobs etc., to the app service, a common factor that baffles decision makers is the wide spectrum of the tiers (options of plans) available in the marketspace. To know more details,visit:https://www.impigertech.com/blog/azure-app-service/
Related
We have an existing cross-platform Mobile Application, that also has an accompanying web application, that uses AWS as a back end (RDS for Database, Four server instances, and a Load Balancer to distribute traffic). APK and IPA files are packaged and sent to the stores, while components are retrieved from our server per request, which enables us to reduce the number of store builds, and make the process easier for getting changes out to clients.
We are at the stage of Development that we need to move to another platform to better facilitate our fast growing client base.
Due to the conditions upon our clients, these things must be considered.
must be cross platform (Android / iOS).
must be offline based (users need to be able to access without an internet connection)
must be able to sync with an existing database when there is a connection
requires Authentication
Cloud based (? may not be the right term, but meaning the ability for us to store components on a server and have a device check for updates and download a local copy - enabling us to work and distribute fixes faster)
Ideally compatible with AWS
We are currently looking at Xamarin to facilitate us for this move, however there is a lot of documentation and plugins out there to do all sorts of different things.
As developers, we all have some .net / c# experience, however none particularly with Xamarin.
We have a particular timeline that we need to adhere to (and need to ramp up in the next couple of weeks), and right now are essentially stuck in Limbo in a research phase, as we can't afford to get some things right. We are unable to move forward until we know Xamarin (or some other framework) is able to do everything that we need it to do.
It's hard to escape from the 'code it all ourselves' mentality - especially as we don't know where to start looking in terms of third party packages for Xamarin, and their documentation itself.
A lot of documentation mentions various systems of Azure - we would not be against moving to Azure over AWS if it _had to be done*, but because of the existing infrastructure with AWS - staying with AWS is obviously the preferred option (users need to access the current system whilst we build the new system)
This stack overflow post is to ask for recommendations, comments, or other observations on anything and everything involved with the process in regards to choosing frameworks, design patterns, methodologies, third party packages, etc.
Obviously we would like to use best practises for everything moving forward for optimum scalability and cleaner, more robust code. It's just hard to know where to start!
Any input will be highly appreciated.
Cheers!
edit: I am aware that this is 'asking for recommendations' which is 'specifically off-topic'. I have read the posting guidelines about open ended discussion, and am quite confident that this case is different. There is an underlying problem here, in that we are seeking advice on combinations of frameworks and plugins that are fully compatible with all of the items in the list (above)
Let's try to breakdown each of your requirement and constraint mentioned in the question.
1. You need a offline first architecture (With Sync mechanism)
Xamarin + Azure would make a good comdo for you, as it would support offline storage out of box (With a simple PullAsync call).
Albeit there are AWS SDK available for Xamarin. Here it goes http://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/setup.html
So the call is yours. There are few other ways to achieve caching offline storage in Xamarin, you can build upon those strategy in your logic. Alternatively there is a very interesting C# library Akavache for caching and offline storage.
2. OAuth 2.0 Authentication
Xamarin has a very good library named Xamarin.Auth. Though I would not say it is very easily extendible at this but there has been some serious work going on from Xamarin on this library.
But I would say it is very easy to use. The apps I have developed so far that includes - Google OAuth, Facebook integration, Microsoft account integration. It worked fine for all of them.
3. Cloud based distribution
There are nice tools available with Microsoft. Which makes the distribution easy. Have a look at https://mobile.azure.com . Also hockeyApp is good for distribution I found.
Where to start:
A very good starting point for you would be https://channel9.msdn.com . Just go there search with keyword "Xamarin" and view some videos. May be all these cross platform dynamics will be much easier for you.
Overall I found Xamarin a cool product to work with. Because anything that can be done in native Objective C/Swift or Java can very well be done in Xamarin using C#.
I am a beginner trying to understand why do I or others need heroku or other cloud services for application development. I want to know for what sort of applications or scenarios, do we need heroku or similar services?
For example, if I am an application developer, I can write my application (windows or linux) on my machine, run and test it on my machine and then share it publicly on sourceforge.net or some other website for free or for some money. I mean all of us download and run applications and programs from all over the web e.g., notepad++ or skype. They come as binaries and we can install them on our machines easily. I want to know where Heroku or cloud comes into the picture and do I/we need it? and why?
Please let me know if you need more explanation.
Heroku and Other PaaS providers helps you in application deployment and gives hosting of your application and some other features like High availability, scaling, load balancing, monitoring and ready made environment to run your apps.
Now why they cost? PaaS providers runs your application on virtual instance and use some management and deployment tool in front of it to manage and monitor your application that taken care for you. Manging a server is not easy now a day for big application, you need a high level of expertise and enough time to monitor periodically(may be hours). If you go for free hosting, you will not get all these feature of PaaS. Again it's your choice. If you can't bear down time and any data lose, you should prefer PaaS else you can go for Free hosting.
First of all notepad++ is not an application users of which need to interact or share. So it is not a good choice for to give an example. Heroku and other cloud providers host cloud applications. Generally, these applications, as part of their nature, need scaling. And scaling requires more hardware. Setting up hardware to scale your application requires time, money and expertise, so it is expensive. Buying these as a service is more appropriate for most people. I would offer you to read about IAAS, PAAS, SAAS concepts to start.
For a beginner or an individual hobbyist, the charm of Heroku or a similar PaaS lies in the fact that Heroku (and others) do away with the complexity of building and deploying cloud/web/saas software.
A typical app developer just knows/needs to know about his/her app. That is it. Why should you have to worry about how many machines you need to run your app on or get charged for machine time when you are sipping coffee and your app isn't doing anything or you are just trying out new things and don't know if it works. You can just write code and push your app to Heroku (or other platforms like it) and let them worry about things like servers, availability and reliability of your app. Yes, you will need to make some simple choices but those are much simpler choices than planning for scalability or database backup. And like any software platform, you will learn with time as to what suits your needs best. You adjust your app and things work fine. And remember you pay only for what you use and that can go up or down when you do more or less with the platform.
Also, if your app turns out to be a really popular app and you need to scale the app to support your newly founded fame :), you can ramp up your infrastructure on the fly for some affordable price.
I’d like to develop Windows 8 applications and have them hosted on Azure as if they were any other website, i.e. accessible to Macs, PCs, etc. I don’t want to be limited to people downloading Windows 8 applications to a Windows 8 PC or device. Can you explain how Azure achieves this?
I’d like to develop Windows 8 applications for desktops, but not be limited to running them on Windows 8 PCs and devices.
Thanks
Azure doesn't achieve this at all, other than providing a public endpoint for access to 'code'. What you have up in the cloud will depend on what you want to achieve and who you want to reach.
You mention web site and application, but those connote two very different architectures.
A web site will give you the most reach since you'll (presumably) be using standards like HTML5/JavaScript and CSS that are available on a multitude of platforms. As you can see by using applications like outlook.com, the user experience can be quite immersive. With a web site there's little to no client-side requirements other than a browser.
An application typically implies native installation on the target machine and provides the richest possible experience because you use techniques, frameworks, and APIs that are specific to a platform or a device. Applications also (arguably better than web sites) enable reach and monetization via marketplaces like Apple's App Store, Google Play, and the Window Store.
Technologies like Silverlight and Flash were part of the RIA wave (Rich Internet Application) that was a hybrid of both: use the web for reach, and a plug-in for richness. Those are still valid models, but the tide is shifting to HTML5 which is now much closer to reality and narrows the user experience gap that Silverlight and Flash filled. While Silverlight is definitely supported (in an out-of-browser mode as well), the choice of using a plug-in technology will limit your audience because of platforms supported and the need for an additional installation. That may or may not be acceptable given your target application.
What we are seeing now is a trend toward mobile application development paradigms - native still, of course, but also hybrid applications such as afforded by PhoneGap, AppMobi, Sencha, and other HTML5 frameworks and cross-platform options like Xamarin. Each of these allows you to develop in the language and constructs you know well for a given platform, but create applications which are partially or wholly 'native' and can run on multiple devices and platforms. Typically, you will reuse much of your 'back-end' and data integration layers across you targeted platforms, but rework the user interface to be in-line with the expectation for the device.
Windows Azure figures prominently in the development of such apps by providing infrastructure for data storage, services, identity management, push notifications, and other facilities that rely on centralization and scale.
And I suppose there's one other option in all this, virtualization, but that's a larger hurdle for end users and wouldn't recommend that as a general approach.
You can create Silverlight apps, it runs in browser. So it can be open Windows PC as well as in Mac. Do visit Microsoft Silverlight website. Here's few links regarding Azure with Silverlight.
Silverlight in the Azure cloud
Microsoft Silverlight 5 and Windows Azure Enterprise Integration
Windows Azure with Silverlight End To End Demo
More you google, more you will get results.
The question says it all, we know most of the hosted web-based UI prototyping tools out there, but we would like to have ours hosted on our own internal servers, preferably with on-line multi-user collaboration functionality (i.e. users modifying the prototype, making comments, etc. in parallel).
Any suggestions will be appreciated.
Sketchflow (in the top-end version of Expression Blend from Microsoft) meets almost all your criteria. It ain't cheap, but it is very powerful.
The deployment package of a Sketchflow build can just be placed on an internal server (no IIS required to deploy).
Multiple users can overlay their comments and pen drawings over the top of the screens. Their feedback is packaged as a unit and sent back. All feedback can then be loaded back into the Expression Blend project and the feedback from 1 or more users viewed overlaid on the correct screens.
It does not meet your multiple-user authoring requirement though, but as they say "too many cooks...".
Most tools are either desktop based or hosted. Seen very few which offer a downloadble multi user version. iRise is one choice with the editor as a desktop product and a centralized server for sharing among users. The budget is typically from $50K to $250K. A similar option exists for Serena composer as well, not sure of the price though.
Both iRise and Serena are not real collaborative tools, the central server is only for sharing the finished prototypes and getting feedback.
If the requirement is for a completely web based multi user tool then 10screens can be an option - http://www.10screens.com. The same product available on the site in a hosted mode can be downloaded and installed on your own servers.
MS is calling Azure an Operating System.
To me, it feels much more like a framework. I am having a bit of trouble defining the two separately. I have a general intuition, but I am not articulate enough to really say if Azure is really an OS or just a framework sitting on top of Operating Systems.
I've just been listening to the Deep Fried Bytes Podcast #20 wherein, they interview Steve Marx, the Windows Azure Program Manager, and he explains it all.
From what I can gather thus far (haven't finished all the podcast) it works like this:
Microsoft have a ton servers running Hyper-V which can run virtualized instances of windows server 2008
You can start/stop/reboot an arbitrary number of these virtual win2k8 servers using an API, and you get charged only based on what you use.
The platform which controls this start/stop/reboot/crash recovery/provisioning/billing/etc is Windows Azure. They jokingly refer to it as the 'windows server overlord'
You define roles for these VM's, which can be either
web-role, in which you can run any .NET code hosted inside IIS (eg: ASP.NET, httpHandler, etc),
worker-role, in which you run some standalone .NET code for background processing and so on
Perhaps more roles once they come out of CTP
You can use the windows azure API's to start/stop them - eg: "Give me 5 instances of my web role and 3 instances of my worker role"
Data gets stored by their storage services, and can be
Blobs (I'm assuming something like S3)
Queues (I'm assuming something like SQS)
Tables - marx mentioned a 'web scale non-relational data store' - something like SimpleDB or BigTable
These VM's have a bunch of other services available to them - Live Services for windows live stuff, .NET services, SQL Services if you need a full-blown SQL server for relational data, Sharepoint services if you want sharepoint, etc.
All this stuff rolled up together is the Windows Azure Services Platform
My take - Giant Marketing fail. Confusion abounds. MS seem to always do this kind of 'roll it all up into a single buzzword' thing though (.NET 5 years ago, anyone?). I really wish they would stop it
Another way I have heard Windows Azure pitched is "infrastructure as a service". Meaning that you don't have to think about the operating system in the same way as if using a server or VM that you tweak.
What is Windows Azure? seems to answer this, perhaps?
Quoting #daok:
Description
The Azure™ Services Platform (Azure) is an internet-scale cloud services platform hosted in Microsoft data centers, which provides an operating system and a set of developer services that can be used individually or together. Azure’s flexible and interoperable platform can be used to build new applications to run from the cloud or enhance existing applications with cloud-based capabilities. Its open architecture gives developers the choice to build web applications, applications running on connected devices, PCs, servers, or hybrid solutions offering the best of online and on-premises.
Azure reduces the need for up-front technology purchases, and it enables developers to quickly and easily create applications running in the cloud by using their existing skills with the Microsoft Visual Studio development environment and the Microsoft .NET Framework. In addition to managed code languages supported by .NET, Azure will support more programming languages and development environments in the near future. Azure simplifies maintaining and operating applications by providing on-demand compute and storage to host, scale, and manage web and connected applications. Infrastructure management is automated with a platform that is designed for high availability and dynamic scaling to match usage needs with the option of a pay-as-you-go pricing model. Azure provides an open, standards-based and interoperable environment with support for multiple internet protocols, including HTTP, REST, SOAP, and XML.
Features
Key components of the Azure Services Platform include the following:
Windows Azure for service hosting and management, low-level scalable storage, computation and networking
Microsoft SQL Services for a wide range of database services and reporting
Microsoft .NET Services which are service-based implementations of familiar .NET Framework concepts such as workflow and access control
Live Services for a consistent way for users to store, share and synchronize documents, photos, files and information across their PCs, phones, PC applications and Web sites
Microsoft SharePoint Services and Microsoft Dynamics CRM Services for business content, collaboration and rapid solution development in the cloud.
Technically, Azure is a set of services running on vanilla Windows 2008 Servers running virtually inside of Hyper-V. Your app runs on those services, abstracted away from the actual operating system. Because of this, they are calling Azure a "Cloud Operating System". Unfortunately, these answers don't answer my question... so...
I re-formatted my question to something more generic: What is the difference between an OS and a Framework?
Windows Azure is both, a framework and an OS. The main two things any OS provide for the developers are the CPU and the memory which Windows Azure provide in different ways, through the compute node. it also provides a scalable storage to store several types of storage whether structure, unstructured or even semi structure data. please notice that the storage node runs on a different hardware resources than the compute node, which provides the system with better efficiency and high availability and scalability. if your application faces any problem, the system will automatically create another instance of it plus your data is replicated three times.
As the Cloud Computing is a concept which consists mainly of three layers, the infrastructure, the platform and the software (as a service), each layer of them is targeting a specified segment. the windows azure is targeting the developers to build high available and scalable applications, it doesn't manage the infrastructure, it is installed on Windows Server which make the administration on the infrastructure, however as the Cloud Computing is based on Virtualization, Windows Azure has its own hypervisor it doesn't depend on Windows Server Hyper-V.
For the developers, which needs to build their applications on Cloud Computing they need a designed framework or platform that gives them the ability to do so.
that's why I think Windows Azure is not just a framework, and not just an OS it is both.