SlideShare a Scribd company logo
1 of 104
Alexey Bogachuk
Epam Systems
Solution Architecture and JavaScript
The Swedish Ship Vasa
The Swedish Ship Vasa
The Swedish Ship Vasa
70 met ers
• 300 soldiers
• 3 year
The Swedish Ship Vasa
The Swedish Ship Vasa
Who is guilty?
Gustav II Adolf Henrik Hybertsson
Inquest
• Balancing all of the conflicting constraints
• Risk management
• Customer management
• Wrong technologies
• Impossible requirements
Dead before the first tree
Architecture Cycle
Goals
Requirements
Architecture
SystemStakeholders
Failed before the first line of
code was written
Solution Architecture
Different Perspective
Different Perspective
BUSINESS ARCHITECTURE
INFRASTRUCTURE
ARCHITECTURE
TECHNOLOGY
ARCHITECTURE
SOLUTION ARCHITECTURE
DATA
ARCHITECTURE
BUSINESS
DATA
INFRASTRUCTURE
TECHNOLOGY
EPAM CC
Solution Architecture Book
History: Clockwork Jimmy
Architectural Kata is …
• Replace the current UI solution
• Provide a new approach for D&D
• Provide better User Experience
• Different Platforms
Clockwork Jimmy
Minsk
Montreal
Dublin
Clockwork Jimmy
1
Presentation Time
Architecture Cycle
Goals
Requirements
Architecture
SystemStakeholders
RACI
• Responsible (R)
• Accountable (A)
• Consulted (C)
• Informed (I)
RACI
Project
Manager
Architect Designer
Roles
SAD A R I
Design C I R
Resource
Plan
R A I
Tasks
Negative Stakeholders
Onion
System
Solution Architecture Book
• Stakeholders
History: Not Enough Fast
Architectural Kata is …
• Trading system
• Complete transactions in 0.5 sec
• The project was failed. Why?
Dynamic Goal
0.6 > 0.5 > 0.4
Architecture Cycle
Goals
Requirements
Architecture
SystemStakeholders
Business Requirements
Objective
Business Goals
Business Driver
Business Goals
Objective Objective
Business Principle
Projects without Goals
Book
https://goo.gl/SybSxi
about discovery Phase
Solution Architecture Book
• Stakeholders
• Business Goals
How Pioneers a Horse Milked
Architectural Kata is …
• Existing website
• Open and work on the phone of employees
• Offline mode
Pioneers
New Details
• Only Android System
• Only Offline
• Deadline is 2 months
Just need PWA
Isomorphism
Services
Rest API
Request Facade
Router
Adapter
Driver
IndexedDB
MongoDB
Client App
Server App
Architecture Cycle
Goals
Requirements
Architecture
SystemStakeholders
Example of requirements
MoSCoW
M - MUST
o
S - SHOULD
C - COULD
o
W - WON’T
Functional Requirements
“If only the functionality would matter then we would need no
internal structure, a single monolithic blob would be enough.”
Software Architecture in Practice
Requirements
Non-Functional
Functional
Constrains
Quality Attributes
History: White Сrow
Architectural Kata is …
• Separate service
• Converting and caching data in xml format
• Legacy system
White Сrow
White Сrow
Architecture Cycle
Goals
Constrains
Architecture
SystemStakeholders
Constrains
• Technical
• Time and budget
• People
Solution Architecture Book
• Stakeholders
• Business Goals
• Constrains
Quality Attributes
•accessibility
•accountability
•accuracy
•adaptability
•administrability
•affordability
•agility
•auditability
•autonomy
•availability
•compatibility
•composability
•configurability
•correctness
•credibility
•customizability
•debugability
•degradability
•determinability
•demonstrability
https://en.wikipedia.org/wiki/List_of_system_quality_attributes
Quality Attributes
History: Security in Library
Security?
Security in Library
Architecture Cycle
Goals
Quality Attributes
Architecture
SystemStakeholders
Quality Attributes Scenario
Performance?
Quality Attributes Scenario
Source of stimulus
Stimulus
Environment
Artifact
Response
Measure
Solution Architecture Book
• Stakeholders
• Business Goals
• Constrains
• Quality Attributes
Architecture Cycle
Goals
Quality Attributes
Architecture
SystemStakeholders
Architecture
PRG Datacenter
Prod environment
PRODUCTION
CBJ Datacenter
Prod environment
PRODUCTION
“PLAY” Server Host 2
eWF Backend
(Play port 9000)
“ADT” Server
ADT Backend
(Play port 9000)
CAS
(Tomcat port
8080)
“Balancer” Server
NGinx
Frontend
NGinx
Backend
EWF->ADT: Get CI values
EWF->CAS: Authenticate
EWF->CAS: Get new tokenCalls from external systems
“Report” Server
Reporting server
EWF->Report: schedule a report
EWF-Report: generate report
ReplicationeWF
Prod
ADT
Prod
CAS
Prod
“CQ Author” Server
“CQ Publisher” Server
CQ Dispatcher
CQ Publisher
(Prod run mode)
CQ Author
(Passive)
Static resources
F5
BIG IP
Enduser
eWF
Prod
ADT
Prod
CAS
Prod
F5
BIG IP
eWF
Staging
ADT
Staging
CAS
Staging
Replication
Staging (Prod Config)
“PLAY” Server
eWF Backend
(Play 9000)
uses local cache
“ADT” Server
ADT Backend
(Play)
uses local cache
CAS
(Tomcat)
“Balancer” Server
NGinx
Frontend
NGinx
Backend
EWF->ADT: Get CI values
Reporting server
“CQ Publisher” Server
CQ Dispatcher
CQ Publisher
(Staging run mode)
“Centr. logging” Server
Centr.
Logging
server
Mongo
DB
“PLAY” Server Host 1
eWF Backend
(Play port 9000)
TSA
(main)
Cluster
TSA
(backup
host 2)
TSA
(main)
TSA
(backup
host 2)
REST calls from UI
3dns
Akamai
“PLAY” Server Host 2
eWF Backend
(Play port 9000)
“ADT” Server
ADT Backend
(Play port 9000)
CAS
(Tomcat port
8080)
“Balancer” Server
NGinx
Frontend
NGinx
Backend
EWF->ADT: Get CI values
EWF->CAS: Authenticate
EWF->CAS: Get new tokenCalls from external systems
“Report” Server
Reporting server
EWF->Report: schedule a report
EWF-Report: generate report
“CQ Author” Server
“CQ Publisher” Server
CQ Dispatcher
CQ Publisher
(Prod run mode)
CQ Author
(Activee)
Static resources
“Centr. logging” Server
Centr.
Logging
server
Mongo
DB
“PLAY” Server Host 1
eWF Backend
(Play port 9000)
TSA
(main)
TSA
(backup
host 2)
TSA
(main)
TSA
(backup
host 2)
REST calls from UI
Cluster
Internal reports
External reports
E2E (UAT) environment
Same as Prod environment in PRG
CQ Authors
Support team
Manage content
DHl Admins
Manage configuration items
Run internal reports
Solve Online Problems
Release new version
UAT team
Publish conf items values
Report
Prod
Report
Prod
Legend
Application
Hardware service
High available hosts (at least 2 hosts)
Cluster
Single host
High availbale DB
Report
Prod
“Migratiion” Server
Migration Backend
Draft servers
Migration
Schema
Migration Users
Migrate existing data
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Centr
logging
agent
Architectural Tactics
FE Performance Tactics
• Improve User Experience
• Optimize Resources (js, css, images, fonts, etc)
• Caching
• Critical Path
• Compression
• HTTP/2
Layered Architecture
BACK-END
DATA LAYER
DNS
VIEW
CQRS
Controllers/Services/API
READ ServiceWRITE Service
Data Access Data AccessConsumer
Fault Tolerance
Fault Tolerance
Fault will always
Fault -> Error -> Failure
Fail Fast
Fail Fast
• Verify Integration Points early
• Avoid Slow Responses
• Input validation
Lie connection
Circuit Breaker Pattern
Close
Open
Half-open
Succes
s
Open
Fail
Fast
Fail, Open
Try Request
Success,
Close
Bulkheads
Summary
Service
Validation
Discovery
Circuit Breaker
Logger
Log Errors
• Error Info
• Context Data
• Core Dump ~ 500 Mb
Leaky Bucket Counter
Core Dump
Summary
Service
Validation
Discovery
Circuit Breaker
LeakyBucket
Logger Service
Validation
Discovery
?
?
?
Integration
SERVICE 1 SERVICE 2
TCP/UDP/HTTP(S)
Book
https://goo.gl/8DMmgq
with 63 Patterns
Book
https://goo.gl/nMa8PA
about architecture
Solution Architecture Book
• Stakeholders
• Business Goals
• Constrains
• Quality Attributes
• Architecture
But Let’s do an Example
• Provide improvements for current digital platform
• 400 consumer static websites
• High Cost and Long Time to Market for Upgrades
• Expensive content management workflows
• Drupal
Architectural Kata is …
Solution
Other
Solution?
Let’s play Architecture Game
Define Goals
Improve customer satisfaction
Optimize costs
Decrease time to market by X%
Decrease time for content management
by X%
Objectives
Business Goals
Business Driver
Define Constrains
• Can’t say goodbye to Drupal
• ReactJS and VueJS is used in the company
Define Quality Attributes
• Maintainability
• Testability
• Re-usability
• Performance
• Accessibility
Design – C4
Application Platform
Add/Edit
Visit Add/Edit
Content
Design – C4
Add/Edit
Visit Add/Edit
Content
Application Platform
WebSite
ContentHub
Site Generator
System
3Party
Design – C4
Visit Add/Edit
Content
Application Platform
WebSite
ContentHub
3Party
Site Generator System
Compo-
nents
Themes
Template
Service
Compose
Service
Technology Solution
Template
Service
Solution
Solution Architecture Book
• Stakeholders
• Business Goals
• Constrains
• Quality Attributes
• …
• Choice of technology
Think about architecture?
Architectural Kata is …
• Defined all Architecture Requirements/Goals/etc
• Developed solution
• The project was failed. Why?
Architecture Cycle
Goals
Quality Attributes
Architecture
SystemStakeholders
Is your project failed?
Thank you!
Thank you!
Questions?
Bogachuk Alexey
bogachuk.alex@gmail.com

