17
Performance Tips For Apps

Ruby On Rails Sydney Meetup - Performance Tips For Apps

Embed Size (px)

DESCRIPTION

A similar talk given at WWC Sydney about performance tips for applications. The talk covers some techniques to use to improve performance of apps that can be applied to any tech stack.

Citation preview

Page 1: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Performance Tips For Apps

Page 2: Ruby On Rails Sydney Meetup - Performance Tips For Apps

About Me

clairettran

Page 3: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Performance Is Important

Oops!● Myer Boxing Day 2013● Click Frenzy 2012

Page 4: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Some Common Problems

Note: not an exhaustive list

Page 5: Ruby On Rails Sydney Meetup - Performance Tips For Apps

What I’ll Cover

● Monitoring● Asynchronous Tasks● Caching● Scaling● Database +

Page 6: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Monitoring

How to know there is a performance problem?

+ Response time, rpm, memory usage, CPU usage, error rates

Page 7: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Monitoring

What else can I do?● Logs● Memory Usage● Performance tests● Health Checks● More call centre phone calls

Page 8: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Asynchronous Tasks

Page 9: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Caching

How?● Cache store ● Fragment caching● SQL caching

Removed in Rails4: Action Caching & Fragment Caching

Page 10: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Caching

Before: No Caching

After: With Caching!

Problem: Page making long running/many external requests

Page 11: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Scaling

Page 12: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Scaling

Page 13: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Database

● Add an index● Profiling● Batch queries● Eager fetching● Denormalisation● Sharding

Page 14: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Other Techniques● Queuing/Background Jobs● Caching tech (e.g.

Elasticache)● Dedicated services● Rails engines● C-extensions (gems)● Sprites● Asset pipeline● Cache control headers● Gzip assets*● Less HTTP requests● Dedicated Search Service

● Remove unused assets● Static cluster● AWS Auto-scaling● Akamai, Cloudfront (edge

caching)● YSlow● Local Storage● Smaller Responses● Async JS● Chrome DevTools● Ruby Flavours e.g. JRuby

Page 15: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Further Reading

https://github.com/ianheggie/health_check

http://guides.rubyonrails.org/caching_with_rails.html

http://railscasts.com/episodes/380-memcached-dalli

https://developers.google.com/events/io/sessions/324511365

http://railscasts.com/episodes/366-sidekiq

http://www.slideshare.net/derekmbrown/netflix-strategic-performance-analysis

http://blog.jphpsf.com/2012/04/28/front-end-performance-case-study-github

Page 16: Ruby On Rails Sydney Meetup - Performance Tips For Apps
Page 17: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Questions