O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Overcoming the Challenges of Experimentation on a Service Oriented Architecture

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 27 Anúncio

Overcoming the Challenges of Experimentation on a Service Oriented Architecture

Baixar para ler offline

Growing from an early stage startup to a national leader in financial literacy is no small feat, and there are a ton of lessons that we have learned at Greenlight as we have grown. Long gone are the days where we would ship something and cross our fingers hoping that it makes some kind of impact on our customers. Now we’re in a world where we can learn ahead of time how much impact a feature will have on the business, before we even launch! In today’s conversation, we’ll discuss how we use Optimizely’s feature flags in our microservice architecture using Optimizely Agent while keeping user IDs and context synchronized.

This session will cover:
How we set up Optimizely Agent and use it in a kubernetes deployment
How we created a user-aliasing service
How we access Optimizely both on the frontend and in the backend services.
How to build a full stack feature
How to manage the rollout using Optimizely’s feature flags

Growing from an early stage startup to a national leader in financial literacy is no small feat, and there are a ton of lessons that we have learned at Greenlight as we have grown. Long gone are the days where we would ship something and cross our fingers hoping that it makes some kind of impact on our customers. Now we’re in a world where we can learn ahead of time how much impact a feature will have on the business, before we even launch! In today’s conversation, we’ll discuss how we use Optimizely’s feature flags in our microservice architecture using Optimizely Agent while keeping user IDs and context synchronized.

This session will cover:
How we set up Optimizely Agent and use it in a kubernetes deployment
How we created a user-aliasing service
How we access Optimizely both on the frontend and in the backend services.
How to build a full stack feature
How to manage the rollout using Optimizely’s feature flags

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Overcoming the Challenges of Experimentation on a Service Oriented Architecture (20)

Anúncio

Mais de Optimizely (20)

Mais recentes (20)

Anúncio

Overcoming the Challenges of Experimentation on a Service Oriented Architecture

  1. 1. Overcoming the Challenges of Experimentation on a Service Oriented Architecture Lupin Campos & Stephen Schwahn September 2020
  2. 2. Hi! We are Lupin and Steph :) Lupin Campos Director of Product Growth Tech Startup Founder (Funnely) Software Development Company Founder (Leanbirds & Condiminds) Former Venture Partner @ 500Startups Steph Schwahn Growth Team Tech Lead Tech Startup Founder (Crescendo) Mobile App Development Company Founder (Plutonium Apps) Georgia Tech Alumni, graduated with high honors.
  3. 3. So far: - 1 complete backend refactor - 2 frontend refactors - 36 Registration flow experiments (web + fullstack) - 40% Improvement on Registration Conversion Rate
  4. 4. 1Let’s Get Into Context A quick note on who we are, what we do, and the challenges that we found in the way.
  5. 5. This is our registration Process... Phone Number Role Verification Code Email & Password Child Info Personal Info Sync Bank Acc (Website)
  6. 6. ….And here are the services behind it. A simplified version, you don’t want to see the entire thing. Trust us.
  7. 7. 1Service Oriented Architectures with Optimizely (the wrong way)
  8. 8. Greenlight Financial Technology, Inc. SOA with Optimizely Fullstack on Frontend Web App Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend
  9. 9. Greenlight Financial Technology, Inc. SOA with Optimizely Fullstack on Frontend Web App Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend Variant: Variant 1 Variable: FlowId = 6
  10. 10. Greenlight Financial Technology, Inc. SOA with Optimizely Fullstack Web App Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend User_id: '1234_4321'
  11. 11. Greenlight Financial Technology, Inc. SOA with Optimizely Fullstack Web App Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend User_id: '1234_4321' 30s 40s 400s 200s 5s
  12. 12. Greenlight Financial Technology, Inc. SOA with Optimizely Fullstack Web App Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend User_id: '1234_4321' 30s 40s 400s 200s 5s
  13. 13. 1Service Oriented Architectures with Optimizely (our way)
  14. 14. Greenlight Financial Technology, Inc. Solution: SOA with Optimizely Agent Marketing Site Mobile App Edge Service 1 Edge Service 2 Nested Service 1 Nested Service 2 Helper Service 1 Backend Feature or Experiment Key: 'featureTest’ User_id: '1234_4321' Optimizely Agent 30s Web App
  15. 15. Greenlight Financial Technology, Inc. In Practice…. Client 1 Client 2 Client n . . . Ambassador (API Gateway) Pod (3-30 running based on traffic) Optimizely Service (Node.js) Optimizely Agentlocalhost:8080 Datafile sync (every 30s) localhost:3000 Exposes Optimizely Service on service port 80 Service grpc:80 pod-ip:3000 NodeJS Container Go Container (sidecar) Datafile pod-ip:3000pod-ip:3000
  16. 16. 1Let’s talk about “User ID” And how do we pass it everywhere!
  17. 17. Greenlight Financial Technology, Inc. Used for bucketing MurmurHash(“user_1234”) Rollout to 60%
  18. 18. Greenlight Financial Technology, Inc. Used for bucketing MurmurHash(“user_5678”) Rollout to 60%
  19. 19. Greenlight Financial Technology, Inc. What if we don’t have the user id? MurmurHash(“steph@greenlight.me”) ? Rollout to 60%
  20. 20. Greenlight Financial Technology, Inc. Introducing the Experimentation ID! MurmurHash(“exp_user_1234”) Rollout to 60%
  21. 21. 1Introducing Experimentation-ID Service How we keep a consistent user id regardless of context
  22. 22. Greenlight Financial Technology, Inc. Experimentation -ID service
  23. 23. Greenlight Financial Technology, Inc. Optimizely Service orchestrates
  24. 24. Greenlight Financial Technology, Inc. New API Contract! export type Context = UserIdContext | EmailContext | AnonymousIdContext | RegistrationIdContext | DeviceInfoContext export type EmailContext = { email: string } export type AnonymousIdContext = { anonymousId: string } export type DeviceInfoContext = { deviceOs: string, deviceToken: string } export type UserIdContext = { userId: string } export type RegistrationIdContext = { registrationId: string } export function isFeatureEnabled(featureKey: string, context: Context, attributes?: Attributes) export function getEnabledFeatures(context: Context, attributes?: Attributes) ...
  25. 25. 1Truly Full Stack Experimentation Through the ENTIRE user journey, from the marketing landing page, through registration services, and all the way to fundamental service primitives
  26. 26. Thank You greenlightcard.com #greenlight
  27. 27. Science of delivering it right

×