Its’ been quite some time that I blogged. Past few months have been crazy busy for me. After the failure of my last product (anybody remember CloudFileXchange thingie we did :)), I spent a lot of time thinking about what to build and then spent more time building it. The result is Cloud Portam. In case you’re wondering what “Portam” means, it is actually derived from Latin word “Porta” which means “Gate”. We would like you to think Cloud Portam as your Gateway to the Cloud. In short, Cloud Portam is a browser-based Azure Storage Explorer. You can read more about Cloud Portam on our website at http://www.cloudportam.com.
We launched this application in public preview earlier this week though it was in private preview for over two months and has been used by some folks. The product you see is a result of feedback from these early adopters.
At the launch, I had the opportunity to sit down with “Udontknow Jack”* from “Cracker Jack News”* :). Following is the excerpt of our interview.
Jack: Congratulations on the launch. So tell me what exactly is Cloud Portam?
Me: Thanks. So basically Cloud Portam is a browser based Azure Storage Explorer which allows you to manage objects stored in your Azure Storage account through a web browser only.
Jack: Correct me if I am wrong, but didn’t you build an Azure Storage Explorer earlier?
Me: (Thinking) #$*@# … He has to bring this up:)!
Me: That’s correct. Earlier I built Azure Storage Explorer but the difference is that tool is a desktop tool and this one is browser-based tool. Considering the efforts Microsoft is making in attracting non-windows developers to build applications using Azure platform and trying to make them use Azure, I found it to be an incredible opportunity to reach out to developers who are not using Windows platform. If you’re building on Mac or Linux, you can use Cloud Portam to access storage just by using your favorite browser. No need to install a Windows VM or any special software to access your storage.
Jack: Makes sense. So tell me about the features.
Me: OK. So right now you can manage your Azure Storage accounts using this application. You can manage blobs, tables, queues, and file service objects using this application. Some top level features of the application are:
- Connect and explore contents from storage accounts including the ones in China datacenter.
- Option to save account key in browser’s local storage so that you don’t have to enter it over and over again.
- Explore contents from both storage account’s primary and secondary geo-location or in other words RA-GRS is supported. You can switch between primary and secondary geo-location on any screen in the application.
- Ability to open a storage account in read-only/read-write mode to prevent accidental deletes and updates. Again you can switch the mode on any screen on the application.
- Manage CORS rules, Storage Analytics settings for blobs, queues and tables service in a storage account.
- Complete blob container management with full fidelity with the REST API. You can manage access policies, generate SAS, manage lease on a blob container apart from creating and deleting blob containers.
- Complete blob management with (almost) full fidelity with the REST API. Blob management is completely done via SAS/AJAX/CORS so the browser directly talks to your storage account. With the exception of copy blobs (which is high on our priority list), all REST API operations are supported. Certain operations like set properties, snapshots can be performed on multiple blobs.
- Uploads. Blob uploads are done via SAS/AJAX/CORS so the files are directly uploaded from your computer to your storage account. Both block blobs and page blobs are supported (BTW, page blob upload supports sparse uploads). As a bonus, if you use Google Chrome or Opera browser, you can upload folders from your computer to blob storage and the folder hierarchy is preserved.
- Complete queue management with full fidelity with REST API. You can manage access policies, generate SAS, manage lease on a queue apart from creating and deleting queues. We have also included a queue monitoring functionality where application polls selected queues and gets approximate messages count and plots a chart of those. This could be a good way to monitor the health of your application if it makes use of queues.
- Complete message management with full fidelity with REST API. Like blobs, message management is completely done via SAS/AJAX/CORS so the browser directly talks to your storage account.
- Complete table management with full fidelity with REST API. . You can manage access policies, generate SAS, manage lease on a table apart from creating and deleting tables.
- Complete entities management with full fidelity with REST API. It is also completely done via SAS/AJAX/CORS so the browser directly talks to your storage account. You can query tables, create/edit/delete entities. One interesting thing we have done here is the ability to select a file from your local computer to be saved as “Binary” data type attribute.
- (Almost) complete support for Azure File Service. You can manage shares, files and folders in your file service through this application. Only thing that we don’t do yet is uploading and downloading files. We’re eagerly waiting on SAS and CORS support there. Once that comes in, we will include that as well. I believe we are the 1st tool to provide support for this service.
- Support for storage analytics. Currently you can view blob capacity data and storage analytics logs through this application. We’re working on including the support for Metrics data.
- Bookmarks – This is a really neat feature we have included in this application. In short, it allows you to bookmark your cloud resources (blob containers, queues, tables and file service shares) so that you can start exploring them with a single click.
For a complete list of features, please visit our website at http://www.cloudportam.com.
Jack: Sounds like it is really feature rich! Let’s take one feature at a time. You emphasized on China datacenter. What’s the big deal there?
Me: Indeed. It is quite feature rich and this has been the feedback we received from our private preview users. Essentially China datacenter behaves differently than other datacenter in the sense that they have different endpoints. For example, a blob storage account in any other datacenter will have [account].blob.core.windows.net endpoint but in China datacenter it will have [account].blob. core.chinacloudapi.cn. Cloud Portam allows you to seamlessly connect to your storage account from all datacenters. All you have to do is to tell Cloud Portam where your storage account is located and it takes care of the rest.
Jack: Nice! Tell me about storing account key locally in browser’s local storage. Why it is important?
Me: It’s a matter of trust and compliance really. There are some companies who won’t allow any 3rd party software to permanently store their account credentials. For those companies this feature would be very handy. If a user chooses to store the account key in browser’s local storage, we don’t store in our database. Once account credentials are verified, we simply encrypt the key and save it in user’s browser. When we need it, we simply decrypt it and pass it on to our servers and store it in server’s memory till the time user is logged in. Other option would be to allow us save the account key in our database. When we do save it in our database, we encrypt it twice. One encryption routine involves encrypting it with a certificate specific to user’s account and then other encryption would be with a password unique for a user’s account. Last option obviously is not to save the account key at all but in this case, you will have to enter the account key once per session.
Jack: Cool! What exactly is RA-GRS?
Me: So RA-GRS is an acronym for “Read Access-Geo Redundant Storage”. Essentially Azure provides many geo-redundancy options and you can read about them here. If you have enabled RA-GRS on your storage account, essentially Azure Storage will replicate your data to a datacenter in the same region at least 400 miles away from the primary datacenter so that in case something goes bad with the primary datacenter, not only your data is safe and secure but also you can read from it. I see it as a significant feature offered from Azure. My personal opinion is that even though it costs more, one should always enable this option on their production storage account.
Now coming to Cloud Portam, RA-GRS support is fully baked in. If you have enabled this feature on your storage account, you can explore objects in your storage account from the secondary geo-location. Please do keep in mind that the objects are only available in read-only mode and thus you won’t be able to modify or delete those objects.
Above: RA-GRS enabled on storage account
Above: RA-GRS not enabled on storage account
Jack: Interesting! You mentioned about opening up storage account in read-only/read-write mode. What’s the significance of that feature?
Me: Great question! Essentially to access your storage account, you need to provide your account name and key. This key gives you full admin-privileges on that account. You can do whatever you like including modifying and deleting the objects. Unfortunately there’s no roll-back feature in Azure Storage as of today so if you delete an object, its’ gone. Now imagine you are exploring your production storage account and accidentally deleted an object. This feature will help you prevent that.
The way it works is that we provide some buttons and context menus to perform certain operations. Depending on the mode in which you’re opening a storage account, we simply enable/disable these buttons so that even if the user clicks on it nothing happens. For example, if you open a storage account in read-only or read-write mode, delete option is grayed out. Likewise if you open a storage account in read-only mode, you can’t modify existing objects and also you can’t add new objects. However the onus is on the user to switch the operation mode. By default we allow a user to explore a storage account in full mode allowing user to perform all operations including deletes.
Jack: Looks like a really useful feature! You mentioned a lot about full fidelity with the Storage REST API. Would you mind explaining?
Me: Not at all. You see Jack, we see Cloud Portam as a developer utility and as a developer I would want to perform all operations which are supported by Azure Storage service (and then some more). Thus it was vital for us to have full fidelity with the Storage REST API. We don’t want our users to feel shortchanged just because they are using a browser-based interface. Not only we did support almost all operations provided by the REST API, we went a step ahead and offered something more. To give you an example, blob storage service allows you to set properties on a single blob. However Cloud Portam allows you to set properties on multiple blobs in a single go making it super convenient for the users to change properties (esp. cache control) on multiple blobs. Behind the scenes we invoke operation on individual blobs but for the user it is just one operation.
Jack: Convenient! You mentioned CORS/AJAX/SAS a number of times above. Why is it important?
Me: Great question! Basically our goal is not to come in between you and your storage account as long as possible. Using CORS/AJAX/SAS (SAS by the way stands for Share Access Signature), your browser directly talks to your storage account. Essentially we have removed ourselves from the picture completely in this scenario. Our role is to simply create a SAS token and give it to the browser. After that browser directly talks to your storage account to perform operations. For example, all uploads are direct. When you select a file and upload it through Cloud Portam, it gets uploaded directly into your storage account.
Jack: Nice. Now let’s talk about Azure File Service. What is it?
Me: Sure. So Azure File Service is a latest service offered by Azure Storage. To put things in simple terms, essentially this service allows you to expose this service to your cloud applications via SMB protocol. You can essentially mount a File Service Share as a network drive in your cloud application and use that as if it were a local drive. The service is still in preview and you can read more about this service here.
I’m pleased to announce that Cloud Portam is the first tool to provide a graphical user interface to manage objects stored in Azure File Service. You can perform most of the operations on Azure File Service using this application.
Jack: First tool! Impressive! But I see that you still can’t upload or download files in Azure File Service using Cloud Portam. Why is that? Is it coming?
Me: Thanks. You’re correct. Cloud Portam still does not support uploading/downloading files. Reason is simple: Azure File Service still does not have the concept of CORS or SAS. Thus if we were to implement this functionality, user’s data would have to be routed through our servers which we want to avoid. Once storage team implements CORS and SAS on File Service, we will implement this functionality. But in the meantime, we have included instructions on how users can upload/download files using AzCopy (a command line tool provided by Microsoft for managing Azure Storage) which our users may find useful.
Jack: Let’s take a moment to talk about blob uploads. I see that you can upload folders from your local computer as well. I didn’t think it was possible?
Me: Blob upload is one important and really useful feature in Cloud Portam. We support uploading both block blobs and page blobs. You can set blob properties and metadata as well. When it comes to upload, Cloud Portam supports drag/drop so you could simply drag files and drop them in Cloud Portam upload window and they will be uploaded directly to your storage account. Regarding your question about uploading folders, I think you’re partially correct. Not all browsers support that. With HTML 5, in Chrome and Opera browser it is possible to recursively iterate over a folder and read files in that folder. That is the foundation of folder upload. However this only works in Chrome and Opera browser. If you’re using Internet Explorer or Firefox, unfortunately you can’t upload folders. You will have to upload files.
Jack: Got it! Let’s talk about Bookmarks. What exactly is Bookmarks functionality? Is it like browser’s bookmark/favorite thing?
Me: Sure. Bookmarks is one cool feature we have included in the application and yes, you’re correct. It is much like browser’s bookmark/favorite thing. In a browser, you bookmark your favorite web pages and here you bookmark your favorite cloud resources which you want to access on a regular basis. To give you an example, we have a table in our database where we store how many users have signed up. Since we launch it recently, I am curious to know how many users have signed up. Under normal browsing experience, I have to follow this path: Login > Select Storage Account on main dashboard > Go to Storage Account Dashboard > List Tables > Explore user table (5 steps). Now I have bookmarked this table and my steps are Login > Click on user table on main dashboard (2 steps). I think it is a super convenience feature because as a developer I want to get to the resource I want with minimal clicks and this functionality allows me to do just that.
Jack: Indeed! So how much does Cloud Portam cost?
Me: Right now, nothing! Since we are in public preview phase, it is free to use. At this time our goal is get more and more users using this application and giving us feedback so that we can improve it. We expect the application to be in public preview for at least a couple of months. When we go live with this application, the pricing model will be subscription based where you would buy either a monthly or an annual subscription to use this application. We haven’t decided on the pricing yet but it will be very reasonable and affordable.
Jack: I had a quick look at the interface of the application and I must say it is very modern looking. Can you talk more about it? It reminded me of Dropbox when I looked at it.
Me: Sure. Prior to this we had another product called CloudFileXchange and we go a great deal of learning about the importance of neat and clean UI from there. You’re correct that it reminds you of Dropbox. We are heavily inspired by Dropbox’s clean UI. Some of things we did there which must have reminded you of Dropbox are button bar icons and context menus. You can just right click on a row and context menu will show up.
Though I must confess it is nowhere close to Dropbox’s UI but we are quite happy with what we have done so far and are in process of improving it even more.
Jack: Good to know. One last question: I’m assuming that it is running in Azure? Can you talk a bit more about it?
Me: Of course. Indeed, the application is completely running in Azure. We’re making use of Azure Websites, Azure Cloud Services and Azure Storage (Blobs, Queues and Tables) for running the application.
Jack: Thanks. Anything else you want to share?
Me: All I can say is the please give it a try. I think you will like it. When you try it out, please share the feedback. We take every feedback very seriously (bad feedback is taken even more seriously as it gives us an opportunity to improve). Cloud Portam’s website is http://www.cloudportam.com and now that you know more about the application, you can directly access the application from https://app.cloudportam.com. If you want to send feedback, you can send it directly to me at gaurav @ cloudportam.com.
Jack: Thanks for your time and all the best with Cloud Portam.
Me: Thanks Jack. Appreciate you talking with me.
*Disclaimer: In case you haven’t figured out yet, “Udontknow Jack” and “Cracker Jack News” are fictitious and any resemblance to a real person/company is purely coincidental and unintentional:). Only reason I put them here to make the post a bit more interesting and I thought through an interview/Q&A format I will be able to explain value proposition of Cloud Portam more clearly.