Scalable Web Programming. CS193S - Jan Jannink - 1/12/10



Similar documents
Scalable Web Programming. CS193S - Jan Jannink - 2/23/10

PHP on IBM i: What s New with Zend Server 5 for IBM i

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Why NoSQL? Your database options in the new non- relational world IBM Cloudant 1

ASSURING SOFTWARE QUALITY USING VISUAL STUDIO 2010

Analytics March 2015 White paper. Why NoSQL? Your database options in the new non-relational world

Database Scalability {Patterns} / Robert Treat

MakeMyTrip CUSTOMER SUCCESS STORY

Atomate Development Process. Quick Guide

What Is Specific in Load Testing?

Tonight s Speaker. Life of a Tester at Microsoft Urvashi Tyagi Software Test Manager, Microsoft

DATABASE VIRTUALIZATION AND INSTANT CLONING WHITE PAPER

Recommendations for Performance Benchmarking

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Open Source Monitoring

INCREASE YOUR WEBMETHODS ROI WITH AUTOMATED TESTING. Copyright 2015 CloudGen, LLC

API Architecture. for the Data Interoperability at OSU initiative

Load Testing and Monitoring Web Applications in a Windows Environment

<Insert Picture Here> Oracle Database Directions Fred Louis Principal Sales Consultant Ohio Valley Region

Software Quality Testing Course Material

Continuous Delivery. Alejandro Ruiz

Sandesh Prasanna Kumar

Continuous Integration: Put it at the heart of your development

Category: Business Process and Integration Solution for Small Business and the Enterprise

CSCI E 98: Managed Environments for the Execution of Programs

Testhouse Training Portfolio

1. Comments on reviews a. Need to avoid just summarizing web page asks you for:

Day 1 - Technology Introduction & Digital Asset Management

OLTP Meets Bigdata, Challenges, Options, and Future Saibabu Devabhaktuni

Introduction to Automated Testing

Five Steps to Integrate SalesForce.com with 3 rd -Party Systems and Avoid Most Common Mistakes

Enabling Database-as-a-Service (DBaaS) within Enterprises or Cloud Offerings

Automating Security Testing. Mark Fallon Senior Release Manager Oracle

Modern CI/CD and Asset Serving

<Insert Picture Here> Move to Oracle Database with Oracle SQL Developer Migrations

Modern practices TIE-21100/

Exploring the Synergistic Relationships Between BPC, BW and HANA

Getting Things Done: Practical Web/e-Commerce Application Stress Testing

TESTING FRAMEWORKS. Gayatri Ghanakota

!"#$%&%'($)*+,-",!./01#'/",'",234045'0'#6,4"7, 21&&/%#,

IT Home 2015 DevOps 研 討 會

XTM Web 2.0 Enterprise Architecture Hardware Implementation Guidelines. A.Zydroń 18 April Page 1 of 12

Zynga Analytics Leveraging Big Data to Make Games More Fun and Social

Cisco UCS and Fusion- io take Big Data workloads to extreme performance in a small footprint: A case study with Oracle NoSQL database

SQL Server Performance Intelligence

Oracle to SQL Server 2005 Migration

C/S Basic Concepts. The Gartner Model. Gartner Group Model. GM: distributed presentation. GM: distributed logic. GM: remote presentation

Using Object Database db4o as Storage Provider in Voldemort

An Oracle White Paper July Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

Building, testing and deploying mobile apps with Jenkins & friends

