SlideShare a Scribd company logo
1 of 71
Building Distributed
Systems
On the Shoulders of Giants
Dasith Wijes
I am here because
I have a love hate relationship
with distributed systems.
HELLO
!I AM
Dasith Wijes
@dasiths
dasith.me
Modern technology landscape
Unique challenges of distributed
systems
Agenda
Azure Service Fabric
Distributed Application Runtime
(Dapr)Istio Service Mesh
Knative
Recap and Conclusion
Unique
Challenges of
Distributed Systems
var myService = new MyService();
var result = myService.GetProductPrice(“abc123”);
System running in single process
var myService = new MyService();
var result = myService.GetProductPrice(“abc123”);
System running in single process
var myService = new MyService();
var result = myService.GetProductPrice(“abc123”);
// var myService = new MyService();
var myRestService = new MyRestService(“192.168.x.x”);
var result = myRestService.GetProductPrice(“abc123”);
System running distributed across multiple nodes
var myRestService = new MyRestService(“192.168.x.x”);
var result = myRestService.GetProductPrice(“abc123”);
System running distributed across multiple nodes
var myRestService = new MyRestService(“192.168.x.x”);
var result = myRestService.GetProductPrice(“abc123”);
System running distributed across multiple nodes
var myRestService = new MyRestService(“192.168.x.x”);
var result = myRestService.GetProductPrice(“abc123”);
•Network is reliable
•Latency is zero
•Bandwidth is infinite
•Connection is secure
•Network is homogeneous
Did you assume?
•Service discovery
•Load balancing
•Fault tolerance and recovery
•Security
•Scalability
•Telemetry
What about…
““First Law of Distributed Object Design:
don't distribute your objects"
Looking at the
Modern Landscape
Istio Service Mesh
Pick Your Poison
Azure Service Fabric
Distributed Application Runtime (Dapr)
Knative
START
FROM
BUILDING
BLOCKS
Azure Service Fabric
Distributed systems platform
that makes it easy to package,
deploy, and manage scalable
and reliable microservices
and containers.
Azure Service Fabric
Distributed systems platform
that makes it easy to package,
deploy, and manage scalable
and reliable microservices
and containers.
Azure Service Fabric
Cloud On Premise Developer
Machine
Environments
Azure Service Fabric
Environments
Azure Service Fabric
• Reliable Services
• Stateful & Stateless
• Reliable Actors
• Persisted state options
• Guest Executables
• Containers
• ASP.NET Core
Programming Models
Azure Service Fabric
public interface IHelloWorld : IActor
{
Task<string> GetHelloWorldAsync();
}
Actor Example – C#
Interface
Azure Service Fabric
[StatePersistence(StatePersistence.Persisted)]
internal class HelloWorld : Actor, IHelloWorld
{
public HelloWorld(ActorService actorService, ActorId actorId)
: base(actorService, actorId)
{
}
public Task<string> GetHelloWorldAsync()
{
return Task.FromResult("Hello from my reliable actor!");
}
}
Actor Example – C#
Implementation
Azure Service Fabric
class Program
{
static void Main(string[] args)
{
IHelloWorld actor = ActorProxy.Create<IHelloWorld>(
ActorId.CreateRandom(),
new Uri("fabric:/MyApplication/HelloWorldActorService"));
Task<string> retval = actor.GetHelloWorldAsync();
Console.Write(retval.Result);
Console.ReadLine();
}
}
Actor Invocation – C#
Sample
Azure Service Fabric
class Program
{
static void Main(string[] args)
{
IHelloWorld actor = ActorProxy.Create<IHelloWorld>(
ActorId.CreateRandom(),
new Uri("fabric:/MyApplication/HelloWorldActorService"));
Task<string> retval = actor.GetHelloWorldAsync();
Console.Write(retval.Result);
Console.ReadLine();
}
}
Actor Invocation – C#
Sample
Azure Service Fabric
class Program
{
static void Main(string[] args)
{
IHelloWorld actor = ActorProxy.Create<IHelloWorld>(
ActorId.CreateRandom(),
new Uri("fabric:/MyApplication/HelloWorldActorService"));
Task<string> retval = actor.GetHelloWorldAsync();
Console.Write(retval.Result);
Console.ReadLine();
}
}
Actor Invocation – C#
Sample
• Service discovery and
routing
• Availability
• Reliability
• Fault Tolerance
• Auto scaling
OPINIONATED
RUNTIME
A
MORE
Distributed Application Runtime (Dapr)
Portable, event-driven
runtime that makes it easy
for developers to build
resilient, microservice
stateless and stateful
applications that run on the
cloud and edge and embraces
the diversity of languages
and developer frameworks.
Distributed Application Runtime (Dapr)
Building
Blocks
https://github.com/dapr/docs/tree/master/concepts
Distributed Application Runtime (Dapr)
Component
s
https://github.com/dapr/docs/tree/master/concepts
Distributed Application Runtime (Dapr)
• Service discovery
• State
• Pub/sub
• Bindings
• Middleware
• Secret stores
• Tracing exporters
Component
s
https://github.com/dapr/docs/tree/master/concepts
Distributed Application Runtime (Dapr)
1 or
more
• Service discovery
• State
• Pub/sub
• Bindings
• Middleware
• Secret stores
• Tracing exporters
Some Pub/Sub
Implementations
• Redis Streams
• Kafka
• Azure Service Bus
• RabbitMQ
• Azure Event Hubs
• GCP Pub/Sub
• MQTT
https://github.com/dapr/components-
Distributed Application Runtime (Dapr)
Pluggable
Implementations
• Service discovery
• State
• Pub/sub
• Bindings
• Middleware
• Secret stores
• Tracing exporters
Picking a Component
Implementation
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: messagebus
namespace: default
spec:
type: pubsub.redis
metadata:
- name: redisHost
value: <HOST>
- name: redisPassword
value: <PASSWORD>
- name: enableTLS
value: <bool>
https://github.com/dapr/components-
Distributed Application Runtime (Dapr)
pubsub.yaml (Redis
Streams )
• Service discovery
• State
• Pub/sub
• Bindings
• Middleware
• Secret stores
• Tracing exporters
Pub/Sub Interface
type PubSub interface {
Init(metadata Metadata) error
Publish(req *PublishRequest) error
Subscribe(req SubscribeRequest,
handler func(msg *NewMessage) error) error
}
https://github.com/dapr/components-
Distributed Application Runtime (Dapr)
Endpoints For Building
Blocks
Building Block Endpoint
Service-to-Service Invocation /v1.0/invoke
State Management /v1.0/state
Publish and Subscribe /v1.0/publish + /v1.0/subscribe
Resource Bindings /v1.0/bindings
Actors /v1.0/actors
Secrets /v1.0/secrets
https://github.com/dapr/docs/tree/master/concepts
Distributed Application Runtime (Dapr)
Example – Node.js
App
app.post('/neworder', (req, res) => {
const data = req.body.data;
const orderId = data.orderId;
console.log("Got a new order! Order ID: " + orderId);
//todo: persist order
res.sendStatus(200);
});
Distributed Application Runtime (Dapr)
Example – Node.js
App
app.post('/neworder', (req, res) => {
const data = req.body.data;
const orderId = data.orderId;
console.log("Got a new order! Order ID: " + orderId);
//todo: persist order
res.sendStatus(200);
});
dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js
Distributed Application Runtime (Dapr)
Service Invocation –
Endpoint
Distributed Application Runtime (Dapr)
Service Invocation –
Endpoint
http://localhost:3500/v1.0/invoke/nodeapp/method/neworder
Distributed Application Runtime (Dapr)
Cont. Invocation of Node.js App from a Python
Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500)
dapr_url =
"http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port)
n = 0
while True:
n += 1
message = {"data": {"orderId": n}}
try:
response = requests.post(dapr_url, json=message)
except Exception as e:
print(e)
time.sleep(1)
Distributed Application Runtime (Dapr)
Cont. Invocation of Node.js App from a Python
Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500)
dapr_url =
"http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port)
n = 0
while True:
n += 1
message = {"data": {"orderId": n}}
try:
response = requests.post(dapr_url, json=message)
except Exception as e:
print(e)
time.sleep(1)
Distributed Application Runtime (Dapr)
Cont. Invocation of Node.js App from a Python
Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500)
dapr_url =
"http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port)
n = 0
while True:
n += 1
message = {"data": {"orderId": n}}
try:
response = requests.post(dapr_url, json=message)
except Exception as e:
print(e)
time.sleep(1)
Distributed Application Runtime (Dapr)
• Service discovery and
routing
• mTLS
• Retry logic
• Tracing
Side-Car Process
https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-dapr-open-source-project-build-
Distributed Application Runtime (Dapr)
Side-Car Container in Kubernetes
Pod
https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-dapr-open-source-project-build-
Distributed Application Runtime (Dapr)
Dapr on
Kubernetes
https://itnext.io/simplifying-microservices-on-kubernetes-with-microsofts-dapr-distributed-application-runtime-9aece5723484
Dapr control-plane
components are deployed as
Kubernetes deployments.
Dapr can be easily initialized
on the Kubernetes cluster
using Dapr-CLI or can be
deployed using Helm.
• dapr-operator: Watches for creation,
deletion and updating events of services.
• dapr-sidecar-injector: Injects a Dapr sidecar
to all the services.
• dapr-placement: Connects all the Dapr
sidecars and adds the IP address to route
the communication.
Distributed Application Runtime (Dapr)
https://github.com/dapr/docs/tree/master/overview
CONTAINERS
?
ALREADY
HAVE
Istio Service Mesh to
Connect, secure, control, and
observe services.
Istio provides behavioural
insights and operational
control over the service
mesh as a whole, offering a
complete solution to satisfy
the diverse requirements of
microservice applications.
Istio Service
Mesh
https://tud-ccc.github.io/yauhau-doc/
Why Do We Need a Service
Mesh?
Istio Service
MeshA
Primer
https://istio.io/latest/docs/ops/deployment/architecture/
• Istiod provides service
discovery,
configuration and
certificate
management.
• Envoy proxies are
deployed as sidecars
to services, logically
augmenting the
services with Envoy’s
many built-in features.
• Developers can focus on adding business value, instead of
connecting services.
• Apps are more resilient to downtime, since a service mesh can
reroute requests away from failed services.
• Performance metrics can suggest ways to optimize communication
Istio Service
MeshElevator
Pitch
https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh
Istio Service
MeshElevator
Pitch
var myRestService = new MyRestService(“svc1.ns.local”);
var result = myRestService.GetProductPrice(“abc123”);
Istio Service
MeshElevator
Pitch
var myRestService = new MyRestService(“svc1.ns.local”);
var result = myRestService.GetProductPrice(“abc123”);
Istio Service
MeshElevator
Pitch
var myRestService = new MyRestService(“svc1.ns.local”);
var result = myRestService.GetProductPrice(“abc123”);
• Dynamic service
discovery
• Load balancing
• TLS termination
• HTTP/2 and gRPC
WHAT
ABOUT
SERVERLESS?
Kubernetes-based platform
to deploy and manage
modern serverless
workloads.
Knative components builds
on top of Kubernetes,
abstracting away the
complex details and
enabling developers to focus
on what matters.
Knative
Knative
• Focused API with higher level abstractions for common app
use-cases.
• Stand up a scalable, secure, stateless service in seconds.
• Knative is portable: run it anywhere Kubernetes runs, never
worry about vendor lock-in.
• Idiomatic developer experience, supporting common patterns
such as GitOps, DockerOps, ManualOps.
https://knative.dev/
Elevator
Pitch
Knative
apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
name: helloworld-go # The name of the app
namespace: default # The namespace the app will use
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go # Reference to the app image
env:
- name: TARGET # The environment variable printed out by the sample app
value: "Go Sample v1"
Sample Configuration -
service.yaml
Knative
apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
name: helloworld-go # The name of the app
namespace: default # The namespace the app will use
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go # Reference to the app image
env:
- name: TARGET # The environment variable printed out by the sample app
value: "Go Sample v1"
Sample Configuration -
service.yaml
Knative
apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
name: helloworld-go # The name of the app
namespace: default # The namespace the app will use
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go # Reference to the app image
env:
- name: TARGET # The environment variable printed out by the sample app
value: "Go Sample v1"
Sample Configuration -
service.yaml
Knative
Sample - Deploy
# To Deploy services.yaml
kubectl apply --filename service.yaml
Knative
Sample - Deploy
# To Deploy services.yaml
kubectl apply --filename service.yaml
# To Invoke
curl http://helloworld-go.default.svc.cluster.local
Knative
Sample - Deploy
# To Deploy services.yaml
kubectl apply --filename service.yaml
# To Invoke
curl http://helloworld-go.default.svc.cluster.local
Hello World: Go Sample v1!
Knative
Sample - Deploy
# To Deploy services.yaml
kubectl apply --filename service.yaml
# To Invoke
curl http://helloworld-go.default.svc.cluster.local
Hello World: Go Sample v1!
• Routing
• Load balancing
• TLS termination
• Blue/green
deployments
Picking
a
Winner
Service Fabric Dapr Istio Knative
• Distributed
systems platform.
• Any cloud, any
vendor.
• Orchestrate
containers or
executables.
• Windows or Linux
clusters.*
• Small community
• Opinionated
programming
model.
• Support for many
languages and
frameworks.
• Extensible
components.
• Runs as side-car.
• Native support for
• Service mesh with
focus on routing.
• Doesn’t enforce
programming
model.
• Fits nicely with
existing container
workloads.
• Serverless model.
• Developer
productivity.
• Higher level
abstraction of K8s.
• Easily configurable
smart scaling.
Recap
STAND ON
THE
SHOULDE
RS OF
GIANTSWhy reinvent the wheel?
Any questions?
THANKS!
@dasiths
dasith.me
https://www.nationalgeographic.com/travel/destinations
/asia/sri-lanka/
Presentation template designed by powerpointify.com
Special thanks to all people who made and shared these awesome
resources for free:
CREDIT
S
Photographs by unsplash.com
Free Fonts used:
https://www.fontsquirrel.com/fonts/oswald

