SlideShare a Scribd company logo
1 of 45
ARCHITECTURAL PRINCIPLES
FOR CLOUD SOFTWARE
ABOUT ME
SOFTWARE ENGINEER SPECIALIZING IN FULL-STACK (FRONT-END /
BACK-END) DEVELOPMENT. HAVE MORE THAN 3 YEARS OF PRACTICAL
EXPERIENCE WITH ALL STAGES OF THE DEVELOPMENT CYCLE FOR
DYNAMIC WEB PROJECTS.
AGENDA
• MONOLITH VS. MICROSERVICES
• EVENT-DRIVEN MICROSERVICES
• WHAT IS CQRS ?
• AWS REVIEW
LET’S IMAGINE YOU ARE BUILDING A LARGE,
COMPLEX APPLICATION,
E.G. AN ONLINE STORE
SUCCESSFUL SOFTWARE DEVELOPMENT
Architecture
Process Organization
small,
autonomous teams
Agile
CI/CD,
…
ARCHITECTURE
B
BUT SUCCESSFUL
APPLICATIONS KEEP
GROWING…
MONOLITHIC ARCHITECTURE
Architecture
Process Organization
small,
autonomous teams
Agile
CI/CD,
…
APPLY FUNCTIONAL DECOMPOSITION
MICROSERVICE ARCHITECTURE
Architecture
Process Organization
small,
autonomous teams
Agile
CI/CD,
…
DRAWBACKS
COMPLEXITY
DRAWBACKS
❖COMPLEXITY OF DEVELOPING A DISTRIBUTED SYSTEM
❖COMPLEXITY OF TESTING A DISTRIBUTED SYSTEM
❖COMPLEXITY OF DEPLOYING AND OPERATING A DISTRIBUTED SYSTEM
❖MANAGING THE DEVELOPMENT AND DEPLOYMENT OF FEATURES THAT
SPAN MULTIPLE SERVICES
DATA MANAGEMENT PATTERNS
LOOSE COUPLING BUT MORE COMPLEX AND …
WE ALL KNOW ACTIVE RECORD:
EVENT SOURCING IS DIFFERENT
• DON’T SAVE THE CURRENT STATE OF THE OBJECTS
• SAVE THE EVENTS THAT LEAD TO THE CURRENT STATE
• EVENT: SOMETHING THAT HAPPENED IN THE PAST.
E.G.
THE ADVANTAGES OF EVENT SOURCING
• COMPLETE LOG OF EVERY STATE CHANGE EVER
• VERY GOOD PERFORMANCE CHARACTERISTICS
• NO MORE MAPPING OBJECTS TO TABLES
HOW DOES EVENT SOURCING WORK?
SAVING OBJECTS
• CREATE AN EVENT FOR EVERY STATE CHANGE OF THE OBJECT:
• PERSIST THIS STREAM OF EVENTS, PRESERVING EVENT ORDER
RESTORING OBJECTS
• SUBSEQUENTLY APPLY THE EVENTS FROM THE RESPECTIVE EVENTSTREAM TO A "BLANK" OBJECT
INSTANCE
RESTORING OBJECTS
RESTORING OBJECTS
RESTORING OBJECTS
RESTORING OBJECTS
RESTORING OBJECTS
DELETING OBJECTS
HOW DO YOU DELETE AN OBJECT?
An event undoing something that happened in the past.
CQRS
WTF?
CQRS
WE CAN CLEARLY SEE THE SEPARATION BETWEEN
WRITING PARTS AND READING ONES:
THE USER DOES A MODIFICATION ON HIS PAGE,
RESULTING IN A COMMAND BEING EXECUTED.
ONCE THIS COMMAND IS FULLY HANDLED, AN
EVENT IS DISPATCHED TO SIGNAL A MODIFICATION.
COMMANDS
• A COMMAND TELLS OUR APPLICATION TO DO SOMETHING. ITS NAME ALWAYS USES
THE INDICATIVE TENSE,
LIKE TERMINATEBUSINESSJOB OR SENDFORGOTTENPASSWORDEMAIL. IT’S VERY
IMPORTANT NOT TO CONFINE THESE NAMES TO CREATE, CHANGE, DELETE… AND TO
REALLY FOCUS ON THE USE CASES.
• A COMMAND CAPTURES THE INTENT OF THE USER. NO CONTENT IN THE RESPONSE IS
RETURNED BY THE SERVER, ONLY QUERIES ARE IN CHARGE OF RETRIEVING DATA.
QUERIES
• USING DIFFERENT DATA STORES IN OUR APPLICATION FOR THE COMMAND AND
QUERY PARTS SEEMS TO BE A VERY INTERESTING IDEA. WE COULD CREATE A USER
INTERFACE ORIENTED DATABASE, WHICH WOULD REFLECT WHAT WE NEED TO
DISPLAY TO OUR USER. WE WOULD GAIN IN BOTH PERFORMANCE AND SPEED.
THEREFORE, IT WOULD BE MORE THOUGHTFUL TO USE A DATABASE THAT CAN READ
OUR QUERIES FASTLY.
• IF WE SEPARATE OUR DATA SOURCES, HOW CAN WE STILL MAKE THEM
SYNCHRONIZED? INDEED, OUR “READ” DATA STORE IS NOT SUPPOSED TO BE AWARE
THAT A COMMAND HAS BEEN SENT! THIS IS WHERE EVENTS COME INTO PLAY.
EVENTS
• AN EVENT IS A NOTIFICATION OF SOMETHING THAT HAS HAPPENED. LIKE A
COMMAND, AN EVENT MUST RESPECT A RULE REGARDING NAMES. INDEED, THE
NAME OF AN EVENT ALWAYS NEEDS TO BE IN THE PAST TENSE, BECAUSE WE NEED TO
NOTIFY OTHER PARTIES LISTENING ON OUR EVENT THAT A COMMAND HAS BEEN
COMPLETED.
• FOR INSTANCE, USERREGISTERED IS A VALID EVENT NAME.
EVENTS ARE PROCESSED BY ONE OR MORE CONSUMERS. THOSE CONSUMERS ARE IN CHARGE OF KEEPING
THINGS SYNCHRONIZED IN OUR QUERY STORE.
• VERY MUCH LIKE COMMANDS, EVENTS ARE MESSAGES. THE DIFFERENCE WITH A
COMMAND IS SUMMED UP HERE: A COMMAND IS CHARACTERIZED BY AN ACTION
THAT MUST HAPPEN, AND AN EVENT BY SOMETHING THAT HAS HAPPENED.
PROS
• SCALABILITY : THE NUMBER OF READS BEING FAR HIGHER THAN THE NUMBER
OF MODIFICATIONS INSIDE AN APPLICATION, APPLYING THE CQRS PATTERN
ALLOWS TO FOCUS INDEPENDENTLY ON BOTH CONCERNS. ONE MAIN
ADVANTAGE OF THIS SEPARATION IS SCALABILITY: WE CAN SCALE OUR
READING PART DIFFERENTLY FROM OUR WRITING PART (ALLOCATE MORE
RESOURCES, DIFFERENT TYPES OF DATABASE).
• FLEXIBILITY : IT’S EASY TO UPDATE OR ADD ON THE READING SIDE, WITHOUT
CHANGING ANYTHING ON THE WRITING SIDE. DATA CONSISTENCY IS
THEREFORE NOT ALTERED.
CQRS
• CQRS IS A SIMPLE PATTERN, WHICH ENABLES FANTASTIC POSSIBILITIES. IT
CONSISTS IN SEPARATING THE READING PART FROM THE WRITING PART,
WITH QUERIES AND COMMANDS.
• MANY ADVANTAGES RESULT FROM ITS USAGE, ESPECIALLY IN TERM OF
FLEXIBILITY AND SCALING.
• EVENT SOURCING COMPLETES THE CQRS PATTERN BY SAVING THE HISTORY
THAT DETERMINES THE CURRENT STATE OF OUR APPLICATION. THIS IS VERY
USEFUL IN DOMAINS LIKE ACCOUNTING, BECAUSE YOU GET IN YOUR DATABASE
A SERIES OF EVENTS (LIKE FINANCIAL TRANSACTIONS FOR INSTANCE) THAT
CANNOT BE MODIFIED OR DELETED.
SUMMARY
• WHAT’S INTERESTING WITH CQRS IS EVENT SOURCING. IT CAN BE USED WITHOUT
APPLICATION OF THE CQRS PATTERN, BUT IF WE USE CQRS, EVENT
SOURCING APPEARS LIKE A MUST-HAVE.
• EVENT SOURCING CONSISTS IN SAVING EVERY EVENT THAT IS OCCURRING, IN A
DATABASE, AND THEREFORE HAVING A BACK-UP OF FACTS. IN A DESIGN
OF EVENT SOURCING, YOU CANNOT DELETE OR MODIFY EVENTS, YOU CAN ONLY
ADD MORE. THIS IS BENEFICIAL FOR OUR BUSINESS AND OUR INFORMATION
SYSTEM, BECAUSE WE CAN KNOW AT A SPECIFIC TIME WHAT IS THE STATUS OF A
COMMAND, A USER OR SOMETHING ELSE. ALSO, SAVING EVENTS ALLOWS US TO
REBUILD THE SERIES OF EVENTS AND GAIN TIME IN ANALYSIS.
• CQRS IS A SIMPLE PATTERN, WHICH ENABLES FANTASTIC POSSIBILITIES. IT CONSISTS
IN SEPARATING THE READING PART FROM THE WRITING PART,
WITH QUERIES AND COMMANDS.
AWS
• IN REACTIVE, MESSAGE-DRIVEN APPLICATIONS IT IS CRUCIAL TO DECOUPLE PRODUCERS AND
CONSUMERS OF MESSAGES. COMBINING PUBLISH/SUBSCRIBE (PUB/SUB) AND QUEUEING
COMPONENTS WE ARE ABLE TO BUILD RESILIENT, SCALABLE AND FAULT-TOLERANT APPLICATION
ARCHITECTURES. AWS OFFERS A VARIETY OF COMPONENTS WHICH IMPLEMENT PUB/SUB OR
QUEUEING.
• TWO SIMPLE BUT POWERFUL COMPONENTS FOR EVENT AND MESSAGE PROCESSING ON AWS:
THE SIMPLE NOTIFICATION SERVICE(SNS) AND THE SIMPLE QUEUE SERVICE (SQS).
OUR GOAL
• THE GOAL IS TO DEVELOP AN EVENT PIPELINE WHICH SENDS A MESSAGE TO A SLACK CHANNEL WHENEVER
SOMEONE UPLOADS A PICTURE TO AN S3 BUCKET. FOR DEMONSTRATION PURPOSES WE WILL ALSO STORE
THE EVENTS IN A QUEUE FOR ASYNCHRONOUS PROCESSING. THE ARCHITECTURE INVOLVES S3 EVENT
NOTIFICATIONS, AN SNS TOPIC, AN SQS QUEUE, AND A LAMBDA FUNCTION SENDING A MESSAGE TO THE
SLACK CHANNEL. HERE IS AN ANIMATION OF THE FINAL RESULT.
AWS
ARCHITECTURE
• LET'S LOOK AT THE HIGH LEVEL ARCHITECTURE. WHEN A CLIENT UPLOADS AN IMAGE TO THE
CONFIGURED S3 BUCKET, AN S3 EVENT NOTIFICATION WILL FIRE TOWARDS SNS, PUBLISHING
THE EVENT INSIDE THE RESPECTIVE TOPIC. THERE WILL BE TWO SUBSCRIBERS FOR THAT TOPIC: AN
SQS QUEUE AND A LAMBDA FUNCTION.
• THE SQS QUEUE STORES THE EVENT FOR ASYNCHRONOUS PROCESSING, (E.G. THUMBNAIL
GENERATION OR IMAGE CLASSIFICATION). THE LAMBDA FUNCTION PARSES THE EVENT AND
SENDS A NOTIFICATION MESSAGE TO A SLACK CHANNEL. WITHIN THE SCOPE OF THIS WE ARE
NOT GOING TO DISCUSS THE ASYNCHRONOUS PROCESSING PART. DUE TO THE DECOUPLING
OF PUBLISHING AND SUBSCRIBING WITH SNS WE ARE FREE TO ADD MORE CONSUMERS FOR
THE EVENTS LATER.
ARCHITECTURE
• LET'S LOOK AT THE INDIVIDUAL COMPONENTS IN DETAIL. S3 ORGANIZES OBJECTS IN BUCKETS.
WITHIN A BUCKET YOU CAN REFERENCE INDIVIDUAL OBJECTS BY KEY. UPLOADING A FILE TO
S3 CAN EITHER BE DONE VIA THE AWS CONSOLE, THE AWS CLI, OR DIRECTLY THROUGH THE
S3 API.
• S3 ALLOWS TO CONFIGURE EVENT NOTIFICATIONS. EVENTS CAN BE CREATED BASED ON
OBJECT CREATION OR DELETION. YOU CAN CHOOSE TO EITHER SEND THE EVENT TOWARDS AN
SNS TOPIC, AN SQS QUEUE, OR A LAMBDA FUNCTION.
• IN OUR CASE WE ARE GOING TO SEND THE EVENTS TO SNS AND THEN ALLOW INTERESTED
APPLICATIONS TO SUBSCRIBE. INSTEAD OF SENDING EVENTS DIRECTLY TO ALL PARTIES, BY USING
SNS AS AN INTERMEDIATE BROKER WE DECOUPLE PUBLISHING AND SUBSCRIPTION.
ARCHITECTURE
• SNS IS A SIMPLE PUB/SUB SERVICE WHICH ORGANIZES AROUND TOPICS. A TOPIC GROUPS
TOGETHER MESSAGES OF THE SAME TYPE WHICH MIGHT BE OF INTEREST TO A SET OF
SUBSCRIBERS. IN CASE OF A NEW MESSAGE BEING PUBLISHED TO A TOPIC, SNS WILL NOTIFY
ALL SUBSCRIBERS. YOU CAN CONFIGURE DELIVERY POLICIES INCLUDING CONFIGURATION OF
MAXIMUM RECEIVE RATES AND RETRY DELAYS.
• THE GOAL IS TO SEND A SLACK MESSAGE ON OBJECT CREATION WITHIN OUR S3 BUCKET. WE
ACHIEVE THAT BY SUBSCRIBING A LAMBDA FUNCTION TO THE SNS TOPIC. ON INVOCATION
THE LAMBDA FUNCTION WILL PARSE AND INSPECT THE EVENT NOTIFICATION, EXTRACT
RELEVANT INFORMATION, AND FORWARD IT TO A PRECONFIGURED SLACK WEBHOOK.
Q&A

