Thursday, August 22, 2013

NoSQL Now! talk summary and links: Polyglot Persistence in Windows Azure

Thanks to those who attended my session on Polyglot Persistence in Windows Azure today at the NoSQL Now! conference in San Jose. Here are slides and a few notes from today's session and follow-on questions.

 (download here)

How will Windows Azure provide NoSQL database support?
Today, Azure offers Table Storage as a NoSQL key/value store. Additionally, several partners have begun offering database "as a service" running in Windows Azure. For example, MongoLab and MongoHQ provide Azure-hosted MongoDB, while Cloudant provides Azure-hosted CouchDB.

Some of these databases are available directly through our partners' web portals, while others have also integrated into the Azure Store as part of the Windows Azure portal. Here's an example of MongoLab's MongoDB integrated in the store:
For self-hosting, several partners have built virtual machine images, installable via Azure's VM Depot. Here's Neo Technology's Neo4j 1.8:

What, exactly, is VM Depot?
VM Depot is a repository of community-created Linux-based virtual machine images. In terms of NoSQL, there are a few NoSQL database images available today. For example, you'll find Neo4j, MongoDB, Redis, and Riak.

What does VM Depot cost?
VM Depot is free: Free to publish images and free to download images to your Azure account.

What are the architectural considerations for integrating multiple NoSQL databases in my app? Are there standard practices?
As the Cloud Ninja Polyglot Persistence project demonstrates, you can choose to either make direct database calls or implement an abstraction layer, implementing such patterns as repository. When going with a repository pattern, this allows you to swap out database engines with reduced impact to your existing code base, although it's possible you'll need to make adjustments to your app's data access API.

How do I choose a specific NoSQL database implementation? Can you please recommend one?
For key/value storage, Azure Table Storage offers massive scale (200TB per namespace) and provides very fast storage and lookup. As for 3rd-party vendor offerings, I really cannot give specific recommendations, but I can offer some food for thought when making your decision:

  • Look at the company's longevity, financials, funding, etc.
  • Does the vendor provide Professional Services support?
  • How big / popular is the community? Consider forums, web presence, conferences, etc.
  • How robust is language support? does the product offer direct API's when using a non-supported language?
  • How active is the project? Are there frequent updates? Can you view the code (e.g. OSS)?
  • Will the database engine run on your target OS? Some databases may be Windows-only or Linux-only.
What was that super-cool zooming app you used during your demo???
I was using Zoomit, written by Mark Russinovich.

Where can I find more information about the stuff you talked about today?
Here are some informational links from today's talk:
There are a few more resources we didn't talk about, but should still be valuable:
  • Windows Azure Open Platform Video Series. This is a 6-part introductory video series I co-created with a coworker, looking at Windows Azure's openness around Compute, Data, and Dev. The data sessions cover a few NoSQL types (with demos).
  • Book: NoSQL Distilled
  • Book: Seven Databases in Seven Weeks
  • Neo4j data set: Cineast movie data. This is the basis for my Neo4j demo. Even though I only showed people and friendship relationships, the data also contains great movie info to navigate.
If you'd like to get in touch:

Thursday, August 15, 2013

Azure Open Platform video series - Episode 1: Open Compute Platform

Last year, my coworker Ricardo Villalobos and I visited several cities worldwide, delivering an all-day Windows Azure Open Platform Summit. This one-day event covered compute+networking, data, and the developer story from an open source perspective. This included several languages (.net, python, php, and node.js) as well as several NoSQL databases (Azure Table Storage, MongoDB, Cassandra, and Neo4j).

A few months later, we decided to record a 6-part video series covering the highlights of these topics. Each episode runs about 15 minutes. The first two segments were just published, and I'll update this post as the rest of the series comes online.

Episode 1, Part 1 - Open Compute Platform: PaaS, IaaS, and Virtual Networks

Episode 1, Part 2 - Open Compute Platform: Connectivity; Web Sites


Tuesday, July 9, 2013

MongoLab extends Windows Azure MongoDB offering with 8GB Replica Sets