More Related Content

What's hot

Django Celery - A distributed task queue
Django Celery - A distributed task queueDjango Celery - A distributed task queue
Django Celery - A distributed task queueAlex Eftimie
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
 
What’s new in ECMAScript 6.0
What’s new in ECMAScript 6.0What’s new in ECMAScript 6.0
What’s new in ECMAScript 6.0Eyal Vardi
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with JasmineLeon van der Grient
 
Celery - A Distributed Task Queue
Celery - A Distributed Task QueueCelery - A Distributed Task Queue
Celery - A Distributed Task QueueDuy Do
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIDanilo Poccia
 
Advanced akka features
Advanced akka featuresAdvanced akka features
Advanced akka featuresGrzegorz Duda
 
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012Amazon Web Services
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & CeleryEuropython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & CeleryMauro Rocco
 
Spring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaitonSpring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaitontomi vanek
 
Ten useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesTen useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesAnkit Rastogi
 
Deep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interfaceDeep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interfaceJohn Varghese
 
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram VaswaniHigh Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswanivvaswani
 
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2KZepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2KThomas Fuchs
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance IssuesOdoo
 
JavaScript and the AST
JavaScript and the ASTJavaScript and the AST
JavaScript and the ASTJarrod Overson
 

What's hot (20)

Django Celery - A distributed task queue
Django Celery - A distributed task queueDjango Celery - A distributed task queue
Django Celery - A distributed task queue
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
What’s new in ECMAScript 6.0
What’s new in ECMAScript 6.0What’s new in ECMAScript 6.0
What’s new in ECMAScript 6.0
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with Jasmine
 
