I believe that the best way to learn is to learn from each other, so I’m always on the search for stories of Canadian developers who have either built new applications using Windows Azure services or have migrated existing applications to Windows Azure. This is the story of Agility.
- [02:20] Rationale for going to the Cloud
“We basically started off with the UGC side of things (user generated content), built [in the Cloud] mostly because we couldn’t get enough servers in our own data center to get running fast enough to do what we needed to do, to handle the Friday afternoon loads that we were getting with certain websites. It was just a logical choice.”
- [02:48] Comparing Cloud providers: Amazon vs. Azure
”We were looking for Cloud providers well before Windows Azure came about. So we actually started off with Amazon S3 for file storage. And we’re now just migrating our newer things to use Blob storage because we actually have a lot more options with the CDN [content delivery network] that Azure has. To have it all unified is great because – some people say we have all of our eggs in one basket, they’re not… we have all of our eggs in different datacenters all over the place but they are all Windows Azure at the same time. It really helps for us, especially [because] we’re .NET developers, it just makes sense for us.”
- [03:23] Rationale for choosing Windows Azure
”I’d like to say that it was as logical as that [getting servers quickly] but it really comes down to I just feel better if I don’t have to work with hardware. I hate having to deal with bare metal. To me, what Cloud means to me is that I don’t want to do things that I don’t want to do anymore. It’s a software thing. You want to give people all of these logical reasons but really, it’s just makes me feel better not to have to deal with servers. … I think that people can understand that easier. To me, Cloud doesn’t mean as many things as it probably should, it means it’s simple, it just works, stuff like that. It should make life easier. There’s a whole bunch of technical things but it’s the ‘feel good’ stuff that is more compelling, I think.”
- [04:20] Ramp up from day 1 to being comfortable with Windows Azure
”We went through tutorials and things like that, started off with small scale stuff. … Starting off with things like that [small scale stuff], build a little web service that can do something and now [with] that web service, you’ll find that it can actually become extremely powerful. Look at something like Netflix, or tons of different APIs that are out there sitting all over the Cloud, they’re just APIs, just a way to get data, but that can become huge if you can spread that out and geolocate it and do all sort of stuff. So you’re little idea can quickly become a big idea without actually changing any of the underlying engineering very much. That’s the kind of thing that you get with Windows Azure. So for us, it was built a little API, kind of see what happens, and start small. The more difficult stuff is if you have a legacy app, you want to put that in Azure, you’re going to see that you’re going to have some points where stuff just won’t work. You’re going to have some stuff that you would have used in SQL Server 2008 that isn’t supported in SQL Azure. We didn’t have very many of those but there were a couple of things we had to re-engineer. For instance, we were using database encryption. We had to move that off to the application. So there’s a few points like that, but it’s the getting started point that is the most important. At that point, you’re just sold on it or you’re not.”
- [06:19] Gotchas that came up
”The biggest thing for us from a learning perspective is that you have to treat your components as much more fragmented that you normally would in an on-premises situation. For instance, we take for granted on-premises our database connection. You have to treat that more as if you were calling a web service or something like that - something a little more, I call it, hostile. You have to treat it like it might not be there, so you have to retry – which you really should be doing anyway because anything that is over a network, that machine can go down, it’s a network connection. So there’s all kinds of stuff that you have to take into account that is just better design anyway. What we need to do is make service-oriented type things in a real way. It’s not just a term anymore. You actually make services and APIs of your own products that you can consume.”
- [07:38] About getting your mind wrapped around the architecture rather than the development
”Yeah, that’s right. You really have to do less than you did before. … as long as you can understand the simple parts of it, then you’d think that ‘maybe I shouldn’t make it too complicated and if its getting complicated then maybe I’m going down the wrong path or maybe I should step back for a little bit’. A lot of people have these applications, in my experience, that are stuff on top of stuff on top of stuff with a bunch of assemblies thrown in that maybe you didn’t really need and I see stuff like that and I wonder – it would take you this much time now to add on a feature, how much time would it take you to step back and maybe do it the right way or to see if I can split this up into smaller pieces and just take a piece of this and put it in Azure and see how it’s going, and then add on to that small piece that’s built properly, as opposed to adding on to this monolithic thing sitting somewhere else.”
- [09:20] How do new developers to Windows Azure get started and recommendations
”When we got started it was actually a little bit more difficult because I let my trial expire. We went through a few trial accounts because it takes time, but the 90 days is sweet – there’s a 90 day sign up right now that pretty much anyone can get and there’s also a limited you can put on there so it won’t cost you any money if you try, for instance, if you’re playing around with some tools and you want to increase your instances from 1 to 2 to 3, just to check out what’s going on and see how it would work – it will limit how much billable activity you can do. So there’s really now worry about putting stuff on there and doing deployments. Just getting used to that is really important – even if you have apps that aren’t doing a whole lot, get used to that deployment process. It’s really well integrated into Visual Studio now too so it’s basically right-click, publish, and you’re done, and it just goes up there. It’s really seamless and streamlined. Especially if you’re working in a development environment where I have a single instance deployment that I want to work with, which is literally one virtual machine image running in the Cloud, I can do web deploys for that that are really instant and test stuff very quickly in iterations to see how how its going to work if I change this – poke the box kind of idea – which I think is really important for developers. On top of that, step back for a second – I have a simple web application that works on a web farm… if I was to setup a web farm in my own environment, that’s actually really hard to do. That’s the kind of thing that’s not trivial. Well in my [Windows Azure] deployment, all I have to do is change my instance count from 1 to 2 to X and I’ve got a web farm. So those are the types of concepts that you’ll start thinking about as opposed to ‘oh my gosh, how am I going to do this? I’m going to have to remote desktop into that server and set this setting.' You stop thinking about those hard things and think about more of those high level concepts that you really really want to tackle because that’s the actual logical problem you’re trying to solve.”
- [11:50] In summary: just go in and do it?
”I’m assuming, that as a developer, you want to poke at stuff. You say ‘OK, I want to write some code and see what it looks like on the other side. So just start doing that. There’s no barrier because it’s not going to cost you anything, just your time. Just try it, write some code, do the deploy, DONE! There’s literally no barrier to entry except for your own curiosity. It’s like the first time you ran a website. It reminds me of that a lot actually because the first time you started doing stuff, and that happens, it’s sort of like that whole developer curiosity thing. I think we all have that. Windows Azure development tools are another way to discover that. It’s a similar kind of deployment process but it’s kind of new. It’s got some interesting tidbits about it. It’s like you stop thinking about servers and computers and things like that and now you start thinking thinking deployments and instances and its a little more of a high level concept. I like that a lot better, I think it is easier to understand. You stop worrying about the things that you don’t need to worry about and that whole idea of making software that works actually makes a lot more sense.”
- [13:15] As a developer, favourite part of the platform
”… We had a couple of customers who came to us a couple of weeks ago and said ‘look, we no longer want to use the shared environment. We want our own environment that you manage for us. I was able to basically launch that and have a whole new web farm setup in minutes and then two days later, they had a major promotion for their website and it went fine. There were literally zero problems. That’s something that would have taken me, you know – hardware procurement and all kinds of stuff to setup, I would have had to go in and out of the datacenter, which is a nightmare. I didn’t have to do any of that. I was literally on my computer, in the web browser, cranked up a deployment. Done. Code deployed, it’s working. It was just a matter of a few configuration settings. That level of ease for spinning things up and make it just work, is really cool.”
- [14:34] Advice for those contemplating using Windows Azure
”Yeah, stop thinking about it man! Just do it! I don’t know what the barrier is. I think the barrier is in people’s minds. The Cloud is not the future. The Cloud is right now. If anyone thought that there’s going to be a revolution to Cloud – that was like three years ago. It’s happening right now. It’s totally happening. This is it. This is the revolution and its your chance to get in on something really super. I think the offerings are only going to get better from Windows Azure. As I’ve seen in the last two years, it’s been iteration after iteration, where things have gotten easier and easier to work with, and we’re at a point now where there’s literally no barrier to entry. So just do it man! or woman!”
Relevant Architecture Points
- Windows Azure Compute to host application components and APIs.
- SQL Azure databases to hold data, sharded into multiple databases for scale.
- Blob storage to hold the user generated content.
- Content Delivery Network to globally distribute the content, placing the content closest to users.
- Using a SaaS-on-PaaS (Software-as-a-Service on Platform-as-a-Service) model to deliver dedicated instances of the application as well as a shared usage environment.
- Read Joel’s blog: Moving to Cloud City: Taking Agility from Q9 to Azure in 3 Months
Agility is a cloud-based content management system. It allows you to manage content across all digital channels including your website, mobile site, mobile apps, and social media pages from a single browser-based interface. Agility integrates with best-of-breed solutions for video management, ad serving, search, analytics, email marketing and more. Implement Agility yourself or work with our services team and partners.
Joel is the Director of Research and Development at Agility Inc in Toronto, cloud-based software for managing internally produced and user generated content across web, mobile and social media. He has over 12 years’ experience with Web application technologies and architectures, both from a product and a consulting perspective. Most recently, Joel drives the development of Agility CMS, improving bits of core functionality or encouraging others to take Agility to its limit.
He spends way too much time commuting to and from work. And it’s on the train where he finds his inspiration to write several short stories. How the World Ends is his first novel. Born and raised on a farm in Ontario, Joel now lives in Cobourg with his wife, and two kids.