Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
One Product - Many Countries. How we scaled STYLIGHT to 10 countries
1. ONE PRODUCT – MANY COUNTRIES
How we scaled STYLIGHT to 10 countries
Slide 1 | STYLIGHT | Proud to bleed purple | @stylight
|
2. WHAT IS STYLIGHT ABOUT?
The best way to shop fashion
Slide 2 | STYLIGHT | Proud to bleed purple | @stylight
3. WHAT IS STYLIGHT ABOUT?
Internationalization
Slide 3 | STYLIGHT | Proud to bleed purple | @stylight
4. WHAT IS STYLIGHT ABOUT?
Some Stats
•
•
•
•
100 employee
10 countries (three more planed for this year)
5 years old
Headquarted in Munich
Slide 4 | STYLIGHT | Proud to bleed purple | @stylight
5. WHAT IS STYLIGHT ABOUT?
How do we earn money
Organic
Social Media
Performance
Marketing
Slide 5 | STYLIGHT | Proud to bleed purple | @stylight
cpc
7. INTERNATIONALIZATION
Isn’t a website global by default?
•
eCommerce is a local business
• Trends vary by country
• Each country has their own preferences with payment and logistics
•
We target the main stream
• The website needs to be in the local language – to foster trust
• A English-only website isn’t an option
Slide 7 | STYLIGHT | Proud to bleed purple | @stylight
8. INTERNATIONALIZATION
Our approach
Fundamental approach:
The very same codebase for all countries, but we localize content
• Language
• Products and ranking
• Editorial content
Why?
• Scales
• We can roll out features quickly to all countries
• Easy to maintain for engineering
• Little extra infrastructure needed when adding a new country
Slide 8 | STYLIGHT | Proud to bleed purple | @stylight
9. INTERNATIONALIZATION
Atomic Unit “site”
Triple of
• Language
• Country
• Domain
Advantages
• Adaptable per country, even though it
might be the same language
(Moin / Servus / Grützi)
• Supports multi-lingual countries
(fr.stylight.ch)
• SEO: improved targeting and risk
diversion
Slide 9 | STYLIGHT | Proud to bleed purple | @stylight
10. INTERNATIONALIZATION
The company needs to internationalized as well
•
•
With a single code base, country managers wouldn’t be able to request their-country-only
features
=> we do not have country managers
Functional organization
• Per functional team, there’s someone in charge of each site
• Ideal exchange of know-how within the team
• Teams have to sit together
Slide 10 | STYLIGHT | Proud to bleed purple | @stylight
11. INTERNATIONALIZATION
The company needs to internationalized as well
•
•
All employees shall be in a single office
Natives of each country are essential to build a local product
=> We relocate everyone to Munich, one awesome shared office
•
•
•
Email and VoIP emulate local presences
Single location simplifies creating and maintaining a good company culture
Works well for most countries, most issues around visa regulations
But there are limits to it
• Some countries require a local presence – be it for networking or being it hard to get
people to relocate
• Legal entity required to conduct business in some countries
Slide 11 | STYLIGHT | Proud to bleed purple | @stylight
12. INTERNATIONALIZATION
Which country to go to?
•
•
•
•
GDP is a good proxy within Europe
Market entry with existing partners
• Shops
• Advertising partners
• Payment providers
Source tax regulations
Google’s AdWords team has good insights when evaluating other countries
Slide 12 | STYLIGHT | Proud to bleed purple | @stylight
14. DEVELOPMENT PROCESS
How do we structure the engineering department
•
•
•
18 engineers / designers / DevOps
6 nationalities, all based in Munich
SCRUM, 3 teams
• Website
• Mobile
• Internal Tools
•
•
Website and mobile share the same product owner to keep the products in sync
We’re data driven – each feature has to prevail in an A/B test
Slide 14 | STYLIGHT | Proud to bleed purple | @stylight
15. DEVELOPMENT PROCESS
One country is in the lead
Code the feature
A/B test in DE
Localization
Global roll-out
Slide 15 | STYLIGHT | Proud to bleed purple | @stylight
17. LOCALIZATION
We adapt to each country
•
•
•
Define the tune for each country (i.e. what “to heart” means)
During development, create all content in English
Translate using a web-based tool (as of now Weblate)
• It’s not that easy to judge the quality of a translation, if you don’t speak that particular
language
• Translators rarely know where the translated string is located on the website
• Build process checks that all translations are in place
• Date and currency formatting can easily be handled via libraries
(more technical details in tomorrow’s talk)
Slide 17 | STYLIGHT | Proud to bleed purple | @stylight
18. LOCALIZATION
How do we maintain efficiency?
Engineering perspective
• Once central location where we maintain the list of available sites
• Aim at configs relying on this central location
• Fall back solution: generator scripts
•
•
•
•
•
•
During database design – think of places where the site reference could make sense later
Don’t do hacks. Seriously. It will hurt you at some point
Don’t put text in pictures
Chose one currency for evaluating A/B tests across countries
Add Google translate to all text fields with the internal tools
Slide 18 | STYLIGHT | Proud to bleed purple | @stylight
19. LOCALIZATION
How do we maintain efficiency?
Content perspective
• „One Country First“ – each campaign is being tested in one country first
• If successful, the content is centrally produced
• Countries can pull the content and then translate it
Ensures quality, avoids irrelevant content for countries
Products perspective
• Match products across countries
• Store as much as possible information globally, as little as necessary local.
Example: product category vs. product price
Slide 19 | STYLIGHT | Proud to bleed purple | @stylight
21. LAUNCH
2-3 months until go-live
•
•
•
•
5 phases until go-live
All parts of the company are somehow involved
• I.e. domain registry, tune of the language, launch event
We use asana as our task manager
• We copy the process template to launch new countries
• A single person is in charge, maintains the process
Stand-Up meetings before we move on to each new phase, examine the task list
• Do we have any blockers?
• Can we proceed to the next phase?
• Did we encounter any special cases for this country?
Slide 21 | STYLIGHT | Proud to bleed purple | @stylight
22. LAUNCH
Phase 0 - Preperations
•
•
•
•
Hire natives
Register domain
Apply for ssl certificate (EV certificates might take a while)
Research the legal situation
• Is our technology compliant for a given country
• Can local companies to business with our German entity
Slide 22 | STYLIGHT | Proud to bleed purple | @stylight
23. LAUNCH
Phase I – Enabling
•
•
•
Translate the category tree
Translate the brand book / fix tune
Acquire first partner shop
Slide 23 | STYLIGHT | Proud to bleed purple | @stylight
24. LAUNCH
Phase II - Engineering
•
•
•
•
Distribute configuration files
• Pixel
• Analytics
• SSL certificates
Generate site specific setups
• Install solr cores
• Generate default URLs
• Setup domain on loadbalancers
Content
• Duplicate CMS templates
• Create language property files
Enable domain in local DNS servers (enables local testing)
Slide 24 | STYLIGHT | Proud to bleed purple | @stylight
25. LAUNCH
Phase III - Content
•
•
•
Prepare marketing material
• SEO: titles & descriptions
• SEM: templates, keywords
• Display: banner
Translation
• Translate CMS content (About us, Magazin)
• Translate language files for the website / mobile apps
Have first partner shops integrated
Slide 25 | STYLIGHT | Proud to bleed purple | @stylight
26. LAUNCH
Phase IV – Go-Live
•
•
•
404-Check with a crawler
Switch DNS
Launch-Event
Slide 26 | STYLIGHT | Proud to bleed purple | @stylight
27. LAUNCH
Lessons learned
•
•
•
•
Internally have your DNS already point to your setup – enable internal testing
Launch with a count-down is hard
Start translating early and proceed with iterations.
For engineering: add multiple countries in parallel
Slide 27 | STYLIGHT | Proud to bleed purple | @stylight
28. STUPID MISTAKES WE MADE
Slide 28 | STYLIGHT | Proud to bleed purple | @stylight
29. STUPID MISTAKES WE MADE
And you can hopefully avoid
•
•
•
•
It’s not enough to have someone that speaks a certain language – he needs to be a native
from that country
• Sales period in France
• When do kids in Netherlands do get their presents?
You need to watch out when summing fields in the DB and currencies are involved
Do not handle upper / lower case in the language file if you have design issues in mind
Some languages are very different from your own
• 1 product, 100 products is only the start… some languages are way more complicated
here
• Word order „Nike Schuhe“ vs. „chaussures de Nike“
• There are special chars you ain’t have seen yet (i.e. in SEO)
Slide 29 | STYLIGHT | Proud to bleed purple | @stylight
30. STUPID MISTAKES WE MADE
And you can hopefully avoid
•
•
•
•
Make use of libraries for localization where ever possible
Check if your font supports all languages, i.e. Cyrillic
Be aware to what time zone you configure your tools and if they match
Seasons: if you have snow in the northern hemisphere, it might not be the same in
Australia…
Slide 30 | STYLIGHT | Proud to bleed purple | @stylight
31. THANKS FOR YOUR ATTENTION!
Slide 31 | STYLIGHT | Proud to bleed purple | @stylight
32. Sebastian Schuon
Co-Founder & CTO
sebastian.schuon@stylight.com
http://www.stylight.com/Engineering/
Slide 32 | STYLIGHT | Proud to bleed purple | @stylight