Play vs Rails
Play vs RailsPlay vs Rails
Play vs Rails
 
Celery - A Distributed Task Queue
Celery - A Distributed Task QueueCelery - A Distributed Task Queue
Celery - A Distributed Task Queue
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLI
 
Advanced akka features
Advanced akka featuresAdvanced akka features
Advanced akka features
 
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & CeleryEuropython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & Celery
 
Spring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaitonSpring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaiton
 
Ten useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesTen useful JavaScript tips & best practices
Ten useful JavaScript tips & best practices
 
XQuery Design Patterns
XQuery Design PatternsXQuery Design Patterns
XQuery Design Patterns
 
Deep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interfaceDeep Dive into AWS CLI - the command line interface
Deep Dive into AWS CLI - the command line interface
 
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram VaswaniHigh Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
 
Requery overview
Requery overviewRequery overview
Requery overview
 
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2KZepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance Issues
 
JavaScript and the AST
JavaScript and the ASTJavaScript and the AST
JavaScript and the AST
 

Similar to apidays LIVE Australia - Building distributed systems on the shoulders of giants by Dasith Wijesiriwardena

Node js introduction
Node js introductionNode js introduction
Node js introductionAlex Su
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSuzquiano
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.jsFDConf
 
Vert.x - Reactive & Distributed [Devoxx version]
Vert.x - Reactive & Distributed [Devoxx version]Vert.x - Reactive & Distributed [Devoxx version]
Vert.x - Reactive & Distributed [Devoxx version]Orkhan Gasimov
 
