36
rainforest @rainforestqa Pragmatic Rails Architecture

Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Embed Size (px)

DESCRIPTION

Presented at http://www.meetup.com/SFRails/events/167605832/

Citation preview

Page 1: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

rainforest @rainforestqa

Pragmatic Rails Architecture

Page 2: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Rainforest

Human powered QA SaaS

Enables ‘Continuous QA’

Built for cross-functional teams

Page 3: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Us

Team of 6 in SoMa

All developers

YC S12

Page 4: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

What is pragmatism?

Page 5: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Practical applications of X

Page 6: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

What do I mean by “practical”

Page 7: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Impractical

Things breaking

Inconsistency

Complexity

Manual intervention

Page 8: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Practical

Simple

Works

Hands off

Page 9: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

What do I mean by “architecture”?

Page 10: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

The parts of your stack that you can’t remove without breaking

things

Page 11: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

So…how?

Page 12: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Understand your choices

Page 13: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Understand your tradeoffs

Page 14: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

All these matter

Hosting

Code (Gems + your code)

Services

Testing

Page 15: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Hosting

Understand what your team is capable of

what’s important?

Page 16: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Co-lo / Dedicated

AWS / VPS

Heroku / PaaS

Page 17: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Co-lo / Dedicated

AWS / VPS

>>> Heroku / PaaS <<<

Page 18: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

–John Nunemaker

“You're An Idiot For Not Using Heroku.”

Page 19: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Code

Single responsibility principle

Multiple apps - learn when to split

Page 20: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Gems

Always check for gems

Use the maintained ones

Fix the unmaintained ones

Page 21: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Picking Gems; quick guide

Page 22: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Is it active?

Page 23: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Old pull requests?

Page 24: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

Read the code

Page 25: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Picking gems; quick guide

active?

read the code

I can has tests?

Page 26: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Services

Core: datastore, queuing

External: email service, monitoring, etc

Page 27: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Datastore (1/2)

Understand your use-case

Pick one your team understands

Generally, avoid trends

If not understood, research weaknesses

Page 28: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Datastore 2/2

Keep to the standards: MySQL / Postgres

Page 29: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

External services

Use them where not your core

Generally cheaper + better + simpler

Page 30: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Queuing

QueueClassic

Page 31: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Extra stuff

Page 32: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Monitoring

Your service - web, db, queue size, etc

External services - stripe.js? heroku? aws?

Page 33: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Deployment + CI

You should do this

Page 34: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Testing

Importance, imho:

#1 cover main flows for the user

#2 integration + front end regressions

#3 unit tests

Page 35: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

@rainforestqarainforest

Conclusion

understand your tradeoffs

the least reliable part of your stack = your reliability

monitor things

Page 36: Pragmatic Rails Architecture [SF Rails, 24 Apr 14]

rainforest @rainforestqa

Questions?@rainforestqa

@rhs