SlideShare a Scribd company logo
1 of 30
Modern Software
Architecture
BUILDING SOLUTIONS FOR WEB, CLOUD, AND MOBILE
Who is this guy?
Daniel Mohl




              danmohl@gmail.com
              www.twitter.com/dmohl
              blog.danielmohl.com
Who is this guy?
Agenda
Why should we change?
Trends in the Industry
Architecting for the Web
Architecting for the Cloud
Architecting for Mobile
Wrapping it Up
Why should we change?
Trends in the Industry
Moving to the client
Back to the metal
Horizontal Scaling
Schema-less Data Stores
User Centric Solutions
Architecting for the Web
No more WebForms – Reduce leaky abstractions
Separation of Concerns
Design Patterns – Some new, some old
Single Page Applications
Single Page Applications
Single Page Applications - Layers
Single Page Applications – MV*/C

                   Model




            View           Controller
Single Page Applications – MVVM
                 View




               ViewModel




                Model
Single Page Applications – MVVM
A Few JavaScript Patterns
Nested Namespace Pattern
Addy Osmani's Book - Learning JavaScript Design Patterns



var myApp = myApp || {};
myApp.routers = myApp.routers || {};
myApp.model = myApp.model || {};
myApp.model.special = myApp.model.special || {};
Self-executing Anonymous Functions
(function( $ ) {
   var myVar, myFunc;
   myVar = 1;
   myFunc = function( val ) {
      return val + myVar;
   };
   console.log( myFunc(2) );
})( jQuery );
Revealing Module Pattern
(function( pub, $ ) {
  var myPrivateFunc = function(val) {
       return val * 100;
  };
  pub.myFunc = function( val1 ) {
       return val1 + myPrivateFunc (val1);
  };
})( window.myApp.myMod = window.myApp.myMod || {}, jQuery );
window.myApp.myMod.myFunc( 2 );
Other Patterns We Know and Love
 Messaging Patterns like Pub/Sub using AmplifyJS and PostalJS
 Observer pattern – $.trigger and $.on
 Façade - Seen a lot in jQuery – like $.get(…)
 Strategy and Command (inherit due to functional nature of JS)
 Iterator pattern - $.each
 Map/Reduce - _.map and _.reduce
 Memoize - _.memoize
Architecting for the Cloud
Competing Consumer




         Image from this Windows Azure Tutorial
CQRS




       Image from this MSDN Magazine Article
From http://sverrehundeide.blogspot.com/2010/02/persistence-with-command-and-query.html
MapReduce Pattern




        http://Image from this Wikipedia page
Architecting for Mobile
Faster and smarter
Modern HTTP Services




            Diagram from ofps.oreilly.com
NoSQL




        Diagram from bllllog.zenika.com
Web vs. Native
Web:
- jQuery Mobile, Sencha Touch, etc.
- HTML5 and CSS3 (offline storage, input tags, improved animations, Media Queries)
- Write once, deploy many
- Responsive Design helpers like Twitter Bootstrap and Foundation 3
Web vs. Native
Native:
- Faster and richer experience
- Better offline support (but still have to manage data access)
- Device hardware access (camera, GPS, accelerometer, flash, etc.)
- Seems to be preferred by consumers (look at Facebook for an example)
- Easier access