NodeJS: the good parts? A skeptic’s view (jax jax2013)
NodeJS: the good parts? A skeptic’s view (jax jax2013)NodeJS: the good parts? A skeptic’s view (jax jax2013)
NodeJS: the good parts? A skeptic’s view (jax jax2013)Chris Richardson
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
An Application Centric Approach to Devops
An Application Centric Approach to DevopsAn Application Centric Approach to Devops
An Application Centric Approach to Devopsdfilppi
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsMykyta Protsenko
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js frameworkBen Lin
 
Programming proxies to do what we need so we don't have to talk to the networ...
Programming proxies to do what we need so we don't have to talk to the networ...Programming proxies to do what we need so we don't have to talk to the networ...
Programming proxies to do what we need so we don't have to talk to the networ...Lori MacVittie
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerNic Raboy
 
Microservice Come in Systems
Microservice Come in SystemsMicroservice Come in Systems
Microservice Come in SystemsMarkus Eisele
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsFrancois Zaninotto
 
Unit Testing Express and Koa Middleware in ES2015
Unit Testing Express and Koa Middleware in ES2015Unit Testing Express and Koa Middleware in ES2015
Unit Testing Express and Koa Middleware in ES2015Morris Singer
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsMarkus Eisele
 
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...OpenCredo
 