More Related Content

Similar to 2 5404811386729530203

AWS Canberra WWPS Summit 2013 - AWS for Web Applications
AWS Canberra WWPS Summit 2013 - AWS for Web ApplicationsAWS Canberra WWPS Summit 2013 - AWS for Web Applications
AWS Canberra WWPS Summit 2013 - AWS for Web ApplicationsAmazon Web Services
 
Security Requires Visibility-Turn Data Into Security Insight
Security Requires Visibility-Turn Data Into Security InsightSecurity Requires Visibility-Turn Data Into Security Insight
Security Requires Visibility-Turn Data Into Security InsightAmazon Web Services
 
Introduction-to-Cloud-Computing.pdf
Introduction-to-Cloud-Computing.pdfIntroduction-to-Cloud-Computing.pdf
Introduction-to-Cloud-Computing.pdfprajwalalaladinni
 
SRV310_Designing Microservices with Serverless
SRV310_Designing Microservices with ServerlessSRV310_Designing Microservices with Serverless
SRV310_Designing Microservices with ServerlessAmazon Web Services
 
Service Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumService Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumRick Hightower
 
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017Amazon Web Services
 
SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)Annie Comp
 
MuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureMuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureKim Clark
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final finalgaurav shukla
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtTechWell
 
Consul: Service-oriented at Scale
Consul: Service-oriented at ScaleConsul: Service-oriented at Scale
Consul: Service-oriented at ScaleC4Media
 
Gluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeGluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeAdrian Cockcroft
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingBen Wilcock
 
Scalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesScalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesMahesh Veerabathiran
 
DEVNET-1184 Microservices Patterns
DEVNET-1184	Microservices PatternsDEVNET-1184	Microservices Patterns
DEVNET-1184 Microservices PatternsCisco DevNet
 
Best of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationBest of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationLahav Savir
 

Similar to 2 5404811386729530203 (20)

AWS Canberra WWPS Summit 2013 - AWS for Web Applications
AWS Canberra WWPS Summit 2013 - AWS for Web ApplicationsAWS Canberra WWPS Summit 2013 - AWS for Web Applications
AWS Canberra WWPS Summit 2013 - AWS for Web Applications
 
Security Requires Visibility-Turn Data Into Security Insight
Security Requires Visibility-Turn Data Into Security InsightSecurity Requires Visibility-Turn Data Into Security Insight
Security Requires Visibility-Turn Data Into Security Insight
 
Presentation.pptx
Presentation.pptxPresentation.pptx
Presentation.pptx
 
Introduction-to-Cloud-Computing.pdf
Introduction-to-Cloud-Computing.pdfIntroduction-to-Cloud-Computing.pdf
Introduction-to-Cloud-Computing.pdf
 
The Devops Handbook
The Devops HandbookThe Devops Handbook
The Devops Handbook
 
