lessons learnt developing web applications

16
Lessons Learnt Developing Web Applications Satyadeep Musuvathy Architect, Yahoo!

Upload: devon

Post on 23-Jan-2016

47 views

Category:

Documents


0 download

DESCRIPTION

Lessons Learnt Developing Web Applications. Satyadeep Musuvathy Architect, Yahoo!. Balance. If even one of the legs is in-correct, the stool tends to topple. Balance between System, Data and Operations. Systems. Systems Evolve Design for evolution. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lessons Learnt Developing Web Applications

Lessons Learnt Developing Web

ApplicationsSatyadeep Musuvathy

Architect, Yahoo!

Page 2: Lessons Learnt Developing Web Applications

Balance

Balance between System, Data and Operations

If even one of the legs is in-correct, the stool tends to topple

Page 3: Lessons Learnt Developing Web Applications

Systems

Page 4: Lessons Learnt Developing Web Applications

Systems EvolveDesign for evolution

There will always be one more “feature”

Page 5: Lessons Learnt Developing Web Applications

Designing For Evolution Have clear separation of concerns

API, Savvy?

Your web page, Sir

I canz do business

Separate Web and API interaction from the business logic

Page 6: Lessons Learnt Developing Web Applications

Designing For Evolution Manage State Carefully

State A

State B

State C

Web Applications are “State-full”. Worry about “OOM”

Memory is a “scarce” resource

“State-full”

Page 7: Lessons Learnt Developing Web Applications

Designing For Evolution Aggressively differentiate sync and a-sync jobs

Vs.

Synchronous

Asynchronous

Design and scale the synchronous aspects separately from the asynchronous jobs – Not all operations need to be synchronous

Page 8: Lessons Learnt Developing Web Applications

Data

Page 9: Lessons Learnt Developing Web Applications

Application DataMost Systems are I/O bound

In most cases I/O throughput defines “perceived” performance

Page 10: Lessons Learnt Developing Web Applications

Application DataMake data “Shardable”

“Shardable” data will allow you to scale out your data demands as the application grows.

Page 11: Lessons Learnt Developing Web Applications

Application DataConsider multiple stores for data

Grid Database

Consider shipping copy of the data to Grid or dedicated machines for batch or “secondary” tasks.

“Divide and Conquer”

Page 12: Lessons Learnt Developing Web Applications

Operations

Page 13: Lessons Learnt Developing Web Applications

OperationsUtilization is very spiky

Plan for peak loads, but try to distribute processing over time to minimize over-provisioning.

Page 14: Lessons Learnt Developing Web Applications

OperationsConstantly monitor systems

Constantly monitor the system for CPU, Memory, Disk and I/O

Have system “raise” events for critical issues rather then parsing log files.

Page 15: Lessons Learnt Developing Web Applications

OperationsHave a failover plan

Plan and “TEST” backup systems. Look for and prevent domino effects of failure

Page 16: Lessons Learnt Developing Web Applications

Q & A

Thank You!