Scaling Wix engineering
-
Upload
aviran-mordo -
Category
Technology
-
view
2.288 -
download
0
Transcript of Scaling Wix engineering
Scaling Engineeringby Hacking Conway's Law
•www.linkedin.com/in/aviran @aviranm http://www.aviransplace.com
Aviran MordoHead of
@aviranm
Wix In Numbers 86M registered users from 190 countries
3 Data centers + 2 Clouds (Google, Amazon)
~1200 people work at Wix Of which ~ 400 in R&D
http://www.calcalist.co.il/local/articles/0,7340,L-3660020,00.html
The most searched work place (in Israel) by software engineers - 2015 Google search survey
@aviranm
From 100 to 1000 in 5 Years
http://indy100.independent.co.uk/image/19112-1y4vb9d.png@aviranm
http://p1.pichost.me/i/11/1339236.jpg
In the Beginning
Functional Teams
Client Team
Server Team
TL
TM
TL
TM
TM
TM
TM
TM
Products: 3People: ~100
@aviranm
Shifting Resources
@aviranm
Functionalunit model
Businessunit model
Structures for Scalability
There are 2 key common structures in the industry
@aviranm
Functional Model
Disadvantages Lack of product ownership Lack of product level expertise Hard to predict and plan product
roadmap Cross-function communication is hard Less focus on delivery and time to
market
Client Team
Server Team
TL
TM
TL
TM
TM
TM
TM
TM
@aviranm
Disadvantages Resource and work duplication Architecture alignment is hard Technology knowledge sharing is hard Limited opportunity for professional
development Product integration is hard
Project ProjectProject
TL TL
TM
TM
TM
TM
TL
TM
TM
Business Unit Model
Creates Silos@aviranm
Our Assumptions
There is no perfect model
It depends on the company’s current challenges, life cycle phase and culture
Every model should be tuned constantly and evolve with the company
@aviranm
@aviranm
Wix’s Gangs & Guilds Model
Products: <10People: ~400
Client Team
Server Team
TL
TM
TL
TM
TM
TM
TM
TM
Gang GangGang
Wix’s Gangs & Guilds Model
Products: <10People: ~400
A Guild is a group of people that share expertise, knowledge, tools, code and practice
Guild
Guild
GMGL
GL GM
TL TL
TM
TM
TM
TM
TL
TM
TM
A Gang is a group of people that work on related products, composed of all required resources from different disciplines.
Independence of the product Gang Technical power of the Guild Healthy balance between product and
tech Product features and technical equal in
priorityWhat
Gangs & Guilds – Why?
No Silos
Gang GangGang
Guild
Guild
GMGL
GL GM
TL TL
TM
TM
TM
TM
TL
TM
TM
How
Wix’s Gangs & Guilds Model
Products: <10People: ~400
A Guild is a group of people that share expertise, knowledge, tools, code and practice
A Gang is a group of people that work on related products, composed of all required resources from different disciplines.
Gang GangGang
Guild
Guild
GMGL
GL GM
TL TL
TM
TM
TM
TM
TL
TM
TM
Team Lead / Product
Team Members
Guild Lead
Guild Masters
Guild Core Teams
Guild’s Role
Recruitment (hiring and firing) Assignment to product teams Setting the professional guidelines and methodologies. Training. Setting compensation. Professional development / career.
@aviranm
Next Step Even Bigger
Products: >10People: >800
Managing Large Product Segments
Guild
Guild
Gang GangGang Gang
Products: >10People: >800
Wix’s Company Model
Company focus on large segment Has all the resources it needs to be
independent People within the company are
aligned with the Guilds
Company
CEO VP R&D
Guild
Guild
Company
Gang GangGang
CEO CTO
Gang
Product Product
Company mgr Tech mgr
Products: >10People: >800
SILOS
Wix’s Company ModelEach head of company reports to a chairman on the management board.
All products share the same infrastructure
Company
Guild
Guild
Company
Gang GangGang Gang
Product Product
Cross-Engineering Teams
Guild for CompaniesA helping hand
Company
Guild
Guild
Company
Gang GangGang Gang
Product Product
Cross-Engineering Teams
Guild’s Additional Roles
Align between “Companies” Support the engineers working in
“Companies” Review and guidance Develop shared infrastructure Improving development velocity Temporary help “Companies” in need
with additional resources from the Guild
@aviranm
How?
Architecture
Remember Conway’s Law
“Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”Conway, Melvin
How many Engineers can Work on a Single Project ?
http://cdn.wp.sunmotors.co.uk/get/2014/03/cars.28.620x413.jpg
Microservices = Engineering Scale
https://upload.wikimedia.org/wikipedia/commons/6/67/Broken_glass.jpg
Minimize Architectural Dependencies Independent product lifecycle Loose coupling Independent scale Grow / build teams as needed
@aviranm
Polyglotic System?
Limit your Stack = Sharing Knowledge Code reuse Cross cutting concerns (session, security, auditing, testing,
logging…) Faster system evolution Development velocity
@aviranm
Over 200 microservices; Deploying ~100/Day
Microservices = Small TeamsSmall Teams = Small Rooms
@aviranm
Culture that ROQS
ROQS
esponsibility
wnership
uality
haring@aviranm
What Is The Common Denominator? Product manager Project manager QA Operations DBA
Develperscan dothese jobs
@aviranm
Developer
Product
QA
ManagementOperation
BI
Dev Centric Culture – Involve The Developer Product definition (with
product) Development
Testing (with QA engineers) Deployment / Rollback
(with operations) Monitoring / BI (with BI team) DevOps – to enable
deployment and rollback, fully automated
Support Circle
@aviranm
Production State Changes Every 5 min
@aviranm
@aviranm
Quality = Better Engineers
Better Engineers = Professional Growth
Professional Growth = Investment in People / Training
Enter the Guilds
Guild Day
Engineers work 4 days with their company Thursday is Guild day. Developers conduct quality enhancing activities with
the Guild.
@aviranm
Guild Day Goals Builds cross-team relationships Shares knowledge Assimilate the culture Lesson learned Continuous improvement Promotes innovation Professional development
@aviranm
Guild Day Schedule 10:00-11:00 Open Space11:00-11:15 Break11:15-11:40 Project spotlight11:45-13:00 Tech talk or Workshop
@aviranm
Open Space
Post Mortem• Any production downtime is investigated• Understand the cause• Lesson learned• AI to avoid same issue in the future• Findings are published in dapulse (public forum)
Guild Week – Games of GangsOne week each quarterPair programming with a person from another company
Enhancing infrastructureBuilding toolsHelping companiesWork on open source
@aviranm
Goal #1 – Improve engineering skills and quality
Transparency
@aviranm
Communication Channels
To company wide activities To knowledge centers To key personnel
@aviranm
Growing New Teams
It is All About the People@aviranm
Do Not Compromise on Hiring
Hire only good people Fit the culture Excellent technically
Candidates can be dropped By anyone At any time
If there is any doubt, then there is no doubt
@aviranm
Seeds new Teams with Ambassadors Train “ambassadors” that practice dev-centric culture
from the Guild Seed new teams with at least one dev-centric
ambassador to assimilate new employees. Beware of hiring more people than you can train /
assimilate successfully into your culture
@aviranm
Hiring Team Leads can Mess Up Your Culture Do not hire people directly into team lead position Hire potential team leads Only after a person can be a dev-centric ambassador
she can become TL
@aviranm
Elements to a Healthy Growth
@aviranm
Transparency
Quality
Trust & CollaborationIndependence
Growth
@aviranm
Don’t leave quality and velocity to chance, create a system that balances quality, growth and velocity
Guilds Companies
http://www.psdgraphics.com/file/gold-scales.jpg
FastFeatures
BetterQuality
Read some more:http://goo.gl/c3WLsz - Building engineering culturehttp://goo.gl/fGUSZe - Building a Guild
What happens if we invest in developing our people and they leave us?
“CFO asks CEO:
CEO:
“What happened if we don’t and they stay?“
“
@aviranm
Q&Ahttp://goo.gl/F8yWa3
http://engineering.wix.com@WixEng
Aviran MordoHead of
•www.linkedin.com/in/aviran @aviranm http://www.aviransplace.com