SRV310_Designing Microservices with Serverless
SRV310_Designing Microservices with ServerlessSRV310_Designing Microservices with Serverless
SRV310_Designing Microservices with Serverless
 
Service Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumService Mesh Talk for CTO Forum
Service Mesh Talk for CTO Forum
 
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017
Deep Dive on Microservices and Docker - AWS Summit Cape Town 2017
 
SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)
 
MuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureMuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration Architecture
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final final
 
aws-overview (1).pdf
aws-overview (1).pdfaws-overview (1).pdf
aws-overview (1).pdf
 
Performance in soa context
Performance in soa contextPerformance in soa context
Performance in soa context
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Consul: Service-oriented at Scale
Consul: Service-oriented at ScaleConsul: Service-oriented at Scale
Consul: Service-oriented at Scale
 
Gluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeGluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A Challenge
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Scalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesScalable Fault-tolerant microservices
Scalable Fault-tolerant microservices
 
DEVNET-1184 Microservices Patterns
DEVNET-1184	Microservices PatternsDEVNET-1184	Microservices Patterns
DEVNET-1184 Microservices Patterns
 
Best of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationBest of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentation
 

More from Stfalcon Meetups

Conversion centered design 3
Conversion centered design 3Conversion centered design 3
Conversion centered design 3Stfalcon Meetups
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019Stfalcon Meetups
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insightsStfalcon Meetups
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startupStfalcon Meetups
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Stfalcon Meetups
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерландыStfalcon Meetups
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджераStfalcon Meetups
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчикомStfalcon Meetups
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”Stfalcon Meetups
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDStfalcon Meetups
 