MANUAL TESTING. (Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn.?? New Batches Info

White Paper November Technical Comparison of Perspectium Replicator vs Traditional Enterprise Service Buses

Database Scalability and Oracle 12c

CLOUD DEVELOPMENT BEST PRACTICES & SUPPORT APPLICATIONS

Net Developer Role Description Responsibilities Qualifications

<Insert Picture Here> When to Automate Your Testing (and When Not To)

Fast Feedback: Jenkins + Functional and Non-Functional Mobile App Testing Without Pulling Your Hair

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Federal Secure Cloud Testing as a Service - TaaS Center of Excellence (CoE) Robert L. Linton

Software Engineering I: Software Technology WS 2008/09. Integration Testing and System Testing

AUTOMATED TESTING and SPI. Brian Lynch

White Paper. Cloud Performance Testing

Guide to Mobile Testing

MySQL Enterprise Edition Most secure, scalable MySQL Database, Online Backup, Development/Monitoring Tools, backed by Oracle Premier Lifetime Support

Datawarehouse testing using MiniDBs in IT Industry Narendra Parihar Anandam Sarcar

Drupal Performance Tuning

Big Fast Data Hadoop acceleration with Flash. June 2013

Levels of Software Testing. Functional Testing

ORACLE DATABASE ADMINISTRATOR RESUME

General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support

design coding monitoring deployment Java Web Framework for the Efficient Development of Enterprise Web Applications

How To Retire A Legacy System From Healthcare With A Flatirons Eas Application Retirement Solution

EDG Project: Database Management Services

Performance Testing of a Cloud Service

JAVA/J2EE DEVELOPER RESUME

Introduction to IBM Worklight Mobile Platform

ICAgile Learning Roadmap Agile Testing Track

Building Cubes and Analyzing Data using Oracle OLAP 11g

MOBILE APP DEVELOPMENT CUSTOM CROSS PLATFORM APPLICATIONS

MySQL Cluster New Features. Johan Andersson MySQL Cluster Consulting johan.andersson@sun.com

White Paper. Optimizing the Performance Of MySQL Cluster

Web Applications: Overview and Architecture

Continuous Integration. Motio Portfolio Existing IBM Cognos Solutions Flexibility, Agility & Control In Deployments Free Stuff!

Using Apache Derby in the real world

OTM Performance OTM Users Conference Jim Mooney Vice President, Product Development August 11, 2015

Static vs. Dynamic Testing How Static Analysis and Run-Time Testing Can Work Together. Outline

MySQL High-Availability and Scale-Out architectures

SQL Server Training Course Content

SaaS-Based Employee Benefits Enrollment System

Software development & technologies in Market Research industry

Software Implementation Technology report

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

ORACLE DATABASE 10G ENTERPRISE EDITION

Testing Lifecycle: Don t be a fool, use a proper tool.

Software Testing Lifecycle

Table of Contents. Abstract. Cloud computing basics. The app economy. The API platform for the app economy

Transcription:

Scalable Web Programming CS193S - Jan Jannink - 1/12/10

Administrative Stuff Computer Forum Career Fair: Wed. 13, 11AM-4PM (Just in case you hadn t seen the tent go up) Any problems with MySQL setup? Review: web coding is complex, power law has ramifications everywhere Feedback: time to step on the gas Office space: Gates B28 Website: http://cs193s.stanford.edu

Weekly Syllabus 1.Scalability: (Jan.) 7.Analytics* 2.Agile Practices 8.Cloud/Map-Reduce 3.Ecology/Mashups* 9.Publish APIs: (Mar.)* 4.Browser/Client 10. Future 5.Data/Server: (Feb.) 6.Security/Privacy * assignment due

Programming Project #1 Adapt GWT sample application Turn existing functionality into an integration test Display random 20 digit number in a creative way, e.g. use external captcha code generate funny image from number Add several unit tests to validate new code Link to a test result display from main page

Sample Mockup Tests Project Scope

Assignment Motivation Grading confined to code & test correctness and test coverage Project creativity aids team grouping for larger projects Best pages become candidates for demo to angel investor group Demo meeting & lunch will take place in March all participants invited to attend 3-6 demos will be presented open discussion with investors follows

Team Formation Goal: mirror realistic environment Team structure: 1-2 leaders based on creativity of first assignment 2-4 contributors who can work in teams 2-4 consultants who will work on individual projects No grade competition: creativity competition for demos

Agile Testing Unit tests simple demonstrations of code behavior Integration tests show composite behavior of code Regression testing essentially application of above tests Performance testing

Tests Form a living institutional memory of the software Communicate developers intentions and actual accomplishments Facilitate greater distribution of coding tasks Simplify surgical replacement of code at any level of embedding Document APIs and dynamic behaviors Maintain code performance over time

IBM Example DB2 relational database first SQL database Oracle quickly overtook it in prominence commercially During my stint in IBM ( 96-97) DB engine core had been frozen for years R&D engineers were needed to modify large parts of codebase Thousands of test cases for the system lack of internal tests turned the query engine into a black box

Back to Software So many layers, so little time Data flow is the starting point Identify flow control areas Define APIs there Use test harnesses to iterate development build back to DB, simulate horizontal scaling Start continuous integration

Website Data Path Client Logic Browser Server Logic Web Servers Cache Flow Control Points DB

Website Design Principle Flesh out the system front end to back end figure out what people want to see mock up the look, then data links, flesh them out Design the data flow back to front use browser view to minimize data satisfying queries keep the schema as simple as possible

Test Design Principles Least effort simulation Often results in simpler program logic as well Produces leaner faster test suites Save corner cases for after program logic development Avoid guessing what will be important Document bug fixes with a new test or test parameters

A Panacea? Testing can be overkill in some applications UI can change extremely fast overhead of test changes can be prohibitive customers can end up testers (perpetual beta) Small, well understood and encapsulated code making code private is a performance guarantee often integration tested by the code that uses it

Cost Benefit Analysis Always exhaustively test published APIs distributing sample code teaches use of APIs Test based on frequency of code reuse Test based on code volatility Skip tests only when code verification is enforced either through end user testing, external test suites

Perpetual Beta User testing OK does it chase away users? Benefits outweigh drawbacks? Case study: Cuil you are your first impression Case study: Gmail GB s of storage

Testing in Practice Canned data access via a text file Output a simple DB query to text file and use it for a test harness Simulate memcached with a hash table Use test framework to memorialize DB schema Even use test suite to populate new DB instances Server virtualization enables scale out testing

Continuous Integration Concept: tests run automatically at every checkin Highly effective when combined with development using git Enforces simple test development Serves as another developer communication tool Ant: XML definition of development, test, production builds not 100% trivial to write first scripts Cruise Control: well documented, very configurable

Minimal Releasable Code Define your customer self, team, die hard fans, casual user enterprise vs. consumer Make sure the value outweighs the pain Make sure the upgrade process outweighs the pain Divide, Conquer, Release, Iterate

Lessons Learned Tests can be extraordinarily valuable the longer your code lasts the more valuable it becomes favors group productivity over individual productivity Improved communication is the unexpected benefit speeds up integration of new engineers Like everything it is amenable to cost benefit analysis Continuous integration further speeds development cycle

Scale Out Ideas Server virtualization use when not single resource bound Automatic server allocation demands simple server setup Database replication and partitioning simple key based partitioning is most feasible avoid data loss and increase performance

Worth Checking Out Junit http://ww.junit.org/ The Tipping Point, Malcolm Gladwell Ant http://ant.apache.org/ Cruise Control http://cruisecontrol.sourceforge.net//

Q & A Topics Assignment #1 Project team definition Top Down vs. Bottom Up hybrid approach 80-20 rule for test development maximize coverage at minimum effort Startup development vs. Steady State maintenance