just because you can do anything doesn’t mean you should do everything
- Andy Gadiel, Twitter
When you are selling to larger companies (and sometimes smaller ones too), a potential argument that might be raised either internally or with your sales pitch, is why they should buy your product instead of building it internally.
This post will look into the arguments from both sides and how you can address them. It has been written jointly by myself using the example of our server monitoring product, Server Density, and Oren Michels, co-founder & CEO of Mashery, an API infrastructure provider.
Before you even consider making the argument for buying your product, you need to ask yourself a few questions to tailor the pitch to your customer.
Q1: What does it look like from their standpoint?
You need to understand what your (potential) customer is going to get from your service. Are you selling them “great server monitoring” or “free revenue through an awesome addition to their existing product offering”? Are they interested in your product because it is something they will be using internally to manage their own infrastructure needs or something that will be given to their customers?
Once you know what they are getting from the arrangement, you will be able to properly understand what value you are adding.
Q2: Cater your licensing model to their situation
If you are selling for their own internal use then the licensing model will be different compared to if you are selling for them to resell your product, or even provide it integrated into their product offering.
The ROI question they are going to be asking is “when does building it pay off vs. buying it monthly”.
Some key arguments
We do this all day, every day. We are the experts.
The product you are selling is part of your core business. You will have spent time, effort and money developing it over a long period of time and have staff dedicated to continually working on and improving it. Your potential customer will be asking how easy it is for them implement, how long it would take to match your features and what resources would be needed to keep it maintained.
If it is something they need right now then there’s a clear case for buying because of the resources required to implement something in-house.
“In the same way you let the experts handle your e-mail servers (e.g. Microsoft Exchange) and phone systems (e.g. BT), we can handle your server monitoring.”
Everything is managed and supported by us
Providing a hosted service means the infrastructure is already in place to handle demand and future growth. Fixes to problems can be quickly deployed and the system is supported. The customer does not need to dedicate someone to ensuring everything remains operational as that is handled by you. This is one of the selling points of managed support services.
“Mashery will dynamically scale to support load spikes and long term growth so you don’t need to fire-fight sudden demand or pay for under-utilised capacity.”
You should be working on your core business
Choosing to develop something already available now has opportunity cost in terms of what else could be worked on instead. It takes time to get a team up to speed on something new and the time-to-market will be much greater than if an existing solution is brought in right now.
Costs
What is the true cost of building in-house? Internal resources are not free.
Taken from the Mashery website:

Conclusion
Selling to larger companies is always difficult because they have a lot of decisions to make before committing to one product. Whilst the above can serve as a guide, the important thing is to prepare yourself for each situation so you can have the right things to say at your fingertips when you need them.

We have just released version 1.4.0 of sd-agent for our server monitoring product, Server Density. This includes support for MySQL monitoring, available immediately to all paid and trial users.
This update means that the agent can query your MySQL instance to return the following stats:
Connections(per second) – the number of connection attempts (successful or not) to the MySQL server (MySQL docs).Created_tmp_disk_tables– the number of temporary tables on disk created automatically by the server while executing statements (MySQL docs).Max_used_connections– the maximum number of connections that have been in use simultaneously since the server started (MySQL docs).Open_files– the number of tables that are open (MySQL docs).Slow_queries– the number of queries that have taken more than long_query_time seconds (MySQL docs).Table_locks_waited– the number of times that a request for a table lock could not be granted immediately and a wait was needed (MySQL docs).Threads_connected– the number of currently open connections (MySQL docs).Seconds_Behind_Master– an indication of how ‘late’ the slave is (MySQL docs).
Agent update
Run the following command from the sd-agent directory to update your agent:
python agent.py update
Then follow the setup instructions in the documentation to configure the monitoring, which is done by connecting to your MySQL instance.
Please let us know if you would like any additional stats measured as part of the MySQL monitoring and if you have any questions or problems with this update.
As of today, 2nd November 2009, Boxed Ice Ltd is registered for UK sales tax, VAT. All future invoices will include VAT (currently 15%) where the customer is:
a) Based in the UK
b) Based in the EEC and is not a business
c) Uses Server Density on servers based in the UK or EEC
All our fees exclude VAT so where the above apply, VAT will be added.
If you are a business in the EEC (and not in the UK) then you can supply your company and VAT registration details through the “Account” tab in Server Density and we will remove VAT from your invoices. If you use Server Density on servers in the UK or EEC but are not based there, you can let us know through the “Account” tab and we will add VAT to your invoices.
Let us know if you have any questions.

