StackDive – February 12, 2015
Who am I?
3
• Justin Mills
• Engineer at Yesware (2 years)
• Work many layers of the stack
• Currently working on our data team
Yesware is an all-in-one sales toolkit for
data-driven sales organizations. We help you
connect with prospects, track customer
engagement, and close more deals, right from
Gmail, Outlook, or your iPhone.
CultureFull stack T-shaped people
9
Culture
Firmly established internal open source model
10
Culture
No QA, ops or tooling teams
11
Architecture
Evolution from a single app…
13
Architecture
…into a big app and many smaller ones.
15
ArchitectureSome refactoring
19
ArchitectureSome new apps
21
Architecture Evolution
Some by closing the repository!
22
Architecture Evolution
Lessons learned
● Closing repo works!
● 2+ gets easier.
● Everything is faster with smaller apps.
● We need more tooling!24
Architecture Patterns
RESTful services (mostly)
26
Architecture Patterns
Queues for asynchronous communication
27
Architecture PatternsWhat a typical app looks like?
28
Architecture PatternsSample system pattern we repeat a lot
29
Architecture Patterns
Did I mention queues?
● Delayed Job (PostreSQL)
● Resque (Redis)
● Sidekiq (Redis)
● Sneakers (RabbitMQ)30
Architecture Patterns
Client libraries as our API’s
31
Production
Providers for nearly all of our systems
34
Production
Leverage AWS where we need to
35
Challenges
Culture
● Who owns what?
● Operations responsibility.
● Case for non-feature work.
37
Challenges
Architecture
● Bad patterns still exist
● Interdependencies
● Complexity
● Technology baggage38
Challenges
Production
● Long road to happiness on Heroku
● Containerized
● Freedom is limited
39