SlideShare uma empresa Scribd logo
1 de 107
Why Architecture
 Lars matters
      Jankowfsky,
  swoodoo.com
Lars Jankowfsky
     • CTO and (Co-)Founder swoodoo AG
     • (Co-)Founder OXID eSales AG
     • XP, agile development fanatic
     • developing since 15+ years
     • php since php/fi
     • Software Architect > 10 years




Lars Jankowfsky,
Architectur
     e
Zend Framework


   symfony
              cakePHP
ezComponent
     s
(c) istockphoto




success   (c) aboutpixel.de
Scale!
Speed!
Deploy!
long
project
lifetime
(c) istockphoto




code aging
(c) istockphoto




big ball of mud
(c) istockphoto




continuous maintenance
„For us, it’s really about scaling horizontally - to that end,
    Rails and Ruby haven’t been stumbling blocks, compared
    to any other language or framework. The performance
    boosts associated with a “faster” language would give us a
    10-20% improvement, but thanks to architectural changes
    that Ruby and Rails happily accommodated, Twitter is
    10000% faster than it was in January.“
    Blaine Cook, Twitter's lead architect




Lars Jankowfsky,
Principles of
   success
D.R.Y.
    Do Not Repeat Yourself
Single
responsibility
      quot;if it generates XML then it should not gene

principle
K.I.S.S.
      don‘t think too complex
(c) spackletoe http://www.flickr.com/photos/spackletoe/90811910/)
                                                   (c) aboutpixel.de
(c) istockphoto




(c) aboutpixel.de
Developing
Art
(c) dasbeibi @ aboutpixel.de
Evolving
Architecture
Y.A.G.N.I.
       You Ain‘t Gonna Need it
No
refactoring
,
no
evolution.
(c) istockphoto
Principle of
„bad smell“
Bad smells?




Lars Jankowfsky,
Bad smells?

     • Do maintenance cost keep increasing?




Lars Jankowfsky,
Bad smells?

     • Do maintenance cost keep increasing?
     • Simple features need too long to be implemented




Lars Jankowfsky,
Bad smells?

     • Do maintenance cost keep increasing?
     • Simple features need too long to be implemented
     • Small changes ripple through your system




Lars Jankowfsky,
dead code
dead code
data classes
comments „what not why“



               dead code
data classes
comments „what not why“


long methods
               dead code
data classes
• http://martinfowler.com/bliki/CodeSmell.html
     • http://www.codinghorror.com/blog/archives/
     000589.html




Lars Jankowfsky,
Architecture?
Layered Architecture




Lars Jankowfsky,
Layered Architecture
     • separation of concerns




Lars Jankowfsky,
Layered Architecture
     • separation of concerns
     • If they can live without each other - why to couple
     them?




Lars Jankowfsky,
Layered Architecture
     • separation of concerns
     • If they can live without each other - why to couple
     them?
     • Find the boundaries and cut mercilessly.




Lars Jankowfsky,
Layered Architecture
     • separation of concerns
     • If they can live without each other - why to couple
     them?
     • Find the boundaries and cut mercilessly.
     • Do not bypass any layer!




Lars Jankowfsky,
Layered Architecture
     • separation of concerns
     • If they can live without each other - why to couple
     them?
     • Find the boundaries and cut mercilessly.
     • Do not bypass any layer!
     • Separate modules/classes or go SOA




Lars Jankowfsky,
SOA




Lars Jankowfsky,
SOA
     • Pro: makes scaling very easy




Lars Jankowfsky,
SOA
     • Pro: makes scaling very easy
     • Pro: clear defined boundaries, no violations possible




Lars Jankowfsky,
SOA
     • Pro: makes scaling very easy
     • Pro: clear defined boundaries, no violations possible
     • Pro: perfect for refactoring




Lars Jankowfsky,
SOA
     • Pro: makes scaling very easy
     • Pro: clear defined boundaries, no violations possible
     • Pro: perfect for refactoring
     • Pro: Deployment benefits




Lars Jankowfsky,
SOA
     • Pro: makes scaling very easy
     • Pro: clear defined boundaries, no violations possible
     • Pro: perfect for refactoring
     • Pro: Deployment benefits
     • Con: integration testing gets more difficult




Lars Jankowfsky,
(c) istockphoto


Extend!
(c) istockphoto

Scale!
Database
ZendDb

                  ADOdb
  PDO

             doctrine
propel
Database




Lars Jankowfsky,
Database
     • you might use a database access layer




Lars Jankowfsky,
Database
     • you might use a database access layer
     • go ORM if you want (performance!)




Lars Jankowfsky,
Database
     • you might use a database access layer
     • go ORM if you want (performance!)
     • business layer - not abstraction layer




Lars Jankowfsky,
Database
     • you might use a database access layer
     • go ORM if you want (performance!)
     • business layer - not abstraction layer
     • let‘s call it Data Access Object




Lars Jankowfsky,
DB Abstraction Layer   PDO, ADOdb, ZendDb....
DB Abstraction Layer   PDO, ADOdb, ZendDb....




                       Table Data Gateway
   Object Layer        Pattern
