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
What is Yesware?
4
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.
What is Yesware?
6
Culture
Small autonomous teams
8
CultureFull stack T-shaped people
9
Culture
Firmly established internal open source model
10
Culture
No QA, ops or tooling teams
11
Boxes and Lines
12
Architecture
Evolution from a single app…
13
ArchitectureBefore
14
Architecture
…into a big app and many smaller ones.
15
ArchitectureNow
16
Architecture Evolution
Some necessity
18
ArchitectureSome refactoring
19
Architecture Evolution
Some general goodness
20
ArchitectureSome new apps
21
Architecture Evolution
Some by closing the repository!
22
Architecture
Ongoing evolution
23
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
Hosted on Heroku
33
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