how in memory solutions assist with saas integrations
play

How In-Memory solutions assist with SaaS integrations Craig - PowerPoint PPT Presentation

How In-Memory solutions assist with SaaS integrations Craig Gresbrink Solutions Architect 24 Hour Fitness Intro Craig Gresbrink cgresbrink@24hourfit.com Solutions Architect 2 PROPRIETARY & CONFIDENTIAL Intro 24 Hour Fitness


  1. How In-Memory solutions assist with SaaS integrations Craig Gresbrink – Solutions Architect – 24 Hour Fitness

  2. Intro Craig Gresbrink cgresbrink@24hourfit.com Solutions Architect 2 PROPRIETARY & CONFIDENTIAL

  3. Intro – 24 Hour Fitness 24 Hour Fitness – 400+ clubs in 13 States - We are a leading fitness industry pioneer with nearly four million members in more than 400 clubs across the U.S. For more than 30 years, we’ve held fast to our mission of helping people improve their lives through fitness. 3 PROPRIETARY & CONFIDENTIAL

  4. What am I going to show you? How In-Memory solutions assist with SaaS integrations Agenda • 24 Hour Fitness’ historical architecture and some limitations • How in-memory solutions solved use cases at 24 Hour Fitness Issues we ran into • • How in-memory solutions might be leveraged in the future at 24 Hour Fitness Q &A • • Reception! 4 PROPRIETARY & CONFIDENTIAL

  5. 24 Hour Fitness - Historical architecture and caching User We cache in each Interface JVM only. In our setup there is no Load Balancer guarantee which JVM (round robin load balancing) a user will hit due to Member’s 1 st Member’s 2nd request round robin load request balancing (no sticky Service JVM JVM session). Cache member’s info Problem - 2nd request More cache misses as in this JVM only queries the database and doesn’t hit the cache we scale (JVMs) Member horizontally. Database 5 PROPRIETARY & CONFIDENTIAL

  6. Historical architecture and caching Use Case 1 - Why it won’t work for payments to a batch system Self-Service Online Payment UI Members, can pay their JVM JVM bill(s) online via our self-service customer portal. 1. Get balance 3. Pay some invoices What happens when they come back 2 hours after making Accounting Service their payment? JVM JVM We could’ve solved it 2. Query invoice Payment Service 5. Save receipt by querying the staging 4. Charge card balances tables as well as the base tables. It would Oracle Apps DB Staging be slow for all Base Tables 6. Batch every 6 customers. 99% haven’t Tables hours 6 made a previous PROPRIETARY & CONFIDENTIAL payment.

  7. A distributed cache solves our problem… Hazelcast to the rescue for use case 1. Self-Service Online Payment UI JVM JVM Now we can filter out paid invoices from the get 1. Get balance What if we implement 3. Pay some invoices balance a distributed cache response. such that cache consistency is Accounting Service retained across the JVM JVM JVMs so we know Hazelcas which invoices have t 2. Query invoice Payment Service 5. Save receipt already been paid? 4. Charge card balances Oracle Apps DB Staging Base Tables 6. Batch every 6 Tables hours 7 PROPRIETARY & CONFIDENTIAL

  8. A distributed cache solves another problem Eagerly cache, or Self-Service Online Payment UI pre-cache, invoice JVM JVM balances. Don’t wait ‘til they go to the 1. Get balance on 3. Pay some invoices make a payment authentication screen. A better Customer Experience (CX). Accounting Service JVM JVM Hazelcast But there is another 2. Query invoice problem, for some Payment Service 5. Save receipt balances if not in cache 4. Charge card customers this query takes 40 seconds. Oracle Apps DB Staging Base Tables 6. Batch every 6 Tables hours 8 PROPRIETARY & CONFIDENTIAL

  9. Current architecture and caching Clients/UIs/ Applications SaaS Services ESB JVM JVM JVM JVM Data Services JVM JVM Data Fabric (GridGain) Databases JVM JVM JVM JVM JVM JVM GG Node GG Node GG Node GG Node GG Node GG Node 9 PROPRIETARY & CONFIDENTIAL

  10. Nirvana with HR SaaS system Life is perfect! HR SaaS Services Kids’ Club 1. Get employee ESB 2. Get employee 10 PROPRIETARY & CONFIDENTIAL

  11. Use case 2: Vendor’s APIs are not 24/7, but our business is 24/7 
 Kids’ HR SaaS Club Services APIs are 5. Get not 24/7 employee 1. Change detection ESB • New hire • Update job/name 6. Get employee 2. Save Employee Data Services 3. Persist 7. Get employee 4. Cache HR Database Data Fabric (GridGain) 11 PROPRIETARY & CONFIDENTIAL

  12. Use case 2: Vendor’s APIs are not 24/7, but our business is 24/7 
 An improved solution? Kids’ Club UI 5. Get HR SaaS employee Services ESB 1. Change detection 6. Get employee 2. Save • New hire Employee Data • Update job/name Services 7. Get employee 3. Cache Data Fabric (GridGain) 4. Persist – write through HR Database 12 PROPRIETARY & CONFIDENTIAL

  13. Use case 2: Vendor’s APIs are not 24/7, but our business is 24/7 
 An improved, improved solution? Kids’ Club UI 5. Get HR SaaS employee Services ESB 1. Change detection 6. Get employee 2. Save • New hire Employee Data • Update job/name Services 7. Get employee 3. Cache Data Fabric (GridGain) 4. Native persistence 13 PROPRIETARY & CONFIDENTIAL

  14. Use case 3: A chatty real-time integration with CRUD-based APIs is too slow 
 Nirvana, finally! Cloud Lead Management Membership Services Sales Online 1. Purchase ESB 2. Create lead 14 PROPRIETARY & CONFIDENTIAL

  15. Use case 3: A chatty real-time integration with CRUD-based APIs is too slow 
 It’s not that easy! We have to make multiple calls to LMS to create a lead… Cloud Lead Management Membership Services Sales Online 1. Purchase 2. Get lead origin GUID ESB 3. Get state GUID Disclaimer: 4. Get club GUID Chatty APIs have been rectified 5. Create lead with GUIDs in future versions of the product. 15 PROPRIETARY & CONFIDENTIAL

  16. Use case 3: A chatty real-time integration with CRUD-based APIs is too slow 
 Data flow with GridGain Membership Sales Online Cloud Lead Management 1. Purchase Services ESB 5. Create lead with GUIDs 2. Get lead origin 3. CA GUID 4. Get club team GUID GUID CRM Entity Data Services Get GUID Data Fabric Eagerly cache LMS GUIDs on startup (GridGain) 16 PROPRIETARY & CONFIDENTIAL

  17. Use case 3: A chatty real-time integration with CRUD-based APIs is too slow 
 Lead Management System and GUID translations in Camunda BPMN 17 PROPRIETARY & CONFIDENTIAL

  18. Use case 3: A chatty real-time integration with CRUD-based APIs is too slow 
 Lead Management System and GUIDs translations – How fast is the cache? 18 PROPRIETARY & CONFIDENTIAL

  19. The road wasn’t all smooth! Challenges… 1. Marshalling and class loading What – Historically, the free version, Apache Ignite, didn’t have the GridGain Binary Marshaller. • Issue – Without the GridGain Binary Marshaller, our domain model classes (member, agreement etc..) would need to be loaded into • each node in the cluster, and this didn’t work when adding a node the cluster due to an issue in the version we were using. Solution - We created our own 24 Hour Custom Marshaller to serialize to standard java objects such that Ignite did not need our • domain model classes. Future – We want to move away from our 24 Hour Custom Marshaller and instead use the Binary Marshaller that is now part of Apache • Ignite. 2. Intermittent Node Connectivity What – We were setup with multicast and eagerly loading our employee data. • Issue – We experienced intermittent issues with nodes not returning employee data. • Why - Due to our network issues, nodes could not contact each other and thus nodes redistributed data. There was some data loss • depending which nodes disconnect from each other and which node a particular call went to. Solution - We switched to TCP/IP where each server knows about all the IP addresses of other servers in the cluster. • 3. Involve other groups/teams even though it is a software solution Networking /Infrastructure - Alluded to above, but additionally, we had timeouts that had the same affect of nodes exiting and • rejoining the cluster. Operations – Instrumentation (for us Dynatrace), cache validation(Visor UI or scripts and REST APIs), reloading the cache (scripts and • REST APIs). 19 PROPRIETARY & CONFIDENTIAL

  20. Future possibilities Previously shown future possibilities Write Through – HR Employee data with database to support legacy systems • Native Persistence – HR Employee data w/o database • Other ideas ID Generation vs. MySQL sequence – We have a vendor that has APIs where we are expected to provide their primary key IDs • It is a nightly batch with many rows/records so it would be nice/faster to use Ignite’s in-memory ID generation • Utilize the distributed nature of the Data Fabric to support CSA (Continuous Service Availability) – We currently have two data centers, and we are implementing an Active/Active solution across both data centers • When one data center is down for maintenance we’ll utilize the other data center – 20 PROPRIETARY & CONFIDENTIAL

  21. Future Possibility – Active/Active across our data centers 21 PROPRIETARY & CONFIDENTIAL

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend