36
October 2014 Startup Engineering Cookbook From Slides to Website

Startup Engineering Cookbook

Embed Size (px)

DESCRIPTION

Are you a non-technical founder confused about the technology to deploy for your new website? The presentation covers the various options available for building a website and beyond...

Citation preview

Page 1: Startup Engineering Cookbook

October 2014

Startup Engineering Cookbook

From Slides to Website

Page 2: Startup Engineering Cookbook

OverviewSlide Topic

3 Purpose

4 The Lean Startup

5 Implementation Options

6-17 Architecture Options

18-22 Sample Architecture

24-28 Monitoring

29-30 Disaster Recovery

31-32 Scaling

33-34 Internal Tools

35 The End

36 Contributors

Page 3: Startup Engineering Cookbook

Purpose

Covering the various technical options when going from a concept to

building a website and beyond...3

[meant for a non-technical audience]

Page 4: Startup Engineering Cookbook

The Lean Startup

!It’s an approach for launching businesses and products, that relies on validated learning, scientific experimentation, and iterative product releases to shorten product development cycles, measure progress, and gain valuable customer feedback. !

[ Wikipedia ]

It is THE industry bible for startups...READ IT.

[ The Reality ]

4

Page 5: Startup Engineering Cookbook

Implementation Options

There are 3 options for building a website:

1 Build internally

2 Outsource

3 Hybrid - hire a technical lead

Building a website is like the Kama Sutra... many ways to accomplish “it”

5

Page 6: Startup Engineering Cookbook

Architecture Options

6

Page 7: Startup Engineering Cookbook

Infrastructure Provider

The website will have to reside on a computer for the world to see. Options: Amazon Web Services (AWS), Google Cloud Platform, Heroku, local hosting provider, Microsoft Azure, Netmagic, RackSpace !

!Our choice: Amazon Web Services (AWS). They are the #1 leader in web infrastructure services also known as cloud services. !In addition, they have a free 1 year trial which allows you to try many of their services at zero cost. After 1 year they will bill you based on usage of their services.

web hosting services7

Page 8: Startup Engineering Cookbook

Central vs. Distributed

The old way of designing the infrastructure for a website was to put all the resources such as databases, files, images, etc... on the same server. The problem is if your database is slow and everything else is fine, you have to upgrade the entire server and disrupt the other functions.  By distributing the resources you can quickly pinpoint the bottleneck and scale that particular resource.

distributed web architecture

Central

Our choice: Distributed Architecture.

Distributed

Computing Database Static Files

Computing, database, files, etc...

8

Page 9: Startup Engineering Cookbook

Managed vs. Self-Service

If your team is technical it might not be technical in terms of hardware. Just because someone knows a programming language does not mean they have the infrastructure knowledge to run a website. !Some startups prefer to outsource the management of their hardware to a hosting provider or use the “premium” option of a cloud service provider. !Our choice: Self-Service. The tools that are provided by AWS are quite powerful and easy to use for managing the entire AWS infrastructure.

managed server hosting9

Page 10: Startup Engineering Cookbook

Operating System

There are only two options Microsoft Windows or Linux. Windows is limited in the type of programming languages that you can run on the server. Linux is open source and has a large community that is continually improving the operating system. Within Linux there are many options such as Debian and Red Hat to choose from, but are all pretty similar in their offerings. !!!!!Our choice: Linux. Linux is usually cheaper to run and used by more websites than any other platform. Part of the LAMP stack - Linux (operating system), Apache (web server), MySQL (database) and PHP (programming language).

linux hosting10

Page 11: Startup Engineering Cookbook

Software that delivers web pages from the server to a clients web browser. !Options: Apache, Lighttpd, Microsoft Internet Information Server (IIS), Nginx, Node.js, Rails, Tornado !!!!!!!Our choice: Apache. It’s part of the LAMP stack and is widely used by many websites.

Web Server

apache web server11

Page 12: Startup Engineering Cookbook

The heart of any web based application is the database since it stores all the user information and everything else related to the web application. !Options: Amazon DynamoDB, Cassandra, CouchDB, Microsoft SQL, MongoDB, MySQL, Oracle, SimpleDB !!!!!Our choice: MySQL. It’s part of the LAMP stack and widely used by many websites.

Database

mysql nosql12

Page 13: Startup Engineering Cookbook

If you ask 4 programmers which is the best language, you will most likely get 5 different answers. If you are building a website on a Windows environment then you can choose .NET, for Linux there are several choices. !Options: Clojure, Microsoft’s .NET, Perl, PHP, Python, Ruby !!!!!Our choice: PHP. It’s part of the LAMP stack and more importantly has a large community so finding people to hire with PHP knowledge is better.

Back End Language

web php languages13

Page 14: Startup Engineering Cookbook

Instead of re-inventing the wheel it’s better to use a pre-existing framework to start building an application. Frameworks provide a foundation where developers’ code can be neatly arranged. Also, documentation, common problems, solutions, tips and advice can be shared online in an open source manner. !Options: CakePHP, CodeIgniter, Laravel, Symfony, Yii Framework, Zend Framework !!!!!Our choice: CodeIgniter. One of the fastest performing frameworks and very active support community.

PHP Framework

php framework14

Page 15: Startup Engineering Cookbook

This is what the consumer sees on their phone, tablet or computer screen. Previously, the trend was to create a website design that was different for each type of device that was accessing the site. Now everyone is moving towards a “responsive” design, which means you design a single site that can be viewed on any device that a consumer may own. !Options: Bootstrap, Foundation, jQuery UI, Kendo UI !!!!Our choice: Bootstrap. It was developed by Twitter and released as an open source project which means there is a large community of users.

Front End UI Framework

front end framework15

Page 16: Startup Engineering Cookbook

Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. It’s a service that will make your life easier as you will be able to keep track of the changes to your code base. !Options: BeanStalk, Bitbucket, GitHub, ProjectLocker, Springloops !!!!!!Our choice: Bitbucket. They have a free plan that allows 5 users which should accommodate any startup.

Version Control Service

git version control service16

Page 17: Startup Engineering Cookbook

You can interact with your online version control service using the command line interface of your computer. However, many people prefer to use a graphical front end which is usually referred to as a git client. !Options: Gitbox, GitHub, SourceTree, Tower, Versions !!!!!!Our choice: SourceTree. They have a Mac and Windows client which are both free. The software is from the same people that provide the Bitbucket service, so they very well together.

Version Control Client

git client

Tower Versions

17

Page 18: Startup Engineering Cookbook

Sample Architecture

18

Page 19: Startup Engineering Cookbook

UI is a small piece

19

Page 20: Startup Engineering Cookbook

Website Roles

20

Visually creates the user

interface (UI) and the overall user experience

(UX)

Front End Engineer

Back End Engineer

Operations Engineer

Browser Server

UI/UX Designer

Converts the UI/UX design into

Bootstrap, HTML5, CSS, JavaScript,

etc...

Converts the business logic into computer code using PHP,

Python, PERL, .NET,

etc...

Manages the servers,

databases, DNS information, and

other website infrastructure

Page 21: Startup Engineering Cookbook

Day 0

Elastic Compute Cloud (EC2) t1.micro

RDS MySQL t1.micro

S3

Region: APAC- Singapore

Single Region, Single Availability Zone (AWS Free Tier Program)

Users Internet

21

Availability Zone: AP-Southeast-1a

Page 22: Startup Engineering Cookbook

Day 0+X

RDS MySQL

S3Single Region, Multi Availability Zones !The fault tolerant design allows for one of the availability zones not being available.

Users Internet

Database Replication

Elastic Compute Cloud (EC2)

RDS MySQL

Availability Zone: AP-Southeast-1b

Elastic Load Balancer (ELB)

S3

Elastic Compute Cloud (EC2)

22

Region: APAC- Singapore

Availability Zone: AP-Southeast-1a

Page 23: Startup Engineering Cookbook

RDS MySQL

S3

Users InternetRDS MySQL

Elastic Load Balancer (ELB)

S3

Day 0+2XMulti Region !The fault tolerant design allows for one of the regions not being available. The design also allows for users to be load balanced based on geographic location.

Availability Zone: US-East-1a

Elastic Compute Cloud (EC2)

Elastic Compute Cloud (EC2)

23

Region: APAC- Singapore

Availability Zone: AP-Southeast-1a

Region: US East (N. Virginia)

Page 24: Startup Engineering Cookbook

Monitoring

24

Page 25: Startup Engineering Cookbook

By monitoring the infrastructure, you can proactively plan if certain components need to be upgraded.

Infrastructure Performance

25

Page 26: Startup Engineering Cookbook

Understanding how the application affects the infrastructure is essential. If there are very few users but the servers and databases are consistently running at peak utilization, that might indicate a programming issue.

Application Performance

26

Page 27: Startup Engineering Cookbook

Google Analytics is the industry standard for tracking website statistics such as hits, users, content viewed, conversions and many other statistics.

Traffic Analysis

27

Page 28: Startup Engineering Cookbook

Once a user starts to use your web application you will want to engage with the customer. Intercom.io allows you to send emails based on pre-defined rules such as “send a welcome email to a new user”.

User Engagement

28

Page 29: Startup Engineering Cookbook

Disaster Recovery

29

Page 30: Startup Engineering Cookbook

Having a disaster recovery plan in place is critical to ensure the website can recover from a catastrophic event. !Taking a daily/weekly/monthly snapshot of the servers, files and databases is a minimum requirement. The daily/weekly/monthly backup schedule is sometimes referred to as the son/father/grandfather rotation schedule.

Backing Up & Restoring

If disaster does strikes and a complete backup strategy is in place, then it should not be very difficult to restore the website from the backups that are being maintained.

30

Page 31: Startup Engineering Cookbook

Scaling

31

Page 32: Startup Engineering Cookbook

Hopefully, the website you launch is a massive success and leads to your website having a tough time handling the load. !With many cloud service providers you can automatically add additional resources based on predefined rules. An example is below:

Adding Resources

Rule Action

If CPU utilization goes above 60% during a 5

minute period

Upgrade the server to the next larger size to handle

the additional load

32

Page 33: Startup Engineering Cookbook

Internal Tools

33

Page 34: Startup Engineering Cookbook

Team communication is critical in a fast paced web business. Yammer is an internal social network for employees. Pivotal Tracker is a project management tool. HipChat is an instant messaging application.

Team Communications

34

Page 35: Startup Engineering Cookbook

The End

35

Page 36: Startup Engineering Cookbook

Contributors

!Kulin Shah Marketing

Freecharge @NowEntrepreneur

36

!Pankaj Jain

Venture Partner 500 Startups

@pjain

!Manish Jain Co-Founder

MProfit @mrjain_

[email protected]

!Sahil Parikh

Founder Brightpod

@sahilparikh