Salesforce.com Girl Geek DinnerFollow the conversation at #SFDCggd
A Behind the Scenes Look at the Salesforce ArchitectureJeanine WaltersArchitect
/jeanine.walters
@jeaninesw
in/jeaninesw
* All characters appearing in this work are fictitious. Any resemblance to real persons, living or dead, is purely coincidental.
ReneeDell’s Regional Manager*
Are laptops selling well in the Western United States?
Renee has a question:
Multitenancy: One Cloud with Many Customers
Different Customers Store Different Data
Burberry’s Customer
Data
Your Payroll
Data
Dell’s Product
Data
What type of computer? Server, laptop, etc.
Is this a repeat customer? True or False.
What’s the employee’s deduction amount?
Flex Schema: Everyone’s DataFlex Column: Multiple Data Types
ID Customer Data 1 Data 2 Data N
1000001 Dell Monitor
1000002 Dell Laptop
1000003 Dell Server
1000004 Burberry True
1000005 Burberry False
1000006 Burberry True
1000007 You $190
1000008 You $250
1000009 You $680
Flex Schema: Everyone’s Optimizations
ID Data 1 Data 2
10002 unus erat toto naturae
10003 vultus in orbe
10004 quem dixere chaeos
10005 rudis indigestaque
10006 meis perpetuum
10007 deducite temopra
10008 carmen ante
10009 mare et terras
10010 tegit et quod
10011 omnia caelum
10012 unus erat toto naturae
10013 vultus in orbe
10014 quem dixere chaeos
10015 rudis indigestaque
10016 meis perpetuum
10017 deducite temopra
10018 carmen ante
10019 mare et terras
10020 tegit et quod
10021 omnia caelum
10022 unus erat toto naturae
10023 vultus in orbe
10024 quem dixere chaeos
10025 rudis indigestaque
10026 meis perpetuum
10027 deducite temopra
10028 carmen ante
10029 mare et terras
10030 tegit et quod
10031 omnia caelum
10032 unus erat toto naturae
10033 vultus in orbe
Multitenant IndexMultitenant Table
ID Customer Data 2
1000001 Dell Monitor
1000002 Dell Laptop
1000003 Dell Server
1000004 Burberry True
1000005 Burberry False
1000006 Burberry True
1000007 You $190
1000008 You $250
1000009 You $680
Customer Text Number Boolean
Dell Monitor
Dell Laptop
Dell Server
Burberry True
Burberry False
Burberry True
You $190
You $250
You $680
Back to Renee’s Question
Back to Renee’s Question
How do we get her information as
fast as possible?
Dell’s Data
Data Renee can see
Western SalesLaptops sold
ID Data 1 Data 2
10002 unus erat toto naturae
10003 vultus in orbe
10004 quem dixere chaeos
10005 rudis indigestaque
10006 meis perpetuum
10007 deducite temopra
10008 carmen ante
10009 mare et terras
10010 tegit et quod
10011 omnia caelum
10012 unus erat totonaturae
10013 vultus in orbe
10014 quem dixere chaeos
10015 rudis indigestaque
10016 meis perpetuum
10017 deducite temopra
10018 carmen ante
10019 mare et terras
10020 tegit et quod
10021 omnia caelum
10022 unus erat toto naturae
10023 vultus in orbe
10024 quem dixere chaeos
10025 rudis indigestaque
10026 meis perpetuum
10027 deducite temopra
10028 carmen ante
10029 mare et terras
10030 tegit et quod
10031 omnia caelum
10032 unus erat toto naturae
10033 vultus in orbe
User VisibilityIndexes
Millions of Opportunities
Data Tables
ID Data 1 Data 2
10002 unus erat toto naturae
10003 vultus in orbe
10004 quem dixere chaeos
10005 rudis indigestaque
10006 meis perpetuum
10007 deducite temopra
10008 carmen ante
10009 mare et terras
10010 tegit et quod
10011 omnia caelum
10012 unus erat totonaturae
10013 vultus in orbe
10014 quem dixere chaeos
10015 rudis indigestaque
10016 meis perpetuum
10017 deducite temopra
10018 carmen ante
10019 mare et terras
10020 tegit et quod
10021 omnia caelum
10022 unus erat toto naturae
10023 vultus in orbe
10024 quem dixere chaeos
10025 rudis indigestaque
10026 meis perpetuum
10027 deducite temopra
10028 carmen ante
10029 mare et terras
10030 tegit et quod
10031 omnia caelum
10032 unus erat toto naturae
10033 vultus in orbe
Renee
Laptops
West
Where do we start?
Multitenant Query Optimizer
The Fastest Plan
The Fastest Plan
User Visibility
User Visibility
Data SizeData Size
Index on
Filter?
Index on
Filter?
Run pre-queriesCheck
user VisibilityCheck filter
selectivity
Write query-based on
results of pre-queries
Execute query
User Visibility
# of rows that the user can access
=
Filter Selectivity
How specificis this filter?
=
Multitenant Query Optimizer
SharedVisibility
SharedIndexes
ID Data 1 Data 2
10002 unus erat toto naturae
10003 vultus in orbe
10004 quem dixere chaeos
10005 rudis indigestaque
10006 meis perpetuum
10007 deducite temopra
10008 carmen ante
10009 mare et terras
10010 tegit et quod
10011 omnia caelum
10012 unus erat totonaturae
10013 vultus in orbe
10014 quem dixere chaeos
10015 rudis indigestaque
10016 meis perpetuum
10017 deducite temopra
10018 carmen ante
10019 mare et terras
10020 tegit et quod
10021 omnia caelum
10022 unus erat toto naturae
10023 vultus in orbe
10024 quem dixere chaeos
10025 rudis indigestaque
10026 meis perpetuum
10027 deducite temopra
10028 carmen ante
10029 mare et terras
10030 tegit et quod
10031 omnia caelum
10032 unus erat toto naturae
10033 vultus in orbe
ID Data 1 Data 2
10002 unus erat toto naturae
10003 vultus in orbe
10004 quem dixere chaeos
10005 rudis indigestaque
10006 meis perpetuum
10007 deducite temopra
10008 carmen ante
10009 mare et terras
10010 tegit et quod
10011 omnia caelum
10012 unus erat totonaturae
10013 vultus in orbe
10014 quem dixere chaeos
10015 rudis indigestaque
10016 meis perpetuum
10017 deducite temopra
10018 carmen ante
10019 mare et terras
10020 tegit et quod
10021 omnia caelum
10022 unus erat toto naturae
10023 vultus in orbe
10024 quem dixere chaeos
10025 rudis indigestaque
10026 meis perpetuum
10027 deducite temopra
10028 carmen ante
10029 mare et terras
10030 tegit et quod
10031 omnia caelum
10032 unus erat toto naturae
10033 vultus in orbe
Done
Done
GoGo
Multi-tenant Optimizer Statistics
Renee’s Answer
Lots of laptops have sold in the West
Thank you!/jeanine.walters
@jeaninesw
in/jeaninesw
“I hear what you mean…”Product Management as Translation
Susan KimberlinProduct Management Director
@SusanSearchPro
in/susankimberlin
Product Management Goal: Happy Customers
When our customers are successful, our
business is successful
Internal consumers of your work are customers
too
It’s not what they say, it’s what they mean…
Natural Languages are what we use
to speak to one another– The only requirement is mutual
understanding
Code is language too
Everyone has their own language
“I want it to work like Google.”
“I want it to work like Google.”
“What is the algorithm?”
“What is the algorithm?”
“Is it okay if we just do it this way?”
“Is it okay if we just do it this way?”
“This color hurts my eyes.”“This color hurts my eyes.”
“I want this button on the
other side of the page.”
“I want this button on the
other side of the page.”
“It will take me 2 years to build this.”
“It will take me 2 years to build this.”
“If you do X instead, what will you have to drop from your
plan?”
“If you do X instead, what will you have to drop from your
plan?”
“When will we have X?”“When will we have X?”
Tools of the Translation Trade
Solve for the Problem
or Opportunity
Walk in their shoes
ABT – Always Be Translating
Every interaction with customers, internal stakeholders
and your team is an opportunity to gather input and
translate for product decisions!
Thank you!
@SusanSearchPro
in/susankimberlin
Mysti BerryPrincipal Content Strategist
@MystiContent
Individual Contributor as Leader: My First Year
Lesson One: It’s different being in front
Scary different
Lesson 1: Bid farewell to “equality”
Leave humor for face-to-face conversations (sad!)
We’re all created equal…but– Perceived rank makes some people timid
– People think differently, act differently, need different things
– Therefore, It’s impossible to overcommunicate
Lesson 2: It’s going to hurt for a while
It’s hard on the ego to no longer be the expert
It takes time to stop trying to fix everything
You have to trust more, do less
At first, neither managers
nor other ICs may know what to do with you
Repeat: It’s impossible to overcommunicate
Lesson 3: Your team is smarter than you are
Connecting people to problems is better than solving
every problem yourself and then telling someone how to
do it
When you ask for help, your team SHINES
Did I mention that it’s impossible to overcommunciate?
Test Automation At ScaleReena MathewPrincipal Architect
How do we scale?
Test Automation at Salesforce addresses scale for– Products
– Releases
– Customers
– Engineers
– Tests
– Systems
Product Suite
Multiple Products and Dependencies
Salesforce Release Cycles
3 Major Releases per Year
– New features and products
– Major architectural enhancements
– Bug fixes and performance enhancements
Weekly Patch & Emergency Releases
2-3 deployments per week on average
Smooth Releases is extremely important
> 7,000 Subscribers
> 30,000 Subscribers
> 10,000 Subscribers
> 5,000 Subscribers
Salesforce R&D
150+ Scrum Teams
Globally Distributed Teams
– 15 Different Locations
Why Test Automation?
Test Automation is what enables us to do frequent releases
without compromising our #1 value - Customer TRUST
Code Check-in Workflow @ Salesforce
PRE-CHECKIN
Automation Tools We Use @ Salesforce
Test Frameworks & Tools
o JUnit
o Selenium (RC, Webdriver)
o HtmlUnit, JSUnit, NUnit
o EasyMock, Mockito
Code Coverage
o Clover, JSCoverage
Static Analysis
o FindBugs
Continuous Integration
o Jenkins
Pre-Checkin SystemKeep the Build Green
Pre-checkin is a remote server that performs a full
build with your change
– Rejects your changelist when the build or tests fail
– Can also run tests selected by engineer
With pre-checkin, we guarantee that the build never
breaks!
Pre-checkin is enforced across all code lines– Salesforce engineers can submit their changes only when pre-
checkin succeeds with their changes
Automation Cloud
App DB
VMs to run tests
App DBApp DB
App DB
App DB
App DBApp DB App DB
App DBApp DB App DB
Test Suite
Test Suite
Test Suite
DB
Queue of VMs for each test suite
VM will pick up the next run when free
Results consolidates in central DB
Behind The Cloud: Infrastructure Support Keep the Automation Infrastructure Green
Multiple Clouds
Private and Public
Clouds
Future: Use jclouds
to work with multiple
clouds
Sauce Labs for
Multiple Browser
and Device Testing
Private Cloud
Private Cloud
Salesforce VM Provisioning Engine
Test Thresholds
For the Automated Test Suites we set very high Test Thresholds– 100% Pass Rate for the basic suites
– 99% for other test suites on the patch and emergency release branches
– Lower thresholds for Major Releases during initial development, thresholds
increase as we get closer to the deployment date
Monitor Test Thresholds consistently, take quick action if they fall
below expectations
Meeting test thresholds is a pre-requisite for deployment
Meeting test thresholds is a pre-requisite for cutting branches
Lock The Line By Team Keep the Test Suites Green
Reminders to teams about high priority test failures
Locks out the teams that are not fixing test failures in a
timely fashion
Keeps the code base clean
Customer Trust - ProdTest Keep the Systems Green
Tests used for sanity testing in Production• Automatically initiated as soon as the deployment is complete
• Used to monitor critical systems using tests
Thank you!
Promoting Good DesignAnna MieritzSr. Manager, User Experience
/anna.mieritz
@smallestgiant
in/annamieritz
Everyone is a designer
Good design solves problems.
You solve problems every day.
You are a designer.
Good design is empathetic
Know your audience
Listen to others’ ideas
Stories sell solutions
Good design has a point of view
Know what problem you’re solving
Clarify & communicate your goals
Keep it simple, make it yours
Good design is persuasive
Get your ideas heard
Show alternatives
Ownership = success?
Don’t forget the pictures
People don’t like to read
If a simple chart, diagram, or wireframe conveys your
idea, use it.
Thank you!/anna.mieritz
@smallestgiant
in/annamieritz
/salesforce
@SFDCtechwomen
salesforce.com/tech
Recommended