More Related Content

What's hot

Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Lucas Jellema
 
Scaling wix to over 70 m users
Scaling wix to over 70 m usersScaling wix to over 70 m users
Scaling wix to over 70 m users
Yoav Avrahami
 
Online msbi(ssis, ssas, ssrs) training by real time experts
Online msbi(ssis, ssas, ssrs) training by real time expertsOnline msbi(ssis, ssas, ssrs) training by real time experts
Online msbi(ssis, ssas, ssrs) training by real time experts
ssmasters
 

What's hot (20)

Implementing Microservices on Oracle Cloud: Open, Manageable, Polyglot, and S...
Implementing Microservices on Oracle Cloud: Open, Manageable, Polyglot, and S...Implementing Microservices on Oracle Cloud: Open, Manageable, Polyglot, and S...
Implementing Microservices on Oracle Cloud: Open, Manageable, Polyglot, and S...
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
 
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
 
KoprowskiT_session1_SDNEvent_WASDforBeginners
KoprowskiT_session1_SDNEvent_WASDforBeginnersKoprowskiT_session1_SDNEvent_WASDforBeginners
KoprowskiT_session1_SDNEvent_WASDforBeginners
 
Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...
 
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and FutureReview Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
 
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
 
How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.
 
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
 
oracle openworld review UX presentation 2016
oracle openworld review UX presentation 2016oracle openworld review UX presentation 2016
oracle openworld review UX presentation 2016
 
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
 
