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

Neosperience road to serverless

Aletheia
September 18, 2020

Neosperience road to serverless

Explore Neosperience road from a monolithic architecture to serverless microservices

Aletheia

September 18, 2020
Tweet

More Decks by Aletheia

Other Decks in Technology

Transcript

  1. Luca Bianchi Who am I? github.com/aletheia https://it.linkedin.com/in/lucabianchipavia https://speakerdeck.com/aletheia Chief Technology

    Officer @ Neosperience Chief Technology Officer @ WizKey Serverless Meetup and ServerlessDays Italy co-organizer www.bianchiluca.com @bianchiluca
  2. Best in class customers Consumer Products, Retail & Distribution, Communications

    & Media Financial Services, Travel & Transportation, Government Automotive, Health, Industry & Services Fashion, Luxury & Beauty
  3. what makes every customer unique, them in 1:1 experiences and

    your customer base. Neosperience Cloud Understand Engage Grow
  4. How delivers digital experience innovation Increase customer engagement • Tailor

    storytelling and call-to-action • Grow the value of the customer • Suggest the most suitable products and services • Accelerate on-boarding and increase conversions • Generate recurring revenues, evolving loyalty into membership • Send personalized notifications • Delight the customer with gamification • Make digital experiences come alive in extended reality • Nudge advocacy 01 Listen to customers
 across channels 02 Deliver relevant
 experiences at scale 03 Transform prospects
 into customers for life Neosperience Cloud allows to create personalized, relevant experiences that strengthen 
 the relationship with the customer across touchpoints: web, app, platforms, point of sale The first digital experience platform to establish empathic relationships with customers that takes into account their uniqueness. A set of application modules condensing multi-disciplinary skills: data scientists, designers, software architects, cognitive, behavioral and social psychologists, to unleash your brand’s potential. Understand Engage Grow Neosperience Cloud
  5. Any complex platform implements a set of different requirements Different

    requirements • Deep Learning models • Integrating with 3rd party products • Different data types to persist • Need for speed and scalability • Team communication has a lot of friction: IT operation and dev teams
  6. Neosperience Cloud Cloud Understand Engage Grow Neosperience Cloud Services •

    Define Cloud Requirements • One endpoint serves multiple requests • It’s called the monolith
  7. NSP Cloud ( 2008 — 2012 ) The age of

    the monolith • Multi-region deploy of SpringMVC / Java on Apache Tomcat / JBoss • Shared RDS database managed by Hibernate • Autoscaling group for EC2 instances, Elastic IP Pros ✓ Everything within a single package ✓ Simple CI workflow ✓ Easy services coordination Cons - Lifecycle: one change in code requires a full release of Neosperience - Scalability / Costs: planning autoscale for different usages is not easy - Everything is a REST endpoint
  8. Neosperience Cloud Cloud Understand Engage Grow image video conversation relation

    interaction behavior Personalised Content Proximity Marketing Nudging & Gamification Image Personalised Commerce Personalised Advertising Customer Base Channels • Start separating concerns • Every component has the same technological stack • Define interfaces between components • It’s called microservices
  9. image video conversation relation interaction behavior Personalised Content Proximity Marketing

    Nudging & Gamification Image Personalised Commerce Personalised Advertising Customer Base Channels Customer 
 Generations Search Customer CI / CD
  10. NSP Cloud ( 2012 — 2015 ) Separation of concerns

    • Spring Boot/Cloud on Java Stack • Docker image for each service within NGINX • DynamoDB used as façade towards clients • RDS managed through Spring Data • Coordination service (Module Manager) Pros ✓ Smaller services, same technology for everything ✓ Immutable deployments: from CI to Docker registry ✓ Easy services coordination Cons - Still paying for idle (database, instances) - Manual provisioning of resources (through Beanstalk) - Everything is a REST endpoint
  11. What is serverless? “Serverless architecture replaces long-running virtual machines with

    ephemeral compute power that comes into existence on request and disappears immediately after use. Use of this architecture can mitigate some security concerns such as security patching and SSH access control, and can make much more efficient use of compute resources. These systems cost very little to operate and can have inbuilt scaling features.” — ThoughtWorks, 2016
  12. Serverless means no servers. No hardware to provision or manage

    No IT service team installing hardware But still it’s someone else server Server VM OS frameworks code your duty
  13. Serverless means no VMs. No under or over provisioning Never

    pay for idle No VM disaster recovery VM OS frameworks code your duty
  14. Serverless means no OS to config. OS is provisioned automatically

    Patches are installed by vendor Built-in best practices OS frameworks code your duty
  15. Serverless means no schedulers. Code is invoked by platform Language

    support is packed within runtime Analytics are provided out of the box frameworks code your duty
  16. Serverless means Servicefull. Patrick Debois - 2016 Server VM OS

    frameworks code your duty some one else duty
  17. image video conversation relation interaction behavior Personalised Content Proximity Marketing

    Nudging & Gamification Image Personalised Commerce Personalised Advertising Customer Base Channels Customer 
 Generations Search Customer CI / CD • Move to cloud native adoption • Script cloud resources • Each service has its own persistence • Migrate data models Neosperience Cloud
  18. NSP Cloud ( 2015 — now ) Here comes Serverless

    • Triggers to Lambda functions • Each service defines its own persistence • Communication is handled through Kinesis • Immutable deployments Pros ✓ Many small packages ✓ Extremely fast release cycles (smaller changes) ✓ No servers to manage (woot-woot) ✓ Scalability at its best / Cost reduction ✓ There is no difference between dev/stage/ production Cons - Required a shift in team perspective towards software development (there is no one size fits all architecture) - Expensive when utilization close to 100% - No support for dedicated hardware
  19. Some key points we had to address while moving to

    Serverless and microservices. The questions we faced How micro is a microservice? Decompose your system into domain specific computing units using Domain Driven Development (DDD) Do we want to reinvent the wheel? AWS provides a variety of managed services that can ease out software development, reducing time to market of orders of magnitude. Every time we had to implement a new functionality we asked ourselves whether there was an AWS service for that. How to deal with the outside world? Neosperience is a B2B2C ISV vendor. Our product can be used SaaS by companies or integrated through API. We need to rely on web standards REST and OAuth2 How about vendor lock-in? Serverless does not lock you in. Data does. But it’s the same with languages, tools or frameworks.
  20. Business Domain Support ✓17 different business domains ✓5-10 microservices each

    domain ✓a dozen of support services (monitoring, maintenance, OAuth2, Organization, multi-tenancy, etc.) Serverless ✓100% Serverless except for ML model training Lambda Functions ✓200+ functions AWS Resources ✓400+ AWS resources ✓managed through a 15+ CloudFormation stacks Adopting microservices can really make our life as ISV better, with a number of benefits Neosperience is a 100% Serverless cloud solution Time to market ✓improved from months to weeks ✓business features released every sprint ✓technical features released multiple times a week Costs ✓reduced by an order of magnitude Team ✓developers provision cloud resources ✓innovation in encouraged, failure impact is bounded ✓shifted from running after business requirements to waiting for business requirements Happiness Dev Team has full control on delivery Business Team has feature delivery
  21. “in the past were bigger companies that outcompeted smaller companies

    now are faster companies to outcompete slower companies” — Marc Benioff