SlideShare a Scribd company logo
APPLICATION
ARCHITECTURE FOR
THE REST OF US
Presented by
M N Islam Shihan
Introduction
   Target Audience
   What is Architecture?
     Architecture is the foundation of your application
     Applications are not like Sky Scrappers

     Enterprise Vs Personal Architecture

   Why look ahead in Architecture?
     Adaptabilitywith Growth
     Maintainability

     Requirements never ends
Enterprise Architecture (cont…)
   Security
   Responsiveness
   Extendibility
   Availability
   Load Management
   Distributed Computation
   Caching
   Scalability
Security
Security (cont…)
Think about Security first of all
 Network Security: Implement Firewall &

Reverse Proxy for your network
 SQL Injection: Never forget to escape

field values in your queries
 XSS (Cross Site Scripting): Never trust user provided
   (or grabbed from third party data sources) data and
   display without sanitizing/escaping
 CSRF (Cross Site Request Forgery): Never let your

   forms to be submitted from third party sites
Security (cont…)
   DDOS (Distributed Daniel of Services): Enable real
    time monitoring of access to detect and prevent DDOS
    attacks
   Session fixation: Implement session key
    regeneration for every request
   Always hash your security tokens/cookies with new
    random salts per request/session basis (or in an
    interval)
   Stay tuned and up-to-date with security news and
    releases of all of your used tools and technologies
Responsiveness
Responsiveness (cont…)
   Web applications should be as responsive as Desktop
    Applications
   Plan well and apply good use of JavaScript to achieve
    Responsiveness
   Detect browsers and provide separate
    response/interface depending on detected browser
    type
   Implement unobtrusive use of JavaScript
   Implement optimal use of Ajax
   Use Comet Programming instead of Polling
   Implement deferred/asynchronous processing of
    large computations using Job Queue
Extendibility
   Implement and use robust data access
    interface, so that they can be exposed easily
    via web services (like REST, SOAP, JSONP)
   Use architectural patterns & best practices
     SOA(Service Oriented Architecture)
     MVC (Model View Controller)

   Modular architecture with plug-ability
   Allow hooks and overrides through Events
Availability
Availability (cont…)
   Implement well planned Disaster Recovery policy
   Use version control for your sources
   Use RAID for your storage devices
   Keep hot standby fallback for each of your primary
    data/content servers
   Perform periodical backup of your source repository,
    files & data
   Implement periodical archiving of your old data
   Provide mechanism to the users to switch between
    current and archived data when possible
Load Management
Load Management (cont…)
   Monitor and Benchmark your servers periodically and
    find pick usage time
   Optimize to support at least 150% of pick time load
   Use web servers with high I/O performance
   Introduce load balancer to distribute loads among
    multiple application Servers
   Start with software (aka. reverse proxy) then grow to
    use hardware load balancer only if necessary
   Use CDNs to serve your static contents
   Use public CDNs to serve the open source JavaScript
    or CSS files when possible
Caching
   To Cache Or Not to Cache?
       Analyze the nature of content and response generated by your
        application very well
       What to cache?
       Analyze and set proper expiry time
       Invalidate cache whenever content changes
       Partial caching will also bring you speed
       When caching is bad?
   Understand various types of web caches
       Browser cache
       Proxy cache
       Gateway cache
Caching (cont…)
   Implement server side caching
       Runtime in-memory cache
         Per request: Global variables
         Shared: Memcached

       Persistent Cache
         Per Server: File based, APC
         Shared: Db based, Redis

       Optimizers and accelerators: eAccelerator, XCache
   Reverse proxy/gateway cache
       Varnish cache
Distributed Computing
Scalability
   What the heck is this?
   Scalability is the soul of enterprise
    architecture
   Scalability pyramid
Scalability (cont…)
Vertical Scalability (scaling up)
Scalability (cont…)
Horizontal Scalability (scaling out)
Scalability (cont…)
Scalability
   Scaling up (vertical) vs. Scaling out
    (horizontal)
Scalability
   Database Scalability
     Vertical:   Add resource to server as needed
       In   most cases produce single point of failure
     Horizontal: Distribute/replicate data among
      multiple servers
     Cloud Services: Store your data to third party
      data centers and pay with respect to your usage
Scalability (cont…)
Scaling Database
Scaling options
 Master/Slave
       Master for Write, Slaves for Read
   Cluster Computing
       Single storage with multiple server node
   Table Partitioning
       Large tables are split among partitions
   Federated Tables
       Tables are shared among multiple servers
   Distributed Key Value Stores
   Distributed Object DB
   Database Sharding