Transitioning from Java to Scala for Spark - March 13, 2019
Transitioning from Java to Scala for Spark - March 13, 2019Transitioning from Java to Scala for Spark - March 13, 2019
Transitioning from Java to Scala for Spark - March 13, 2019
 
Scaling wix to over 70 m users
Scaling wix to over 70 m usersScaling wix to over 70 m users
Scaling wix to over 70 m users
 
DEVNET-1140 InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
DEVNET-1140	InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...DEVNET-1140	InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
DEVNET-1140 InterCloud Mapreduce and Spark Workload Migration and Sharing: Fi...
 
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
 
Online msbi(ssis, ssas, ssrs) training by real time experts
Online msbi(ssis, ssas, ssrs) training by real time expertsOnline msbi(ssis, ssas, ssrs) training by real time experts
Online msbi(ssis, ssas, ssrs) training by real time experts
 
NextGen IBM Cloud Monitoring and Logging
NextGen IBM Cloud Monitoring and LoggingNextGen IBM Cloud Monitoring and Logging
NextGen IBM Cloud Monitoring and Logging
 
Tokyo azure meetup #9 azure update, october
Tokyo azure meetup #9   azure update, octoberTokyo azure meetup #9   azure update, october
Tokyo azure meetup #9 azure update, october
 
Tokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, AugustTokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, August
 

Similar to Aliaksei Bahachuk JavaScript and solution architecture

Similar to Aliaksei Bahachuk JavaScript and solution architecture (20)

Aliaksei Bahachuk - JavaScript and Solution Architecture
Aliaksei Bahachuk - JavaScript and Solution ArchitectureAliaksei Bahachuk - JavaScript and Solution Architecture
Aliaksei Bahachuk - JavaScript and Solution Architecture
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
(ARC309) Getting to Microservices: Cloud Architecture Patterns
(ARC309) Getting to Microservices: Cloud Architecture Patterns(ARC309) Getting to Microservices: Cloud Architecture Patterns
(ARC309) Getting to Microservices: Cloud Architecture Patterns
 
Serverless Culture
Serverless CultureServerless Culture
Serverless Culture
 
Migration from Oracle to PostgreSQL: NEED vs REALITY
Migration from Oracle to PostgreSQL: NEED vs REALITYMigration from Oracle to PostgreSQL: NEED vs REALITY
Migration from Oracle to PostgreSQL: NEED vs REALITY
 
Serverless SQL
Serverless SQLServerless SQL
Serverless SQL
 
Rational CLM at a glance
Rational CLM at a glanceRational CLM at a glance
Rational CLM at a glance
 
Sebastien goasguen cloud stack the next year
Sebastien goasguen   cloud stack the next yearSebastien goasguen   cloud stack the next year
Sebastien goasguen cloud stack the next year
 
RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans
 
[RightScale Webinar] Architecting Databases in the cloud: How RightScale Doe...
[RightScale Webinar] Architecting Databases in the cloud:  How RightScale Doe...[RightScale Webinar] Architecting Databases in the cloud:  How RightScale Doe...
[RightScale Webinar] Architecting Databases in the cloud: How RightScale Doe...
 
Azure reference architectures
Azure reference architecturesAzure reference architectures
Azure reference architectures
 
BBC
BBCBBC
BBC
 
Security on AWS
Security on AWSSecurity on AWS
Security on AWS
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at Scale
 
Microservices: Architecting for Innovation - Level 300
Microservices: Architecting for Innovation - Level 300Microservices: Architecting for Innovation - Level 300
Microservices: Architecting for Innovation - Level 300
 
Building FoundationDB
Building FoundationDBBuilding FoundationDB
Building FoundationDB
 
ARC201 Microservices Architecture @ AWS re:Invent 2015
ARC201 Microservices Architecture @ AWS re:Invent 2015ARC201 Microservices Architecture @ AWS re:Invent 2015
ARC201 Microservices Architecture @ AWS re:Invent 2015
 
AWS Summit Auckland - Introducing Well-Architected for Developers
AWS Summit Auckland  - Introducing Well-Architected for DevelopersAWS Summit Auckland  - Introducing Well-Architected for Developers
AWS Summit Auckland - Introducing Well-Architected for Developers
 
AWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-RayAWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-Ray
 

Recently uploaded

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

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
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
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 ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
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 🔝✔️✔️
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
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...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

Aliaksei Bahachuk JavaScript and solution architecture