PhoneGap and others help provide a bridge
Wrapping it Up
User Focused
Movement to JavaScript and the client (Single Page Apps)
Reduce leaky abstractions
Use Modern HTTP Services
Build both Responsive Web sites and native mobile apps
Add NoSQL to the mix
Reduce payload size
Functional First (F#, Scala)
My Contact Information
Daniel Mohl




              danmohl@gmail.com
              www.twitter.com/dmohl
              blog.danielmohl.com

More Related Content

What's hot

Multi Tier Architecture
Multi Tier ArchitectureMulti Tier Architecture
Multi Tier Architecture
gatigno
 
Dynamic Object-Oriented Requirements System (DOORS)
Dynamic Object-Oriented Requirements System (DOORS)Dynamic Object-Oriented Requirements System (DOORS)
Dynamic Object-Oriented Requirements System (DOORS)
David Groff
 

What's hot (20)

Three Software Architecture Styles
Three Software Architecture StylesThree Software Architecture Styles
Three Software Architecture Styles
 
Multi Tier Architecture
Multi Tier ArchitectureMulti Tier Architecture
Multi Tier Architecture
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
 
Architectural Design Pattern: Android
Architectural Design Pattern: AndroidArchitectural Design Pattern: Android
Architectural Design Pattern: Android
 
PAC
PACPAC
PAC
 
Web architecture pocket guide
Web architecture pocket guideWeb architecture pocket guide
Web architecture pocket guide
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Dynamic Object-Oriented Requirements System (DOORS)
Dynamic Object-Oriented Requirements System (DOORS)Dynamic Object-Oriented Requirements System (DOORS)
Dynamic Object-Oriented Requirements System (DOORS)
 
Model driven architecture
Model driven architectureModel driven architecture
Model driven architecture
 
MDA
MDAMDA
MDA
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
 
Day1
Day1Day1
Day1
 
User-centred design
User-centred designUser-centred design
User-centred design
 
Acrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVMAcrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVM
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 

Viewers also liked

05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
Majong DevJfu
 
Cs 1023 lec 6 architecture (week 1)
Cs 1023 lec 6 architecture (week 1)Cs 1023 lec 6 architecture (week 1)
Cs 1023 lec 6 architecture (week 1)
stanbridge
 
Week 8 Architectual Styles
Week 8 Architectual StylesWeek 8 Architectual Styles
Week 8 Architectual Styles
Roxy Pilly
 

Viewers also liked (20)

The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Modern Software Architecture Styles and Patterns
Modern Software Architecture Styles and PatternsModern Software Architecture Styles and Patterns
Modern Software Architecture Styles and Patterns
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
 
Orthogonal Architecture
Orthogonal ArchitectureOrthogonal Architecture
Orthogonal Architecture
 
Building Modern Software: UX and Design
Building Modern Software: UX and DesignBuilding Modern Software: UX and Design
Building Modern Software: UX and Design
 
Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"Django Weekend talk "Infrastructure of modern web applications"
Django Weekend talk "Infrastructure of modern web applications"
 
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
Pjok bs sem1_sma kelas xi kurikulum 2013_[blogerkupang.com]
 
REST made simple with Java
REST made simple with JavaREST made simple with Java
REST made simple with Java
 
Spotify services (SDC 2013)
Spotify services (SDC 2013)Spotify services (SDC 2013)
Spotify services (SDC 2013)
 
Oredev 2009 JAX-RS
Oredev 2009 JAX-RSOredev 2009 JAX-RS
Oredev 2009 JAX-RS
 
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014
 
Usability
UsabilityUsability
Usability
 
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa) Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
Pendidikan jasmani, olahraga, dan kesehatan (buku siswa)
 
Introduction to NserviceBus
Introduction to NserviceBusIntroduction to NserviceBus
Introduction to NserviceBus
 
Reactive Architecture
Reactive ArchitectureReactive Architecture
Reactive Architecture
 
CV Ruberto Luca Matteo: ICT SOlution Architect
CV Ruberto Luca Matteo: ICT SOlution ArchitectCV Ruberto Luca Matteo: ICT SOlution Architect
CV Ruberto Luca Matteo: ICT SOlution Architect
 
designing distributed scalable and reliable systems
designing distributed scalable and reliable systemsdesigning distributed scalable and reliable systems
designing distributed scalable and reliable systems
 
Cs 1023 lec 6 architecture (week 1)
Cs 1023 lec 6 architecture (week 1)Cs 1023 lec 6 architecture (week 1)
Cs 1023 lec 6 architecture (week 1)
 
Week 8 Architectual Styles
Week 8 Architectual StylesWeek 8 Architectual Styles
Week 8 Architectual Styles
 

Similar to Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile

Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
sapientindia
 
Vijay koul Resume_Java old
Vijay koul Resume_Java oldVijay koul Resume_Java old
Vijay koul Resume_Java old
vijay koul
 
Mobile First with Angular.JS - Владимир Цветков, Obecto
Mobile First with Angular.JS - Владимир Цветков, ObectoMobile First with Angular.JS - Владимир Цветков, Obecto
Mobile First with Angular.JS - Владимир Цветков, Obecto
beITconference
 
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar Cheekuru  NET UIChandra Sekhar Cheekuru  NET UI
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar
 

Similar to Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile (20)

Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
 
Fundaments of Knockout js
Fundaments of Knockout jsFundaments of Knockout js
Fundaments of Knockout js
 
Vijay koul Resume_Java old
Vijay koul Resume_Java oldVijay koul Resume_Java old
Vijay koul Resume_Java old
 
Angular JS Basics
Angular JS BasicsAngular JS Basics
Angular JS Basics
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails
 
Mobile First with Angular.JS - Владимир Цветков, Obecto
Mobile First with Angular.JS - Владимир Цветков, ObectoMobile First with Angular.JS - Владимир Цветков, Obecto
Mobile First with Angular.JS - Владимир Цветков, Obecto
 
Chandra Sekhar Cheekuru NET UI
Chandra Sekhar Cheekuru  NET UIChandra Sekhar Cheekuru  NET UI
Chandra Sekhar Cheekuru NET UI
 
Democratizing the Cloud with Open Source Cloud Development
Democratizing the Cloud with Open Source Cloud DevelopmentDemocratizing the Cloud with Open Source Cloud Development
Democratizing the Cloud with Open Source Cloud Development
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologies
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
MVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,MobileMVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,Mobile
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev day
 
