SlideShare a Scribd company logo
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,

More Related Content

Viewers also liked

Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1MicroPyramid .
 
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 FarJason Myers
 
Filling the flask
Filling the flaskFilling the flask
Filling the flaskJason Myers
 
Fuga dalla Comfort Zone
Fuga dalla Comfort ZoneFuga dalla Comfort Zone
Fuga dalla Comfort ZoneNicola Iarocci
 
Python Static Analysis Tools
Python Static Analysis ToolsPython Static Analysis Tools
Python Static Analysis ToolsJason Myers
 
Introduction to SQLAlchemy and Alembic Migrations
Introduction to SQLAlchemy and Alembic MigrationsIntroduction to SQLAlchemy and Alembic Migrations
Introduction to SQLAlchemy and Alembic MigrationsJason Myers
 
Coderfaire Data Networking for Developers
Coderfaire Data Networking for DevelopersCoderfaire Data Networking for Developers
Coderfaire Data Networking for DevelopersJason Myers
 
Flask - Python microframework
Flask - Python microframeworkFlask - Python microframework
Flask - Python microframeworkAndré Mayer
 
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 nicNicola Iarocci
 
Eve - REST API for Humans™
Eve - REST API for Humans™Eve - REST API for Humans™
Eve - REST API for Humans™Nicola Iarocci
 
Introduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMIntroduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMJason Myers
 
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...Daniele Gianni
 
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
 
We Are All Remote Workers
We Are All Remote WorkersWe Are All Remote Workers
We Are All Remote WorkersNicola Iarocci
 
REST Web API with MongoDB
REST Web API with MongoDBREST Web API with MongoDB
REST Web API with MongoDBMongoDB
 
محاضرة 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
 
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 ScalabilitySanchit Gera
 

Viewers also liked (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
 

Similar to Why Architecture in Web Development matters

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 Coursepeter_marklund
 
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 MesosColleen Lee
 
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)Jean-Michel Garnier
 
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
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloudiwarshak
 
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 nanobusJarrod Overson
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client DevelopmentTamir Khason
 
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 PresentationLong Nguyen
 
DLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingDLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingFabian Jakobs
 
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 Abhishek Singh
 
Modern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsModern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsRobert Glaser
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09Michael Neale
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
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 BackendJacob Meacham
 
Úvod do programování 7
Úvod do programování 7Úvod do programování 7
Úvod do programování 7Karel Minarik
 
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 SQLIAguestfdcb8a
 
Rails Conf Europe 2007 Notes
Rails Conf  Europe 2007  NotesRails Conf  Europe 2007  Notes
Rails Conf Europe 2007 NotesRoss Lawley
 

Similar to 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
 

More from Lars Jankowfsky

Caching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesCaching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesLars Jankowfsky
 
Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in PracticeLars Jankowfsky
 
Why Architecture Matters
Why Architecture MattersWhy Architecture Matters
Why Architecture MattersLars Jankowfsky
 
Monitor Your Business V2
Monitor Your Business V2Monitor Your Business V2
Monitor Your Business V2Lars Jankowfsky
 
Agile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenAgile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenLars 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
 

More from 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...
 

Recently uploaded

Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Alison B. Lowndes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 

Recently uploaded (20)

Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 

Why Architecture in Web Development matters

Editor's Notes

  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