Wednesday, November 11, 2015

How Microsoft Azure turns out to be really expensive because of hidden pricing

Few days back, a friend was complaining about rising bills from Microsoft Azure VM. They were simply trying to do load testing on one of their Azure VMs and bandwidth usage was causing inflated bills. I was flummoxed, and doubtful on Microsoft's ways of doing business, I decided to investigate the matter.
We use Digital Ocean as our VM provider, and we are extremely happy with their service. Most important of all, apart from being really cheap, they are very transparent with their pricing. So I compared a similar VM offered by both, Digital Ocean and MS Azure.

Azure

Digital Ocean

Processor speed 2.1 GHz 2 GHz
No. of cores 2 2
RAM 3.5 GB 4 GB
Harddisk 60 GB 60 GB SSD disk
Price $80 (Rs 5185.8) $40 (Rs 2650)

Digital Ocean pricing details here: https://www.digitalocean.com/pricing/
MS Azure pricing details here: https://azure.microsoft.com/en-in/pricing/calculator/?scenario=full

If you notice, Digital Ocean provides a slightly better VM at exactly half the cost to MS. In fact, if you compare Digital Ocean with GoDaddy and AWS, the same conclusion can be obtained. Not a big deal, until you factor in the bandwidth costs of renting an Azure VM.
First of all, Azure calculators and pricing pages don't make it clear how much they charge for the bandwidth. On the other hand, Digital Ocean bandwidth prices are clear on their pricing page. I had to dig in a bit to find out the Bandwidth pricing of MS Azure and found it here:
https://azure.microsoft.com/en-in/pricing/details/data-transfers/
What I found was totally shocking. Analyze this:
MS Azure gives you 5 GB per month of bandwidth free, which is insanely low. What this means is that when you do anything non-trivial on MS Azure servers, you will easily cross the free limits and start paying for bandwidth. But more crazy is to find out how much they charge for bandwidth. They charge Rs 8.3 per GB over the 5 GB free limit (for South-East Asia). So if you end up using 4 TB in a month, you will have to shell out a huge amount of Rs 34,000 for that month.
Compare that to Digital Ocean, you get 4 TB of bandwidth free by default. Extra bandwidth is 2 cents per GB (Rs 1.3/GB). So Digital Ocean wins hands down in terms of cost effectiveness and transparency.
An important point is that if you are on MS Azure, and you happen to either get an app which becomes insanely popular or god forbid, you get hit by a Distributed Denial of Service (DDoS) attack, you will suddenly see a huge bill. The previous scenarios are a bit rare, a more common one is that as your app slowly grows in popularity, you may start to consume more and more bandwidth thus increasing your costs of the VM.
Hence I suggest that you look at Digital Ocean very seriously for your VM needs. Digital Ocean is a startup and has attractive pricing to lure customers. An important question then comes up: will Digital Ocean's price remain so aggressive at a later period as well? Even though nobody can deny that prices can go up in future, I still believe that Digital Ocean will always price their VMs lower to Azure, AWS etc. Their service is also very good.
One important caveat is that Digital Ocean provides only dedicated VMs, they don't provide other services like hosting of websites, databases, storage etc. Really speaking, for certain things like website-hosting, if you were to take a VM from Digital Ocean and host your website on it, it will be cheaper and better. Only problem is that you are on your own in terms of configuring your VM and setting up your website. Essentially, Digital Ocean keeps their pricing simple and aggressive by keeping their product really simple.
Another aspect is that once people get used to a particular VM provider, they rarely switch to a better one. This is true because people perceive switching as a painful task, though in actuality, in my experience, it was never very hard to switch. So, for this reason, you should be careful what VM provider you choose in the beginning itself. Going for a free VM under Microsoft Azure may appear to be a smart move, but as I stated above, you can easily be taken for a ride by being forced to pay heavily for bandwidth consumption.

Saturday, April 25, 2015

General advice to young students about Startups

(This article has been derived from a talk I gave to Final year Computer Science students)

Before I start, I would like to ask you to think about the dream companies that you aspire to work for after graduation. You will probably come up with names of big companies. Have you ever thought how these companies were started? Have you thought about who were these crazy people who started these companies? If these people would have thought - let me join a big company and have a stable life, then these companies wouldn't have existed, right? Don't you think these people are special, not only because they create employment for others, but they also create a lot of value and wealth, not just for themselves but for countless others? The point of this thinking exercise is that instead of going to work for a big company, you can think of starting your own.

I just made startups look a bit glamorous, but let me tell you some important things. Startups are very challenging. Its like taking a roller coaster ride, there are lots of ups and downs. Sometimes, it happens, that while you are on the roller-coaster, you feel like puking. But when you are done with it, you feel like - hey, I want to do that again. Startups are also strangely addictive in the same way.

Another important thing - startups are really really hard. Let me give you a statistic - 90% of all tech companies fail. They close down. If that doesn't make your head spin, let me give you another one. 75% of all Venture Capitalist funded companies fail. If you know about Venture Capitalists, they only invest in companies that are already quite successful, that are already moderate sized. They mostly put in money for the company to scale. Imagine, these guys having all the money in the bank and still 3 out of 4 such companies fail. You might think once you have money, you will be successful. But surprisingly, that's not what always happens.

So you guys must be thinking - how is working in a big company different from working in a startup.

In a startup, there is lot of freedom to do things and a lot of learning happens. Lot of growth happens, because you will be doing multiple things at the same time. If you think in the short term and want financial stability, then go ahead, you can go for a big company. But if you think in the long term, if you think about learning and growth, then startups become a really good alternative.

