Upload
rightscale
View
592
Download
1
Tags:
Embed Size (px)
Citation preview
Software Engineering for Startups
Ali Khajeh-Hosseini
@AliKhajeh Nov 2013, University of St Andrews
®
®
I’m here to talk about
RightScale Cloud Analytics… and how we develop it
Jan 2009: Started PhD in St Andrews
Dec ‘11: Hassan quit his job and joined
May ‘10: PlanForCloud v.1 ready
May ‘12: Mountain View for YC interview
Feb ‘12: Launched PlanForCloud (v.2)
5min demo video filmed in my flat with poor lighting and a £10 poster
Jul ‘12: Acquired by RightScale
Nov ‘13: Launched Cloud Analytics (v.3)
What the heck is… a cloud?
Server
Rack
Container
Electricity, Water, Internet
2500 Servers
Taken from one of Dave Cliff ’s talk on Cloud Computing
a cloud
12 Staff 30 Megawatts = Perth (Scotland)! 140 Containers 38,500 m2 = 4 ftbl pitches
360,000 Servers 500,000,000 Dollars
h#p://www.microso/.com/Presspass/emea/presscentre/pressreleases/February2012/23-‐02DublinDataCentre.mspx
Infra
stru
cture-
as-a
-Servi
ce
Platfo
rm-a
s-a-Se
rvice
Softw
are-a
s-a-Se
rvice
Cloud Computing
Cloud Analytics helps users make decisions
Cloud Management helps users take actions
Cloud spending is growing rapidly
Cloud pricing is complicated… we scrape over 12,000 prices.
Need to visualize, forecast and optimize cloud spend
The challenge
h#p://www.gartner.com/newsroom/id/2352816
Who buys our products?
Big-ass enterprises… like Sony, Samsung, EA Games,
Pearson Publishing, PBS, Zynga…
1. Connect to a cloud
2. We regularly collect data
3. Slice and dice the data
4. See historic trends
5. Forecast future costs based on patterns
RightScale Engineering
In God we trust; all others must bring data. W. Edwards Deming
Engineering Roles Product Manager: what should we build?
Engineering Manager: how should we build it?
Architects: design it
Interface designer: improve the user experience
Operations: deploy and monitor it
Escalations: something just broke, who can fix it?
Support/Docs: help customers use it
Engineers: work with everyone to build and test it
Dev Process: Scrum
2 week sprints 1 day planning Go/No-Go Release Retro
2 weeks
Design
Just a wiki page + Comments/emails
It’s all informal
No Word documents No UML diagrams
Planning
Story: As a user I want to export report as PDF So that I can share it with others
• Refactor simulation engine to… • Switch from Google charts to Highcharts • Generate PDF in background queue • … • Write tests • Code review
Engineers breakdown stories into tasks Granularity: less than a day to complete
Estimation Play planning poker
Sprint calculations
================= Sprint Summary ================= Sprint Begins: 10/2/2012 Sprint Ends: 10/19/2012 Sprint DuraMon: 14 days Team: John, Joe, Jeff, Jack Development: VacaMon: 0 days Total Capacity: 300 hours -‐-‐ grooming/management: 30 -‐-‐ release issues: 10 -‐-‐ priority bugs: 30 -‐-‐ tech debt: 30 -‐-‐ backlog: -‐-‐-‐-‐ must have: 150 -‐-‐-‐-‐ nice to have: 50
Start sprinting…
Daily standup Answer:
1. What did you do yesterday? 2. What are going to do today? 3. Is anything blocking you?
Every day 9:30am sharp
Sprint metrics
We like to release every week
But you need protection: Code reviews Good tests Exception handling Automate as much as you can
Code reviews
Good tests
Positive tests
Negative tests
Fast tests
Good test coverage
Continuous integration
Name and shame
Exception handling
1. On-call ops eng. 2. Eng. manager 3. CTO 4. CEO
Issue tracking
Automate, Automate, Automate
Performance monitoring
How is it being used? How can you improve it?
Let’s recap: You built it and shipped it.
User metrics - Google analytics - Custom metrics from DB
User testing - Record user sessions - Ask for lots of feedback
User experience - Simplify user flow - Wireframes helps communicate ideas - Prototype and iterate
Working in startups
Startups����������� ������������������ are����������� ������������������ fun����������� ������������������
Startups����������� ������������������ are����������� ������������������ based����������� ������������������ in����������� ������������������ awesome����������� ������������������ places����������� ������������������
- Design a new reporting section of the product; designers own the frontend code and we don’t use any frameworks like Bootstrap.
- Update our AngularJS-based frontend to let users design their own custom dashboards.
- Optimize our DataStore API to respond to within 5 seconds (Ruby, NewSQL backend).
- Decipher AWS’ billing algorithms to make our cost estimation engine more accurate.
- Develop a testing framework to verify data that’s gathered from major public and private clouds worldwide including AWS, Google Compute Engine, Microsoft Azure, Rackspace, and OpenStack.
- Develop tools to start/stop our staging environment on AWS within a few minutes, find a replacement for Jenkins, and change our weekly releases to daily releases.
Startups����������� ������������������ provide����������� ������������������ challenges����������� ������������������
Startups����������� ������������������ love����������� ������������������ good����������� ������������������ food����������� ������������������ (lunch����������� ������������������ &����������� ������������������ learn)����������� ������������������
Do you have an Internship/job for me? PlanForCloud.com/jobs