SlideShare a Scribd company logo
1 of 65
Download to read offline
Micro-service
architectures using
Gilmour
Aditya Godbole
@aagdbl, aa@gdbl.me
TechJam
Services
• Process isolation
• Polyglot
• Potentially remote
vs Libraries
Services
• Logical entity - higher level of abstraction
• Can be comprised of sub-services
• Multiple servers for fault tolerance
• Different expectations of reliability
vs Servers
Service oriented architecture
Service oriented architecture
Function points
Why?
Why?
• Software problem: Function point scalability
Why?
• Software problem: Function point scalability
• People problem: Clean separation of authority and
responsibility
Patterns
Async - Signals and slots
Async - Signals and slots
Web
Async - Signals and slots
Web
User added
Signal
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
Push
message
notifier
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
Push
message
notifier
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
user.add.*
user.add.*
user.add.*
Push
message
notifier
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
user.add.*
user.add.*
user.add.*
VIP customer
notified
user.add.420
Push
message
notifier
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
user.add.*
user.add.*
user.add.*
VIP customer
notified
user.add.420
Push
message
notifier
Push
message
notifier
Push
message
notifier
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
user.add.*
user.add.*
user.add.*
VIP customer
notified
user.add.420
Push
message
notifier
Push
message
notifier
Push
message
notifier FP scaling
Async - Signals and slots
Web
User added
Email
notifier
SMS
notifier
Slots
Signal
user.add.500
user.add.*
user.add.*
user.add.*
VIP customer
notified
user.add.420
Push
message
notifier
Push
message
notifier
Push
message
notifier FP scaling
excl_group: push_msg
7
8 server = Server.new
9 gilmour = server.enable_backend('redis')
10
11 waiter = Gilmour::Waiter.new
12
13 waiter.add
14 gilmour.slot "user.added.*" do
15 # This one will send out email notifications
16 logger.info "Sent email notification for -"
17 logger.info request.body
18 waiter.done
19 end
20
21 waiter.add
22 gilmour.slot "user.added.*" do
23 # This one will send out push notifications
24 logger.info "Sent push notification for -"
25 logger.info request.body
26 waiter.done
27 end
28
29 EM.next_tick {
30 gilmour.signal!({ username: 'foo', email: 'foo@bar.com' }, 'user.added.9')
31 }
32
33 waiter.wait
Signals and slots - Failure
Web
User added
Email
notifier
SMS
notifier
Push
message
notifier
Slots
Signal
Signals and slots - Failure
Web
User added
Email
notifier
SMS
notifier
Push
message
notifier
Slots
Signal Error reporter
gilmour.error
Request Response
RPC
Hello?
Request Response
RPC
Hello?
Aloha!
Request Response
RPC
Hello?
Aloha!
sender_id
Request Response
RPC
Hello?
Aloha!
sender_id
Wrong number!
Request Response
RPC
Hello?
Aloha!
sender_id
Wrong number! code
Request Response
RPC
Hello?
Aloha!
{	
  
	
  	
  data:	
  The	
  actual	
  payload,	
  
	
  	
  sender:	
  The	
  origin	
  of	
  the	
  request	
  (unique	
  for	
  each	
  request),	
  
	
  	
  code:	
  The	
  response	
  code	
  if	
  this	
  is	
  a	
  response.	
  This	
  uses	
  HTTP	
  error	
  codes	
  
}
sender_id
Wrong number! code
Signals/Slots
vs
Request/Reply
Signals/Slots
vs
Request/Reply
• Ownership of failure
Error detection
• confirm_subscriber - Are there any active
subscribers?
• timeout - Client side and service side timeouts
Errors
Hello?
Errors
Hello?
Aloha!
Errors
Hello?
Aloha!
sender_id
Errors
Hello?
Aloha!
sender_id
Wrong number!
Errors
Hello?
Aloha!
sender_id
Wrong number! code
Error reporter
Errors
Hello?
Aloha!
sender_id
Wrong number! code
Error reporter
?
Errors
Hello?
Aloha!
sender_id
Wrong number! code
Error reporter
?
{	
  
	
  	
  	
  	
  code:	
  response	
  code	
  (non-­‐200)	
  
	
  	
  	
  	
  sender:	
  the	
  "sender"	
  from	
  the	
  request	
  
	
  	
  	
  	
  topic:	
  the	
  topic	
  to	
  which	
  the	
  request	
  was	
  sent	
  
	
  	
  	
  	
  request_data:	
  the	
  request	
  payload	
  
	
  	
  	
  	
  userdata:	
  implementation	
  dependent	
  debug	
  infomation	
  
	
  	
  	
  	
  backtrace:	
  the	
  backtrace	
  of	
  the	
  error	
  
	
  	
  	
  	
  timestamp:	
  the	
  timestamp	
  of	
  the	
  error	
  
}
Errors
request_id":"c60bc3ba-e7ff-4ec1-98cf-54541b671e7c"
request_id = Errors + Logs
Ops - Servers
• Log forwarding and aggregation
• Error reporting
• Monitoring
Ops - services
• What are the services in my system?
• Do my services have spare capacity
• Do my services respond in time?
health-bulletin
Gilmour
• Library - no external process
• Async - Signals, slots
• Sync - Request, Reply
• Low level publish subscribe
• Scaling - Exclusion groups
• Error and health monitoring
• Failure detection
• No message persistence or failure handing
For everything else …
• Hystrix - Backpressure management, circuit
breaking, failure queues, retries
Services
Services
Micro?
The wisdom of the
masters
• Do one thing and do it well
• Design programs to be connected to other programs
• When a program has nothing surprising to say, it
should say nothing.
• When you must fail, fail noisily and as soon as
possible.
• Design for the future, because it will be here sooner
than you think.
Unix philosophy -> micro-services
stdin, stdout, stderr
stdin, stdout, stderr
stdin
stdin, stdout, stderr
stdin
stdout
stdin, stdout, stderr
stdin
stderr
Error reporter
stdout
Composition
• compose - cmd1 | cmd2 | cmd3
• andand - cmd1 && cmd2 && cmd3
• batch - cmd1; cmd2; cmd3 > out OR 