Google App Engine overview (GAE/J)
Google App Engine overview (GAE/J)Google App Engine overview (GAE/J)
Google App Engine overview (GAE/J)
 
cvBarisGomleksizoglu-eng
cvBarisGomleksizoglu-engcvBarisGomleksizoglu-eng
cvBarisGomleksizoglu-eng
 
SeniorNET Bhanu Resume
SeniorNET Bhanu ResumeSeniorNET Bhanu Resume
SeniorNET Bhanu Resume
 
Single page application and canvas drawing
Single page application and canvas drawing Single page application and canvas drawing
Single page application and canvas drawing
 
Comparative analysis of java script framework
Comparative analysis of java script frameworkComparative analysis of java script framework
Comparative analysis of java script framework
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile

Editor's Notes

  1. The world around us is rapidly changing.The iPad changed the perception of user. They expect immediate resultsInformation should be available everywhere and from any deviceThey get an amazing experience from most apps built in a garage, so they expect that same experience from enterprise apps.There are more mobile device user’s than ever.The CTIA Wireless Association has indicated that there are more wireless subscriber connections in the US and its territories than people according to a CNET News article that can be found at http://news.cnet.com/8301-13506_3-20119272-17/u.s-has-more-mobile-subscribers-than-people-study-finds/. This means that our solutions must also respond well even when connection speeds aren’t optimal and connectivity is spotty.There’s also more data than ever before.And of course, we have to ensure that security is appropriately handled throughout.
  2. - Not just for social mediaNo postbacksHeavy emphasis on JavaScriptState stored in DOM, client-side DBs, or on the server (in the case of Hypermedia Architectures).
  3. - Show conceptual architecture of the full web solution- Explain routers/controllers, views (with templating engines), models, controllers, server-side models.- Design Patterns – Some new, some old
  4. - Show pattern MVC pattern
  5. - Show MVVM architecture- Discuss advantages
  6. - Explain what is being seen
  7. Protect the Global NamespaceSeveral ways to do it, one of my favorites is the nested namespace patternExplain what is being seen
  8. - Explain the pattern (protects the global namespace, provides encapsulation and scoping)- Show simple example
  9. - Explain the pattern (provides modularity)- Show simple example- Combined with script loaders (standards such as AMD (RequireJS) and CommonJS – arguably better for server-side JS development) - Mention that this is also showing a pattern known as namespace injection
  10. - Horizontal scaling - Functional programming languages (F#, Scala, Erlang, Haskell) can be a win here (easier to use multiple cores and to scale across commodity servers). Immutable by defaultMessage passing as primary communication mechanismFunctions as first class citizens.Inherent support for patterns such as MapReduce and Fork/Join
  11. -Explain the pattern by showing a few architecture diagrams
  12. - Explain Command Query Responsibility Segregation- Reads and Writes Separated (clear SoC)- Usually implemented with some sort of service/message bus- Explain the different way of thinking that’s required here- Show high level conceptual architecture diagram
  13. - Explain Command Query Responsibility Segregation- Reads and Writes Separated (clear SoC)- Usually implemented with some sort of service/message bus- Explain the different way of thinking that’s required here- Show high level conceptual architecture diagram
  14. - Explain the pattern with an architectural diagram- Talk about real world problems that it solves
  15. - User focused (even more so than web)- Little to no documentation or help endusers- We can learn a lot of this and should apply it to building all our solutions- It has to be fast even when connectivity is inconsistent- Needs offline support
  16. One way to make things fast - Modern HTTP Services:- IntelligentURIs (support easier caching, drives routing in the web apps, mobile devices tend to work with it better)- JSON as the primary payload (smaller payload, mobile devices work with it easier than SOAP, works better from JavaScript for web, no need to create proxies on the client from WSDL files or the like)- Many will call this architecture RESTful (however, the term REST causes a lot of arguments) - Hypermedia based architectures are closer to what purests call REST.Encompasses the above, but also moreState is maintained by links (means that URIs determine what the user can do, an information about the system) - Rather than using the term REST (which has become known as “anything but SOAP”). I generally say HTTP services or Hypermedia Services.
  17. - Not Only SQL- Talk about how it makes things fast (in-memory, optimized for reads, schema-less, many are eventually consistent, distributed, extremely fault-tolerant)- Show architecture of how it can be used (both as primary storage as glorified cache)
  18. - Libraries like jQuery Mobile - Responsive Design using CSS3 Media Queries- Solutions such as PhoneGap even give access to native hardware features- Write once, deploy many- Show structure of how to build a responsive web solution (may show a real example as well) – Discuss libraries that help – Foundation 3, Twitter Bootstrap, others?
  19. - Native is faster- Better offline support - Complete native look and feel- Consumers seem to prefer native (Facebook is a great example)