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 OptMeIn.
Points of Interest
- [03:06] Where there any concerns running PHP on Windows Azure because (PHP running on a Windows server, non-.NET code running in a Microsoft data center)?
”I don’t think there really was any initial concern. The only concern was that, as Microsoft developers – we’re a Microsoft shop, are we familiar enough with PHP to pull off the level of functionality that we want. … We had done some things in the past with PHP on Windows and we had also read documentation about Windows Azure and their ability to support PHP, WordPress, and all of these other fantastic things, so, being Microsoft fan boys, we felt pretty confident in the technology, so yeah, we didn’t really have any initial concerns.”
- [04:18] Migrating from local machines to Windows Azure
”Originally the PHP app used to sit in an Apache instance on a [local] Windows server. Part of the application is a Windows Service that is handling all of the communication between [the site and] the database. Both the Windows Services and the database are Azure instances. So we had the Windows service, the database, and then a Windows server running Apache and PHP. What we were able to do recently is utilize the PHP SDK, take all of our files, put it one location, and use the SDK to package it together and ship it over [to Windows Azure]. So now, all aspects of this application are within Azure, talking to each other.”
- [06:16] Rationale for using Windows Azure vs. traditional hosting
”First reason for going for it was scalability. With us serving up an application that is sitting in Facebook for Facebook users, the potential for millions of users to use it, being able to scale, and scale quickly, is what enticed us most about this. … and honestly, we’re developers. We’re not systems or operations people. Obviously we’re skilled enough to get servers up and running, but we want to write code. That’s what we’re experts in. So Azure allows developers to enter that space and not have to worry about managing a lot of things that you would not normally have to manage in other Cloud type services where you’re actually configuring servers and doing stuff like that [Infrastructure-as-a-service providers like Amazon].”
- [07:20] No infrastructure management to get up and running
”From our understanding, you package your stuff together, and as you’re deploying, its serving up the instance, and basically, here’s your server! [True – Platform-as-a-Service you don’t need to manage the underlying server].”
- [07:42] Rationale for using Windows Azure vs. traditional hosting continued
”Cost. There’s a very low cost of entry when starting with this. As it stands now, I guess the user base is not in the millions yet, but once it does get into the millions, that low cost – it could grow – but at that point, the hope is that we’ll have somebody paying for that high[er] cost. So for us, right now, very very low cost.”
- [08:10] Getting into Windows Azure development – going in and giving it a try
”Yeah. When you look at the promotions, especially if you join up with BizSpark or any other services like that that encourage start-ups, or just even students, or anyone that’s trying to get into it, Microsoft and the Azure team make it really easy to try it out. 30 day, 60 day, 90 day trial or for really a few pennies. Give it a shot.”
- [08:53] Amazon and Windows Azure
”For us, just going back a bit, we were experimenting with other Cloud based services [Amazon], and without having anything to compare against, it was working fairly well. But like I said, we’re a Microsoft shop, and what we needed to do could be done a lot faster using Azure. Once I had done the training session you put on [Azure Camp] for SQL Azure, and I saw that I could commission a database in, I think it took me less than 5 minutes, I compared it against what it took me with Amazon – there’s no real comparison. We were able to accomplish things much faster with Azure. There were a few things that showed us that this was the right path for us.”
- [11:49] Ramp up to being able to design and develop for Windows Azure
”It was easier than I thought it would be. I really used a lot of the MSDN articles. Especially in order for me to get the PHP off of the Windows server into Azure, I went straight to a step by step process on the MSDN site, right to the Windows Azure site, and went through the development process, got the SDK, and from getting all those, it basically just a step by step process, At this point, we’re just using what it said – run this, run that, and that got us up and running in, I think it was, a day. We got the PHP part up, converted over, within a day.”
- [13:07] Don’t overcomplicate…
”When I first initially started with this product, I struggled with the PHP component going into Azure. Sometimes it is a matter of overcomplicating things. I find with Azure, things are really as simple as they appear. As developers, sometimes we look to make things a bit more complicated. I would say as a word of caution, don’t over complicate it. It is what it is and I think you guys [Microsoft/Azure team] have done a great job in providing a service that is great for developers to package and deploy their products into these servers and you don’t require a lot of configuration. The configuration is there in the package config files and what not. But just to get something built, packaged up, you could do it in a couple of days, or a couple of minutes for a database. But if you over think it, you go too deep, then you’ll be there for a while. … Chris, being a great example of this, came in, looked at the MSDN documentation, and he had it up in a day. I struggled with it for weeks. I got my head too cluttered, and I tried to take it somewhere where it didn’t need to go. Chris came in with a fresh pair of eyes, saw it for what it was, and he got it up in a day.”
- [14:41] Obstacles that came up during ramp up
”I had less of a hard time with the PHP SDK than I did with the .NET. I found that the command line tool packaged everything up for me and was able to deploy quickly.”
[16:17] Recommendations for developers, where to start
”MSDN sites. Really. I found better information there… there are a lot of great tools out there for help, but when it came time to actually convert the PHP over, I went straight to the sites. [Also check out interoperabilitybridges.com for PHP on Azure] … there a lot of people who can blog about how to do things, but you’ll find that there’s just inconsistencies. Not that they are wrong, but just different ways of doing things. But we find, going back to the MSDN blogs, it just really fits with how we like to do things. It’s just a consistent approach. Very familiar, so we’re able to execute every time we read something, it makes sense, and we can put it in action.”
[17:46] Taking the first step – giving it a try to see everything happen
”When I did the online training, it really made the light go off for me. I got it, I really appreciated the interface and how things worked, but when I commissioned that database, when I was actually talking to it with my SQL Management Studio locally… I’ve never build a database that fast before. So the light went off and then I saw when we pushed up our WCF service up there and we were able to talk to that as well, it was fantastic. My recommendation for people just getting started – just do something, Hello World, just do something. … Get started, get used to how to spin up an instance, and like with anything, it’s intimidating, so you just have to do it.”
- Social App
- Facebook front end/backend written in PHP, running on Windows Azure Compute instances
- Windows service
- Database backend running on SQL Azure
OptMeIn was launched in 2011 to help brands and consumers connect across email, social media and mobile applications. Its unique system and customer-centric approach creates a trusted relationship by putting the user in control over the medium and the message and giving clients the tools to reach the right customers in the right place at the right time.
Trevor is a software engineer who has spent the majority of his professional career working with Microsoft technologies dating back to Visual Basic 5.0. Trevor started his career in production support and worked his way up to a lead developer position and eventually found himself leading a development team building and maintaining enterprise solutions. Trevor has spent the last 3 years as the Director of Technology for Big time design Inc. and has recently Co-Founded OptMeIn communications Inc.
Chris is a software developer with experience in aspects of software engineering, including software design, application programming, systems architecture, and QA testing. Starting out his career in Microsoft SQL Server and JavaServer Pages (JSP), the demand for more knowledge and curiosity lead him on the path to gain further knowledge. His current emphasis is in Microsoft .NET technologies including C#, ASP .NET and Microsoft SQL Server.