Architecture

@valter_s_matos

linkedin.com/in/valtermatos

github.com/ValterSantosMatos

Director Engineering at 8 Securities

Full Stack dev with +7 years of exp
Doing Node.js, ReactNative, GraphQl

About Me :)

The materials or other information, including text, graphic images or other items, provided in this presentation ("Information") are the properties of 8 Securities Limited [“8SL”], and are protected by applicable copyright law. The Information may not be copied, transmitted, disseminated, sold, distributed, published, broadcasted, circulated, stored for subsequent use or commercially exploited in any manner without the prior written consent of 8SL.

The information in this presentation is for information purposes only. It is believed to be reliable, but we do not warrant its completeness, timeliness or accuracy. User accesses, uses, and relies upon such content at user’s own risk. The information is not intended as an offer or solicitation for the purchase of any stock, any other security or any financial instrument or to provide any investment service or investment advice in any jurisdiction.

Disclaimer

Requirements for the BE

- Support the HK / JP / Crypto companies*

- DEV and PROD environments

1 min demo !

  • NodeJs with Typescript
  • Mono-repo
  • Mental Model - Api/Model/Storage
  • GraphQl and Rest

Architecture

Small full stack team

Use ReactNative (before Ionic)

Why NodeJs with Typescript

Basically we can use the same tooling :)

Easy to debug multiple micro-services

Less code duplication

Easy to do and review PRs

Why Mono-Repo

Easy to code share

Why GraphQl and Rest

GraphQl for everything except...

 

Auth / Login*

Some operation calls

API/MODEL/STORAGE

API

MODELS

STORAGE

BackEnd

Heavily inspired by Dan Schafer: https://www.youtube.com/watch?v=etax3aEe2dA

API Responsibilities

API

  1. Build the micro-services with the correct env
  2. Build the storage and model
  3. Authenticates the viewer* from the request (we use JWT tokens)
  4. Call the model with the viewer and inputs

Does not* :
1. Have business logic

MODELS Responsibilities

MODELS

  1. Authorization
  2. Get/Set data from/to storage
  3. Process it (business logic)

Does not* :
1. Know where the request came

2. Know about authentication

3. Know about where the data is stored

STORAGE Responsibilities

STORAGE

  1. Knows the outside world
  2. Gets/Stores data
  3. Has 2 types: global and transient

Does not* :
1. Have any business logic

DEMO TIME

Thank you !

@valter_s_matos

linkedin.com/in/valtermatos

github.com/ValterSantosMatos

Architecture at 8 Securities

By Valter Santos Matos

Architecture at 8 Securities

  • 271