DB Abstraction Layer   PDO, ADOdb, ZendDb....




                       Table Data Gateway
   Object Layer        Pattern




                        Data Access
                        Object
   Business Layer
DB Abstraction Layer   PDO, ADOdb, ZendDb....




                       Table Data Gateway
   Object Layer        Pattern




                        Data Access
                        Object
   Business Layer       function giveMeMyData()
MVC
Controller




Lars Jankowfsky,
Controller
     • Common mistake: business logic in controller




Lars Jankowfsky,
Controller
     • Common mistake: business logic in controller
     • Keep it out! Otherwise you will end with SQL in
     controller




Lars Jankowfsky,
Controller
     • Common mistake: business logic in controller
     • Keep it out! Otherwise you will end with SQL in
     controller
     • I/O mapping to the model and view only




Lars Jankowfsky,
Controller
     • Common mistake: business logic in controller
     • Keep it out! Otherwise you will end with SQL in
     controller
     • I/O mapping to the model and view only
     • Kick Ass!




Lars Jankowfsky,
View




Lars Jankowfsky,
View
     • Use a template engine. Watch performance!




Lars Jankowfsky,
View
     • Use a template engine. Watch performance!
     • No business logic in the template/html




Lars Jankowfsky,
View
     • Use a template engine. Watch performance!
     • No business logic in the template/html
     • Kick Ass!




Lars Jankowfsky,
(c) istockphoto
TDD
Enforces layered
  Architecture
use continuous
integration  e.g. cruise con
Commit
frequently.
Unit
Tests
Integration
   Tests
    Unit
   Tests
Acceptance
   Tests
Integration
   Tests
    Unit
   Tests
what if fixture/mock
preparation are much
  larger than tests?
what if your tests run for
         hours ?
(c) istockphoto
framework !== software
     architecture
evolve your architecture
split your application into
           layers
enforce proper usage of
         MVC
wrap database access
utilize test driven
  development
(c) dasbeibi @ aboutpixel.de
lars.jankowfsky@swoodoo.com



Lars Jankowfsky / Thorsten
                             all pictures (c) iStockPhoto if not stated different
C




M       V
C




M       V
C




M       V
C




M       V
Project structure
     • Remember? Find Boundaries and cut.
     • quot;Services/Layersquot; - at least on a directory level
     • use Framework structure

     • more ???




Lars Jankowfsky,
identify
important
decisions
scaling?




Lars Jankowfsky,
scaling?
     • web




Lars Jankowfsky,
scaling?
     • web
     • database




Lars Jankowfsky,
scaling?
     • web
     • database
     • services (ext./int.)




Lars Jankowfsky,

Mais conteúdo relacionado

Destaque

Coderfaire Data Networking for Developers
Coderfaire Data Networking for DevelopersCoderfaire Data Networking for Developers
Coderfaire Data Networking for Developers
Jason Myers
 
Flask - Python microframework
Flask - Python microframeworkFlask - Python microframework
Flask - Python microframework
André Mayer
 
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
RIA RUI Society
 
محاضرة 1 ظل.pps [compatibility mode]
محاضرة 1 ظل.pps [compatibility mode]محاضرة 1 ظل.pps [compatibility mode]
محاضرة 1 ظل.pps [compatibility mode]
freemadoo
 
محاضرة 2 ظل.pps [compatibility mode]
محاضرة 2 ظل.pps [compatibility mode]محاضرة 2 ظل.pps [compatibility mode]
محاضرة 2 ظل.pps [compatibility mode]
freemadoo
 

Destaque (20)

Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
 
Diabetes and Me: My Journey So Far
Diabetes and Me: My Journey So FarDiabetes and Me: My Journey So Far
Diabetes and Me: My Journey So Far
 
CoderDojo Romagna
CoderDojo RomagnaCoderDojo Romagna
CoderDojo Romagna
 
Filling the flask
Filling the flaskFilling the flask
Filling the flask
 
Fuga dalla Comfort Zone
Fuga dalla Comfort ZoneFuga dalla Comfort Zone
Fuga dalla Comfort Zone
 
Python Static Analysis Tools
Python Static Analysis ToolsPython Static Analysis Tools
Python Static Analysis Tools
 
Online / Offline
Online / OfflineOnline / Offline
Online / Offline
 
Introduction to SQLAlchemy and Alembic Migrations
Introduction to SQLAlchemy and Alembic MigrationsIntroduction to SQLAlchemy and Alembic Migrations
Introduction to SQLAlchemy and Alembic Migrations
 
Coderfaire Data Networking for Developers
Coderfaire Data Networking for DevelopersCoderfaire Data Networking for Developers
Coderfaire Data Networking for Developers
 
Flask - Python microframework
Flask - Python microframeworkFlask - Python microframework
Flask - Python microframework
 
RESTful Web API and MongoDB go for a pic nic
RESTful Web API and MongoDB go for a pic nicRESTful Web API and MongoDB go for a pic nic
RESTful Web API and MongoDB go for a pic nic
 
Eve - REST API for Humans™
Eve - REST API for Humans™Eve - REST API for Humans™
Eve - REST API for Humans™
 
Introduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMIntroduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORM
 