Як ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInЯк ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInStfalcon Meetups
 

More from Stfalcon Meetups (20)

Conversion centered design 3
Conversion centered design 3Conversion centered design 3
Conversion centered design 3
 
Discovery phase
Discovery phaseDiscovery phase
Discovery phase
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11Stfalcon PM Meetup 21.11
Stfalcon PM Meetup 21.11
 
Design of the_future_30_05_2019
Design of the_future_30_05_2019Design of the_future_30_05_2019
Design of the_future_30_05_2019
 
Team evolution
Team evolutionTeam evolution
Team evolution
 
Mobile&Privacy
Mobile&PrivacyMobile&Privacy
Mobile&Privacy
 
Global sales - a few insights
Global sales - a few insightsGlobal sales - a few insights
Global sales - a few insights
 
How to build your own startup
How to build your own startupHow to build your own startup
How to build your own startup
 
Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом Первая и последняя встреча с клиентом
Первая и последняя встреча с клиентом
 
Парнерство нидерланды
Парнерство нидерландыПарнерство нидерланды
Парнерство нидерланды
 
Риси гарного менеджера
Риси гарного менеджераРиси гарного менеджера
Риси гарного менеджера
 
Между заказчиком и разработчиком
Между заказчиком и разработчикомМежду заказчиком и разработчиком
Между заказчиком и разработчиком
 
Cv vs resume
Cv vs resumeCv vs resume
Cv vs resume
 
Vue.js
Vue.jsVue.js
Vue.js
 
майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”майстер-клас “Управління ризиками”
майстер-клас “Управління ризиками”
 
Kubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CDKubernetes: від знайомства до використання у CI/CD
Kubernetes: від знайомства до використання у CI/CD
 
Як ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedInЯк ефективно працювати в мережі LinkedIn
Як ефективно працювати в мережі LinkedIn
 

Recently uploaded

