scaling wix engineering

Post on 12-Apr-2017

2.290 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related