The story of a Melbourne .NET startup
Welcome!
We're the co-founders of Appfail
An online cloud-hosted SAAS
Provides failure monitoring for thousands of web sites
Provides web site administrators with rich analytics and detailed information about failures.
This is the story of Appfail
Over the past 18 months:
- The idea
- The product
- The build
- The launch
- Growing the business
- A reflection
Who is this for?
Software developers, or...
Anyone interested in getting involved in a web/software startup!
Sam Kroonenburg
@samkroon
Software Development Manager at Kiandra IT
Ex-Microsoftie
Developer on Windows Vista, Server 2008 & Windows 7
Disk Defragmenter, Volume Shrink, Windows Backup
FAST Search For Internet Sites 2011
Dr Peter Sbarski: "The Doctor"
@sbarski
Software Developer at Kiandra IT
Monash Uni PhD
Ex-government policy-wonk
All around nice guy
The idea
First, let's define a failure
When a piece of code running the web site, crashes unexpectedly
Something happens that the programmer didn't forsee
Manifests to end user as:
- An error page
- An action not working (eg. 'add to cart' does nothing)
Popular web sites can experience tens of thousands of failures per day
It started with a...
<rant>
Web site failures cost money!
- Rich tools for user traffic & behaviour like Omniture and Google Analytics.
- Extremely basic failure logging tools
- Fed up with parsing ELMAH logs and emails!
- When you web site fails, your users leave!
- You've done all the work to get your users in...
- Why do we let a site fail silently or obscurely, and let our valuable users leave?
Phew...
</rant>
Windows Error Reporting
At Microsoft, we knew when Windows failed.
With Windows Error Reporting:
- See which failures are occurring most frequently.
-
Get a quick idea of the severity by looking at the exception details and stack trace.
Wouldn't it be nice if...
Our apps automatically detected unhandled errors and reported them to a cloud service with rich failure analytics.
A cloud service which
- Helped us find & fix the failures that actually mattered
- Gave us an indication of failure rates over time
- Helped us track fixes, to make sure they truly work
- Could email us only about failures we care about
- Could SMS us with absolutely critical failures
So We Built It!
Product Goals
- Simple to plug in
- Support multiple languages
- Scalable
- Focus on the web. Do one thing & do it well.
Personal Goals
- Learn new things!
- Work in our spare time
- Very low cost to run
Who uses Appfail?
We monitor thousands of web sites across the world:
- United States
- United Kingdom
- Scandinavia
- Continental Europe
- Australia
Corporates, startups & government.
Many large, global brands are monitored by Appfail.
But we can't tell you who!
The product
Demo Time!
The build
Building Appfail
Started in Jan 2012 & worked for 5 months
Building Appfail: Tech
Code like the cool kids!
- C# & MVC3
- Twitter Bootstrap (heavily customized)
- GitHub (Source & Issues)
- AppHarbor (hosting/deployment)
- New Relic
- Memcached
- MongoHQ
- Amazon
Building Appfail: Keep It Low Cost
During development, it cost almost nothing!
- GitHub ($7/mo)
- AppHarbor (free)
- New Relic (free)
- Memcached (free)
- MongoHQ (free)
- Amazon SQS (almost free)
We were lean & had no costs!
Remember, nearly everything is already a solved problem!
Outsource everything that isn't your core product!
Here's all the services we used to build Appfail, initially.
Challenge Assumptions
Test your ideas & think like a user!
Draw the feature on paper & walk through it as a user.
We:
- Built a major feature.
- It was fantastic!
- A large investment of time.
- When we actually went to use it...
- It didn't make any sense!
The Great Rules Engine Debacle!
Grand idea: Appfail automatically rates 'severity' of failures.
Determined with complex, customizable rules.
For example, a set of ANDed rules based on:
- Exception Type
- URL
- HTTP Verb
Built a complex UI for defining rules, and background worker to execute these rules and assign severities.
Hooked this into notifications - eg. SMS me when an 'Extreme' severity failure occurs.
The Great Rules Engine Debacle!
We were struggling to implement a simple UI
We sat down & said: "How would we apply this to web site X?"
The more time we spent trying to actually use the feature, the more we realised it didn't make any sense!
The Great Rules Engine Debacle!
The truth is: All unhandled exceptions are bad!
They *all* stop the user from performing an action, and they all detract the web-site's brand.
URL Scoping:
Any page failing in a user's path to the order page is equally bad! Eg. the product page, the search page, the category browser.
It's hard to define rules that say exactly what is severe and what isn't.
Design matters
Great design:
- Makes people notice your product
- Increases likelyhood that they will share it
- Conveys professionalism
- Early on, makes you appear established & increases trust
So, how did we achieve this?
Designing Appfail: First, we got help!
If you're not good at something, get as much help as possible!
We didn't have a designer, but we did get some great advice.
Tait Brown, an awesome front-end dev, pointed us to a lot of great resources.
Here's what we did
Designing Appfail: Outsource your colours
First, we chose a colour scheme
http://colourlovers.com
Failures are depressing enough!
So we opted for vibrant & fun
To inspire our users to destroy those failures!
Designing Appfail: Copy others!
Then, we found a web site layout that we liked
This would be great for Appfail's dashboard
Google Plus
Designing Appfail: Copy others!
Expanding on this concept, we got inspiration from dribbble.
A community of passionate designers, who share amazing designs
Dribbble: Dashboard
Search for 'dashboard'
Dribbble: Dashboard
A selection of amazing dashboard designs
Dribbble: Find one that's right for you!
Here it is!
Google Plus-esque
but horiztonal tabs, and Microsoft metro-inspired!
Designing Appfail: Crowdsource it!
Then, we put a brief on 99 designs for a logo.
For $300, we had 139 logo submissions!
First, we put up a brief
and included our colour scheme!
Then we got some logos!
... and our favourite!
Eventually we decided on
And then modified this ourselves, to:
Designing Appfail: Put it all together
Glue it all together, and you have a great looking web site.
What happens when you combine...
This dashboard style
With these colours
And this logo?
This dashboard!
And this web-site!
All without a graphic designer!
The launch
Marketing
You can't afford to pay for advertising
Don't focus on pay-per-clicks
How else can you drive traffic?
Marketing: Influence the influencers
Launched beta in June.
Our plan: To engage influential people & companies in the dev community.
Here's what happened.
Scott Hanselman
Retweeted us on day 1 of beta, to 60,000 followers.
Discussed Appfail in his email newsletter.
This lead to 2,000 visitors on launch day!
50 sign ups in the first few days.
Jon Galloway
Tweeted us, to 10,000 followers.
We wanted more!
We wanted coverage with more staying power...
Something that would stay around longer than 1-2 hours.
We set our sights on the front page of ASP.NET
ASP.NET
Our blog post 'Do you know when your web site fails?' was featured on the front page of http://asp.net for a week.
This lead to 8000 blog post views and hundreds of sign ups.
AppHarbor
In a similar vein, we contacted AppHarbor
They blogged about Appfail a week after we launched beta.
Partner with established organizations
Give them an incentive to promote and sell your product!
AppHarbor Add-On
We integrated Appfail as an add-on for the AppHarbor cloud platform.
This lead to a large number of sign-ups.
You can plug Appfail into any AppHarbor web site in just a couple of minutes.
Traffic is great...
But it's only half the battle
It's important to present a simple message to users.
Why your service is worth paying for!
The same message should work for an engineer, or their boss!
We did this with a product video.
How To Produce A Professional Product Video in 1 Day
Ingredients: 1 day & $150.
How To Produce A Professional Product Video in 1 Day
1
Write a script
How To Produce A Professional Product Video in 1 Day
2
Record your own voice, using your smartphone
How To Produce A Professional Product Video in 1 Day
3
Create the video with PowToon, synced to your voice.
4-6 hours
How To Produce A Professional Product Video in 1 Day
4
Crowd source a professional voice over, for $100.
Organic Search Results
As a startup, you really don't want to pay-per-click for ads.
For a tech-savvy audience, pay-per-click is ineffective.
Pete, with a background in journalism, wanted to run a press release.
Sam was skeptical -- "who would read this blatant advertising?"
Pete won!
We paid to have our press release sent to hundreds of outlets.
We didn't get any top-tier media coverage
But our press release was copied as an "article" hundreds of times
Our organic search rankings went through the roof!
Appfail is in the top Google results for a large array of important search terms.
Dogfood!
How can you improve the platform if you don't use it constantly?
Be your most avid user and your biggest critic!
We used Appfail ON Appfail!
One major issue during launch was a browser & device specific problem: on twitter in iOS only.
Took some time to find & diagnose. Appfail could have helped us diagnose this sooner!
New feature
This lead to a new feature, in days!
Graphical platform & browser info.
Blogged about how we used our experience to improve the platform.
Be your most avid user
We hit some teething issues during first few days of beta.
But because we use Appfail on Appfail, we found & fixed them quickly.
Every failure is an opportunity!
We emailed affected users an apology, along with a walkthrough of how we used Appfail to find & fix the issues!
Devops Devops Devops
Do you have "at-a-glance" visibility of your services status?
If not, how do you know if it's working or not?
We didn't have any devops at launch
We figured -- let's get it out there and see if anyone likes it first.
The problem?
To start with, things will go wrong!
Nobody likes a service that doesn't work properly.
At one point, our service was malfunctioning for 3 days, and we didn't know!
dashing.net
We needed a dashboard...
So Pete built one - open source!
Works on any screen/device
It can display anything
At-a-glance operations dashboard
High level reports that tell us what the service is doing.
We watch this every day, and know if things go awry!
Growing the business
Lesson learned
Sure Up The Foundations
Initially, you've focused on a minimum viable product
You've made pragmatic decisions to get it "out the door"
Sooner or later, you have to grow up
Hit performance pain due to earlier architectural decisions
Needed a solid foundation for growth
Rock Solid Platform
Our core foundation was a composition of disparate services
AppHarbor + AWS + MongoHQ
Being in 3 places, this was hard to manage!
Each provided an abstraction to make things 'simpler'
But every abstraction removes your ability to tweak/control things.
So, we decided to move to Windows Azure
Unified strategy - on a rock solid platform
Designing For Growth
We needed to reduce the complexity!
Simplify everything to make it easier to expand service AND team
Our Vision
- A single unified platform
- One portal to manage all Appfail components
- Consistent method for deployment
- Consistent model for diagnostics
- We didn't want to manage infrastructure!
We also decided to rearchitect for high availability
Designing For Growth
Now becoming a well established service.
No longer acceptable to go offline for hours at a time.
Needed architecture that supported system upgrades without taking the system down.
Azure made this possible
- Windows Azure service bus and asynchronous messaging
- VIP Swap
- IAAS & PAAS meant we had the best of both worlds
Remove Strong Dependencies
BizSpark
We became a Bizspark sponsored startup
Microsoft supported us with a reduced hosting bill
Allowed us to provide a blazingly fast service to customers
Challenge Assumptions
Don't be afraid to change everything
if the evidence suggests that you should
Put your ego aside, and challenge your assumptions
"Free forever"
During beta, our service was free
We promised "free forever" -- to have a basic, free plan alongside our paid plans
We came out of beta, and launched our paid plans
...and barely anyone signed up.
We tried it all...
We tried restricting the free plan
We tried making other plans more prominent
We tried hiding the free plan behing a small link
But people continued to choose it...
Nothing worked... but we needed to pay the bills!
Could we remove the free plan?
Our users will revolt!
Our users will take to Twitter in their masses!
... right?
So we changed everything
And the silence was deafening!
No user backlash.
No angry social media commentary.
Just paid sign-ups.
Less of them, but paid ones.
Now Appfail had a future
Get over yourself!
As a startup - you're not that important!
You don't have that many users
and they aren't watching your every move
It's OK to change things -- just don't change them all the time.
Don't be afraid to give up equity
... for the right partner!
The wisdom out there is to find a VC for funding
We knew what this would mean
It would mean giving up a job we loved -- and financial security for our families.
So we never considered VC funding at all...
Enter: Kiandra IT
We entered into discussions with our employer: Kiandra IT
We partnered!
...and a new world of opportunities opened for Appfail.
Amazing!
We could now focus on Appfail during work hours at Kiandra IT
AND we now had an awesome team available to us
For example, Lars Klint came on board and helped us build our Windows 8 & Windows Phone app
The truth is: We were very lucky
Kiandra IT is a fantastic company
Run by directors who share our passion for making awesome software.
Don't just aim to get VC funding -- consider alternatives!
Reflecting on Appfail
Advice before departing on the startup journey
Don't aim to be a millionaire
Aim to build a product that you love. That you believe in.
Of course, everyone wants to make millions
But it really should be a secondary concern
If you build a product that you love...
- You'll build a better product.
- You'll go the extra mile when things get tough.
- You'll make a product that your users will love.
Be committed
What's the difference between...
Your friend who says:
"I came up with the idea for Facebook WAY before Facebook"
...and this guy?
Well, he actually created Facebook.
Building the first 80% of your product is the best part
The last 20% is laborious!
It feels like your day job:
- Implementing standard infrastructure
- Testing
- Browser compatibility
- etc...
But this is what separates those who have it, from those who don't
Don't underestimate the impact this will have on your life.
Running a startup is hard work.
Everyone thinks at the start:
It's OK -- if it takes off, I'll get to work on it full-time.
If it doesn't -- I'll shut it down & get on with my life.
The problem?
Wild overnight success is rare
In most cases, you have to work at it over time.
Initially you have to work, for no/little money to:
- Build a customer base
- Fix bugs
- Communicate with customers
- Add new features
You work 2 jobs, one at work, and one after hours.
This will be hard at times.
Buy your wife flowers
It's tough on your significant other
... and if you're anything like me, you can become myopic.
Don't forget about the rest of your life, and what really matters.
Oh, and... unless you're mad like me
don't have twins 2 months after launch!
But most of all...
Enjoy it!
Because unless you're superman
or Elon Musk
you've only got a couple of these in you!
Thanks for listening!
Thanks to Microsoft and Kiandra IT for their help
in organizing and publicising tonight's talk.
We'll be hanging around afterwards if you want to have a chat!