(cmd1; cmd2; cmd3) > out
• parallel & sync
((bringup_dc | dc_validate) |
(parallel bringup_logger
bringup_monitor) | infra_validate)
1 def do_bringup(_data, responder)
5 dc_pipeline = responder.compose([
6 { topic: 'private.customer.datacenter.create', message: data },
7 { topic: 'private.datacenter.validate' }
8 ])
9 nodes_pipeline = responder.compose([
10 responder.parallel([
11 { topic: 'private.customer.logger.create', message: data },
12 { topic: 'private.customer.monitor.create', message: data },
13 ]),
14 ->(d) { d.reduce({}) { |m, out| m.merge(out[:data]) } },
15 { topic: 'private.dummy.validate' }
16 ])
17
18 responder.sync(responder.compose([dc_pipeline, nodes_pipeline])) do |
resdata, rescode|
19 $stderr.puts rescode, resdata
25 end
26 end
Gilmour
• Library - no external process
• Async - Signals, slots
• Sync - Request, Reply
• Scaling - Exclusion groups
• Error and health monitoring
• Failure detection
• Composition - real micro-services
• No message persistence or failure handing
Languages
• Ruby - https://github.com/gilmour-libs/gilmour
• Reference implementation.
• Most feature complete
• Nice
• Java / Go -
• https://github.com/gilmour-libs/gilmour-e-go and https://github.com/
gilmour-libs/gilmour-e-java
• The cleanest API design
• Request-reply, signal-slot abstractions
• Composition
Goli - Gilmour cli
$: goli request hello-world <(cat data.yml) | echo
$: goli request hello-world <(cat data.yml) | goli
signal another-hello | echo
$: timeout 5 goli request hello-world <(cat
data.yml)
$: goli status --topic hello-world --topic another-
hello
$: goli health-check | curl -I “pagerduty….”
$: goli tail gilmour.error
Credits
• Ruby community
• Piyush Verma @meson10
• Datascale

More Related Content

Similar to Micro-service architectures with Gilmour

AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...Amazon Web Services
 
Kerberos survival guide
Kerberos survival guideKerberos survival guide
Kerberos survival guideJ.D. Wade
 
Azure Cloud Patterns
Azure Cloud PatternsAzure Cloud Patterns
Azure Cloud PatternsTamir Dresher
 
JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31 JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31 Omnilogy
 