A Layered Architecture for the Model-driven Development of Distributed Simula...
A Layered Architecture for the Model-driven Development of Distributed Simula...A Layered Architecture for the Model-driven Development of Distributed Simula...
A Layered Architecture for the Model-driven Development of Distributed Simula...
 
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
Bug deBug Chennai 2012 Talk - Test automation support systems layered archite...
 
We Are All Remote Workers
We Are All Remote WorkersWe Are All Remote Workers
We Are All Remote Workers
 
REST Web API with MongoDB
REST Web API with MongoDBREST Web API with MongoDB
REST Web API with MongoDB
 
محاضرة 1 ظل.pps [compatibility mode]
محاضرة 1 ظل.pps [compatibility mode]محاضرة 1 ظل.pps [compatibility mode]
محاضرة 1 ظل.pps [compatibility mode]
 
محاضرة 2 ظل.pps [compatibility mode]
محاضرة 2 ظل.pps [compatibility mode]محاضرة 2 ظل.pps [compatibility mode]
محاضرة 2 ظل.pps [compatibility mode]
 
Impact of Restful Web Architecture on Performance and Scalability
Impact of Restful Web Architecture on Performance and ScalabilityImpact of Restful Web Architecture on Performance and Scalability
Impact of Restful Web Architecture on Performance and Scalability
 

Semelhante a Why Architecture in Web Development matters

So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
Lars Jankowfsky
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
Rasheed Waraich
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
jbandi
 
Rails Conf Europe 2007 Notes
Rails Conf  Europe 2007  NotesRails Conf  Europe 2007  Notes
Rails Conf Europe 2007 Notes
Ross Lawley
 

Semelhante a Why Architecture in Web Development matters (20)

Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
Iguazú: A Long-Running Job Scheduler using Docker and Mesos
Iguazú: A Long-Running Job Scheduler using Docker and MesosIguazú: A Long-Running Job Scheduler using Docker and Mesos
Iguazú: A Long-Running Job Scheduler using Docker and Mesos
 
Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)Les Tests avec Ruby on Rails et RSpec (in French)
Les Tests avec Ruby on Rails et RSpec (in French)
 
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloud
 
Practical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobusPractical WebAssembly with Apex, wasmRS, and nanobus
Practical WebAssembly with Apex, wasmRS, and nanobus
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client Development
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
DLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingDLW Europe - JavaScript Tooling
DLW Europe - JavaScript Tooling
 
Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up
 
Modern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsModern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On Rails
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Big Sky Dev Con 2018 - Building a Serverless Backend
Big Sky Dev Con 2018 - Building a Serverless BackendBig Sky Dev Con 2018 - Building a Serverless Backend
Big Sky Dev Con 2018 - Building a Serverless Backend
 
Úvod do programování 7
Úvod do programování 7Úvod do programování 7
Úvod do programování 7
 
2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA
 
Rails Conf Europe 2007 Notes
Rails Conf  Europe 2007  NotesRails Conf  Europe 2007  Notes
Rails Conf Europe 2007 Notes
 
Couch Db
Couch DbCouch Db
Couch Db
 

Mais de Lars Jankowfsky

Agile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenAgile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei Geschäftsanwendungen
Lars Jankowfsky
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...
Lars Jankowfsky
 

Mais de Lars Jankowfsky (8)

Caching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesCaching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practices
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 
Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in Practice
 
Why Architecture Matters
Why Architecture MattersWhy Architecture Matters
Why Architecture Matters
 
Monitor Your Business V2
Monitor Your Business V2Monitor Your Business V2
Monitor Your Business V2
 
Monitor Your Business
Monitor Your BusinessMonitor Your Business
Monitor Your Business
 
Agile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenAgile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei Geschäftsanwendungen
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"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 ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Why Architecture in Web Development matters

Notas do Editor

  1. strong dependency -> „co-dependency“
  2. \"if you want to serialize to xml do not create \"toxml\" Method, instead pass $this to the XMLExporter\"
  3. think in advance but don‘t think too complex before making any generalisation have at least two cases the more abstractions the easier you can change it later
  4. nobody said it will be easy
  5. tightrope walk
  6. preparing fixtures/Mocks difficult
  7. preparing fixtures/Mocks difficult
  8. preparing fixtures/Mocks difficult
  9. preparing fixtures/Mocks difficult
  10. preparing fixtures/Mocks difficult
  11. do not spread db calls through your code one function or object generates one „business“ result data access object
  12. do not spread db calls through your code one function or object generates one „business“ result data access object
  13. do not spread db calls through your code one function or object generates one „business“ result data access object
  14. lazy loading ok in Ruby all Variables from controller are accessable.
  15. lazy loading ok in Ruby all Variables from controller are accessable.
  16. lazy loading ok in Ruby all Variables from controller are accessable.
  17. Do not reinvent the wheel. Use frameworks
  18. at least daily
  19. test a single class do not touch database, network, (files) use mocks/stubs and provide fast feedback
  20. test several classes test communication between classes/modules they test full components
  21. test functionality from „outside“ often build from „user stories“ usually done with Selenium -> not only selenium example openapi