Scalability (cont…)
Database Sharding
                     Smaller databases are
                      easier to manage
                     Smaller databases are
                      faster
                     Database sharding can
                      reduce costs
                     Need one or multiple
                      well define shard
                      functions
                     "Don't do it, if you don't
                      need to!"
                      (37signals.com)
                     "Shard early and often!"
                      (startuplessonslearned.
                      blogspot.com)
Scalability (cont…)
Database Sharding
When appropriate?                              What to analyze?
   High-transaction database                     Identify all transaction-intensive
    applications                                   tables in your schema.
   Mixed workload database usage                 Determine the transaction volume
       Frequent reads, including complex          your database is currently handling
        queries and joins                          (or is expected to handle).
       Write-intensive transactions (CRUD        Identify all common SQL statements
        statements, including INSERT,              (SELECT, INSERT, UPDATE,
        UPDATE, DELETE)                            DELETE), and the volumes
       Contention for common tables and/or        associated with each.
        rows
                                                  Develop an understanding of your
   General Business Reporting                     "table hierarchy" contained in your
       Typical "repeating segment" report         schema; in other words the main
        generation                                 parent-child relationships.
       Some data analysis (mixed with other      Determine the "key distribution" for
        workloads)                                 transactions on high-volume tables,
                                                   to determine if they are evenly
                                                   spread or are concentrated in narrow
                                                   ranges.
Scalability (cont…)
Database Sharding
   Challenges
     Reliability
       Automated   backups
       Database Shard redundancy
       Cost-effective hardware redundancy
       Automated failover
       Disaster Recovery

     Distributed   queries
       Aggregation  of statistics
       Queries that support comprehensive reports
Scalability (cont…)
Database Sharding
   Challenges (cont…)
     Avoidance  of cross-shard joins
     Auto-increment key management
     Support for multiple Shard Schemes
       Session-based sharding
       Transaction-based sharding
       Statement-based sharding
     Determine   the optimum method for sharding the
     data
       Shard by a primary key on a table
       Shard by the modulus of a key value
       Maintain a master shard index table
Scalability (cont…)
Database Sharding
Example Bookstore schema showing how data is sharded
Tools
   Application framework
   Load balancer with multiple application servers
   Continuous integration
   Automated Testing
       TDD (Test Driven Development)
       BDD (Behavior Driven Development)
   Monitoring
       Services
       Servers
       Error Logging
       Access Logging
   Content Data Networks (CDN)
   FOSS
Think Ahead
Think Ahead (cont…)
   Understand business model
   Analyze requirement in greatest detail
   Plan for extendibility
   Be agile, do incremental architecture
   Create/use frameworks
   SQL or NoSQL?
   Sharding or clustering or both?
   Cloud services?
Guidelines
   Enrich your knowledge: Read, read & read. Read
    anything available : jokes to religions.
   Follow patterns & best practices
   Mix technologies
     Don’t let your tools/technologies limit your vision
     Invent/customize technology if required

   Use FOSS
     Don’t expect ready solutions
     Find the closest match
     Customize as needed
Guidelines (cont…)
Database Optimization
   Use established & proven solutions
       MySQL
       PostgreSQL
       MongoDB
       Redis
       Memchached
       CouchDB
   Understand and utilize indexing & full-text search
   Use optimized DB structure & algorithms
       Modified Preorder Tree Traversal (MPTT)
       Map Reduce
   ORM or not?
Guidelines (cont…)
Database Optimization
   Optimize your queries
     One  big query is faster than repetitive smaller
      queries
     Never be lazy to write optimized queries
       One   Ring to Rule `em All
     Use  Runtime In Memory Cache
     Filtering in-memory cached dataset is much
      faster than executing a query in DB
Guidelines (cont…)
  One Ring to Rule `em All
  Perform Selection, then Projection, then Join
                          a_i
                           d

         A                              B                             C


1,000 records                   1000,000 records             1000,000,000
                                                             records

   A simple example
   Write a standard SQL query to find all records with fields A.a1, B.b1 and
      C.c1 from tables A (id, a1,a2, a3, …,aP), B (id, a_id, b1, b2, b3, …, bQ),
      and C(id, b_id, c1, c2, c3, …,cR) given that A.aX, B.bY and C.cZ will
      match ‘X’, ‘Y’ and ‘Z’ values respectively.
   Assume all tables A, B, C has primary keys defined by id column and a_id
     and b_id are the foreign keys in B from A and in C from B respectively.
Guidelines
One Ring to Rule `em All (cont…)
Solution 1
SELECT A.a1, B.b1, C.c1
FROM A, B, C
WHERE A.id = B.a_id AND B.id = C.b_id
AND A.aX = ‘X’ AND B.bY = ‘Y’ AND C.cZ = ‘Z’

Why it Sucks?
•Remembered the size of A, B and C tables?
•Cross product of tables are always memory extensive, why?
    •A x B x C will have 1,000 x 1,000,000 x 1,000,000,000 records with (P
    +1) + (Q +2) + (R +2) fields
    •Can you imagine the size of in-memory result set of joined tables?
    •It will be HUGE
Guidelines
One Ring to Rule `em All (cont…)
Solution 2
SELECT A.a1, B.b1, C.c1
FROM A
   INNER JOIN B ON A.id = B.a_id
   INNER JOIN C ON B.id = C.b_id
