May 12, 2018

[design] Serverless Architecture (FaaS)

Watching note for Serverless: the Future of Software Architecture • Peter Sbarski

cross reference:
Designing distributed system

Function as Service (execute custom code)
Backend as a Service (3rd-party services)

Adopt

  • Pipelines as code
  • APIs as a product
  • Decoupling secret management from source code
  • Hosting PII data in the EU
  • Legacy in a box
  • Lightweight architecture decision records
  • Progressive web applications
  • Prototyping with invision and sketch
  • Serverless architecture

e.g
AWS Lambda for compute
S3 for storage


Principles of Serverless Architecture

  • Use a code-execution compute service to run code on demand
  • Write single-purpose statelesss functions
  • Design push-based, event-driver pipelines
  • Create thicker, more powerful front ends
  • Embrace third party services

Use a code-execution compute service to run code on demand

Do not run on a server.
Focus on function, not application update/upgrade
(e.g patch Apache web server etc.)

Compute as backend:
API-Gateway is needed for REST API


Compute as glue:
Act as Pipeline


Write single-purpose statelesss functions

Pure function
Only 0 or 1 transformation

Design push-based, event-driver pipelines

One event triggers another event.
e.g




e.g.
Use websocket, push based.

Create thicker, more powerful front ends

traditional way:


Changed way:


Embrace third party services

Benefits

  • time to market
  • scale effortlessly (deal with spikes traffic)
  • disruptive cost model
  • no more server to manage
  • versatile
  • lower cost
  • less code
  • easy to scale and flexible

Cons

  • Not for everyone
  • Service level and customization
  • Vendor lock-in
  • Decentralization

Architecture

Go for microservices
Use API-Gateway
https://www.algolia.com/ as search service

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.