Azure components needed - azure

Azure - this is a really dumb Azure question, sorry to all of you who know this stuff backwards. We're looking at Azure. We want a website, which will contain some relatively static material (white papers, information sheets), and a SQL-Server database which supplies data to website visitors' requests. The database will be about 1GB of actual data which we assume will be about 4 GB of database size. We estimate 14GB of data output per calendar month, worldwide so "zone 2". We need SSL. We have our own software writers to handle loading and outputting data from the database. We do not currently have a SQL-Server licence for this. Can anyone (some great, patient person) tell us exactly what components from the long list of Azure options and components we need to accomplish this, please?

Without going into much details, here're the components from Windows Azure arsenal you could use in your project:
Websites - Windows Azure Websites (http://www.windowsazure.com/en-us/services/web-sites/)
SQL Server - Windows Azure SQL Database (http://www.windowsazure.com/en-us/documentation/services/sql-database/?fb=en-us)
Static Content - Though you could store this data with your website also, I would actually recommend using Windows Azure Blob Storage for that (http://www.windowsazure.com/en-us/documentation/services/storage/).

Related

Azure Storage Account for Tables

So first of all I'd like to say I'm no DBA nor coder, I'm just a regular IT person that works as support for network and infrastructure, however, I like to get familiar with technologies in general and understand the basics of it, let's say how they work, implemented with no additional specific details.
I've been reading about Azure Storage Accounts in regards to tables. As IT, I had to implement simple file shares via SMB 3.0 in order to have them mapped on our network, I've come across other options such as blobs, tables and queues. I've read about them however I'm trying to get the main functionality of tables for a coder.
Correct me if I am wrong, when you code an app with a database, you can put the database on same/different server, and that can be on premise or on the cloud and you kind of link both together.
And as far as Im concerned and what I was able to find out investigating on the web, these tables are NoSQL and no constraints, you create the tables and data through Visual Studio thanks to an API, then that information is reflect on your storage.
How is this is useful when using it for the app you're developing?
I've been reading about Azure Storage Accounts in regards to tables. As IT, I had to implement simple file shares via SMB 3.0 in order to have them mapped on our network, I've come across other options such as blobs, tables and queues. I've read about them however I'm trying to get the main functionality of tables for a coder.
And as far as Im concerned and what I was able to find out investigating on the web, these tables are NoSQL and no constraints, you create the tables and data through Visual Studio thanks to an API, then that information is reflect on your storage.
Azure Storage Accounts is a "box" to keep your Blobs, Tables, Queues, Files organised from the management point of view and for the access control. Each storage type is good for it's specific tasks.
If the world would have just one super storage which will solve all our possible cases for storing, querying and managing the data then there would not be such variety of different databases, storage types etc. available.
If you need to share the files as a "network folder" - try Azure Files.
If your coders need a database storage, then the first question would be what are the requirements to the database do they have? What is the purpose of that database would be, etc. Azure, particularly, has a lot of different database solutions, and again, each of them good for some specific task, and can be not a good choice for other tasks.
As to Azure Tables, from the official docs:
Azure Table storage is a service that stores structured NoSQL data in the cloud, providing a key/attribute store with a schemaless design.
So, if your coders do need to store such data, then yes, that would be one of the possible choices.
Correct me if I am wrong, when you code an app with a database, you can put the database on same/different server, and that can be on premise or on the cloud and you kind of link both together.
Correct. But also you can have your own server with the database which you need to manage yourself, or you can choose some cloud service which will provide the database for you but will keep the underlying server and other maintenance activity managed for you, so you no need to worry/spend your time on that.
How is this is useful when using it for the app you're developing?
It is important to understand what your requirements are for data storage in order to pick a proper one. This question perhaps should be addressed not to you, but to your coders, who are building the app and can consolidate their requirements to the database store. Usually, they will tell you exactly what they need, and you may give them some ideas or advice of the alternatives, if any (That may be a similar solution with extra functionality or the way how the data is stored or processed, or have more built in integrations that may be important for you, or a decision whether keep own installation or use cloud managed service)
For your further possible question about When should I use a NoSQL database instead of a relational database? Is it okay to use both on the same site? see this thread
Update based on further questions:
If I develop an application with a database whose tables are on Azure, can I call let's say functions or data from it to my main application that is hosted on premise? What's the benefit of doing that versus hosting the tables on premise other than it's largely scalable and highly available?
Perhaps you need to better understand the relationship between App (Application) and DB (Database). The Database is a standalone system, which store the data, reply to the incoming queries (receive request, process it, return the result). In overall to the DB is not important who is requesting the data. It is a "passive" system. (There are some cases when DB can trigger further processes in data processing pipelines, but that is beyond this scope).
The App in opposite is an active system in App<->DB relationship. (Also leave behind more advanced designs where App is not just a 1 system). App receive requests, process them (may do external requests to other "services" if that is necessary), give a response (with or without data) to the requester. In App<->DB relationship the external requests is what happening. At some point App need some data from the DB, so App make a request to the DB, obtain the response and continue its own logic.
Where App server and DB server are placed is not that important (for simplicity). The important part is whether DB server is accessable for the requests. DB can be on-prem with public static IP address, it can be in cloud on your own server which has public static IP address (sometimes that is archived in different ways but we skip that for simplicity), that can be a Database as a Service cloud solution, where you do not need to have a server and configure the database, but have a url endpoint which you need to use to query the DB.
I appreciate the answer, and I pretty much agree with what you're saying.
But my questions goes beyond what the requirements are for the developers.
I'll modify the question. If I develop an application with a database whose tables are on Azure, can I call let's say functions or data from it to my main application that is hosted on premise? What's the benefit of doing that versus hosting the tables on premise other than it's largely scalable and highly available?
Azure Storage Tables are the "Notepad" of NoSQL Databases. If you want quick and easy key/value pairs, tables is the way to go. If you are looking for the "Word" of NoSQL in Azure then Cosmos DB is where it's at. Cosmos DB offers global distrobution, better features and better SLA (see comparison). Tables are cheaper too.
Azure also supports MySQL, PostGreSQL, MariaDB and MSSQL as PaaS offerings if you wish to use a traditional database.

Azure Mobile Services Easy Tables - Am I On The Right Track?

I'm working on a simple mobile application in order to learn more about app development in general. I'm using Xamarin and C# to make a cross-platform app.
The end goal is to make a listing of users that are willing to be contacted to play golf. I want users to be able to enter their name and email address on one page, save the entries in a table using Azure SQL Database, and then display them in a list on another page in the app.
I've done some pretty extensive research on my own, but now I think it's time to get some real-life interaction to help guide me along. So here's my actual question...
It looks like the "Getting Started" tutorial here is close to what I want to do. But it seems like the database the app in the example uses is stored locally, whereas I want to create a table that all users will be able to access. Is following this walkthrough the right move for me? If not, what should I do instead?
Bear in mind that I'm committed to using Azure Mobile Services, so please refrain from answers suggesting I use a different platform.
Thanks guys!
If you use Azure Storage directly from the client app, then make sure you are not using Shared Key authentication. Otherwise, anyone could simply steal the credentials from the app and get full access to your blob account. To learn more, see Shared Access Signatures and the SO question Azure blob storage and security best practices.
From the official documentation:
Exposing either of your account keys opens your account to the possibility of malicious or negligent use. Shared access signatures provide a safe alternative that allows other clients to read, write, and delete data in your storage account according to the permissions you've granted, and without need for the account key.
For new projects, you should use Azure Mobile Apps instead of Azure Mobile Services. The new service offers a number of features, and it is where all future investments will be.
For instance, there is now support for blob storage syncing along with regular offline data sync, and it uses SAS tokens to connect securely. Here's a tutorial for Xamarin.Forms: Connect to Azure Storage in your Xamarin.Forms app. It includes a sample that you can deploy to your own Azure subscription with one click.
For your specific question, you could modify the Todo sample (or look at the more full-featured Field Engineer sample) and add tables for Players and Games.
There are a number of offering on the Azure platform that will allow you to store your golf players. However, the page you linked to is for BLOB storage, and I would not recommend using that.
There is Azure table storage. Which is a NoSQL store on the Azure platform. It's highly scalable and schema-less, so very flexible. You can leverage the Azure SDK to read and write to it - or go REST if that's what you prefer. Check out the tutorial here: https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/
Then there is Azure SQL, which is SQL server offered on the Azure platform. This is a traditional relational database store, but more scalable ( since it's on the Azure Platform ). You can also use this solution, but it does require a bit of extra work, since you probably want to use an ORM like Entity Framework.
So in all - I would go for Azure table storage. It's really easy to get started with and will do what you want to do.

Azure CDN - With Local Web Server

Hello I'm looking at a method for speeding up a website and providing a 5MB download (Windows App + Later this year Android version) to international customers. The numbers etc are not known at this stage but would like to know what options are available. The web server is based in NZ currently and is a WordPress install.
I'm new to these subject areas, so not 100% sure on the best move. So have a few Questions?
Would a Proxy such as Varnish be enough for a few 100 downloads a day (Possibly Hopeful)? - if hosted in NZ - its likely to be slow for international customers - without testing would be hard to know - have had a Google and haven't found anything to answer this thoroughly yet.
Could I use Azure CDN and point that at my current web server - if so where would I find good documentation on this? Or could someone provide some measure of cost here, the CDN pricing refers to the locations - I assume that would refer to each edge server - so perhaps would need to purchase a few locations to get a thorough coverage?
I assume once its setup it isn't too much hassle to add in more locations if needed + I think if we had an Australian location (Perhaps first location) - it should in theory be quite a bit faster than from NZ (Not that Azure offers)
Will keep looking in the meantime...
Thanks
Azure CDN would be a good solution. However, you don't "point" Azure CDN at your server. You upload and manage content in Azure BLOB Storage and enable CDN capabilities that basically duplicates your content to all Azure data centers and uses the CDN capability to pull from the location closest to the client. The CDN provides a CDN based URL or custom URL to link your content in a website.

Advice on the best config for web hosting scenario on Azure

I've been trying different scenarios/configs and finally decided to just ask for your advice...the Azure forum linked me here so I hope this is the right spot!
Just going crazy with the many different variables...need a solid, FAST, web hosting solution that I have much, if not complete, control/access.
I have a Wordpress site with 75K custom posts, a 2 gb mysql db, getting about 10,000 visits a month, currently on a shared 1and1 hosting package. Now I'm looking to implement some advanced search functionality using either "Views" or something like "Php Maker"...any of these tools, or ones like it, are resource intensive as they allow searching from the custom fields in the db.
I have credits on Azure so...
Linux/Lamp or Windows Wamp or Windows IIS? And I'm not a great Linux admin.
Can I, should I, setup the MySql on it's VM?
What would you all recommend for a minimum, solid, config?
Do I really "need" an availability set?
A Linux DB server and an IIS webserver?
I'm not sure where to spend the money - if I host the DB on it's VM and beef it up is that fact that it's not on the webserver VM going to cost me any of that benefit?
I've been searching for some general documentation outlining specific web hosting, website, scenarios but the data I've found is not at all conclusive - it's all over the place!
Finally (although I think I know the answer to this one ;) - can I access VM's, or Azure services, spanning multiple user accounts? A friend has offered his corporate account where he has a few hundred a month in credits - it would be cool if I could setup the DB there, at least, and the webserver on my account.
I very much appreciate your time and advice!
Rob
The last thing wou want to do is create and maintain VMs. Create an Azure website with a WordPress template, use ClearDB for your MySQL DB (the standard MySql option for Azure websites) - you'll need to get a paid solution for this size of DB.
With Azure website extensions, like Kudu, you can use any browser to maintain your files, or use a standard FTP option.

Share data between users in metro application

I would like to create a Metro application that allows a group of people to interact. One person would create data and serve as the owner, and multiple others would be invited in and be allow to modify that data. I heard from Build talks that each Metro application will get per-user Azure storage, but will it be possible to share that data between multiple users? Does anyone have a link they could share where I could research this?
I think that you are confusing SkyDrive with Azure Blob Storage.
SkyDrive
Personal to a Live ID
Not really meant as a base for collaborative work
Azure Blob Storage
You can have public files that anyone can view and update
You can have a lease on file that only allows certain people to edit it
Since you own the Azure account you also control the content
You can learn the basics here
If you want to share private app data between users, the best way to do so would be via a shared server of some sort. You should have a server (running on Azure, Amazon EC2, or anything really) that exposes a REST-ful web service which each application connects to. The shared state then lives on that server.
This is better than trying to use skydrive or some file-based system for storing shared data. With a file on skydrive and multiple users trying to access it, you would run into concurrency issues when more than 1 person tries to write to it.
You don't get Azure with Metro.
With Live you get a free SkyDrive that is a personal cloud storage. Like 10 GB. Can share files but it is via sending an email link. It is not file storage that would readily support a server type application to manage that sharing.
Azure is a cloud platform for file and data sharing. Azure is not free but storage cost is only $0.125 / GB per month. 10 GB = $1.25 / month. Using SkyDrive as shared storage you are giving up a lot of developer and hosting tools that come with Azure to save $1.25 / month.
It looks like there is a more formal definition of this with the updated help now available. They were referring to roaming application data. I found the following links that provide guidance:
http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
http://msdn.microsoft.com/en-us/library/windows/apps/hh465094.aspx
The general is that a small amount of temporary application data is provided on a per-app, per-user basis. The actual size you get is not detailed, but the guidance is pretty clear - app settings only, no large data sets, and don't use it for instant synchronization. Given this guidance, my plan is not a good one and will change.

Resources