Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Traversing the last mile to the financially underserved with Python by Ted Pietrzak & Sam Kitonyi

Pycon ZA
October 07, 2016

Traversing the last mile to the financially underserved with Python by Ted Pietrzak & Sam Kitonyi

For the typical mobile data environment for smart phones there are many tools and frameworks available. However, Jumo's customer base typically doesn't have access to data or sophisticated smart phones. Instead, the customer journey is implemented using USSD with out-of-band communications by SMS. Building a USSD framework to run as part of our application rather than having to add the operational complexity of another service was an obvious solution. Python was a great fit for this work.

This talk will be a developer’s look at how Jumo implemented a highly flexible USSD/SMS system with Python, built tools within our system to manage the complexity of multiple products in multiple markets and scaled up the system to many tens of thousands of transactions per day. We will focus on how Python’s strengths fit well with the needs of text-based mobile messaging, what techniques are used to build it for scale, and how tooling was constructed to deal with the complexity of multiple user journeys.

Pycon ZA

October 07, 2016
Tweet

More Decks by Pycon ZA

Other Decks in Programming

Transcript

  1. J U M O I S A N A F

    R I C A N M O B I L E M O N E Y M A R K E T P L A C E , C R E A T I N G R E A L T I M E A C C E S S F O R P E O P L E A N D B U S I N E S S E S T O G R E A T F I N A N C I A L C H O I C E S T H R O U G H M O B I L E M O N E Y P L A T F O R M S .
  2. W E A R E N O T A B

    A N K W E R E LY O N M U T U A L T R U S T W I T H O U R C U S T O M E R S , E M P L O Y E E S A N D P A R T N E R S W E U S E S O P H I S T I C A T E D P R E D I C T I V E A N A LY T I C S T O M A N A G E C R E D I T R I S K W E H A V E B U I LT O U R O W N T E C H N O L O G Y P L A T F O R M I N T E G R A T E D W I T H O U R P A R T N E R S T H E A P P L I C A T I O N P R O C E S S I S O N LY O N - M O B I L E W E L E N D O F F O U R O W N B A L A N C E S H E E T A T F I R S T
  3. W H Y P Y T H O N ?

    E A S E O F D E V E L O P M E N T W H E N T R Y I N G T O D I S R U P T T H E S T A T U S Q U O , T H E R E I S T H E P O S S I B I L I T Y O F F A I L U R E , I N O P T I M I Z I N G F O R C H E A P I T E R A T I O N , W E O P T I M I Z E F O R R A P I D D E V E L O P M E N T . C L O U D R E A D I N E S S E L A S T I C B E A N S T A L K O F F E R S U S L O W C O S T S A N D A U T O M A T I C S C A L I N G A S O U R T R A N S A C T I O N A L V O L U M E G R O W S . B A T T E R I E S I N C L U D E D W E D O N ’ T H A V E T O R E - I N V E N T T H E W H E E L , P Y T H O N P R O V I D E S M A N Y O F T H E T O O L S W E N E E D T O B U I L D O N A S W E L L A S V E R Y G O O D P E R F O R M A N C E .
  4. D j a n g o U SS D SPECIALIZED

    LIBRARIES • I n - h o u s e f r a m e w o r k t o i n t e r a c t w i t h U S S D G a t e w a y s a n d b u i l d c u s t o m e r j o u r n e y s • F l e x i b i l i t y t o s e r v e s e s s i o n s f r o m a v a r i e t y o f U S S D g a t e w a y s D j a n g o U SS D S i m u l a t o r • A l l o w J U M O t o i n t e r n a l l y t e s t c u s t o m e r j o u r n e y. U s e f u l w h e n m o c k i n g a n d w h e n t r o u b l e s h o o t i n g l i v e p r o d u c t
  5. CUSTOMER JOURNEY IN CODE Green Code Screens Validators Yellow Code

    Session management Metrics Red Code Metaprogramming / DSL
  6. • E la stic B ea n sta lk •

    Re la tion al D ata ba se Se rv i ce (R DS ) TECH STACK: WHERE IT RUNS C LOUDAM QP (Ra bbitM Q -As -a-S er v ic e)
  7. A u t o m a t e d t

    e s t c l i e n t TESTING
  8. M o c k i n g a n d

    s i m u l a t i o n o f a c u s t o m e r j o u r n e y – U SS D s i m u l a t o r TESTING
  9. - S t r u c t u r e

    d l o g g i n g i n ke y - v a l u e f o r m a t - T i m e s t a m p e d e v e n t s - E x a m p l e : MONITORING AND LOGGING 2016­10­06 09:15:48,116 DEBUG module=core, process_id=20329, environment=staging, phone_number=250725320982, input=["4"], product="consumer", session_id="120273­simulator­staging", partner="tigo­rw”, event="gateway_request"
  10. FORWARD LOOKING TOPICS • Namespaces • one honking great idea

    – let’s do more of those! • Ditch Django session management • Improve i18n – language, translations • Dynamic customer journey manager (drag & drop)