WHERE A.aX = ‘X’ AND B.bY = ‘Y’ AND C.cZ = ‘Z’

Why it still Sucks?
•A B C will produce (1,000 x 1,000,000) records to perform A B and
then produce another (1,000 x 1,000,000,000) records to compute (A B)       C
and then it will filters the records defined by WHERE clause.
•The number of fields, that is P+1 in A, Q+2 in B and R+2 in C will also
contribute in memory consumption.
•It is optimized but still be HUGE with respect to memory consumption and
computation
Guidelines
One Ring to Rule `em All (cont…)
Optimal Solution
SELECT A.a1, B.b1, C.c1
FROM (SELECT id, a1 FROM A WHERE aX = ‘X’) as A
INNER JOIN ( SELECT id, b1, a_id FROM B WHERE bY = ‘Y’) as B ON A.id =
   B.a_id
INNER JOIN ( SELECT id, c1, b_id FROM C WHERE cZ = ‘Z’) as C ON B.id =
Why this solution out performs?
   C.b_id
•Let’s keep the explanation as an exercise 
Reference : Tools
   Security
       Nmap: http://nmap.org/
       Nikto: http://cirt.net/Nikto2
       List of Tools: http://sectools.org/
   Caching
       APC: http://php.net/manual/en/book.apc.php
       XCache: http://xcache.lighttpd.net/
       eAccelerator: http://sourceforge.net/projects/eaccelerator/
       Varnish Cache: https://www.varnish-cache.org/
       MemCached: http://memcached.org/
       Redis: http://redis.io/
   Load Balancer
       HAProxy: http://haproxy.1wt.eu/
       Pound: http://www.apsis.ch/pound/
Reference : Tools (cont…)
   NoSQL
       MongoDB: http://www.mongodb.org/
       CouchDB: http://couchdb.apache.org/
       A complete list: http://nosql-database.org/
   Distributed Computing
       GearMan: http://gearman.org/
   Message Queue/Job Server
       RabitMQ: http://www.rabbitmq.com/
       ActiveMQ: http://activemq.apache.org/
   Monitoring
       Nagios: http://www.nagios.org/
   Testing
       Selenium: http://seleniumhq.org/
       Cucumber: http://cukes.info/
       Watir: http://watir.com/
       PhpUnit: http://www.phpunit.de/manual/3.7/en/
   MPTT
       Shameless Promotion: https://github.com/mnishihan/phpMptt
Reference : Articles
   Caching
       http://www.mnot.net/cache_docs/
       http://bit.ly/9cTJfA
   Load Balancing
       http://en.wikipedia.org/wiki/Load_balancing_%28computing%29
       http://1wt.eu/articles/2006_lb/index.html
   Scalability & Architecture
       http://www.diranieh.com/DistributedDesign_1/Scalability.htm
       http://www.infoq.com/presentations/Facebook-Software-Stack
       http://99designs.com/tech-blog/blog/2012/01/30/infrastructure-at-99designs/
       http://bit.ly/16cKu
   Database Sharding
       http://www.codefutures.com/database-sharding/
       http://bit.ly/Y3b3J
       http://www.startuplessonslearned.com/2009/01/sharding-for-startups.html
   CDN
       http://bit.ly/sMRyxC
   MPTT
       http://www.sitepoint.com/hierarchical-data-database/
Thank You
Join phpXperts [http://bit.ly/phpxperts]
Follow me on twitter [http://twitter.com/mnishihan]
Subscribe in facebook [http://fb.me/mnishihan]
Questions???
I will be glad to answer 
Ad

Recommended

Evaluating Apache Cassandra as a Cloud Database
Evaluating Apache Cassandra as a Cloud Database
DataStax
 
Why Cassandra?
Why Cassandra?
Tayfun Sevimli
 
Exploring NoSQL and implementing through Cassandra
Exploring NoSQL and implementing through Cassandra
Dileep Kalidindi
 
Presentation of Apache Cassandra
Presentation of Apache Cassandra
Nikiforos Botis
 
Cassandra
Cassandra
Edureka!
 
Vskills Apache Cassandra sample material
Vskills Apache Cassandra sample material
Vskills
 
Overview of Microsoft Appliances: Scaling SQL Server to Hundreds of Terabytes
Overview of Microsoft Appliances: Scaling SQL Server to Hundreds of Terabytes
James Serra
 
Preparing yourdataforcloud
Preparing yourdataforcloud
Inphina Technologies
 
CodeFutures - Scaling Your Database in the Cloud
CodeFutures - Scaling Your Database in the Cloud
RightScale
 
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Gleicon Moraes
 
A Seminar on NoSQL Databases.
A Seminar on NoSQL Databases.
Navdeep Charan
 
Apache Cassandra introduction
Apache Cassandra introduction
fardinjamshidi
 
No sql
No sql
Prateek Jain
 
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
ijfcstjournal
 
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
IJCI JOURNAL
 
Indic threads pune12-nosql now and path ahead
Indic threads pune12-nosql now and path ahead
IndicThreads
 
Lecture4 big data technology foundations
Lecture4 big data technology foundations
hktripathy
 
SQL or NoSQL, is this the question? - George Grammatikos
SQL or NoSQL, is this the question? - George Grammatikos
George Grammatikos
 
No sql databases explained
No sql databases explained
Salil Mehendale
 
Datastores
Datastores
Mike02143
 
Introducing Azure SQL Database
Introducing Azure SQL Database
James Serra
 
Data stax no sql use cases
Data stax no sql use cases
Sandeep Sharma IIMK Smart City,IoT,Bigdata,Cloud,BI,DW
 
2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure
Marco Parenzan
 
DSM - Comparison of Hbase and Cassandra
DSM - Comparison of Hbase and Cassandra
Shrikant Samarth
 
SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?
Venu Anuganti
 
JATSPack and JATSPAN, a packaging format specification and a web site
JATSPack and JATSPAN, a packaging format specification and a web site
Klortho
 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
Md. Shohel Rana
 
Server Management
Server Management
Dell World
 
Rg0035 A Guideto Service Improvement Nhs Scotland
Rg0035 A Guideto Service Improvement Nhs Scotland
primary
 
Application Architecture Trends
Application Architecture Trends
Srini Penchikala
 

More Related Content

What's hot (19)

CodeFutures - Scaling Your Database in the Cloud
CodeFutures - Scaling Your Database in the Cloud
RightScale
 
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Gleicon Moraes
 
A Seminar on NoSQL Databases.
A Seminar on NoSQL Databases.
Navdeep Charan
 
Apache Cassandra introduction
Apache Cassandra introduction
fardinjamshidi
 
No sql
No sql
Prateek Jain
 
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
ijfcstjournal
 
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
IJCI JOURNAL
 
Indic threads pune12-nosql now and path ahead
Indic threads pune12-nosql now and path ahead
IndicThreads
 
Lecture4 big data technology foundations
Lecture4 big data technology foundations
hktripathy
 
SQL or NoSQL, is this the question? - George Grammatikos
SQL or NoSQL, is this the question? - George Grammatikos
George Grammatikos
 
No sql databases explained
No sql databases explained
Salil Mehendale
 
Datastores
Datastores
Mike02143
 
Introducing Azure SQL Database
Introducing Azure SQL Database
James Serra
 
Data stax no sql use cases
Data stax no sql use cases
Sandeep Sharma IIMK Smart City,IoT,Bigdata,Cloud,BI,DW
 
2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure
Marco Parenzan
 
DSM - Comparison of Hbase and Cassandra
DSM - Comparison of Hbase and Cassandra
Shrikant Samarth
 
SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?
Venu Anuganti
 
JATSPack and JATSPAN, a packaging format specification and a web site
JATSPack and JATSPAN, a packaging format specification and a web site
Klortho
 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
Md. Shohel Rana
 
CodeFutures - Scaling Your Database in the Cloud
CodeFutures - Scaling Your Database in the Cloud
RightScale
 
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Architectural Anti Patterns - Notes on Data Distribution and Handling Failures
Gleicon Moraes
 
A Seminar on NoSQL Databases.
A Seminar on NoSQL Databases.
Navdeep Charan
 
Apache Cassandra introduction
Apache Cassandra introduction
fardinjamshidi
 
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
A NOVEL APPROACH FOR HOTEL MANAGEMENT SYSTEM USING CASSANDRA
ijfcstjournal
 
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
CASSANDRA A DISTRIBUTED NOSQL DATABASE FOR HOTEL MANAGEMENT SYSTEM
IJCI JOURNAL
 
Indic threads pune12-nosql now and path ahead
Indic threads pune12-nosql now and path ahead
IndicThreads
 
Lecture4 big data technology foundations
Lecture4 big data technology foundations
hktripathy
 
SQL or NoSQL, is this the question? - George Grammatikos
SQL or NoSQL, is this the question? - George Grammatikos
George Grammatikos
 
No sql databases explained
No sql databases explained
Salil Mehendale
 
Introducing Azure SQL Database
Introducing Azure SQL Database
James Serra
 
2014.11.14 Data Opportunities with Azure
2014.11.14 Data Opportunities with Azure
Marco Parenzan
 
DSM - Comparison of Hbase and Cassandra
DSM - Comparison of Hbase and Cassandra
Shrikant Samarth
 
SQL/NoSQL How to choose ?
SQL/NoSQL How to choose ?
Venu Anuganti
 
JATSPack and JATSPAN, a packaging format specification and a web site
JATSPack and JATSPAN, a packaging format specification and a web site
Klortho
 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
Md. Shohel Rana
 

Viewers also liked (20)

Server Management
Server Management
Dell World
 
Rg0035 A Guideto Service Improvement Nhs Scotland
Rg0035 A Guideto Service Improvement Nhs Scotland
primary
 
Application Architecture Trends
Application Architecture Trends
Srini Penchikala
 
Developing and implementing asset lifecycle management strategies
Developing and implementing asset lifecycle management strategies
Benjamin Mqenebe
 
L01 Enterprise Application Architecture
L01 Enterprise Application Architecture
Ólafur Andri Ragnarsson
 
Server training
Server training
itassistantdahanu
 
ITSM Presentation
ITSM Presentation
itsm_at_hanover
 
Application Architecture
Application Architecture
Lars-Erik Kindblad
 
Types of server
Types of server
IGZ Software house
 
Servers
Servers
Srinath Dhayalamoorthy
 
Web Security
Web Security
ADIEFEH
 
What is a Server
What is a Server
Kuwait10
 
Introduction to Enterprise Architecture
Introduction to Enterprise Architecture
Mohammed Omar
 
Web Security - Introduction v.1.3
Web Security - Introduction v.1.3
Oles Seheda
 
Business Architecture Explained
Business Architecture Explained
aaronwilliamson
 
Information security management
Information security management
UMaine
 
It Service Management Implementation Overview
It Service Management Implementation Overview
Alan McSweeney
 
ITSM (IT Service Management) & ITIL V3 Foundation
ITSM (IT Service Management) & ITIL V3 Foundation
PrudentialSolutions
 
Presentation about servers
Presentation about servers
Sasin Prabu
 
Computer Security
Computer Security
Frederik Questier
 
Server Management
Server Management
Dell World
 
Rg0035 A Guideto Service Improvement Nhs Scotland
Rg0035 A Guideto Service Improvement Nhs Scotland
primary
 
Application Architecture Trends
Application Architecture Trends
Srini Penchikala
 
Developing and implementing asset lifecycle management strategies
Developing and implementing asset lifecycle management strategies
Benjamin Mqenebe
 
Web Security
Web Security
ADIEFEH
 
What is a Server
What is a Server
Kuwait10
 
Introduction to Enterprise Architecture
Introduction to Enterprise Architecture
Mohammed Omar
 
Web Security - Introduction v.1.3
Web Security - Introduction v.1.3
Oles Seheda
 
Business Architecture Explained
Business Architecture Explained
aaronwilliamson
 
Information security management
Information security management
UMaine
 
It Service Management Implementation Overview
It Service Management Implementation Overview
Alan McSweeney
 
ITSM (IT Service Management) & ITIL V3 Foundation
ITSM (IT Service Management) & ITIL V3 Foundation
PrudentialSolutions
 
Presentation about servers
Presentation about servers
Sasin Prabu
 
Ad

Similar to Application architecture for the rest of us - php xperts devcon 2012 (20)

Scaling your website
Scaling your website
Alejandro Marcu
 
Scaling Your Database in the Cloud
Scaling Your Database in the Cloud
RightScale
 
Scalability Considerations
Scalability Considerations
Navid Malek
 
Guide to NoSQL with MySQL
Guide to NoSQL with MySQL
Samuel Rohaut
 
redis
redis
hazzaz
 
Five steps perform_2013
Five steps perform_2013
PostgreSQL Experts, Inc.
 
Architecture by Accident
Architecture by Accident
Gleicon Moraes
 
SQL, NoSQL, BigData in Data Architecture
SQL, NoSQL, BigData in Data Architecture
Venu Anuganti
 
Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDB
DATAVERSITY
 
Scaling Databases On The Cloud
Scaling Databases On The Cloud
Imaginea
 
Scaing databases on the cloud
Scaing databases on the cloud
Imaginea
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)
Don Demcsak
 
Scalable, good, cheap
Scalable, good, cheap
Marc Cluet
 
SQL and NoSQL in SQL Server
SQL and NoSQL in SQL Server
Michael Rys
 
Scaling data on public clouds
Scaling data on public clouds
Liran Zelkha
 
Db trends final
Db trends final
Craig Mullins
 
Storage Systems For Scalable systems
Storage Systems For Scalable systems
elliando dias
 
What ya gonna do?
What ya gonna do?
CQD
 
Microsoft Openness Mongo DB
Microsoft Openness Mongo DB
Heriyadi Janwar
 
High Performance and Scalability Database Design
High Performance and Scalability Database Design
Tung Ns
 
Scaling Your Database in the Cloud
Scaling Your Database in the Cloud
RightScale
 
Scalability Considerations
Scalability Considerations
Navid Malek
 
Guide to NoSQL with MySQL
Guide to NoSQL with MySQL
Samuel Rohaut
 
Architecture by Accident
Architecture by Accident
Gleicon Moraes
 
SQL, NoSQL, BigData in Data Architecture
SQL, NoSQL, BigData in Data Architecture
Venu Anuganti
 
Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDB
DATAVERSITY
 
Scaling Databases On The Cloud
Scaling Databases On The Cloud
Imaginea
 
Scaing databases on the cloud
Scaing databases on the cloud
Imaginea
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)
Don Demcsak
 
Scalable, good, cheap
Scalable, good, cheap
Marc Cluet
 
SQL and NoSQL in SQL Server
SQL and NoSQL in SQL Server
Michael Rys
 
Scaling data on public clouds
Scaling data on public clouds
Liran Zelkha
 
Storage Systems For Scalable systems
Storage Systems For Scalable systems
elliando dias
 
What ya gonna do?
What ya gonna do?
CQD
 
Microsoft Openness Mongo DB
Microsoft Openness Mongo DB
Heriyadi Janwar
 
High Performance and Scalability Database Design
High Performance and Scalability Database Design
Tung Ns
 
Ad

Recently uploaded (20)

Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
digitaljignect
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
 
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
WebdriverIO & JavaScript: The Perfect Duo for Web Automation
digitaljignect
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
 
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 

Application architecture for the rest of us - php xperts devcon 2012

  • 1. APPLICATION ARCHITECTURE FOR THE REST OF US Presented by M N Islam Shihan
  • 2. Introduction  Target Audience  What is Architecture?  Architecture is the foundation of your application  Applications are not like Sky Scrappers  Enterprise Vs Personal Architecture  Why look ahead in Architecture?  Adaptabilitywith Growth  Maintainability  Requirements never ends
  • 3. Enterprise Architecture (cont…)  Security  Responsiveness  Extendibility  Availability  Load Management  Distributed Computation  Caching  Scalability
  • 5. Security (cont…) Think about Security first of all  Network Security: Implement Firewall & Reverse Proxy for your network  SQL Injection: Never forget to escape field values in your queries  XSS (Cross Site Scripting): Never trust user provided (or grabbed from third party data sources) data and display without sanitizing/escaping  CSRF (Cross Site Request Forgery): Never let your forms to be submitted from third party sites
  • 6. Security (cont…)  DDOS (Distributed Daniel of Services): Enable real time monitoring of access to detect and prevent DDOS attacks  Session fixation: Implement session key regeneration for every request  Always hash your security tokens/cookies with new random salts per request/session basis (or in an interval)  Stay tuned and up-to-date with security news and releases of all of your used tools and technologies
  • 8. Responsiveness (cont…)  Web applications should be as responsive as Desktop Applications  Plan well and apply good use of JavaScript to achieve Responsiveness  Detect browsers and provide separate response/interface depending on detected browser type  Implement unobtrusive use of JavaScript  Implement optimal use of Ajax  Use Comet Programming instead of Polling  Implement deferred/asynchronous processing of large computations using Job Queue
  • 9. Extendibility  Implement and use robust data access interface, so that they can be exposed easily via web services (like REST, SOAP, JSONP)  Use architectural patterns & best practices  SOA(Service Oriented Architecture)  MVC (Model View Controller)  Modular architecture with plug-ability  Allow hooks and overrides through Events
  • 11. Availability (cont…)  Implement well planned Disaster Recovery policy  Use version control for your sources  Use RAID for your storage devices  Keep hot standby fallback for each of your primary data/content servers  Perform periodical backup of your source repository, files & data  Implement periodical archiving of your old data  Provide mechanism to the users to switch between current and archived data when possible
  • 13. Load Management (cont…)  Monitor and Benchmark your servers periodically and find pick usage time  Optimize to support at least 150% of pick time load  Use web servers with high I/O performance  Introduce load balancer to distribute loads among multiple application Servers  Start with software (aka. reverse proxy) then grow to use hardware load balancer only if necessary  Use CDNs to serve your static contents  Use public CDNs to serve the open source JavaScript or CSS files when possible
  • 14. Caching  To Cache Or Not to Cache?  Analyze the nature of content and response generated by your application very well  What to cache?  Analyze and set proper expiry time  Invalidate cache whenever content changes  Partial caching will also bring you speed  When caching is bad?  Understand various types of web caches  Browser cache  Proxy cache  Gateway cache
  • 15. Caching (cont…)  Implement server side caching  Runtime in-memory cache  Per request: Global variables  Shared: Memcached  Persistent Cache  Per Server: File based, APC  Shared: Db based, Redis  Optimizers and accelerators: eAccelerator, XCache  Reverse proxy/gateway cache  Varnish cache
  • 17. Scalability  What the heck is this?  Scalability is the soul of enterprise architecture  Scalability pyramid
  • 21. Scalability  Scaling up (vertical) vs. Scaling out (horizontal)
  • 22. Scalability  Database Scalability  Vertical: Add resource to server as needed  In most cases produce single point of failure  Horizontal: Distribute/replicate data among multiple servers  Cloud Services: Store your data to third party data centers and pay with respect to your usage
  • 23. Scalability (cont…) Scaling Database Scaling options  Master/Slave  Master for Write, Slaves for Read  Cluster Computing  Single storage with multiple server node  Table Partitioning  Large tables are split among partitions  Federated Tables  Tables are shared among multiple servers  Distributed Key Value Stores  Distributed Object DB  Database Sharding
  • 24. Scalability (cont…) Database Sharding  Smaller databases are easier to manage  Smaller databases are faster  Database sharding can reduce costs  Need one or multiple well define shard functions  "Don't do it, if you don't need to!" (37signals.com)  "Shard early and often!" (startuplessonslearned. blogspot.com)
  • 25. Scalability (cont…) Database Sharding When appropriate? What to analyze?  High-transaction database  Identify all transaction-intensive applications tables in your schema.  Mixed workload database usage  Determine the transaction volume  Frequent reads, including complex your database is currently handling queries and joins (or is expected to handle).  Write-intensive transactions (CRUD  Identify all common SQL statements statements, including INSERT, (SELECT, INSERT, UPDATE, UPDATE, DELETE) DELETE), and the volumes  Contention for common tables and/or associated with each. rows  Develop an understanding of your  General Business Reporting "table hierarchy" contained in your  Typical "repeating segment" report schema; in other words the main generation parent-child relationships.  Some data analysis (mixed with other  Determine the "key distribution" for workloads) transactions on high-volume tables, to determine if they are evenly spread or are concentrated in narrow ranges.
  • 26. Scalability (cont…) Database Sharding  Challenges  Reliability  Automated backups  Database Shard redundancy  Cost-effective hardware redundancy  Automated failover  Disaster Recovery  Distributed queries  Aggregation of statistics  Queries that support comprehensive reports
  • 27. Scalability (cont…) Database Sharding  Challenges (cont…)  Avoidance of cross-shard joins  Auto-increment key management  Support for multiple Shard Schemes  Session-based sharding  Transaction-based sharding  Statement-based sharding  Determine the optimum method for sharding the data  Shard by a primary key on a table  Shard by the modulus of a key value  Maintain a master shard index table
  • 28. Scalability (cont…) Database Sharding Example Bookstore schema showing how data is sharded
  • 29. Tools  Application framework  Load balancer with multiple application servers  Continuous integration  Automated Testing  TDD (Test Driven Development)  BDD (Behavior Driven Development)  Monitoring  Services  Servers  Error Logging  Access Logging  Content Data Networks (CDN)  FOSS
  • 31. Think Ahead (cont…)  Understand business model  Analyze requirement in greatest detail  Plan for extendibility  Be agile, do incremental architecture  Create/use frameworks  SQL or NoSQL?  Sharding or clustering or both?  Cloud services?
  • 32. Guidelines  Enrich your knowledge: Read, read & read. Read anything available : jokes to religions.  Follow patterns & best practices  Mix technologies  Don’t let your tools/technologies limit your vision  Invent/customize technology if required  Use FOSS  Don’t expect ready solutions  Find the closest match  Customize as needed
  • 33. Guidelines (cont…) Database Optimization  Use established & proven solutions  MySQL  PostgreSQL  MongoDB  Redis  Memchached  CouchDB  Understand and utilize indexing & full-text search  Use optimized DB structure & algorithms  Modified Preorder Tree Traversal (MPTT)  Map Reduce  ORM or not?
  • 34. Guidelines (cont…) Database Optimization  Optimize your queries  One big query is faster than repetitive smaller queries  Never be lazy to write optimized queries  One Ring to Rule `em All  Use Runtime In Memory Cache  Filtering in-memory cached dataset is much faster than executing a query in DB
  • 35. Guidelines (cont…) One Ring to Rule `em All Perform Selection, then Projection, then Join a_i d A B C 1,000 records 1000,000 records 1000,000,000 records A simple example Write a standard SQL query to find all records with fields A.a1, B.b1 and C.c1 from tables A (id, a1,a2, a3, …,aP), B (id, a_id, b1, b2, b3, …, bQ), and C(id, b_id, c1, c2, c3, …,cR) given that A.aX, B.bY and C.cZ will match ‘X’, ‘Y’ and ‘Z’ values respectively. Assume all tables A, B, C has primary keys defined by id column and a_id and b_id are the foreign keys in B from A and in C from B respectively.
  • 36. Guidelines One Ring to Rule `em All (cont…) Solution 1 SELECT A.a1, B.b1, C.c1 FROM A, B, C WHERE A.id = B.a_id AND B.id = C.b_id AND A.aX = ‘X’ AND B.bY = ‘Y’ AND C.cZ = ‘Z’ Why it Sucks? •Remembered the size of A, B and C tables? •Cross product of tables are always memory extensive, why? •A x B x C will have 1,000 x 1,000,000 x 1,000,000,000 records with (P +1) + (Q +2) + (R +2) fields •Can you imagine the size of in-memory result set of joined tables? •It will be HUGE
  • 37. Guidelines One Ring to Rule `em All (cont…) Solution 2 SELECT A.a1, B.b1, C.c1 FROM A INNER JOIN B ON A.id = B.a_id INNER JOIN C ON B.id = C.b_id WHERE A.aX = ‘X’ AND B.bY = ‘Y’ AND C.cZ = ‘Z’ Why it still Sucks? •A B C will produce (1,000 x 1,000,000) records to perform A B and then produce another (1,000 x 1,000,000,000) records to compute (A B) C and then it will filters the records defined by WHERE clause. •The number of fields, that is P+1 in A, Q+2 in B and R+2 in C will also contribute in memory consumption. •It is optimized but still be HUGE with respect to memory consumption and computation
  • 38. Guidelines One Ring to Rule `em All (cont…) Optimal Solution SELECT A.a1, B.b1, C.c1 FROM (SELECT id, a1 FROM A WHERE aX = ‘X’) as A INNER JOIN ( SELECT id, b1, a_id FROM B WHERE bY = ‘Y’) as B ON A.id = B.a_id INNER JOIN ( SELECT id, c1, b_id FROM C WHERE cZ = ‘Z’) as C ON B.id = Why this solution out performs? C.b_id •Let’s keep the explanation as an exercise 
  • 39. Reference : Tools  Security  Nmap: http://nmap.org/  Nikto: http://cirt.net/Nikto2  List of Tools: http://sectools.org/  Caching  APC: http://php.net/manual/en/book.apc.php  XCache: http://xcache.lighttpd.net/  eAccelerator: http://sourceforge.net/projects/eaccelerator/  Varnish Cache: https://www.varnish-cache.org/  MemCached: http://memcached.org/  Redis: http://redis.io/  Load Balancer  HAProxy: http://haproxy.1wt.eu/  Pound: http://www.apsis.ch/pound/
  • 40. Reference : Tools (cont…)  NoSQL  MongoDB: http://www.mongodb.org/  CouchDB: http://couchdb.apache.org/  A complete list: http://nosql-database.org/  Distributed Computing  GearMan: http://gearman.org/  Message Queue/Job Server  RabitMQ: http://www.rabbitmq.com/  ActiveMQ: http://activemq.apache.org/  Monitoring  Nagios: http://www.nagios.org/  Testing  Selenium: http://seleniumhq.org/  Cucumber: http://cukes.info/  Watir: http://watir.com/  PhpUnit: http://www.phpunit.de/manual/3.7/en/  MPTT  Shameless Promotion: https://github.com/mnishihan/phpMptt
  • 41. Reference : Articles  Caching  http://www.mnot.net/cache_docs/  http://bit.ly/9cTJfA  Load Balancing  http://en.wikipedia.org/wiki/Load_balancing_%28computing%29  http://1wt.eu/articles/2006_lb/index.html  Scalability & Architecture  http://www.diranieh.com/DistributedDesign_1/Scalability.htm  http://www.infoq.com/presentations/Facebook-Software-Stack  http://99designs.com/tech-blog/blog/2012/01/30/infrastructure-at-99designs/  http://bit.ly/16cKu  Database Sharding  http://www.codefutures.com/database-sharding/  http://bit.ly/Y3b3J  http://www.startuplessonslearned.com/2009/01/sharding-for-startups.html  CDN  http://bit.ly/sMRyxC  MPTT  http://www.sitepoint.com/hierarchical-data-database/
  • 42. Thank You Join phpXperts [http://bit.ly/phpxperts] Follow me on twitter [http://twitter.com/mnishihan] Subscribe in facebook [http://fb.me/mnishihan]
  • 43. Questions??? I will be glad to answer 