(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
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
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
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
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
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 

Recently uploaded (20)

(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...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
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
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
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...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 

2 5404811386729530203

  • 2. ABOUT ME SOFTWARE ENGINEER SPECIALIZING IN FULL-STACK (FRONT-END / BACK-END) DEVELOPMENT. HAVE MORE THAN 3 YEARS OF PRACTICAL EXPERIENCE WITH ALL STAGES OF THE DEVELOPMENT CYCLE FOR DYNAMIC WEB PROJECTS.
  • 3. AGENDA • MONOLITH VS. MICROSERVICES • EVENT-DRIVEN MICROSERVICES • WHAT IS CQRS ? • AWS REVIEW
  • 4. LET’S IMAGINE YOU ARE BUILDING A LARGE, COMPLEX APPLICATION, E.G. AN ONLINE STORE
  • 5. SUCCESSFUL SOFTWARE DEVELOPMENT Architecture Process Organization small, autonomous teams Agile CI/CD, …
  • 7.
  • 8. B
  • 12.
  • 15. DRAWBACKS ❖COMPLEXITY OF DEVELOPING A DISTRIBUTED SYSTEM ❖COMPLEXITY OF TESTING A DISTRIBUTED SYSTEM ❖COMPLEXITY OF DEPLOYING AND OPERATING A DISTRIBUTED SYSTEM ❖MANAGING THE DEVELOPMENT AND DEPLOYMENT OF FEATURES THAT SPAN MULTIPLE SERVICES
  • 17.
  • 18. LOOSE COUPLING BUT MORE COMPLEX AND …
  • 19. WE ALL KNOW ACTIVE RECORD:
  • 20. EVENT SOURCING IS DIFFERENT • DON’T SAVE THE CURRENT STATE OF THE OBJECTS • SAVE THE EVENTS THAT LEAD TO THE CURRENT STATE • EVENT: SOMETHING THAT HAPPENED IN THE PAST. E.G.
  • 21. THE ADVANTAGES OF EVENT SOURCING • COMPLETE LOG OF EVERY STATE CHANGE EVER • VERY GOOD PERFORMANCE CHARACTERISTICS • NO MORE MAPPING OBJECTS TO TABLES
  • 22. HOW DOES EVENT SOURCING WORK?
  • 23. SAVING OBJECTS • CREATE AN EVENT FOR EVERY STATE CHANGE OF THE OBJECT: • PERSIST THIS STREAM OF EVENTS, PRESERVING EVENT ORDER
  • 24. RESTORING OBJECTS • SUBSEQUENTLY APPLY THE EVENTS FROM THE RESPECTIVE EVENTSTREAM TO A "BLANK" OBJECT INSTANCE
  • 30. DELETING OBJECTS HOW DO YOU DELETE AN OBJECT? An event undoing something that happened in the past.
  • 32. CQRS WE CAN CLEARLY SEE THE SEPARATION BETWEEN WRITING PARTS AND READING ONES: THE USER DOES A MODIFICATION ON HIS PAGE, RESULTING IN A COMMAND BEING EXECUTED. ONCE THIS COMMAND IS FULLY HANDLED, AN EVENT IS DISPATCHED TO SIGNAL A MODIFICATION.
  • 33. COMMANDS • A COMMAND TELLS OUR APPLICATION TO DO SOMETHING. ITS NAME ALWAYS USES THE INDICATIVE TENSE, LIKE TERMINATEBUSINESSJOB OR SENDFORGOTTENPASSWORDEMAIL. IT’S VERY IMPORTANT NOT TO CONFINE THESE NAMES TO CREATE, CHANGE, DELETE… AND TO REALLY FOCUS ON THE USE CASES. • A COMMAND CAPTURES THE INTENT OF THE USER. NO CONTENT IN THE RESPONSE IS RETURNED BY THE SERVER, ONLY QUERIES ARE IN CHARGE OF RETRIEVING DATA.
  • 34. QUERIES • USING DIFFERENT DATA STORES IN OUR APPLICATION FOR THE COMMAND AND QUERY PARTS SEEMS TO BE A VERY INTERESTING IDEA. WE COULD CREATE A USER INTERFACE ORIENTED DATABASE, WHICH WOULD REFLECT WHAT WE NEED TO DISPLAY TO OUR USER. WE WOULD GAIN IN BOTH PERFORMANCE AND SPEED. THEREFORE, IT WOULD BE MORE THOUGHTFUL TO USE A DATABASE THAT CAN READ OUR QUERIES FASTLY. • IF WE SEPARATE OUR DATA SOURCES, HOW CAN WE STILL MAKE THEM SYNCHRONIZED? INDEED, OUR “READ” DATA STORE IS NOT SUPPOSED TO BE AWARE THAT A COMMAND HAS BEEN SENT! THIS IS WHERE EVENTS COME INTO PLAY.
  • 35. EVENTS • AN EVENT IS A NOTIFICATION OF SOMETHING THAT HAS HAPPENED. LIKE A COMMAND, AN EVENT MUST RESPECT A RULE REGARDING NAMES. INDEED, THE NAME OF AN EVENT ALWAYS NEEDS TO BE IN THE PAST TENSE, BECAUSE WE NEED TO NOTIFY OTHER PARTIES LISTENING ON OUR EVENT THAT A COMMAND HAS BEEN COMPLETED. • FOR INSTANCE, USERREGISTERED IS A VALID EVENT NAME. EVENTS ARE PROCESSED BY ONE OR MORE CONSUMERS. THOSE CONSUMERS ARE IN CHARGE OF KEEPING THINGS SYNCHRONIZED IN OUR QUERY STORE. • VERY MUCH LIKE COMMANDS, EVENTS ARE MESSAGES. THE DIFFERENCE WITH A COMMAND IS SUMMED UP HERE: A COMMAND IS CHARACTERIZED BY AN ACTION THAT MUST HAPPEN, AND AN EVENT BY SOMETHING THAT HAS HAPPENED.
  • 36. PROS • SCALABILITY : THE NUMBER OF READS BEING FAR HIGHER THAN THE NUMBER OF MODIFICATIONS INSIDE AN APPLICATION, APPLYING THE CQRS PATTERN ALLOWS TO FOCUS INDEPENDENTLY ON BOTH CONCERNS. ONE MAIN ADVANTAGE OF THIS SEPARATION IS SCALABILITY: WE CAN SCALE OUR READING PART DIFFERENTLY FROM OUR WRITING PART (ALLOCATE MORE RESOURCES, DIFFERENT TYPES OF DATABASE). • FLEXIBILITY : IT’S EASY TO UPDATE OR ADD ON THE READING SIDE, WITHOUT CHANGING ANYTHING ON THE WRITING SIDE. DATA CONSISTENCY IS THEREFORE NOT ALTERED.
  • 37. CQRS • CQRS IS A SIMPLE PATTERN, WHICH ENABLES FANTASTIC POSSIBILITIES. IT CONSISTS IN SEPARATING THE READING PART FROM THE WRITING PART, WITH QUERIES AND COMMANDS. • MANY ADVANTAGES RESULT FROM ITS USAGE, ESPECIALLY IN TERM OF FLEXIBILITY AND SCALING. • EVENT SOURCING COMPLETES THE CQRS PATTERN BY SAVING THE HISTORY THAT DETERMINES THE CURRENT STATE OF OUR APPLICATION. THIS IS VERY USEFUL IN DOMAINS LIKE ACCOUNTING, BECAUSE YOU GET IN YOUR DATABASE A SERIES OF EVENTS (LIKE FINANCIAL TRANSACTIONS FOR INSTANCE) THAT CANNOT BE MODIFIED OR DELETED.
  • 38. SUMMARY • WHAT’S INTERESTING WITH CQRS IS EVENT SOURCING. IT CAN BE USED WITHOUT APPLICATION OF THE CQRS PATTERN, BUT IF WE USE CQRS, EVENT SOURCING APPEARS LIKE A MUST-HAVE. • EVENT SOURCING CONSISTS IN SAVING EVERY EVENT THAT IS OCCURRING, IN A DATABASE, AND THEREFORE HAVING A BACK-UP OF FACTS. IN A DESIGN OF EVENT SOURCING, YOU CANNOT DELETE OR MODIFY EVENTS, YOU CAN ONLY ADD MORE. THIS IS BENEFICIAL FOR OUR BUSINESS AND OUR INFORMATION SYSTEM, BECAUSE WE CAN KNOW AT A SPECIFIC TIME WHAT IS THE STATUS OF A COMMAND, A USER OR SOMETHING ELSE. ALSO, SAVING EVENTS ALLOWS US TO REBUILD THE SERIES OF EVENTS AND GAIN TIME IN ANALYSIS. • CQRS IS A SIMPLE PATTERN, WHICH ENABLES FANTASTIC POSSIBILITIES. IT CONSISTS IN SEPARATING THE READING PART FROM THE WRITING PART, WITH QUERIES AND COMMANDS.
  • 39. AWS • IN REACTIVE, MESSAGE-DRIVEN APPLICATIONS IT IS CRUCIAL TO DECOUPLE PRODUCERS AND CONSUMERS OF MESSAGES. COMBINING PUBLISH/SUBSCRIBE (PUB/SUB) AND QUEUEING COMPONENTS WE ARE ABLE TO BUILD RESILIENT, SCALABLE AND FAULT-TOLERANT APPLICATION ARCHITECTURES. AWS OFFERS A VARIETY OF COMPONENTS WHICH IMPLEMENT PUB/SUB OR QUEUEING. • TWO SIMPLE BUT POWERFUL COMPONENTS FOR EVENT AND MESSAGE PROCESSING ON AWS: THE SIMPLE NOTIFICATION SERVICE(SNS) AND THE SIMPLE QUEUE SERVICE (SQS).
  • 40. OUR GOAL • THE GOAL IS TO DEVELOP AN EVENT PIPELINE WHICH SENDS A MESSAGE TO A SLACK CHANNEL WHENEVER SOMEONE UPLOADS A PICTURE TO AN S3 BUCKET. FOR DEMONSTRATION PURPOSES WE WILL ALSO STORE THE EVENTS IN A QUEUE FOR ASYNCHRONOUS PROCESSING. THE ARCHITECTURE INVOLVES S3 EVENT NOTIFICATIONS, AN SNS TOPIC, AN SQS QUEUE, AND A LAMBDA FUNCTION SENDING A MESSAGE TO THE SLACK CHANNEL. HERE IS AN ANIMATION OF THE FINAL RESULT.
  • 41. AWS
  • 42. ARCHITECTURE • LET'S LOOK AT THE HIGH LEVEL ARCHITECTURE. WHEN A CLIENT UPLOADS AN IMAGE TO THE CONFIGURED S3 BUCKET, AN S3 EVENT NOTIFICATION WILL FIRE TOWARDS SNS, PUBLISHING THE EVENT INSIDE THE RESPECTIVE TOPIC. THERE WILL BE TWO SUBSCRIBERS FOR THAT TOPIC: AN SQS QUEUE AND A LAMBDA FUNCTION. • THE SQS QUEUE STORES THE EVENT FOR ASYNCHRONOUS PROCESSING, (E.G. THUMBNAIL GENERATION OR IMAGE CLASSIFICATION). THE LAMBDA FUNCTION PARSES THE EVENT AND SENDS A NOTIFICATION MESSAGE TO A SLACK CHANNEL. WITHIN THE SCOPE OF THIS WE ARE NOT GOING TO DISCUSS THE ASYNCHRONOUS PROCESSING PART. DUE TO THE DECOUPLING OF PUBLISHING AND SUBSCRIBING WITH SNS WE ARE FREE TO ADD MORE CONSUMERS FOR THE EVENTS LATER.
  • 43. ARCHITECTURE • LET'S LOOK AT THE INDIVIDUAL COMPONENTS IN DETAIL. S3 ORGANIZES OBJECTS IN BUCKETS. WITHIN A BUCKET YOU CAN REFERENCE INDIVIDUAL OBJECTS BY KEY. UPLOADING A FILE TO S3 CAN EITHER BE DONE VIA THE AWS CONSOLE, THE AWS CLI, OR DIRECTLY THROUGH THE S3 API. • S3 ALLOWS TO CONFIGURE EVENT NOTIFICATIONS. EVENTS CAN BE CREATED BASED ON OBJECT CREATION OR DELETION. YOU CAN CHOOSE TO EITHER SEND THE EVENT TOWARDS AN SNS TOPIC, AN SQS QUEUE, OR A LAMBDA FUNCTION. • IN OUR CASE WE ARE GOING TO SEND THE EVENTS TO SNS AND THEN ALLOW INTERESTED APPLICATIONS TO SUBSCRIBE. INSTEAD OF SENDING EVENTS DIRECTLY TO ALL PARTIES, BY USING SNS AS AN INTERMEDIATE BROKER WE DECOUPLE PUBLISHING AND SUBSCRIPTION.
  • 44. ARCHITECTURE • SNS IS A SIMPLE PUB/SUB SERVICE WHICH ORGANIZES AROUND TOPICS. A TOPIC GROUPS TOGETHER MESSAGES OF THE SAME TYPE WHICH MIGHT BE OF INTEREST TO A SET OF SUBSCRIBERS. IN CASE OF A NEW MESSAGE BEING PUBLISHED TO A TOPIC, SNS WILL NOTIFY ALL SUBSCRIBERS. YOU CAN CONFIGURE DELIVERY POLICIES INCLUDING CONFIGURATION OF MAXIMUM RECEIVE RATES AND RETRY DELAYS. • THE GOAL IS TO SEND A SLACK MESSAGE ON OBJECT CREATION WITHIN OUR S3 BUCKET. WE ACHIEVE THAT BY SUBSCRIBING A LAMBDA FUNCTION TO THE SNS TOPIC. ON INVOCATION THE LAMBDA FUNCTION WILL PARSE AND INSPECT THE EVENT NOTIFICATION, EXTRACT RELEVANT INFORMATION, AND FORWARD IT TO A PRECONFIGURED SLACK WEBHOOK.
  • 45. Q&A