If you're using MongoDB in Windows Azure, you may already be aware that, aside from self-hosting, you can take advantage of Hosted MongoDB. One such provider, MongoLab, has been offering a free-tier offering, with up to 500MB, for a while now. However, that might be a bit limiting if your app is past the "just getting started" point.

Good news: MongoLab now has a Replica Set offering for Windows Azure, supporting databases  up to 8GB! You can set this up through the Azure Store as well as through the MongoLab portal. If you go the Store route, you'll see both the Free and Paid options:

Now just confirm payment and voila - you have a replica set database, with up to 8GB storage! These replica sets run in Windows Azure Virtual Machines in either US East or US West data centers, so it's best to colocate your application in one of these data centers as well, to take advantage of MongoLab's hosted MongoDB service.

If you need a larger database, you'll still need to go the self-host route, but if 8GB works for you, this is a very easy way to get up and running (since there's no database for you to install).

For more information, check out MongoLab's official blog post.

Monday, May 6, 2013

StackOverflow Azure Contributions: April 28-May 4

Happy Monday! Here are my StackOverflow answers for Windows Azure questions, covering April 28 through May 4. If you see some that you agree with (or disagree with, though I hope that's not the case!), please vote on the answer. This helps others when visiting these questions and answers in the future.

Friday, May 3, 2013

Speaking at MongoDB NYC June 21st!

I'm excited to announce my upcoming talk at MongoDB NYC: Building Hybrid MongoDB Apps on Windows Azure! I'll be co-presenting with Brian Benz from MS Open Tech.

Full session abstract:
Between IaaS, PaaS, and SaaS, Windows Azure has a veritable cornucopia of services and features to help architect hybrid apps. In this session, we'll show a multi-tier twitter-tracking node.js app pushing MongoDB data to Azure Web Sites using WebSockets, with PHP and ASP.NET clients for the Web and the desktop. You'll see how this can be easily done with Virtual Machines, Virtual Networks, stateless Cloud Services, and Web Sites.

This is a fun talk with a cool demo app!

The registration link is on the main event page - just scroll down a bit and register through Eventbrite. See you there!

Tuesday, April 30, 2013

StackOverflow Azure Contributions: April 14 - April 27

This week's post combines two weeks of StackOverflow answers. Last week was a bit hectic, as I flew DC-->Seattle (team meetings) -->San Francisco (customer visits) -->Louisville (CodePaLOUsa conference) -->DC in 5 days, then scrambled to Northern Virginia to help out with the Global Windows Azure Bootcamp. That, along with painful airport delays due to the Air Traffic Control furloughs, kept my blogging to a minimum (read: zero).

Whining and rambling aside: here are my StackOverflow contributions from April 14-27. Strangely, three of these have been closed by the Community at Large (2 of which I disagree with their closures).

  • Determining how many messages are on a Service Bus queue (link). This talks about the Queue Description API. Note: This is different from Storage Queues, which have a simple ApproximateMessageCount property on a queue.
  • Windows Azure Security? (link). This talks about connecting to an Azure-hosted VM with a database server, but limiting access. This question was closed due to being better suited for a discussion rather than a programming question (since there really is no direct programming question). However, I do believe you can upvote the question or my answer, since I feel the content is relevant and useful.
  • Azure endpoint monitoring: memory usage (link). This answer goes over options to monitor an Azure application, with both Microsoft solutions (e.g. MetricsHub) and 3rd-party solutions (e.g. NewRelic).
  • Optimize Windows Azure Table Storage? (link). This provides some insight into table storage scalability.
  • Windows Azure: What is the use of Internal IP addresses? (link). This discusses external IP (assigned to an entire deployment) vs. internal communication between virtual machines in the same deployment or talking over a virtual network.
  • DTC is disabled on SQL Azure; how to enable it? (link). This is about Windows Azure SQL-as-a-Service, vs. full SQL Server. Puzzling that this question is closed, as it relates to a programming feature of SQL...
  • How hard is it to upgrade an Azure Virtual Machine? (link). This answer shows how to change VM size via PowerShell. I don't quite understand why the question was closed (aside from it not being a programming question), as it does involve API calls (via PowerShell), and I do consider that peripherally programming-related (and I call this out in the comments under the original question). I do believe you're still able to upvote the question or one of the answers.

Wednesday, April 24, 2013

Headed to CodePaLOUsa 2013!

If you're in Louisville, and you're a software developer, you're in for a treat, as CodePaLOUsa kicks off tomorrow, April 25. What is CodePaLOUsa, you ask? Well... it's Software Development Madness! And Thursday morning, I'll be boarding a flight directly into this madness.

The pre-conference workshops are Thursday (which sadly I'll miss, since planes do not yet travel at light-speed). Then Friday morning, keynote speaker Richard Campbell (of .NET Rocks fame) kicks things off, followed by two days of awe-inspiring sessions!

I'll be presenting a look at the language stack landscape on Windows Azure: Node, Java, PHP and Python to be exact. This is a demo-heavy session, showing how consistent (and extensive) the various SDKs are (and available on github in case you want to tweak them). (hint: This is the session to attend, right after the keynote. I promise to make at least one stupid pun you can chastise me about...).

Of course, there's always the chance (however small) that you actually want to see other speakers present stuff. In that case, peruse the illustrious speaker directory and see what a great line-up you have to choose from!

While online registration is now closed, you can still register onsite. So... you have no excuse. Be there!

Tuesday, April 23, 2013

Windows Azure Global Bootcamp, April 27 in Reston, VA: Sign up, hang out, learn Azure!

This Saturday, April 27, Windows Azure MVPs and community activists are organizing Windows Azure Bootcamps worldwide, with around 100 locations (see Scott Guthrie's full writeup, here).

If you're in the Northern Virginia area, the bootcamp will be held at Microsoft's Reston, VA office, organized by Bruce Troutman and Robin Mattern. I'll be joining Bruce and Robin for this fun day of Windows Azure trianing!

More information and registration link is here.

To make your lives easier, please consider installing the Training Kit, registering for a free Azure trial account, and installing Visual Studio (the express version is free), along with the Windows Azure .NET SDK for Visual Studio. Note: All of this information is also on the registration page.

I hope to see a packed room Saturday!

Thursday, April 18, 2013

StackOverflow Azure Contributions: April 7 - April 13

Good Azure questions last week on StackOverflow. Here are the questions I contributed answers to:
  • WCF or Service Bus? (link)
  • Deploying Azure solution from dev to test server (link) - this is about whether an app can be deployed to a standalone Azure test server
  • Does Azure SQL Database support encryption? (link) - this is about the SQL Database service, not to be confused with SQL Azure installed on a Virtual Machine
  • Secure communication between internal roles in Azure (link) - this is about internal endpoints and communication between various role instances, as well as communication over a Virtual Network
  • Need further explanation regarding edge case (link) - this one is all about scaling, billing, and clock-hours
  • Issue with scale option in Windows Azure Web Sites (link) - this one covers the shift to Reserved Instances and how this is handled with multiple web sites
  • Azure Shared Cache: Unable to spin up in US East / US West (link) - this is about the shared cache service, not the new co-located in-memory cache option
  • Table Storage, more than 100 hits per second (link)
I also earned a Good Answer silver badge (25 upvotes) for my answer to Azure Table vs. MongoDB.

Windows Azure: Where to sign up for preview features

Windows Azure features are occasionally rolled out as a Preview feature that requires opt-in signup. Such is the case with the new HDInsight Hadoop-based Big Data service, as well as the Windows Azure Backup service and Hyper-V Recovery Manager service.

So... where are these features hiding, and how can you sign up???

First, head on over to the management portal. On the bottom, you'll see a button to add services:
Once you click new, select Data Services on the left. You'll now see both HDInsight and Recovery Services, and they'll initially appear grayed out. Here's what I see when selecting Recovery Services (which shows you Hyper-V Recovery Manager Vault and Backup Vault:

Note the link I pointed to on the right. Clicking this takes you to the preview program signup page:

At this point, just click try it now for whichever service you're interested in. You'll be asked to select a subscription and, if you received one (which I did not), the option of specifying a signup token:
And... that's it! You might see a status of "You are queued" which just means you'll have to wait a bit to get activated. Some services will activate immediately, showing active status:
One last thing: You may have noticed, in the signup box, the message that charges may be included. Simply put: Preview does not necessarily equate to free. You'll be consuming real cloud resources, so there's sometimes a charge for this (just look at Windows Azure Web Sites, which has a charge for shared and reserved instances, or Virtual Machines, which had discounted VM pricing when they were still in Preview, with discounted rates in effect through May 31, 2013). Preview services that do have charges are discounted due to their non-production status.

In this case:
  • Backup service is free for first 5GB, $0.50 / GB / month over 5GB, and discounted 50% during preview. More details here.
  • Hyper-V Recovery Manager is currently free during preview, with pricing to be announced later. More details here.
  • HDInsight is discounted 50% during preview, with Head Node at $0.32 / hour and Compute Nodes at $0.16 / hour. More details here.

Tuesday, April 9, 2013

Upcoming talk: Polyglot Persistence, May 7

On May 7, I'll be speaking at the monthly Central Maryland Association of .NET Professionals (CMAP) meeting. Our topic will be Polyglot Persistence. What's that all about???

Picture this: You're working on a storage problem, wondering how you're going to shoe-horn something into your database. Maybe it's SQL Server. Maybe it's MongoDB or some other NoSQL variant. No matter which database option you choose, there always seem to be situations where data simply doesn't fit right, and it becomes more of a code exercise than a storage exercise.
In this talk, we'll eschew the single-database tradition and look at a new approach gathering steam: Polyglot persistence, which simply means using multiple data storage mechanisms based on particular needs of your application. While polyglot persistence certainly includes both SQL and NoSQL variants (or even NewSQL), this demo-centric talk will cover NoSQL specifically.We'll look at (and demo) four fundamental NoSQL types: Key/Value, Document, Column Family, and Graph, and see where their sweet-spots are. We'll also work through a mock architecture on the whiteboard and see an example of how multiple databases could be combined in the real world.
If you're in the Columbia, MD area, feel free to come on out, grab some pizza, and (hopefully) enjoy the talk! More info about CMAP may be found on their website.

StackOverflow Azure Contributions: March 31 - april 6

Work and holiday celebrations kept me quite busy last week, but I did carve out time to answer a few (ok, very few) questions on StackOverflow (as well as a few comments and edits; full history here).
  • PHP <--> MySQL slow when database not on same machine as code (link)
  • Azure Cloud Role included storage: Extra costs? (link)

Monday, April 1, 2013

StackOverflow Azure Contributions: March 10-March 30

It's amazing how quickly time flies when traveling! Time for another StackOverflow recap post. This one covers my answers posted in the past 3 weeks, representing my time away in Israel, Czech Republic, Slovakia, Austria, and... a bit of vacation time in the Outer Banks, North Carolina.

While I also post several comments on StackOverflow, I figured they might not be as interesting to call out individually. If you're interested, they can all be viewed here.

  • Back up a Windows Azure Virtual Machine (link). This describes both async blob copy and blob snapshots
  • How to programmatically link resources in an Azure Cloud Service (link)
  • How to receive service bus queue messages in a Web Role (link)
  • What is the Azure Table Storage equivalent of T-SQL's LIKE command? (link)
  • Why is pricing for Web / Worker Role instances greater than Virtual Machines (link)
  • Azure queues: How to mark message as visible immediately after calling CloudQueue.GetMessages() (link)

Monday, March 11, 2013

StackOverflow Azure contributions - March 3-March 9, 2013

Here are this week's StackOverflow contributions, March 3-9:

  • Getting occasional 503 errors on website (link)
  • Secure application with Windows Azure SQL Database (link)
  • Automated publish/deploy Azure package to cloud (link)
  • How do I modify the location of my Windows Azure Web Site? (link)
  • How to move a Windows Azure VM to a different affinity group (link)
  • Windows Azure SQL Database retry logic (link)
  • Private ports in Azure Virtual Machine (link)
  • Cloud environment on Windows Azure platform (link)
  • Shared Access Signatures in new PHP SDK (link)
  • Azure Web Site reserved mode load-balancing seems not to work (link)
  • Azure VM not responding, dashboard says everything's running (link)
  • Azure VM shutdown (link)
  • Creating a container in blob storage - PHP (link)
  • Azure PaaS and Continuous Integration (link)
  • Azure administration screen for WordPress (link)
  • Azure VM blocks page requests from specific IP (link)
  • Why should I use LoadBalancerProbe instead of subscribing to RoleEnvironment.StatusCheck? (link)
  • Moving millions of items from one storage account to another (link, and some interesting comments on this answer about Nagle algorithm and its impact on queuing up requests)

Friday, March 8, 2013

StackOverflow Azure contributions - Feb. 21-March 2

Many people have asked me about programming resources, and where to get help on specific topics. I've been pointing them to StackOverflow as a great resource to get help, as it's community driven, with thousands of people participating. Additionally, it's a great place to contribute to the programming community and provide answers to others.

I also contribute to StackOverflow, and thought it might be helpful to surface some of the questions I've been posting answers to, primarily regarding Windows Azure. So here goes: The first of (hopefully) many weekly summary posts. This one covers February 21 - March 2. A bit more than a week, but who's counting... :)

  • Testing a Windows Azure web app for maximum user load (link)
  • Recover from accidentally deleting Azure Tables (link)
  • Azure VM: More than one public IP (link)
  • Microsoft Azure HIPAA database compliance (link)
  • Worker Role importance in Windows Azure? (link)
  • Hosting a simple HTML website in an Azure blob container (link)
  • What constitutes a compute-hour or cost/hour? (link)

Saturday, February 2, 2013

Surface: The Unboxing

A few weeks ago, I received my brand-spanking-new Microsoft Surface with Windows RT. I've been really enjoying it, especially on my trip to Redmond last week, which was the first trip where I left my workhorse laptop home and went solo with the Surface.

I've had a few interesting conversations regarding this slick little device, with the most unexpected happening at Dulles Airport last week when the TSA agent, looking at the scanner screen, said "Hey, is that a new Surface???" Don't ask me how he knew based on x-ray imaging alone... He spent a bit of time with it (this was at TSA Pre checkin, with no crowd whatsoever), and was truly impressed. This led to a debate about RT vs Pro, but that's a story for another day...

Being the photography nut that I am, I decided to take a few photos while unboxing my new toy. Hopefully the photos convey just how slick the packaging is. What you won't be able to tell is how quickly I went from power-up to Start screen. Very nice!

Fresh off the pallet: A Brand new Surface!

First thing seen after opening the box: The felt backing of the Touch keyboard.

Keyboard flipped over to show the touch side.

Just under the keyboard's surface: the Surface, along with power supply.

Shiny and new!

The kickstand has a discernible click. Just like in the commercial.

You can see the full-size USB port, which is very convenient. The port toward the bottom  is for the power supply.

A subtle Windows logo etched into the kickstand.

Power-up! Setup required new account name, wifi settings, timezone.
After a bit of time setting itself up, I was taken to my brand new Start screen. Let the fun begin!

Friday, February 1, 2013

Azure OSS Summit in India - Feb 20, 22, 26

Ahhhh... Paris In December. A bit of snow... A taste of wine... And an all-day immersion into Windows Azure and open source software! I was joined by Ricardo Villalobos, Karandeep Anand, and Bhushan Nene as we presented lots of OSS goodness with demos covering operating systems, languages, and databases.
Next up: India! Ricardo, Bhushan and I are holding our OSS Summit in 3 cities:
  • Mumbai, Feb. 20
  • Pune, Feb. 22
  • Bangalore, Feb. 26

You can find the full agenda and signup link here. At a high level, here’s what the day will cover:
What does OSS mean for Windows Azure? 
Infrastructure-as-a-Service, with virtual machines and virtual networks, supporting Linux- and Windows-based applications 
The Developer Story with Eclipse, along with SDKs for Node.JS, Python, PHP, and Java 
Windows Azure’s varied data offerings, both SQL- and NoSQL-based, with such technologies as Cassandra, MongoDB and Neo4j.
Note that this is tailored for technical decision-makers: CTO, Architect, Engineering Lead…