5. Quick review of prior material
Databases
IDE Comparison
Database model
Notepad++
Entity relationship model
NetBeans
SQL
Visual Studio
Database Engines
Backend Programming
RDBMS
Truly requires clarification of ideas
MYSQL
Complexity
SQL Server
Programming Languages
APIs
Programming example (calculator)
Application Programing Interface
Backend integration with frontend
Precautions
ASP.NET
SDK = Software Development Kit
Error validation
Technology Stacks
Principles of Programming
Many different options in different layers
Some code is better than others
LAMP = Linux Apache Mysql PHP
Mistakes have a high cost
WINS = Windows IIS .NET SQL Server
6.
7. What is Hosting?
Where you store the code
Makes the website publicly-accessible
What you’re paying for:
Physical components
Disk space (space in GB)
Memory (RAM)
Processing power (CPU)
Datacenter costs
Electricity
Cooling
Network Bandwidth
Administration (technical skill)
8. What is a server?
Physical machine
Usually horizontal, 1-2 inches tall
Designed and built for reliability, not features
Lots of redundant components
9. What is a data center?
A.k.a. Server farm
Lots of computers
Room gets hot…
Lots of fans, very
loud
High security
10. 3 most common hosting options
3 most common hosting options
Dedicated Hosting
Shared Hosting
Virtual Private Server (VPS)
Other hosting options
Colocation
Cloud hosting
11. Dedicated Hosting
Means you rent a physical machine provided by the
host
Hardware options provided by the host, you pick one
Tends to be around $200-1000/month per machine,
depending on quality
Great option for almost-total control
When is it right?
If you need lots of power and control.
However, costs can be high.
12. Shared Hosting
You “share” a dedicated host with other customers (you
don’t know who they are)
Share CPU-power
Share network connection
Sometimes, share IP address
You have limited access to the computer, so less flexibility
When is it right?
Generally a poor choice for startups
Better choice for small business websites
13. Virtual Private Server (VPS)
Virtual Private Server = “virtual machine”
Like having a dedicated server, except that there isn’t a
physical machine you own.
Your machine is a “virtual” machine, that lives inside
of a physical machine.
• When is it right?
• Low cost way of having lots
of control.
• Great option to start
14.
15. Colocation
Means you buy your own physical machine
Much more expensive than consumer machines… generally costs
at least $4,000, easily $10,000
In addition to monthly fees to data center
You choose the hardware
Maximum flexibility regarding the hardware used (e.g. fancy servers and
storage configurations)
You manage everything.
Requires more effort and management compared to cloud and managed
When is it right?
Best for maturing startups that can afford costly servers and hire
staff to manage them
16. Cloud Hosting
“Pay as you go”, pay-for-use
Amazon EC2, S3
Good for starting out when server needs are unknown and
it’s easy to scale up and down quickly
Best for environments that have differing scale needs on a
regular basis
(e.g. imagine you normally need 20 servers but for a few
hours each night you need 100 servers to crunch data)
When is it right?
Great low-cost way to start, but limitations can be
frustrating
Excellent choice if sudden scale is needed
17. Comparison
Managed (dedicated, Colocation Cloud
shared, VPS) (aka colo)
Cost at first Average Very high Very low
Cost at scale Average-high Low Very high
Flexibility Medium Very flexible Not flexible
Management Depends on host You manage Harder to manage
18. Tools for hosting
Who is hosting a website?
http://www.whoishostingthis.com
Note that high-traffic websites run their own data
centers
20. Try Buying Hosting
Cheaper and lower-quality options
Your domain registrant
Bluehost, dreamhost, etc.
Better and more expensive options
Rackspace
Softlayer
21.
22. Deployment
Deployment = Release = Shipping
The process of getting a website from your local
machine to the host
Once it is on the host, it’s viewable by the public
23. FTP
File Transfer Protocol
Very old way of transferring files
We’ll use Filezilla
24. Practice Deploying
FTP Connect to 208.79.77.29
Username class
Password: same password as classroom computers
Create a folder with your name (lowercase, one word)
Upload your HTML files
Test it at http://class.testing.startupv8.com/yourname
25. Multiple Environments
Risks of single-environment
Accidental deployment
Very hard to recover in production
High cost, high pressure, lots of “site is down” time
Dev > QA > Staging > Production
The “build” process
Automated tests
Automatic documentation and/or release notes
Automatically moving from one stage to another
“latest build”, “nightly build”, “build 142”
26. Advanced Deployment Tools
Beyond Compare (like FTP, but highlights line-by-line
differences)
Custom programs
Write your own script that copies files
Available software
xCopy / robocopy
MSDeploy
UrbanCode www.urbancode.com
27.
28. Release Planning and Cycles
Planning process of what
to deploy and when
MVP
Version 2
Version 3…
34. Budgeting
Very hard to budget new development projects
How much does it cost to build a house? It depends
Do a bottom up estimate, not a top down estimate
A 2-story house in a specific subdivision with a garage
and 3 bed 2 bath with the same interior that all the other
houses in the subdivision have?
36. Good project management
Setting milestones
Hitting the milestones
Lots of communication
Don’t change the features
Go through the design process
37. Tips on Shipping
Stick to a feature-set, and build it.
Adding developers doesn’t always make the project finish sooner
“The mythical man-month”
Q: How does a large software project get to be one year late?
A: One day at a time!
40. Hiring Developers
Hiring full time developers
Very hard, very expensive
Part-time developers (freelancers)
Tends to be the best option for startups
Difficult even for engineers to assess skill in an interview
Developers are almost never effective on joining a
project… always takes training time
41. Managing Developers
Great developers are very self-motivated
They like to work on things they think are important
They like to solve interesting problems
Constant pressure is annoying
42. Extreme Programming
A subtype of agile development
Adds some elements
Pair programming
Extensive unit testing
Flat management
43. Code Reviews
Engineers look over each other’s code as a “second pair
of eyes”
Tends to result in much better code
Also enables peer-to-peer training
44. Outsourcing
Tends to be very difficult for startups
Low quality work
Offshore companies do not design
And they produce low-quality code
Poor communication
The takeaway: tempting, but usually a net loss
45.
46. Homework
Individual, read the following:
Read Michael Wolfe’s answer... http://www.quora.com/Engineering-Management/Why-
are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3
Mythical man-month… http://en.wikipedia.org/wiki/The_Mythical_Man-Month
(Team) Deploy your application
If there’s no backend, that’s OK
(Team) Keep Going!!
Keep programming
Keep working on the pitch deck
Keep marketing your new startup
Occasionally review the market research data (Google Analytics, etc.)