Editor's Notes

  1. Уже традиционно, я хотел бы начать свое выступление с истории Истории, повествующей о шведском корабле(не побоюсь этого слова Галере) Ваза, который заставит вас совершенно по-другому взглянуть на подходы к построению архитектуры приложений и современную роль архитектора на проекте
  2. Итак, наше повествование начинается аж в 1625 году История «Вазы» началась 16 (26) января 1625 года, когда король Швеции Густав II Адольф подписал с голландским кораблестроителем Хенриком Хюбертссоном контракт на постройку нового боевого корабля для шведского флота. По замыслу короля, новый корабль должен был стать флагманом Шведского королевского флота, самым крупным и самым тяжеловооружённым кораблём из всех, имевшихся в распоряжении стран, располагавших выходом к Балтике.
  3. 70 meters long, able to carry 300 soldiers, and with an astonishing 64 heavy guns mounted on two gun decks Hybertsson had to balance many concerns. Swift time to deployment was critical, but so were performance, functionality, safety, reliability, and cost. He was also responsible to a variety of stakeholders. In this case, the primary customer was the king, but Hybertsson also was responsible to the crew that would sail his creation. Also like all architects, Hybertsson brought his experience with him to the task. In this case, his experience told him to design the Vasa as though it were a single-gun-deck ship and then extrapolate, which was in accordance with the technical environment of the day. Faced with an impossible task, Hybertsson had the good sense to die about a year before the ship was finished. SA in Practice P-165
  4. К воскресенью 10 1628 года «Ваза» стоял на швартовах напротив королевского дворца. Там на борт был принят балласт, а также пушки, порох и ядра для первого плавания. Когда корабль вышел на открытое пространство бухты, сильный порыв ветра наполнил паруса, и «Ваза» начал крениться на подветренную сторону, но затем выровнялся и прошёл ещё примерно 1300 метров, дойдя до острова Бекхольмен у входа в гавань Стокгольма. Там, в ста метрах от острова, новый порыв ветра снова накренил корабль, на этот раз значительно сильнее. Вода хлынула через открытые пушечные порты, корабль лёг на борт и начал тонуть с поднятыми парусами и развевающимися флагами.
  5. Когда корабль вышел на открытое пространство бухты, сильный порыв ветра наполнил паруса, и «Ваза» начал крениться на подветренную сторону, но затем выровнялся и прошёл ещё примерно 1300 метров, дойдя до острова Бекхольмен у входа в гавань Стокгольма. Там, в ста метрах от острова, новый порыв ветра снова накренил корабль, на этот раз значительно сильнее. Вода хлынула через открытые пушечные порты, корабль лёг на борт и начал тонуть с поднятыми парусами и развевающимися флагами.
  6. Никаких результатов не принесли допросы кораблестроителей, под руководством которых строился «Ваза». Основная сложность заключалась в том, что фактический строитель корабля Хенрик Хюбертссон умер за год до катастрофы. Ответственные за верфь, где был построен «Ваза», судостроитель Хейн Якобссон и арендатор верфи Арент де Грот поклялись в своей невиновности, указав, что корабль был построен по тем размерам, которые утвердил лично король Густав II Адольф. И на борту было то количество пушек, которое стояло в контракте. Привлекать к следствию самого короля в Государственном совете не решились. В итоге никто не был признан виновным и никто не был осуждён за катастрофу. В ходе следствия выдвигались разнообразные гипотезы относительно причин гибели корабля: алкогольное опьянение капитана, ненадёжное закрепление пушек и т. д. Ни одна из этих версий не подтвердилась. В конце концов, следствием был сделан вывод: при проектировании корабля были допущены ошибки. Действительно, «Ваза» имел слишком высоко расположенный центр тяжести и был слишком узок, хотя судостроители, тайно от короля, увеличили его ширину на 2,5 метра, его подводная часть по отношению к корпусу, рангоуту и артиллерии имела слишком малый вес. Это привело к неустойчивости корабля. Капитан корабля Сёфринг Ханссен сам отмечал это на следствии, однако в случае с «Вазой» предпринять было нечего: взять большее количество балласта и тем повысить остойчивость корабля не позволяла его конструкция.
  7. История Вазы, хотя более 375 лет, хорошо иллюстрирует Цикл влияния архитектуры: цели организации порождают требования, которые порождают архитектуру, которая порождает систему. И цена ошибки на любом из этапов может стоить вам корабль
  8. При неверной архитектуре, сколько проектов мертвы еще до написания первой строчки кода?
  9. Говоря об архитектуре, каждый смотрит на нее под своим углов со своей перспективы. Поставщики пушек смотрели на судно, как на объект, который должен был вместить ровно 64 пушки Маляры – как на площадь для закраски
  10. Король, как главный заказчик, смотрел на корабль как инвестицию в свое политическое будущее Что в свою очередь дало толчок к созданию каких-то чертежей Корабль строился в верфях и доках
  11. Сейчас казнить архитекторов нельзя (запрещает законодательство), а так бы книга была написана кровью
  12. Во время историй, я буду предлагать решать архитектурные задачки или каты Где в упрощенном виде описан самый первый запрос, который может прийти от клиента.
  13. История Вазы, хотя более 375 лет, хорошо иллюстрирует Цикл влияния архитектуры: цели организации порождают требования, которые порождают архитектуру, которая порождает систему.
  14. Responsible (R): the persons who will be performing the work on the task. Accountable (A): the person who is ultimately held accountable for successful completion of the task and is the decision maker. Consulted (C): the stakeholders who will be asked to provide an opinion or information about the task. Informed (I): a stakeholders that is kept up to date on the task and notified of its outcome.
  15. Из Минусов RACI матрицы, что она не покрывает следующий случай
  16. Кстати, вы с этим типом стейкхолдеров тоже встречались, например законы требующие получить сертификат соответствия у внешние аудиторских компаний по аксесабилити или безопасности вашего приложения.
  17. Business goal was to be quicker then competitors At the time of writing the spec competitors were doing transactions in 0.6 sec A month later a new product was launched offering transactions in 0.4 sec
  18. Business goal was to be quicker then competitors At the time of writing the spec competitors were doing transactions in 0.6 sec A month later a new product was launched offering transactions in 0.4 sec
  19. Заказчик хотел иметь самую быструю систему (самый большой самый тяжеловооруженный корабль), на это была направлена вся его реклама А Ценность такой системы заметно падала!
  20. Business Objective - A strategic business goal for an enterprise. Example - We will provide the best customer service in our field. Business Principle - High level rules that govern the manner in which business capabilities are delivered by the enterprise and provide the context for designing and defining how these capabilities will be realised. Example - Quality will not be sacrificed by cost efficiency. Business Domain - This is the top level construct in the Business Architecture.  It provides a means of categorising the business related elements independent of the context in which it is applied. In other words the main groupings of the business, not necessarily the organisational functions. e.g., Invoicing belongs to the Finance domain but may appear in the Sales Order process. Example - Sales and Marketing, Operations, Customer Services, Finance, Fulfilment, HR, IT, Business Control, Trading and Order Management. Business Capability- Business Capabilities are used to model the capabilities of a business or enterprise. Capabilities represent what the business does (or needs to do) in order to fulfil its objectives and responsibilities. Examples - Order Approval, Picking, Packing, Delivery, Client Management, Client Invoicing, Trades Matching and Confirmation, Perform Industry Research.   https://www.enterprise-architecture.org/business-architecture-tutorials/55-business-architecture-overview
  21. • Проекты, которые не имеют четких целей, постоянно борются, чтобы понять, каковы их настоящие требования, и вряд ли их обнаружат. • Проекты без целей уязвимы для давления на добавление требований, даже если у них нет времени или денег для большей работы.
  22. Whether requirements are specified using the “MoSCoW” style (must, should, could, won’t), or as a collection of “user stories,” Они рассказывают, что система должна делать, а не какой она должна быть
  23. Functional - These requirements are satisfied by including an appropriate set of responsibilities within the design. Quality attribute - These requirements are satisfied by the structures and behaviors of the architecture. Constraints - A constraint is a design decision that’s already been made
  24. История про библиотеку, где я хотел посмотреть каталог. Нужно было зарегистрироваться и указать емайл и телефон! А потом должна была прийти СМС!
  25. Вроде ошибка в определении Quality Attributes Но с другой стороны Security в приложении важно. Чего-то не хватает?
  26. “In summary, here are the six parts: Source of stimulus. This is some entity (a human, a computer system, or any other actuator) that generated the stimulus. 2. Stimulus. The stimulus is a condition that requires a response when it arrives at a system. 3. Environment. The stimulus occurs under certain conditions. The system may be in an overload condition or in normal operation, or some other relevant state. For many systems, “normal” operation can refer to one of a number of modes. For these kinds of systems, the environment should specify in which mode the system is executing. “4. Artifact. Some artifact is stimulated. This may be a collection of systems, the whole system, or some piece or pieces of it. 5. Response. The response is the activity undertaken as the result of the arrival of the stimulus. 6. Response measure. When the response occurs, it should be measurable in some fashion so that the requirement can be tested.
  27. “We call these techniques architectural tactics. A tactic is a design decision that influences the achievement of a quality attribute response—tactics directly affect the system’s response to some stimulus. Tactics impart portability to one design, high performance to another, and integrability to a third
  28. speed up delivery with faster dns-lookup, preconnect, Prefetch and preload
  29. “Latency. The time between the arrival of the stimulus and the system’s response to it. • Deadlines in processing. In the engine controller, for example, the fuel should ignite when the cylinder is in a particular position, thus introducing a processing deadline. • The throughput of the system, usually given as the number of transactions the system can process in a unit of time. • The jitter of the response—the allowable variation in latency. • The number of events not processed because the system was too busy to respond
  30. Command Query Responsibility Segregation Подобный паттерн добавляет серьезный оверхед на нашу архитектуру и применение данного паттерна должно быть продиктовано нашим сценарием
  31. Отказоустойчивость!
  32. Отказоустойчивость
  33. Неисправность ошибка падение
  34. Pragmatic Programmers - Release It - Design and Deploy Production-Ready Software.pdf – p.132 Avoid Slow Responses and Fail Fast If your system cannot meet its SLA, inform callers quickly. Don’t make them wait for an error message, and don’t make them wait until they time out. That just makes your problem into their prob- lem. Reserve resources, verify Integration Points early In the theme of “don’t do useless work,” make sure you will be able to complete the transaction before you start. If critical resources aren’t available—for example, a popped Circuit Breaker on a required call out—then don’t waste work by getting to that point. The odds of it changing between the beginning and the mid- dle of the transaction are slim. Use for input validation Do basic user input validation even before you reserve resources. Don’t bother checking out a database connection, fetching domain objects, populating them, and calling validate( ) just to find out that a required parameter wasn’t entered.
  35. Pragmatic Programmers - Release It - Design and Deploy Production-Ready Software.pdf – p.132 Avoid Slow Responses and Fail Fast If your system cannot meet its SLA, inform callers quickly. Don’t make them wait for an error message, and don’t make them wait until they time out. That just makes your problem into their prob- lem. Reserve resources, verify Integration Points early In the theme of “don’t do useless work,” make sure you will be able to complete the transaction before you start. If critical resources aren’t available—for example, a popped Circuit Breaker on a required call out—then don’t waste work by getting to that point. The odds of it changing between the beginning and the mid- dle of the transaction are slim. Use for input validation Do basic user input validation even before you reserve resources. Don’t bother checking out a database connection, fetching domain objects, populating them, and calling validate( ) just to find out that a required parameter wasn’t entered.
  36. Автоматический выключатель
  37. На примере приложения, слои это хорошо! Пример на уровне приложения: приложение падало, когда отваливалась база данных
  38. На примере приложения, слои это хорошо! А при общении со сторонними сервисами? Пример на уровне приложения: приложение падало, когда отваливалась база данных CPU as a services! (horizontal scaling) Pragmatic Programmers - Release It - Design and Deploy Production-Ready Software.pdf
  39. You need to know if an error is transient or intermittent. Solution: Define your leaky bucket counter Initial value at the system start-up Incrementing wnen specified issue occurs Decrementing over specified peroid but never less than initial value If exceeding a predetermined upper threshold, handle the error as permanent
  40. C4 model System Diagram
  41. Container Diagram
  42. Component Diagram
  43. Technical ARCHITECT’S INFLUENCE Positive experience with technologies and patterns Bad experiences are avoided in new designs Influence by trends Influence by education and training
  44. “The seven categories of architectural design decisions are these: Allocation of responsibilities 2. Coordination model 3. Data model 4. Management of resources 5. Mapping among architectural elements 6. Binding time decisions 7. Choice of technology
  45. Ваша архитектура говно, История про то, надо ли здесь все переписать?
  46. И если в процессе моего доклада вы все-таки начали задумываться о правильной парадигме построения архитектуры в приложениях, то вот вам напоследок еще одна история
  47. В джире у разработчиков не было ни слова написано ни про какие квалити атрибуты Они знать не знали ни про каких стейкхолдеров и рекварименты Они фича за фичей просто топили свое приложение А теперь поднимите руки, у кого на проекте кто-нибудь занимался чем-то подобным при построении архитектуры? Может вы совершаете ту же ошибку, а может она была совершена ранее А может ваше приложение уже утонуло, а вы еще не знаете об этом?