Clutch spoke with Chris Deprofio, a Senior Engineer of AndPlus, and Tom Golden, Technical Architect, about the top two cloud infrastructure technologies, Amazon Web Services [AWS] and Microsoft Azure.
Please describe your organization.
AndPlus was founded in 2009 to solve a critical need – to make custom software easy. We saw a market where cost overruns, unmet expectations, and poorly written code were far too prevalent, and we wanted to change that. We built a team of professionals that is passionate about making accurate evaluations, solving complex problems, and writing “good code." All to make the process of building custom engineered software easy for our clients. Our focus on connected software is what sets us apart. We create a user experience that is optimized for any platform, whether it's mobile, web, or desktop. AndPlus makes all the pieces fit together.
What is your position?
Chris: I'm a Senior Engineer, focusing on .NET, backend technologies, and hardware integrations. I am the Microsoft guy in the office, and I am a proponent of their technologies.
Tom: I focus primarily on Java backends and Android applications. I am in charge of the more open-source parts of our operations.
What specific cloud infrastructures do you work with?
C: I personally work with Azure and Rackspace, among others.
T: On the other side of the equation, I handle more of the AWS cloud integrations.
What would you say is the biggest business challenge that a business will be able to overcome by utilizing cloud technologies?
C: The biggest thing, for me at least, is scalability. Most of our clients plan on starting small, but need to be able to rapidly build up for large audiences.
T: Regardless of the client's reasons for choosing a platform, whether it's Azure, AWS, or Rackspace, they will most likely have an IT team which works within one on-site location, so they're not ready to scale up to multiple geographically-distributed datacenters on their own. It would not be economical for them, so making a deployment on a cloud platform offers a factor of redundancy and scalability which wouldn't be obtainable had they built a network by themselves.
In terms of implementation, would you recommend a dive-all-in type of approach, or a slower migration to the cloud?
T: That's a great question. There's a trade-off for both approaches. With the dive-in route, it's certainly possible to build a very competent architecture using all of the different AWS pieces, for example. Clients can send email using Amazon Simple Email Service, they can set up their own queuing system with Amazon SQS, and run all of their application code using Elastic Beanstalk. At that point though, there will be a bit of a vendor lock-in. If Amazon changes its pricing structure or the client starts running into limitations, they will still be tied to that particular cloud architecture. On the other hand, there are things that can be done in order to maintain resilience to this phenomenon, by keeping things as generic as possible. It's something that we evaluate on a case-by-case basis: Do we really need to hook into a particular vendor's specialized interface, or is there something more generic that we can do?
C: I've worked with clients who started off by just using Rackspace hosting, without any additional services. As it became apparent that they needed to store more data than was possible on that server, they moved to Rackspace Cloud Files. The flexibility to extend was always there, but had they made the decision in the beginning, they wouldn’t have to pay for that data migration.
T: It all depends on the type of client with whom we're working. We have a range of clients who have their own IT departments, as well as ones with no IT, who are looking for an all-in-one solution where they can pay a bill every month and not have to worry about how it's put together. For those clients, being entirely on one platform with all of their applications, hosting, storage, email, etc., is a win. They simply receive an invoice from the host, which turns into another operational expense.
What can you say about costs, either vendor-specific pricing models, or just the cloud in general, compared to legacy platforms?
T: A client will definitely be paying a premium for any of these legacy platforms, if we just consider the cost of building out a server, paying for electricity, and so on. Vendors are out to make a profit. They're not charities, but the cost of the equipment is not the only consideration. Clients also get access to a trained IT group, as well as having more redundancy. Most organizations will not have the resources to build out such an infrastructure in-house, so for them, it is money well spent.
There's a bit of a capacity argument too. When more lanes are added to a highway, for example, people will start using all the lanes after the project is done. Traffic never goes down. We can see a similar occurrence with cloud solutions. There are organizations who wouldn't have been able to handle most of their current projects, so in the end, even though they're spending more money, they're also getting more out of it by attempting more ambitious projects.
For what reasons did you gravitate towards the specific vendors that you've identified?
C: I personally gravitate towards Azure because of their deep integration with the .NET platform, as well as their excellent support for the platform. Azure's pricing is incredibly competitive, but so is Amazon's, so it is neck-and-neck in that regard.
T: Azure definitely has a substantial advantage of being vertically-integrated in terms of the code being written. But I can't write off Amazon entirely, given that they have a dazzling array of services, including email, message queuing, machine learning, data platforms, and so on. All the platforms draw their best ideas off of each other. We try to evaluate people's internal proficiency on how to build and maintain their platforms, figuring out if the client is more suited for a more turn-key solution like Azure in which we build a bespoke .NET application, or if the client has some existing AWS proficiency and they already have some integrations, then we may want to keep everything in one place.
What have you found to be the best features or tools that put one platform over the top?
C: I don't know enough about Amazon, but for Azure, the selling point for our clients are the SQL databases, geographic redundancy, and simplicity of setting them up and maintaining them. With 2 button clicks, we can host a database across the world.
T: On the Amazon side, the big win is not any one particular product, but the fact that they offer an SDK manager and programming interfaces for their infrastructure, so everything is highly automatable. We have been able to set up automated deployments, cloning environments between Elastic Beanstalk instances, spinning up development branches, and merging those changes. The platform is very much amenable to integrating with the client's development tooling, which is why companies like Netflix have had a lot of success building on top of this. It definitely requires a bit more investment from the team, but if someone is going from a bespoke solution to needing control over everything, having the ability to script the environment and make it a part of their own infrastructure is great.
Are there any services which haven't performed up to your expectations, or is there any tool which you'd like to see implemented within one of these platforms?
T: The great power of AWS is also its downfall when it comes to permissioning and managing who has access to what. The way in which these security policies are written is not always intuitive. Sometimes, we've seen clients throw their hands up in defeat and give users access to everything. It can work for a small organization, but it's not a winning strategy once they grow. Doing this equates to a lot of implicit trust for everyone in the IT department. Ideally, there should be more pre-canned roles in the initial setup.
C: On the Azure side, with their fairly rapid growth, they've developed some poor interface habits. A more user-friendly admin interface for the entire system would be my biggest suggestion. Azure released a new interface 6 months ago, which is a massive improvement over the old one, but from what I've seen using other services, they're still woefully behind in terms of organization.
Have you had interactions with any of their support team or support resources?
C: On the Azure side, despite the interface difficulties, there is a large amount of support documentation for it. With the multiple revisions that Microsoft has done, these are either out of date or redundant. For in-person support, Microsoft has been very helpful. I've had them call me when there was an issue, or to discuss what was going on. Microsoft is definitely on top of its game in terms of making sure that customers are happy. They do whatever it takes in order to make the products using Azure a success.
T: For AWS, the documentation is good and they offer examples on how each of these services can be used. It can even be overwhelming at times, as far as how much information there is. In terms of the actual support team, we haven't had much one-on-one interaction with them. For the most part, we've gotten by with the public information available. There is a good set of support forums out there, as usually someone else has run into the same problem as us. I have no bad experiences to report, and I haven't heard many complaints about the AWS support from any collaborator.
We have 5 additional questions. For each of these, we ask that you rate each platform on a scale of 1 to 5, with 5 being the best score.
How would you rate them for functionality and available features?
Microsoft Azure - 4.5
AWS - 5
How would you rate each platform for ease of use and ease of implementation?
Microsoft Azure - 3.5
AWS - 4.5 - T: There are many things which can seem overwhelming at first glance.
How would you rate the platforms for support, as in the response of their team, and the helpfulness of available resources online?
Microsoft Azure - 5 - C: I appreciate the responsiveness of their team.
AWS - 4.5 - T: I hesitate to label it as perfect, but it's solid, and I have few complaints.
How likely are you to recommend any of these platforms to a friend or colleague?
Microsoft Azure - 5
AWS - 5 - T: I have no reservations about recommending it as a foundational cloud platform for a set of applications.
How would you rate them for overall satisfaction?
Microsoft Azure - 3.5
AWS - 4 - T: There are definitely things on the platform which I haven't yet tried.