Future Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETFuture Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETGianluca Carucci
 
Typed? Dynamic? Both! Cross-platform DSLs in C#
Typed? Dynamic? Both! Cross-platform DSLs in C#Typed? Dynamic? Both! Cross-platform DSLs in C#
Typed? Dynamic? Both! Cross-platform DSLs in C#Vagif Abilov
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 

Similar to apidays LIVE Australia - Building distributed systems on the shoulders of giants by Dasith Wijesiriwardena (20)

Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.js
 
Vert.x - Reactive & Distributed [Devoxx version]
Vert.x - Reactive & Distributed [Devoxx version]Vert.x - Reactive & Distributed [Devoxx version]
Vert.x - Reactive & Distributed [Devoxx version]
 
NodeJS: the good parts? A skeptic’s view (jax jax2013)
NodeJS: the good parts? A skeptic’s view (jax jax2013)NodeJS: the good parts? A skeptic’s view (jax jax2013)
NodeJS: the good parts? A skeptic’s view (jax jax2013)
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
An Application Centric Approach to Devops
An Application Centric Approach to DevopsAn Application Centric Approach to Devops
An Application Centric Approach to Devops
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and Ops
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
 
Programming proxies to do what we need so we don't have to talk to the networ...
Programming proxies to do what we need so we don't have to talk to the networ...Programming proxies to do what we need so we don't have to talk to the networ...
Programming proxies to do what we need so we don't have to talk to the networ...
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase Server
 
Microservice Come in Systems
Microservice Come in SystemsMicroservice Come in Systems
Microservice Come in Systems
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
Unit Testing Express and Koa Middleware in ES2015
Unit Testing Express and Koa Middleware in ES2015Unit Testing Express and Koa Middleware in ES2015
Unit Testing Express and Koa Middleware in ES2015
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
 
Future Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETFuture Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NET
 
Typed? Dynamic? Both! Cross-platform DSLs in C#
Typed? Dynamic? Both! Cross-platform DSLs in C#Typed? Dynamic? Both! Cross-platform DSLs in C#
Typed? Dynamic? Both! Cross-platform DSLs in C#
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 

More from apidays

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...apidays
 
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...apidays
 
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...apidays
 
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...apidays
 
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...apidays
 
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...apidays
 
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...apidays
 
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...apidays
 
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...apidays
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...apidays
 

