Please note: this blog has been migrated to a new location at https://jakesgordon.com. All new writing will be published over there, existing content has been left here for reference, but will no longer be updated (as of Nov 2023)

SaaS Shopping List

Thu, Jan 22, 2015

In my last post I delved into a big list of things you probably have to think about if you’re starting a SaaS company.

I wanted to also take a moment to recognize the growing number of 3rd party SaaS vendors we depend on in order to build out our own platform, and the increasing amount of time we must spend on evaluating and integrating all of these pieces into a (hopefully) cohesive whole.

Generally speaking, for a lean startup we should be spending our resources on the core product features that are central to solving our particular business problem. I should not be spending time on peripheral concerns that would be best outsourced to a company that has already solved those particular issues.

I want to Build only if it’s core to the problem at hand, and Buy if it is secondary scaffolding that I just happen to need in order to support my core feature set.

What this means is that a large part of a tech co-founders role is making lists like this one…

Application Hosting

Pretty early on we need to decide on our application hosting strategy, do we want to run bare metal in a rack, virtualize, or go full-on cloud hosted. We also need to be aware that that the appropriate hosting platform may well change over the lifetime of our startup as we scale and grow the business. This choice can also impact our choice of DevOps tools for provisioning and orchestrating production services.

Database Hosting

The data store is a critical part of (most) web applications. You may need a traditional relational database, a key/value store, a document database, a graph database, time-series data, geospatial data, or other NoSQL data stores. You almost certainly need high availability and robust data replication and backup/restore strategies. Managing and operating your own data store is the traditional approach, but these days we may want to outsource to a database-as-a-service platform such as Heroku or orchestrate.io

Domain Registrar and Certificates

Naming things is hard. I can’t help you with that. But once you have settled on a fantastic, short, easy to spell, reminiscent, and available name, you will need to register the appropriate domain names and most likely purchase SSL certificates.

DNS

To get started you will most likely let your hosting provider or your domain registrar provide DNS services for your website. As you build out your platform and separate out the domains for the corporate site, the web application(s), sub-domains for support, email, etc you might need more fine grained control over DNS entries. You might also want to take advantage of advanced features such as latency based routing or geographical dns provided by services like Amazons Route53.

Corporate Email

Another service that needs setting up early on in the lifetime of your business is corporate email. You will need to set up accounts for the co-founders, and mailing lists or aliases for general purpose accounts such as support@ feedback@, info@, admin@, ops@, etc. You might let your hosting provider or domain registrar provide this service but it is usually wise to find a dedicated mail service that better fits your needs.

Source Control

As the hacker, I know you’re itching to write that first green-field line of code. So get a source control system in place quickly. You can easily host a DVCS service on an internal server, but these days it’s easier to use one of the obvious 3rd party services.

Continuous Integration

Once you have source control setup, you should write a ‘hello world’ application, along with an appropriate test, and then configure some form of continuous integration system. The more automated the better. Your tests should run on every commit and notifications should fire when they fail. The more adventurous might also want to setup a continuous delivery platform and a DVCS branching strategy that automatically deploys to production when merging into the ‘master’ or ‘release’ branch.

CDN

There are any number of boilerplate steps you should take to avoid obvious performance issues (here, here, here, here, and here), and one big one is to arrange for your static assets (images, scripts, stylesheets, video, audio, etc) to be hosted on a CDN (Content Delivery Network) and given far future expires headers to ensure they get cached close to the end-users. You might also want to explore the optimized traffic management services available by high-end CDN’s like Akamai.

Project Management and/or Bug Tracking

You may want to follow a formal development process, or you might want to develop your own agile process. Either way you should have tools that allow you to track your upcoming tasks, your backlog of requests, your bugs and issues, as well as any content artifacts needed to perform those tasks (notes, wireframes, mockups, etc). There are many project management and bug tracking tools available to suit your requirements from very light-weight collaboration tools, to full on enterprise portfolio-project scheduling and management.

Collaboration Tools

In addition to tracking your project management tasks you need to be able to communicate effectively day-to-day with your team, advisors, customers, vendors, and others. You might choose to build a co-located team in a single office, or you might have team members distributed across the globe - in both cases you should setup tools to allow for effective asynchronous communication to avoid random day-to-day interruptions.

Log File Management

Early in the product lifecycle (pre-customers) you can get away with hosting on a single server and grep-ing through logfiles to identify problems and answer questions, but when you have real customers you will need a bigger infrastructure for redundancy and reliability purposes. Once you have multiple servers in play managing logfiles becomes painful and you will want to setup a central logging service, either internally, or provided by a 3rd party service.

Monitoring and Measuring

Getting insight into how your production platform is performing is an absolutely critical part of any SaaS company. You need to be able to go to sleep at night knowing that the site is up and performing smoothly, and you need to know about any problems as soon as possible. Eventually you may need to provide SLA’s to customers. This involves monitoring everything that is relevant. Once you have robust monitoring in place you can start measuring the platform components and improving performance in the places that really matter - don’t guess!

Metrics and Analytics

In addition to monitoring and measuring your platform performance, you also need to measure your business performance in terms of sign-ups, conversion rates, retention rates, monthly recurring revenue, customer acquisition costs, customer lifetime value, and customer satisfaction. You need to know which features of your product and brand are working and which are not, only then can you make educated decisions for your company. Again, measure, don’t guess!

Payments and Billing

Eventually (hopefully sooner rather than later) you need to charge your customers. This might be a transactional cost when they purchase your app, or it might be a recurring subscription for your service. The easiest way to be PCI compliant is to avoid handling the payment directly by outsourcing this complicated process to a 3rd party

Customer Relations

Once you start getting your first customers you are going to want to manage those relationships as if they were the most important people in your world. You need to learn all about them, convert them, onboard them, support them, and retain them. You need to provide them value. Find tools that you can use to manage and improve your relationship with your customers.

Employee Payroll and Benefits

Once you have employees you need to pay them and provide some form of benefits. Equity alone is unlikely to attract the best people you need for your success. You want your team laser-focused on executing your plan, not on the possibility of losing their home and life savings.

… and more

You might also look into using 3rd party services for additional features such as:

Exception handling and reporting:

User management

Outbound email delivery

Marketing campaigns and A/B content testing

Testing

Dashboards

Conclusion

Phew! That’s a long shopping list, and it’s probably just scratching the surface of all the available 3rd party services that you might want to use for some component of your business. I’m probably missing some big categories, and I know for sure that there are many more alternative services within each category.

You might not need all of those categories, but for each one you will need to evaluate and choose one or more services, and your choice might change as your company grows. You will need to manage user accounts across those services, paying for each of them individually, most likely on different billing cycles, integrating with multiple API’s, logging into each individual site to see each individual dashboard…

hmmm, is there a product idea in there somewhere?