We’re pleased to announce that the UK web hosting company, UK2 Group, is now providing Server Density as a value added service to all of their VPS.NET cloud hosting customers.
VPS.NET allows you to scale your hosting requirements up or down as you need them by providing virtualised server instances on demand.
We are also able to offer a 25% discount off your first month as a VPS.NET customer by using the discount code SD25M1 when signing up.
You can find out more on the VPS.NET blog and discuss this in their customer forums here.
Boxed Ice is a software development firm based in the UK. We have the best people working on interesting projects solving complex problems within the best working environment. We work on our own projects building tools that we need ourselves. Find out more about the company and how we work here.
We are looking for a developer with PHP and Python experience to work on our hosted server monitoring product, Server Density.
This will be a remote working position with regular communication via GTalk and Skype, and whilst our preference is for people based in the UK, specifically in Birmingham, we will consider applicants from other parts of the UK and abroad.
Skills we are looking for
- At least 6 months of PHP and Python experience.
- Knowledge of and experience with statistical analysis.
- A number of successful past projects (that are still online).
- Contributions to open source projects and/or production code samples we can examine.
- Experience with at least Linux server administration and ideally OS X and Windows.
- Excellent or native English skills.
If you are interested, find out more about the position and apply through our careers page.

Now available on the iTunes App Store: the Server Density server monitoring iPhone application with graphs! Simply rotate your device when viewing the stats to display the graphs for that server.
The iPhone app is free to download but only available to trial or paid users of Server Density.
If you have any questions or feedback, let us know!
Update 23:15 GMT The maintenance has now been completed successfully.
On Sunday 25th October 2009 we will be carrying out emergency maintenance on one of our web servers. We have been notified by our hosting provider, Rackspace, that the installed RAM has developed a fault and needs to be replaced. During this time all our service will be unavailable for up to 30 minutes. This work will be carried out at 23:00 GMT. Find out what time that is in your timezone.
Let us know if you have any questions.
We have just released version 1.3.0 of sd-agent for our server monitoring product, Server Density. This includes a number of minor bug fixes and status monitoring support for the Nginx web server.
This new metric is available immediately to paid and trial accounts and allows you to monitor the number of requests per second and current connections. Once you have downloaded the agent update (see below), you can follow the instructions in the documentation to set up the monitoring.
Agent update
Run the following command from the sd-agent directory to update your agent:
python agent.py update
You will then need to add an additional line to your config.cfg file to enable the monitoring:
nginx_status_url: http://www.example.com/nginx_status
See the documentation for what to set this to.
Anonymous statistics
For some time the agent has included code to post back a number of statistics about your server each time you launch the agent. This data is currently being discarded and not stored but we intend to start recording the data that is posted to help us with our development and generate summary reports e.g. most common Python versions.
The data that is reported back is agent version, machine type, processor type, OS, OS version and Python version. Data will be anonymised before being stored.
Whilst we would appreciate it if you keep this enabled, this version of the agent includes a new config option to allow you to disable this reporting. Enabled by default, just add the following line to your config to disable:
report_anon_stats: no
Again, no data is currently stored and we will post a blog entry when we intend to start keeping the data sent to us.
If you have any questions or problems, please get in touch.
Perhaps the biggest advantage of providing software as a service is you can push out changes immediately – there’s no upgrade process and users get access to the latest features right away. Developing your product, you want to work on these cool new features so you can sell them to your users, the question is what do you work on next and how do you know if what you just released is being used?
The idea
Your first job is to work out what your goal is when adding new features. Are you trying to use them as selling points because users are asking for them or are you trying to get people to stay on your site longer? Are you trying to help users use existing features or are you making subtle tweaks to improve the overall experience?
Once you have decided, you can work out what you need to measure to determine if the goal has been reached. And measuring is the key – there’s no point working on improving something that is never used. That usage data can then help you figure out what to do next.
This is all part of the “Startup Metrics for Pirates” presentation given by Dave McClure:
The idea, put into practice
Both this and last weekend, we pushed out two minor feature releases to our server monitoring product, Server Density, which I’m going to use as examples of how we use metrics.
Auto refreshing dashboard
The whole point of server monitoring is to see what is going on with your server and we store real time data for each of the key metrics. A summary for each server is displayed on a dashboard within Server Density and as of last weekend, this now refreshes automatically every 60 seconds. The idea is that this can be kept open on a second monitor or TV to give you an “at-a-glance” view of your servers. The refresh is implemented using AJAX and JQuery and within that we record every time a refresh is triggered.
Why? We can keep people using the Server Density UI as part of their daily toolset and have it always at the back of their mind. Other people will also see the product being used.
Help popups
Some form fields in Server Density can be improved by providing further advice to the user about what to enter in that field. Yesterday we pushed out an update to include an “on hover” popup to provide some guidance for that field. We record every time a popup is triggered.
Why? To help people use the form and track which fields get the most help “requests” to look at ways of making it easier or more obvious.
Measuring
There are probably many products that can be used to do the tracking (indeed, I believe it is possible with Google Analytics) but we are using MixPanel.
Using some very simple JavaScript calls, we are able to track things within our application and include as much meta information as we want. We include their code to measure page views (so we can see which areas of Server Density are being used most) but also with specific actions.
All that is required after including their JS is a call to their track function with whatever meta information we want:
mpmetrics.track("page-view", {"page" : "dashboard-ajax-refresh"});
This can just be part of the page JS (as it is for the page view tracking) or within your own JS functions (as it is for the dashboard refresh and help popup).
The results
Following the introduction of the auto refresh dashboard, we saw the daily actions in our UI increase from around 260 to almost 12,000.
which corresponded with an increase in the average number of actions per user from around 10 per day to almost 300:
And for the help popup we can get a breakdown to see which fields users are requesting more help with:
Conclusions
Although it’s too early to draw any conclusions from the help popup metrics, we can clearly see that the addition of the refreshing dashboard has increased the amount of interaction each user has with our UI. This means they are making more use of the service.
Without the use of these metrics we would have no idea whether the effort we put into the development was actually having effect.
Part 2 – Funnel & Conversions
MixPanel can also be used to track your signup funnel all the way to conversion. Part 2 will look at how we implemented those metrics, what we are looking at, what we did as a result and how that affected our conversion rate. We are halfway through this process so expect that post near the end of next month.
Any sysadmin who has been woken up in the middle of the night to fix some problem will know that whilst this is an inconvenience itself, it is even more irritating if the problem is actually a false alarm.
Over the last weekend, you may have received a number of false positive alerts from Server Density. These will likely have been “no data received” alerts that resolved themselves after 10-15 minutes. This was caused by an issue with our database, MongoDB, that caused the open file limit to be reached, combined with the fact that we were in the process of migrating our live database to the new hardware.
A temporary fix was implemented on the Sunday which should have resolved the issue for all users, and with the migration to our new super awesome database servers completed earlier today, a long term solution has now been deployed. We are very sorry for the inconvenience this caused
Aside from the technical issues, false positives can still occur but can be easily prevented if you configure your alerts in a specific way. One of the best options for this is the alert delay. This means that when an alert is triggered, you can tell it to wait a certain time period before notifying you. This is useful if you have a short load spike caused by a backup program that you know will last for just 30 seconds. You can still configure your alerts at your regular threshold but set a 2 minute delay so that only if the load remains above the trigger value for 2 minutes or more will you actually be notified.
Alerting configurability is a very important feature and one that we’re told is a key selling point of Server Density. It is also an area we’re working on improved for in future releases. But spending a few minutes to set the right options will ensure you only get notified when you need to so you can stay in bed that little bit longer!
As always, let us know if you have any questions.