More from apidays (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
Apidays New York 2024 - The secrets to Graph success, by Leah Hurwich Adler, ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
Apidays New York 2024 - API Discovery - From Crawl to Run by Rob Dickinson, G...
 
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
Apidays Singapore 2024 - Building with the Planet in Mind by Sandeep Joshi, M...
 
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
Apidays Singapore 2024 - Connecting Cross Border Commerce with Payments by Gu...
 
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
Apidays Singapore 2024 - Privacy Enhancing Technologies for AI by Mark Choo, ...
 
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
Apidays Singapore 2024 - Blending AI and IoT for Smarter Health by Matthew Ch...
 
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
Apidays Singapore 2024 - OpenTelemetry for API Monitoring by Danielle Kayumbi...
 
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
Apidays Singapore 2024 - Connecting Product and Engineering Teams with Testin...
 
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
Apidays Singapore 2024 - The Growing Carbon Footprint of Digitalization and H...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
Apidays Singapore 2024 - API Monitoring x SRE by Ryan Ashneil and Eugene Wong...
 
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
Apidays Singapore 2024 - A nuanced approach on AI costs and benefits for the ...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
Apidays Singapore 2024 - How APIs drive business at BNP Paribas by Quy-Doan D...
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

apidays LIVE Australia - Building distributed systems on the shoulders of giants by Dasith Wijesiriwardena

  • 1. Building Distributed Systems On the Shoulders of Giants Dasith Wijes
  • 2. I am here because I have a love hate relationship with distributed systems. HELLO !I AM Dasith Wijes @dasiths dasith.me
  • 3. Modern technology landscape Unique challenges of distributed systems Agenda Azure Service Fabric Distributed Application Runtime (Dapr)Istio Service Mesh Knative Recap and Conclusion
  • 5. var myService = new MyService(); var result = myService.GetProductPrice(“abc123”);
  • 6. System running in single process var myService = new MyService(); var result = myService.GetProductPrice(“abc123”);
  • 7. System running in single process var myService = new MyService(); var result = myService.GetProductPrice(“abc123”);
  • 8. // var myService = new MyService(); var myRestService = new MyRestService(“192.168.x.x”); var result = myRestService.GetProductPrice(“abc123”);
  • 9. System running distributed across multiple nodes var myRestService = new MyRestService(“192.168.x.x”); var result = myRestService.GetProductPrice(“abc123”);
  • 10. System running distributed across multiple nodes var myRestService = new MyRestService(“192.168.x.x”); var result = myRestService.GetProductPrice(“abc123”);
  • 11. System running distributed across multiple nodes var myRestService = new MyRestService(“192.168.x.x”); var result = myRestService.GetProductPrice(“abc123”);
  • 12. •Network is reliable •Latency is zero •Bandwidth is infinite •Connection is secure •Network is homogeneous Did you assume?
  • 13. •Service discovery •Load balancing •Fault tolerance and recovery •Security •Scalability •Telemetry What about…
  • 14. ““First Law of Distributed Object Design: don't distribute your objects"
  • 16. Istio Service Mesh Pick Your Poison Azure Service Fabric Distributed Application Runtime (Dapr) Knative
  • 18. Azure Service Fabric Distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers.
  • 19. Azure Service Fabric Distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers.
  • 20. Azure Service Fabric Cloud On Premise Developer Machine Environments
  • 22. Azure Service Fabric • Reliable Services • Stateful & Stateless • Reliable Actors • Persisted state options • Guest Executables • Containers • ASP.NET Core Programming Models
  • 23. Azure Service Fabric public interface IHelloWorld : IActor { Task<string> GetHelloWorldAsync(); } Actor Example – C# Interface
  • 24. Azure Service Fabric [StatePersistence(StatePersistence.Persisted)] internal class HelloWorld : Actor, IHelloWorld { public HelloWorld(ActorService actorService, ActorId actorId) : base(actorService, actorId) { } public Task<string> GetHelloWorldAsync() { return Task.FromResult("Hello from my reliable actor!"); } } Actor Example – C# Implementation
  • 25. Azure Service Fabric class Program { static void Main(string[] args) { IHelloWorld actor = ActorProxy.Create<IHelloWorld>( ActorId.CreateRandom(), new Uri("fabric:/MyApplication/HelloWorldActorService")); Task<string> retval = actor.GetHelloWorldAsync(); Console.Write(retval.Result); Console.ReadLine(); } } Actor Invocation – C# Sample
  • 26. Azure Service Fabric class Program { static void Main(string[] args) { IHelloWorld actor = ActorProxy.Create<IHelloWorld>( ActorId.CreateRandom(), new Uri("fabric:/MyApplication/HelloWorldActorService")); Task<string> retval = actor.GetHelloWorldAsync(); Console.Write(retval.Result); Console.ReadLine(); } } Actor Invocation – C# Sample
  • 27. Azure Service Fabric class Program { static void Main(string[] args) { IHelloWorld actor = ActorProxy.Create<IHelloWorld>( ActorId.CreateRandom(), new Uri("fabric:/MyApplication/HelloWorldActorService")); Task<string> retval = actor.GetHelloWorldAsync(); Console.Write(retval.Result); Console.ReadLine(); } } Actor Invocation – C# Sample • Service discovery and routing • Availability • Reliability • Fault Tolerance • Auto scaling
  • 29. Distributed Application Runtime (Dapr) Portable, event-driven runtime that makes it easy for developers to build resilient, microservice stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
  • 33. • Service discovery • State • Pub/sub • Bindings • Middleware • Secret stores • Tracing exporters Component s https://github.com/dapr/docs/tree/master/concepts Distributed Application Runtime (Dapr) 1 or more
  • 34. • Service discovery • State • Pub/sub • Bindings • Middleware • Secret stores • Tracing exporters Some Pub/Sub Implementations • Redis Streams • Kafka • Azure Service Bus • RabbitMQ • Azure Event Hubs • GCP Pub/Sub • MQTT https://github.com/dapr/components- Distributed Application Runtime (Dapr) Pluggable Implementations
  • 35. • Service discovery • State • Pub/sub • Bindings • Middleware • Secret stores • Tracing exporters Picking a Component Implementation apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: messagebus namespace: default spec: type: pubsub.redis metadata: - name: redisHost value: <HOST> - name: redisPassword value: <PASSWORD> - name: enableTLS value: <bool> https://github.com/dapr/components- Distributed Application Runtime (Dapr) pubsub.yaml (Redis Streams )
  • 36. • Service discovery • State • Pub/sub • Bindings • Middleware • Secret stores • Tracing exporters Pub/Sub Interface type PubSub interface { Init(metadata Metadata) error Publish(req *PublishRequest) error Subscribe(req SubscribeRequest, handler func(msg *NewMessage) error) error } https://github.com/dapr/components- Distributed Application Runtime (Dapr)
  • 37. Endpoints For Building Blocks Building Block Endpoint Service-to-Service Invocation /v1.0/invoke State Management /v1.0/state Publish and Subscribe /v1.0/publish + /v1.0/subscribe Resource Bindings /v1.0/bindings Actors /v1.0/actors Secrets /v1.0/secrets https://github.com/dapr/docs/tree/master/concepts Distributed Application Runtime (Dapr)
  • 38. Example – Node.js App app.post('/neworder', (req, res) => { const data = req.body.data; const orderId = data.orderId; console.log("Got a new order! Order ID: " + orderId); //todo: persist order res.sendStatus(200); }); Distributed Application Runtime (Dapr)
  • 39. Example – Node.js App app.post('/neworder', (req, res) => { const data = req.body.data; const orderId = data.orderId; console.log("Got a new order! Order ID: " + orderId); //todo: persist order res.sendStatus(200); }); dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js Distributed Application Runtime (Dapr)
  • 40. Service Invocation – Endpoint Distributed Application Runtime (Dapr)
  • 42. Cont. Invocation of Node.js App from a Python Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500) dapr_url = "http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port) n = 0 while True: n += 1 message = {"data": {"orderId": n}} try: response = requests.post(dapr_url, json=message) except Exception as e: print(e) time.sleep(1) Distributed Application Runtime (Dapr)
  • 43. Cont. Invocation of Node.js App from a Python Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500) dapr_url = "http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port) n = 0 while True: n += 1 message = {"data": {"orderId": n}} try: response = requests.post(dapr_url, json=message) except Exception as e: print(e) time.sleep(1) Distributed Application Runtime (Dapr)
  • 44. Cont. Invocation of Node.js App from a Python Appdapr_port = os.getenv("DAPR_HTTP_PORT", 3500) dapr_url = "http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port) n = 0 while True: n += 1 message = {"data": {"orderId": n}} try: response = requests.post(dapr_url, json=message) except Exception as e: print(e) time.sleep(1) Distributed Application Runtime (Dapr) • Service discovery and routing • mTLS • Retry logic • Tracing
  • 46. Side-Car Container in Kubernetes Pod https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-dapr-open-source-project-build- Distributed Application Runtime (Dapr)
  • 47. Dapr on Kubernetes https://itnext.io/simplifying-microservices-on-kubernetes-with-microsofts-dapr-distributed-application-runtime-9aece5723484 Dapr control-plane components are deployed as Kubernetes deployments. Dapr can be easily initialized on the Kubernetes cluster using Dapr-CLI or can be deployed using Helm. • dapr-operator: Watches for creation, deletion and updating events of services. • dapr-sidecar-injector: Injects a Dapr sidecar to all the services. • dapr-placement: Connects all the Dapr sidecars and adds the IP address to route the communication. Distributed Application Runtime (Dapr)
  • 50. Istio Service Mesh to Connect, secure, control, and observe services. Istio provides behavioural insights and operational control over the service mesh as a whole, offering a complete solution to satisfy the diverse requirements of microservice applications. Istio Service Mesh
  • 52. Istio Service MeshA Primer https://istio.io/latest/docs/ops/deployment/architecture/ • Istiod provides service discovery, configuration and certificate management. • Envoy proxies are deployed as sidecars to services, logically augmenting the services with Envoy’s many built-in features.
  • 53. • Developers can focus on adding business value, instead of connecting services. • Apps are more resilient to downtime, since a service mesh can reroute requests away from failed services. • Performance metrics can suggest ways to optimize communication Istio Service MeshElevator Pitch https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh
  • 54. Istio Service MeshElevator Pitch var myRestService = new MyRestService(“svc1.ns.local”); var result = myRestService.GetProductPrice(“abc123”);
  • 55. Istio Service MeshElevator Pitch var myRestService = new MyRestService(“svc1.ns.local”); var result = myRestService.GetProductPrice(“abc123”);
  • 56. Istio Service MeshElevator Pitch var myRestService = new MyRestService(“svc1.ns.local”); var result = myRestService.GetProductPrice(“abc123”); • Dynamic service discovery • Load balancing • TLS termination • HTTP/2 and gRPC
  • 58. Kubernetes-based platform to deploy and manage modern serverless workloads. Knative components builds on top of Kubernetes, abstracting away the complex details and enabling developers to focus on what matters. Knative
  • 59. Knative • Focused API with higher level abstractions for common app use-cases. • Stand up a scalable, secure, stateless service in seconds. • Knative is portable: run it anywhere Kubernetes runs, never worry about vendor lock-in. • Idiomatic developer experience, supporting common patterns such as GitOps, DockerOps, ManualOps. https://knative.dev/ Elevator Pitch
  • 60. Knative apiVersion: serving.knative.dev/v1 # Current version of Knative kind: Service metadata: name: helloworld-go # The name of the app namespace: default # The namespace the app will use spec: template: spec: containers: - image: gcr.io/knative-samples/helloworld-go # Reference to the app image env: - name: TARGET # The environment variable printed out by the sample app value: "Go Sample v1" Sample Configuration - service.yaml
  • 61. Knative apiVersion: serving.knative.dev/v1 # Current version of Knative kind: Service metadata: name: helloworld-go # The name of the app namespace: default # The namespace the app will use spec: template: spec: containers: - image: gcr.io/knative-samples/helloworld-go # Reference to the app image env: - name: TARGET # The environment variable printed out by the sample app value: "Go Sample v1" Sample Configuration - service.yaml
  • 62. Knative apiVersion: serving.knative.dev/v1 # Current version of Knative kind: Service metadata: name: helloworld-go # The name of the app namespace: default # The namespace the app will use spec: template: spec: containers: - image: gcr.io/knative-samples/helloworld-go # Reference to the app image env: - name: TARGET # The environment variable printed out by the sample app value: "Go Sample v1" Sample Configuration - service.yaml
  • 63. Knative Sample - Deploy # To Deploy services.yaml kubectl apply --filename service.yaml
  • 64. Knative Sample - Deploy # To Deploy services.yaml kubectl apply --filename service.yaml # To Invoke curl http://helloworld-go.default.svc.cluster.local
  • 65. Knative Sample - Deploy # To Deploy services.yaml kubectl apply --filename service.yaml # To Invoke curl http://helloworld-go.default.svc.cluster.local Hello World: Go Sample v1!
  • 66. Knative Sample - Deploy # To Deploy services.yaml kubectl apply --filename service.yaml # To Invoke curl http://helloworld-go.default.svc.cluster.local Hello World: Go Sample v1! • Routing • Load balancing • TLS termination • Blue/green deployments
  • 68. Service Fabric Dapr Istio Knative • Distributed systems platform. • Any cloud, any vendor. • Orchestrate containers or executables. • Windows or Linux clusters.* • Small community • Opinionated programming model. • Support for many languages and frameworks. • Extensible components. • Runs as side-car. • Native support for • Service mesh with focus on routing. • Doesn’t enforce programming model. • Fits nicely with existing container workloads. • Serverless model. • Developer productivity. • Higher level abstraction of K8s. • Easily configurable smart scaling. Recap
  • 71. Presentation template designed by powerpointify.com Special thanks to all people who made and shared these awesome resources for free: CREDIT S Photographs by unsplash.com Free Fonts used: https://www.fontsquirrel.com/fonts/oswald