One major complaint I hear about big companies is that there is lot of politics that happens. You need to suck up to the right people, or show that you are productive in some way, and that's how you get a promotion or a raise. Or perhaps somebody else does that better and gets ahead of you, which sucks, right? In startups, politics doesn't work. You have to just create something that your users want. You have to create a product that users love. You have to work hard, and that's what matters. Any tricks you do, simply stop to matter. I am thrilled that there is something is this world where hard work really pays. Startups in this way, are a great meritocracy.

Another major thing I hear about people working in big companies is that they are terribly bored of their work. Its not surprising to me. It happens that you get stuck in a role in a big company and you don't get interesting stuff to work on. In a startup, I have worked for my company for around 5 1/2 years, and I have to tell you that I have experienced all kinds of emotions like fear, anger, frustration, happiness, joy, thrill but I never experienced boredom.

In fact, if I were to define an entrepreneur in a simple sentence, it is someone who makes things happen. An entrepreneur is someone who keeps on doing things. How can you be bored when you keep on doing something or the other? So an entrepreneur does something, if that clicks, he will try to improve that. If it doesn't work, he will try to do something else. And that's how it works, an entrepreneur keeps on doing something and keeps on learning lessons along the way. As he learns, he becomes more mature and increases his chances of success.

So you might say - ok, I am interested in a startup. What can I do?

There are 2 most important people in a startup. The first is the people who do marketing and sales. In startup lingo - they are called the "hustlers". These people talk to customers, they try to sell the product. They also talk to customers and get their feedback as to how to improve the product. They hustle, and somehow get the product in the hands of the customer, they somehow get the customers to pay for the product. If you think that you are the kind of person who likes to talk to people, then you can become a hustler in a startup.

The other kind of people who are the most important in a startup are the technical people. They are also called "hackers". People like me. These are the people who write code. They make the web-app, they make the mobile app, they take care of the technology. They create the actual product that the customers use. I have to tell you that over the years, I have worked on different products, some failed and some were successful. At the end of it, it is highly satisfying to have worked on some products which people actually use. As computer science students, you should seriously look at this kind of role.

There is also another category of people - who are called the "hipsters". These people are the design people, they work on UX, UI design. They work on the website layout and the graphic design stuff. They are not as important as the other 2 people. But if you are into design, you can take this role.

Many a times, I goto startup events, I meet people and they say - hey, I am a marketing person and I am looking for a tech co-founder. Its never the other way round. So after long, I have realized that there is a huge demand for good technical people in Bangalore. And you may be surprised to hear that. Because you might think that Bangalore is the place where you have all the tech companies. You may think that this is where all the tech stuff is happening. But still, there is need for more technical people who are really good.

Here, I would like to tell you about a close friend of mine who works for a company called Accenture. Now, Accenture is a big company, an MNC, its a great brand to work for and you will think that working for Accenture is great. But the fact is - that he totally hates his job. And he has a technical profile. Can you guess why he hates his job? He is into Automated testing. He writes testing code for some shit code that somebody else has written. That's like the most boring job you can find. That's what happened, all the boring jobs have been exported from US to Bangalore. That's why, when you talk to IT crowd in Bangalore, they will tell you that Tech jobs are boring. Its because they are doing uninteresting and boring stuff like testing or BPO jobs. Here, I would like to give you some advice, that in case a company comes along and hires you for a testing job, try to convince them to give you a development role. If they don't agree and say that they are still going to make you do testing, try to negotiate with them saying that you will agree to do testing for 1-2 years, but after that, you will expect to work in a development role. Because working for years in testing is straight path to boredom.

If you want to become a good technology person, you may ask - what are the current hot technologies? What is that I should know to become good in the Technical domain. Nowadays, people are building web-apps. Like facebook, gmail are webapps. They are not websites, but they are complete applications running in the browser. So learning to write webapps would be great. For that you need to know HTML, CSS and most importantly Javascript. Because Javascript is the language that runs within the browser, so being good at Javascript will be a good investment of your time.

On the server-side for the webapps, different languages are used. We use Java, but you can use Java, PHP, Python, Ruby and others. Picking up any one of them will be good. Another thing, there are a lot of people carrying Android phones in India and lot of companies are investing in mobile app development. So, if you are good at Android development or iPhone development, then that's something really hot nowadays and you will not have any difficulty in finding opportunities.

Another question you might have is - when should I start my company? Is it immediately after college? Or is it a bit later.
There is no correct answer to this question. In the media, you must have heard of people like Mark Zuckerberg who dropped out of Harvard to work on Facebook and made it really big. The Snapchat CEO, Evan Spiegel, is the youngest billionaire at 24. So you might think that starting as soon as you graduate is the right thing to do. But in my opinion, starting a company right after college is really hard, unless you have some good mentors. So, working for a couple of years in another company is quite good. Or better, after you graduate, you should look for a job in a startup. This may jump start your career and may give you valuable experience, so that you can start on your own, at a later time.

Typical successful founders are 30+ years. So when you hear about successful people in their early twenties, they are the outliers, they are very few in numbers. Its later in life, that people become successful.

One important person I want to tell you about is Paul Graham. You probably wouldn't have heard of him, but he is very popular amongst the startup community. If you are even remotely interested in startups and entrepreneurship, you should check out his articles. They are all posted on his website, for free, and its a great resource.

Finally, I would like to conclude, that you guys being students, should have a lot of hunger for learning. There is a lot of exciting stuff that is happening within technology and if you dive into the right things, you will have a successful and satisfying career.