Monitoring Modern Applications: Introduction to AWS X-Ray
Monitoring Modern Applications: Introduction to AWS X-RayMonitoring Modern Applications: Introduction to AWS X-Ray
Monitoring Modern Applications: Introduction to AWS X-RayAmazon Web Services
 
Kerberos Survival Guide - St. Louis Day of .Net
Kerberos Survival Guide - St. Louis Day of .NetKerberos Survival Guide - St. Louis Day of .Net
Kerberos Survival Guide - St. Louis Day of .NetJ.D. Wade
 
Top Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineTop Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineAndreas Grabner
 
7 DDS Innovations to Improve your Next Distributed System
7 DDS Innovations to Improve your Next Distributed System7 DDS Innovations to Improve your Next Distributed System
7 DDS Innovations to Improve your Next Distributed SystemReal-Time Innovations (RTI)
 
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oracle
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, OracleIssues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oracle
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oraclemfrancis
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Securitysedukull
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics HeroTechWell
 
SPS Ozarks 2012: Kerberos Survival Guide
SPS Ozarks 2012: Kerberos Survival GuideSPS Ozarks 2012: Kerberos Survival Guide
SPS Ozarks 2012: Kerberos Survival GuideJ.D. Wade
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performanceEngine Yard
 
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...Amazon Web Services
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)Aman Kohli
 
I Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsI Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsApigee | Google Cloud
 
SignalR and GroomingPoker
SignalR and GroomingPokerSignalR and GroomingPoker
SignalR and GroomingPokertwinklekumarp
 
Webinar on Functional Safety Analysis using Model-based System Analysis
Webinar on Functional Safety Analysis using Model-based System AnalysisWebinar on Functional Safety Analysis using Model-based System Analysis
Webinar on Functional Safety Analysis using Model-based System AnalysisDeepak Shankar
 

Similar to Micro-service architectures with Gilmour (20)

AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
Kerberos survival guide
Kerberos survival guideKerberos survival guide
Kerberos survival guide
 
Azure Cloud Patterns
Azure Cloud PatternsAzure Cloud Patterns
Azure Cloud Patterns
 
JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31 JUG Poznan - 2017.01.31
JUG Poznan - 2017.01.31
 
Monitoring Modern Applications: Introduction to AWS X-Ray
Monitoring Modern Applications: Introduction to AWS X-RayMonitoring Modern Applications: Introduction to AWS X-Ray
Monitoring Modern Applications: Introduction to AWS X-Ray
 
Kerberos Survival Guide - St. Louis Day of .Net
Kerberos Survival Guide - St. Louis Day of .NetKerberos Survival Guide - St. Louis Day of .Net
Kerberos Survival Guide - St. Louis Day of .Net
 
Top Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your PipelineTop Java Performance Problems and Metrics To Check in Your Pipeline
Top Java Performance Problems and Metrics To Check in Your Pipeline
 
7 DDS Innovations to Improve your Next Distributed System
7 DDS Innovations to Improve your Next Distributed System7 DDS Innovations to Improve your Next Distributed System
7 DDS Innovations to Improve your Next Distributed System
 
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oracle
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, OracleIssues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oracle
Issues in Designing Push Based Mobile Application Platform - Rafiul Ahad, Oracle
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Security
 
Become a Performance Diagnostics Hero
Become a Performance Diagnostics HeroBecome a Performance Diagnostics Hero
Become a Performance Diagnostics Hero
 
SPS Ozarks 2012: Kerberos Survival Guide
SPS Ozarks 2012: Kerberos Survival GuideSPS Ozarks 2012: Kerberos Survival Guide
SPS Ozarks 2012: Kerberos Survival Guide
 
6 tips for improving ruby performance
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
 
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)
 
Samarendra Singha New
Samarendra Singha New Samarendra Singha New
Samarendra Singha New
 
I Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer SessionsI Love APIs Europe 2015: Developer Sessions
I Love APIs Europe 2015: Developer Sessions
 
SignalR and GroomingPoker
SignalR and GroomingPokerSignalR and GroomingPoker
SignalR and GroomingPoker
 
Webinar on Functional Safety Analysis using Model-based System Analysis
Webinar on Functional Safety Analysis using Model-based System AnalysisWebinar on Functional Safety Analysis using Model-based System Analysis
Webinar on Functional Safety Analysis using Model-based System Analysis
 

Recently uploaded

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Recently uploaded (20)

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 

Micro-service architectures with Gilmour