• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Class 7: Introduction to web technology entrepreneurship
 

Class 7: Introduction to web technology entrepreneurship

on

  • 481 views

 

Statistics

Views

Total Views
481
Views on SlideShare
452
Embed Views
29

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 29

http://allanchao.com 29

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Class 7: Introduction to web technology entrepreneurship Class 7: Introduction to web technology entrepreneurship Presentation Transcript

    • Allan ChaoStartup ConsultantStartup V8allan@startupv8.comUC Berkeley Extension, Summer 2012
    • Question of the day:How many people are involvedin building a web application?
    • The Agenda Quiz Quick review of last session Servers, Hosting Deployment Release Cycles, Project Management Engineering management
    • Quiz Time Good luck!10 minutes max
    • 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
    • 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)
    • What is a server? Physical machine Usually horizontal, 1-2 inches tall Designed and built for reliability, not features Lots of redundant components
    • What is a data center? A.k.a. Server farm Lots of computers Room gets hot… Lots of fans, very loud High security
    • 3 most common hosting options 3 most common hosting options  Dedicated Hosting  Shared Hosting  Virtual Private Server (VPS) Other hosting options  Colocation  Cloud hosting
    • 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.
    • 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
    • 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
    • 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
    • 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
    • Comparison Managed (dedicated, Colocation Cloud shared, VPS) (aka colo)Cost at first Average Very high Very lowCost at scale Average-high Low Very highFlexibility Medium Very flexible Not flexibleManagement Depends on host You manage Harder to manage
    • Tools for hosting Who is hosting a website?  http://www.whoishostingthis.com  Note that high-traffic websites run their own data centers
    • Rackspace http://www.rackspacestartups.com/
    • Try Buying Hosting Cheaper and lower-quality options  Your domain registrant  Bluehost, dreamhost, etc. Better and more expensive options  Rackspace  Softlayer
    • 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
    • FTP File Transfer Protocol  Very old way of transferring files We’ll use Filezilla
    • 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
    • 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”
    • 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
    • Release Planning and Cycles Planning process of what to deploy and when  MVP  Version 2  Version 3…
    • Case study: firefox
    • Project Management Starts off as…  1 product owner, 1 designer, 1 engineer = 3 people Soon afterward…  1 product owner, 1 designer, 3 engineers = 5 people Company grows…  1 product owner, 2 designers, 4 engineers, 1 project manager, 1 tester = 9 people Project management = coordination and allocation of people, time, money.
    • Gantt chart Like a waterfall process Great for known projects Less applicable for ongoing development
    • Agile Development Small, incremental Iterations 1-2 weeks Standing meetings “Product owner” Burndown charts
    • Tools for Project Management FugBugz BaseCamp Trello Pivotal Tracker
    • 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?
    • Ninety-ninety rule
    • Good project management Setting milestones Hitting the milestones Lots of communication Don’t change the features Go through the design process
    • 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!
    • Deploymentson closedplatforms E.g. Apple App Store  Unclear requirements  Time consuming and frustrating
    • 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
    • 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
    • Extreme Programming A subtype of agile development Adds some elements  Pair programming  Extensive unit testing  Flat management
    • 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
    • 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
    • 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.)