StackDive – February 12, 2015
Who am I?
2
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
7
Culture
Small autonomous teams
8
Culture
Full 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
Architecture
Before
14
Architecture
…into a big app and many smaller ones.
15
Architecture
Now
16
Evolution
17
Architecture Evolution
Some necessity
18
Architecture
Some refactoring
19
Architecture Evolution
Some general goodness
20
Architecture
Some 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
Patterns
25
Architecture Patterns
RESTful services (mostly)
26
Architecture Patterns
Queues for asynchronous communication
27
Architecture Patterns
What a typical app looks like?
28
Architecture Patterns
Sample 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
32
Production
Hosted on Heroku
33
Production
Providers for nearly all of our systems
34
Production
Leverage AWS where we need to
35
Challenges
36
Challenges
Culture
● Who owns what?
● Operations responsibility.
● Case for non-feature work.
37
Challenges
Architecture
● Bad patterns still exist
● Interdependencies
● Complexity
● Technology baggage
38
Challenges
Production
● Long road to happiness on Heroku
● Containerized
● Freedom is limited
39
Thanks!
40
StackDive: Yesware

StackDive: Yesware