SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
APPLICATION ANATOMY 101
Will Koffel	

!
@wkoffel
9 BASIC ANATOMICAL SYSTEMS
For a modern web stack
Background Queue Email / SMS / Push
Transactional Database
Monitoring
Search
Config / Deployment
Language/Framework Cache
Reporting/Analytics
database search cache
data
queue
email/SMS/push
reporting/
analytics
monitoring/
alerting
config/deploy
language/
framework
You can’t build an amazing web	

product without some code.
Language/Framework
LANGUAGE / FRAMEWORK
• The programming language of your application
defines what your team develops in	

• Modern frameworks are set of libraries written
for a particular language which provide both a
methodology for building applications, and lots of
pre-built functionality
Language/Framework
Language Frameworks…	

 (so many frameworks!)
Ruby Rails Padrino Sinatra Cramp
Javascript NodeJS Express Compound Meteor
Python Django Pylons Tornado CherryPy
Java Spring Grails Play	

 Vaadin
PHP Symfony CakePHP Laravel Yii
And this is just the tip of the iceberg…
Language/Framework
• Frameworks are tied tightly to their language.	

• Most modern frameworks encourage MVC
(model, view, controller) software design	

• Match the strength of the framework to the
kind of app you are building (highly
transactional? highly concurrent? fancy single
page web app?)
Language/Framework
• Learn about the community behind your
frameworks, their philosophy, and maturity. 	

• Framework choices will affect developer
culture in your organization.	

• Don’t worry so much about scale early on
(spoiler: it’s all about the architecture, so don’t
change that channel…)
Language/Framework
Your users want to actually interact with data and
content on your site, so you’re going to need
somewhere to keep that. Maybe a ton of it!
Transactional Database
TRANSACTIONAL DATABASE
• Stores all the data that your application needs to
service the user	

• Is talked to directly from your main framework
• Almost always represents the bottleneck to
scale for early stage companies.
Transactional Database
• Your data is your most precious asset, make
sure to have good backups, plus a slave
database for redundancy	

• As your application grows, it’s not uncommon to
have multiple databases, but keep it simple to
start	

• A single web page load often makes dozens or
even hundreds of database requests
Transactional Database
So great that you have this fancy powerful
framework, and this scalable transactional
database. But daaaamn, that’s a lot of work just
to deliver the same boring pages all day.	

!
Computers don’t mind doing lots of busy work
over and over. But wouldn’t it be nicer if they
didn’t? And faster for users too!
Cache
CACHING
• Anything that’s costly to load, calculate, lookup, or fetch from
the network can be stored for quick lookup by a cache.	

• Very lightweight, fast, and usually stores all your data in
memory
• Caches dies?Your system must be able to rebuild it on the fly	

• Useful for high read/low write products (which you have!)	

• The hard part of caches is invalidation, a.k.a. figuring out
when that copy of the data is no longer fresh.
Cache
Memcached !!
Varnish APC
or
or perhaps
JCSEhcache
• Whole HTML pages (minus the personalized
parts)	

• Chunks of pages that rarely change	

• User info for currently active users	

• Database-backed objects
Cache
Now you’ve got a bunch of users joining your app!
And it’s speedy to load all those cached pages.	

!
But signup is super slow, because when they sign up,
you need to prepare their account, send them a
welcome email, link them up to all their FB friends.	

!
How do all those big sites not grind to a halt?!
Background Queue
BACKGROUND QUEUEING
• You should never make your users wait for
anything that could happen “whenever”, in the
background.	

• First part: the queue, onto which you put instructions
that need running when the system gets around to it.	

• Second part: the workers, who watch the queue for
all those instructions and execute them.
Background Queue
Darner
Kestrel
Resque
Amazon SQS
• Sending emails, SMS, push notifications	

• Recalculating leaderboards	

• Running slow analytics reports	

• Publishing FB open-graph data	

• Anything you aren’t absolutely sure has to happen
while the user is waiting for a page load	

• Or tasks that might be unreliable, like interfacing
with 3rd party vendors
Background Queue
Inevitably, you bring in more rich text content, like user
comments, blog posts, tweets, emails, news stories,
vendor descriptions, etc.	

!
You discover that your spiffyTransactional Database is
really terrible at search through all that stuff. It does a
poor job, and does it slowly!	

Search
SEARCH
• Most products need some kind of rich text search
even if it’s not obviously a core component	

• Many great cloud hosted solutions for search will save
you headaches. SaaS is perfect for low-volume search	

• Having a search index means a copy of your data is
stored in search. Common bugs when the transactional
data and the search data get out of sync
Search
Amazon CloudSearch
• Anything that involves human text data is
better served by search	

• Search systems handle fuzzy matching, word
stemming, and lots of other goodies you want
Search
• Search by tag	

• Search through user bios	

• Admins searching for comments	

• Automated search for profanity
Search
With all these engaged users, you are spending more
effort creating relevant touch-points for them. That
means reaching them where they live, on email, SMS,
and mobile push notifications.	

!
Heaven help you if you are running those systems
yourself. You wouldn’t build your own postal fleet to
deliver postcards, right? Right??	

Email / SMS / Push
EMAIL / SMS / PUSH
• Widely distributed communications to
uncontrolled endpoints is tough	

• It’s easy to do it cheaply with very low volume, but
you will quickly hit headaches with deliverability,
performance, and security.
Email / SMS / Push
Amazon SNS / SES
• So many vendors, pricing changes all the time.
Avoid lock-in. Design your system to be
vendor agnostic.	

• Pick services that have lots of users like you
• Outreach for promotional, is different than
transactional. Pick the right partner for the job	

• Never run your own mail servers
Email / SMS / Push
Hopefully your developers have been house-keeping
their world all along, without you having to ask…	

!
The world’s best restaurants	

have impeccably run kitchens.
Config / Deployment
CONFIG / DEPLOYMENT
• How to provision a new machine	

• Organize code branches for parallel feature work	

• Spell out a process for emergency hot-fixes
• Automated testing before each deploy
• One-button deployment for any developer
Config / Deployment
Amazon OpsWorks / CloudFormation / ElasticBeanstalk
Fabric
Git-Flow
• Release more frequently (every day, every
hour, or more)	

• Deploying code is dependable, no matter who
does it	

• Makes rollbacks trivial in case something goes
wrong	

• Dramatically lowers maintenance costs as
your infrastructure grows
Config / Deployment
No matter how good a job you do, there are
always things you can’t control. Your app will
have unexpected issues.	

!
But that doesn’t mean your customers should
find problems before you do!
Monitoring
MONITORING
• Internal monitoring watches for errors, plus
service or machine failures.	

• External monitoring simulates your application as
your users see it	

• Sentries monitor invariant conditions, a catch-all
for the unknown unknowns.
Monitoring
Amazon CloudWatch
• Alert monitoring must wake you up in the
wee hours if you are ever going to fix stuff	

• Run all issues through a single reporting
channel with an escalation policy	

• Non-critical / trend monitoring is just as
important, review it at least daily	

• Report issues immediately to your customers
viaTwitter and/or a status page
Monitoring
Now that you have a business, you need
some of that elusive “business intelligence”	

!
You want to extract insights from your data,
user behavior patterns from your logs,
revenue and growth forecasts, campaign
conversion rates, and deep app forensics.
Reporting/Analytics
REPORTING / ANALYTICS
• Analytics systems are fundamentally separate from
transactional data systems.	

• You might get away with one MySQL database serving both
purposes, but not for too long.	

• Take advantage of great hosted analytics tools, and
augment with your own big data store for custom queries	

• Multiple tools to extract insights from your data
Reporting/Analytics
Amazon RedShift
• User behavior analytics	

• “What pages do users visit just before signing up?”	

• System / Data stats	

• “How many comments are being left per day?”	

• Ad-hoc data queries / Data science	

• “An investor asked us for a vanity metric we don’t track. Help!”	

• Forensics	

• “It seems like someone is trying to hack our API, what do we
know?”
Reporting/Analytics
Queue Email / SMS / Push
Transactional Database Monitoring
Search
Deployment
Language/Framework
Cache
Reporting/Analytics
database search cache
data
queue
email/SMS/push
reporting/
analytics
monitoring/
alerting
config/deploy
language/
framework
• Evaluate your own needs for each of these systems	

• Have a chat with your dev team about it
1. Do we need these things?	

2. When do we need them?	

3. Are we special?
Let’sTalk
APPLICATION ANATOMY 101
Will Koffel	

!
@wkoffel

Contenu connexe

Tendances

Being a Mac in a Windows World
Being a Mac in a Windows WorldBeing a Mac in a Windows World
Being a Mac in a Windows WorldBenjamin Kreeger
 
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACLPerformance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACLTriNimbus
 
When small problems become big problems
When small problems become big problemsWhen small problems become big problems
When small problems become big problemsAdrian Cole
 
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveAPI Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveNiall Roche
 
Domino server and application performance in the real world
Domino server and application performance in the real worldDomino server and application performance in the real world
Domino server and application performance in the real worlddominion
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나Amazon Web Services Korea
 
Apply Coding Patterns in Azure
Apply Coding Patterns in AzureApply Coding Patterns in Azure
Apply Coding Patterns in AzureMarco Parenzan
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReadersRakuten Group, Inc.
 
Building Networked Apps
Building Networked AppsBuilding Networked Apps
Building Networked AppsSean Meador
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha
 
Metadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMetadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMike Jennings
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactionsCloud Elements
 
What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklugdominion
 
The Combined Power of Sentiment Analysis and Personality Insights
The Combined Power of Sentiment Analysis and Personality InsightsThe Combined Power of Sentiment Analysis and Personality Insights
The Combined Power of Sentiment Analysis and Personality InsightsIBM Watson
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-ServicesRandy Shoup
 
MassTLC Cloud Summit Keynote
MassTLC Cloud Summit KeynoteMassTLC Cloud Summit Keynote
MassTLC Cloud Summit KeynoteAriel Tseitlin
 
WordPress vs Joomla vs Drupal (Infographic)
WordPress vs Joomla vs Drupal (Infographic)WordPress vs Joomla vs Drupal (Infographic)
WordPress vs Joomla vs Drupal (Infographic)Capsicum Mediaworks
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...Hakka Labs
 
Cleaning Out Your IT Closet - SPSRED 2013
Cleaning Out Your IT Closet - SPSRED 2013Cleaning Out Your IT Closet - SPSRED 2013
Cleaning Out Your IT Closet - SPSRED 2013adamtoth
 

Tendances (20)

Being a Mac in a Windows World
Being a Mac in a Windows WorldBeing a Mac in a Windows World
Being a Mac in a Windows World
 
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACLPerformance Optimization of Cloud Based Applications by Peter Smith, ACL
Performance Optimization of Cloud Based Applications by Peter Smith, ACL
 
When small problems become big problems
When small problems become big problemsWhen small problems become big problems
When small problems become big problems
 
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's PerspectiveAPI Architecture Summit 2014- APIs: A Mobile Developer's Perspective
API Architecture Summit 2014- APIs: A Mobile Developer's Perspective
 
Domino server and application performance in the real world
Domino server and application performance in the real worldDomino server and application performance in the real world
Domino server and application performance in the real world
 
Providing LibraryH3lp
Providing LibraryH3lpProviding LibraryH3lp
Providing LibraryH3lp
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
 
Apply Coding Patterns in Azure
Apply Coding Patterns in AzureApply Coding Patterns in Azure
Apply Coding Patterns in Azure
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
 
Building Networked Apps
Building Networked AppsBuilding Networked Apps
Building Networked Apps
 
Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013) Sencha and Spring (Spring 2GX 2013)
Sencha and Spring (Spring 2GX 2013)
 
Metadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMetadata & Interoperability: Free Tools
Metadata & Interoperability: Free Tools
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactions
 
What is a itil and how does it relate to your collaborative environment uklug
What is a itil and how does it relate to your collaborative environment   uklugWhat is a itil and how does it relate to your collaborative environment   uklug
What is a itil and how does it relate to your collaborative environment uklug
 
The Combined Power of Sentiment Analysis and Personality Insights
The Combined Power of Sentiment Analysis and Personality InsightsThe Combined Power of Sentiment Analysis and Personality Insights
The Combined Power of Sentiment Analysis and Personality Insights
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-Services
 
MassTLC Cloud Summit Keynote
MassTLC Cloud Summit KeynoteMassTLC Cloud Summit Keynote
MassTLC Cloud Summit Keynote
 
WordPress vs Joomla vs Drupal (Infographic)
WordPress vs Joomla vs Drupal (Infographic)WordPress vs Joomla vs Drupal (Infographic)
WordPress vs Joomla vs Drupal (Infographic)
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...
 
Cleaning Out Your IT Closet - SPSRED 2013
Cleaning Out Your IT Closet - SPSRED 2013Cleaning Out Your IT Closet - SPSRED 2013
Cleaning Out Your IT Closet - SPSRED 2013
 

En vedette

Intelligently 2012 Year In Review
Intelligently 2012 Year In ReviewIntelligently 2012 Year In Review
Intelligently 2012 Year In ReviewIntelligent_ly
 
Craft Your Marketing To-Do List Like a Growth Hacker
Craft Your Marketing To-Do List Like a Growth HackerCraft Your Marketing To-Do List Like a Growth Hacker
Craft Your Marketing To-Do List Like a Growth HackerIntelligent_ly
 
Legal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalLegal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalIntelligent_ly
 
Introduction to Paid Customer Acquisition
Introduction to Paid Customer AcquisitionIntroduction to Paid Customer Acquisition
Introduction to Paid Customer AcquisitionIntelligent_ly
 
Immigration Issues for Startups
Immigration Issues for StartupsImmigration Issues for Startups
Immigration Issues for StartupsIntelligent_ly
 
The UX Playbook: Tools, Tips, & Tricks
The UX Playbook: Tools, Tips, & TricksThe UX Playbook: Tools, Tips, & Tricks
The UX Playbook: Tools, Tips, & TricksIntelligent_ly
 
After Google AdWords: How to Generate Sales, Not Just Clicks and Leads
After Google AdWords: How to Generate Sales, Not Just Clicks and LeadsAfter Google AdWords: How to Generate Sales, Not Just Clicks and Leads
After Google AdWords: How to Generate Sales, Not Just Clicks and LeadsIntelligent_ly
 
Legal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalLegal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalIntelligent_ly
 
Product Management and the Search for Product Market Fit
Product Management and the Search for Product Market Fit Product Management and the Search for Product Market Fit
Product Management and the Search for Product Market Fit Intelligent_ly
 
Sales 101: How to Write an Email that Everyone Responds To
Sales 101: How to Write an Email that Everyone Responds To Sales 101: How to Write an Email that Everyone Responds To
Sales 101: How to Write an Email that Everyone Responds To Intelligent_ly
 
Fundamentals of Facebook Advertising
Fundamentals of Facebook AdvertisingFundamentals of Facebook Advertising
Fundamentals of Facebook AdvertisingIntelligent_ly
 

En vedette (11)

Intelligently 2012 Year In Review
Intelligently 2012 Year In ReviewIntelligently 2012 Year In Review
Intelligently 2012 Year In Review
 
Craft Your Marketing To-Do List Like a Growth Hacker
Craft Your Marketing To-Do List Like a Growth HackerCraft Your Marketing To-Do List Like a Growth Hacker
Craft Your Marketing To-Do List Like a Growth Hacker
 
Legal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalLegal Land Mines: Raising Capital
Legal Land Mines: Raising Capital
 
Introduction to Paid Customer Acquisition
Introduction to Paid Customer AcquisitionIntroduction to Paid Customer Acquisition
Introduction to Paid Customer Acquisition
 
Immigration Issues for Startups
Immigration Issues for StartupsImmigration Issues for Startups
Immigration Issues for Startups
 
The UX Playbook: Tools, Tips, & Tricks
The UX Playbook: Tools, Tips, & TricksThe UX Playbook: Tools, Tips, & Tricks
The UX Playbook: Tools, Tips, & Tricks
 
After Google AdWords: How to Generate Sales, Not Just Clicks and Leads
After Google AdWords: How to Generate Sales, Not Just Clicks and LeadsAfter Google AdWords: How to Generate Sales, Not Just Clicks and Leads
After Google AdWords: How to Generate Sales, Not Just Clicks and Leads
 
Legal Land Mines: Raising Capital
Legal Land Mines: Raising CapitalLegal Land Mines: Raising Capital
Legal Land Mines: Raising Capital
 
Product Management and the Search for Product Market Fit
Product Management and the Search for Product Market Fit Product Management and the Search for Product Market Fit
Product Management and the Search for Product Market Fit
 
Sales 101: How to Write an Email that Everyone Responds To
Sales 101: How to Write an Email that Everyone Responds To Sales 101: How to Write an Email that Everyone Responds To
Sales 101: How to Write an Email that Everyone Responds To
 
Fundamentals of Facebook Advertising
Fundamentals of Facebook AdvertisingFundamentals of Facebook Advertising
Fundamentals of Facebook Advertising
 

Similaire à Tech for the Non Technical - Anatomy of an Application Stack

Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?Josiah Renaudin
 
Building data intensive applications
Building data intensive applicationsBuilding data intensive applications
Building data intensive applicationsAmit Kejriwal
 
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...Startupfest
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
Using AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics ServiceUsing AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics ServiceChristian Beedgen
 
Understanding cloud with Google Cloud Platform
Understanding cloud with Google Cloud PlatformUnderstanding cloud with Google Cloud Platform
Understanding cloud with Google Cloud PlatformDr. Ketan Parmar
 
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Vikas Sahni
 
Building azure applications ireland
Building azure applications irelandBuilding azure applications ireland
Building azure applications irelandMichael Meagher
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotchaphegaro
 
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...Precisely
 
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?TechWell
 
Livebase: a database for the web 2.0
Livebase: a database for the web 2.0Livebase: a database for the web 2.0
Livebase: a database for the web 2.0Antonio Leonforte
 
Scaling apps for the big time
Scaling apps for the big timeScaling apps for the big time
Scaling apps for the big timeproitconsult
 
Five Early Challenges Of Building Streaming Fast Data Applications
Five Early Challenges Of Building Streaming Fast Data ApplicationsFive Early Challenges Of Building Streaming Fast Data Applications
Five Early Challenges Of Building Streaming Fast Data ApplicationsLightbend
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?CQD
 
Delivering value with cloud computing & model-driven code generation
Delivering value with cloud computing & model-driven code generationDelivering value with cloud computing & model-driven code generation
Delivering value with cloud computing & model-driven code generationCodemotion
 
Building high performance and scalable share point applications
Building high performance and scalable share point applicationsBuilding high performance and scalable share point applications
Building high performance and scalable share point applicationsTalbott Crowell
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersAmazon Web Services
 

Similaire à Tech for the Non Technical - Anatomy of an Application Stack (20)

Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
 
Building data intensive applications
Building data intensive applicationsBuilding data intensive applications
Building data intensive applications
 
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Using AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics ServiceUsing AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics Service
 
Understanding cloud with Google Cloud Platform
Understanding cloud with Google Cloud PlatformUnderstanding cloud with Google Cloud Platform
Understanding cloud with Google Cloud Platform
 
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd Dec...
 
Building azure applications ireland
Building azure applications irelandBuilding azure applications ireland
Building azure applications ireland
 
Dev Ops without the Ops
Dev Ops without the OpsDev Ops without the Ops
Dev Ops without the Ops
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotcha
 
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...
Engineering Machine Learning Data Pipelines Series: Streaming New Data as It ...
 
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
Can Your Mobile Infrastructure Survive 1 Million Concurrent Users?
 
Livebase: a database for the web 2.0
Livebase: a database for the web 2.0Livebase: a database for the web 2.0
Livebase: a database for the web 2.0
 
DataOps with Project Amaterasu
DataOps with Project AmaterasuDataOps with Project Amaterasu
DataOps with Project Amaterasu
 
Scaling apps for the big time
Scaling apps for the big timeScaling apps for the big time
Scaling apps for the big time
 
Five Early Challenges Of Building Streaming Fast Data Applications
Five Early Challenges Of Building Streaming Fast Data ApplicationsFive Early Challenges Of Building Streaming Fast Data Applications
Five Early Challenges Of Building Streaming Fast Data Applications
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?
 
Delivering value with cloud computing & model-driven code generation
Delivering value with cloud computing & model-driven code generationDelivering value with cloud computing & model-driven code generation
Delivering value with cloud computing & model-driven code generation
 
Building high performance and scalable share point applications
Building high performance and scalable share point applicationsBuilding high performance and scalable share point applications
Building high performance and scalable share point applications
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million Users
 

Plus de Intelligent_ly

Founder Selling: How to Win Deals & Close Critical Sales
Founder Selling: How to Win Deals & Close Critical SalesFounder Selling: How to Win Deals & Close Critical Sales
Founder Selling: How to Win Deals & Close Critical SalesIntelligent_ly
 
How to Market Unsexy Products
How to Market Unsexy ProductsHow to Market Unsexy Products
How to Market Unsexy ProductsIntelligent_ly
 
Get funded Expert Advice from the People Who Know
Get funded Expert Advice from the People Who KnowGet funded Expert Advice from the People Who Know
Get funded Expert Advice from the People Who KnowIntelligent_ly
 
Dave Balter's Advocacy Marketing Class
Dave Balter's Advocacy Marketing ClassDave Balter's Advocacy Marketing Class
Dave Balter's Advocacy Marketing ClassIntelligent_ly
 
The Short List: Choosing Critical Features for Your Minimum Viable Product
The Short List: Choosing Critical Features for Your Minimum Viable ProductThe Short List: Choosing Critical Features for Your Minimum Viable Product
The Short List: Choosing Critical Features for Your Minimum Viable ProductIntelligent_ly
 
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup  Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup Intelligent_ly
 
Don't Get Funded: How to Use Your Customers to Bootstrap
Don't Get Funded: How to Use Your Customers to Bootstrap Don't Get Funded: How to Use Your Customers to Bootstrap
Don't Get Funded: How to Use Your Customers to Bootstrap Intelligent_ly
 
Facebook Advertising: Launch a Campaign That Really Works
Facebook Advertising: Launch a Campaign That Really WorksFacebook Advertising: Launch a Campaign That Really Works
Facebook Advertising: Launch a Campaign That Really WorksIntelligent_ly
 
UX & Wireframes Know Your Weapon of Choice
UX & Wireframes Know Your Weapon of ChoiceUX & Wireframes Know Your Weapon of Choice
UX & Wireframes Know Your Weapon of ChoiceIntelligent_ly
 
Content 101: How to Create Content People Actually Care About
Content 101: How to Create Content People Actually Care About Content 101: How to Create Content People Actually Care About
Content 101: How to Create Content People Actually Care About Intelligent_ly
 
Ramping Up: B2C Acquisition Marketing for Start-Ups
Ramping Up: B2C Acquisition Marketing for Start-UpsRamping Up: B2C Acquisition Marketing for Start-Ups
Ramping Up: B2C Acquisition Marketing for Start-UpsIntelligent_ly
 
Email Strategy, Design and User Experience: Keys to Success
Email Strategy, Design and User Experience: Keys to SuccessEmail Strategy, Design and User Experience: Keys to Success
Email Strategy, Design and User Experience: Keys to SuccessIntelligent_ly
 
Keys to Responsive Design
Keys to Responsive DesignKeys to Responsive Design
Keys to Responsive DesignIntelligent_ly
 
Meditation: Startup's Secret Weapon
Meditation: Startup's Secret WeaponMeditation: Startup's Secret Weapon
Meditation: Startup's Secret WeaponIntelligent_ly
 
Simple Tips for First Time Managers
Simple Tips for First Time ManagersSimple Tips for First Time Managers
Simple Tips for First Time ManagersIntelligent_ly
 
Get Funded: Financing Your Startup
Get Funded: Financing Your StartupGet Funded: Financing Your Startup
Get Funded: Financing Your StartupIntelligent_ly
 
Building Your Startup Brand With Effective Messaging
Building Your Startup Brand With Effective MessagingBuilding Your Startup Brand With Effective Messaging
Building Your Startup Brand With Effective MessagingIntelligent_ly
 
How to Design a Knockout Logo
How to Design a Knockout LogoHow to Design a Knockout Logo
How to Design a Knockout LogoIntelligent_ly
 
Marketing Fundamentals for Founders
Marketing Fundamentals for FoundersMarketing Fundamentals for Founders
Marketing Fundamentals for FoundersIntelligent_ly
 

Plus de Intelligent_ly (20)

Founder Selling: How to Win Deals & Close Critical Sales
Founder Selling: How to Win Deals & Close Critical SalesFounder Selling: How to Win Deals & Close Critical Sales
Founder Selling: How to Win Deals & Close Critical Sales
 
How to Market Unsexy Products
How to Market Unsexy ProductsHow to Market Unsexy Products
How to Market Unsexy Products
 
Get funded Expert Advice from the People Who Know
Get funded Expert Advice from the People Who KnowGet funded Expert Advice from the People Who Know
Get funded Expert Advice from the People Who Know
 
Dave Balter's Advocacy Marketing Class
Dave Balter's Advocacy Marketing ClassDave Balter's Advocacy Marketing Class
Dave Balter's Advocacy Marketing Class
 
The Short List: Choosing Critical Features for Your Minimum Viable Product
The Short List: Choosing Critical Features for Your Minimum Viable ProductThe Short List: Choosing Critical Features for Your Minimum Viable Product
The Short List: Choosing Critical Features for Your Minimum Viable Product
 
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup  Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup
Whale Hunting: How to Get Intros and Sell to Big Brands as a Startup
 
Don't Get Funded: How to Use Your Customers to Bootstrap
Don't Get Funded: How to Use Your Customers to Bootstrap Don't Get Funded: How to Use Your Customers to Bootstrap
Don't Get Funded: How to Use Your Customers to Bootstrap
 
Facebook Advertising: Launch a Campaign That Really Works
Facebook Advertising: Launch a Campaign That Really WorksFacebook Advertising: Launch a Campaign That Really Works
Facebook Advertising: Launch a Campaign That Really Works
 
UX & Wireframes Know Your Weapon of Choice
UX & Wireframes Know Your Weapon of ChoiceUX & Wireframes Know Your Weapon of Choice
UX & Wireframes Know Your Weapon of Choice
 
Content 101: How to Create Content People Actually Care About
Content 101: How to Create Content People Actually Care About Content 101: How to Create Content People Actually Care About
Content 101: How to Create Content People Actually Care About
 
Ramping Up: B2C Acquisition Marketing for Start-Ups
Ramping Up: B2C Acquisition Marketing for Start-UpsRamping Up: B2C Acquisition Marketing for Start-Ups
Ramping Up: B2C Acquisition Marketing for Start-Ups
 
Email Strategy, Design and User Experience: Keys to Success
Email Strategy, Design and User Experience: Keys to SuccessEmail Strategy, Design and User Experience: Keys to Success
Email Strategy, Design and User Experience: Keys to Success
 
Keys to Responsive Design
Keys to Responsive DesignKeys to Responsive Design
Keys to Responsive Design
 
Meditation: Startup's Secret Weapon
Meditation: Startup's Secret WeaponMeditation: Startup's Secret Weapon
Meditation: Startup's Secret Weapon
 
Simple Tips for First Time Managers
Simple Tips for First Time ManagersSimple Tips for First Time Managers
Simple Tips for First Time Managers
 
Get Funded: Financing Your Startup
Get Funded: Financing Your StartupGet Funded: Financing Your Startup
Get Funded: Financing Your Startup
 
Building Your Startup Brand With Effective Messaging
Building Your Startup Brand With Effective MessagingBuilding Your Startup Brand With Effective Messaging
Building Your Startup Brand With Effective Messaging
 
How to Design a Knockout Logo
How to Design a Knockout LogoHow to Design a Knockout Logo
How to Design a Knockout Logo
 
Marketing Fundamentals for Founders
Marketing Fundamentals for FoundersMarketing Fundamentals for Founders
Marketing Fundamentals for Founders
 
Productivity Hacks
Productivity HacksProductivity Hacks
Productivity Hacks
 

Dernier

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Dernier (20)

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Tech for the Non Technical - Anatomy of an Application Stack

  • 1. APPLICATION ANATOMY 101 Will Koffel ! @wkoffel
  • 2. 9 BASIC ANATOMICAL SYSTEMS For a modern web stack Background Queue Email / SMS / Push Transactional Database Monitoring Search Config / Deployment Language/Framework Cache Reporting/Analytics
  • 4. You can’t build an amazing web product without some code. Language/Framework
  • 5. LANGUAGE / FRAMEWORK • The programming language of your application defines what your team develops in • Modern frameworks are set of libraries written for a particular language which provide both a methodology for building applications, and lots of pre-built functionality Language/Framework
  • 6. Language Frameworks… (so many frameworks!) Ruby Rails Padrino Sinatra Cramp Javascript NodeJS Express Compound Meteor Python Django Pylons Tornado CherryPy Java Spring Grails Play Vaadin PHP Symfony CakePHP Laravel Yii And this is just the tip of the iceberg… Language/Framework
  • 7. • Frameworks are tied tightly to their language. • Most modern frameworks encourage MVC (model, view, controller) software design • Match the strength of the framework to the kind of app you are building (highly transactional? highly concurrent? fancy single page web app?) Language/Framework
  • 8. • Learn about the community behind your frameworks, their philosophy, and maturity. • Framework choices will affect developer culture in your organization. • Don’t worry so much about scale early on (spoiler: it’s all about the architecture, so don’t change that channel…) Language/Framework
  • 9. Your users want to actually interact with data and content on your site, so you’re going to need somewhere to keep that. Maybe a ton of it! Transactional Database
  • 10. TRANSACTIONAL DATABASE • Stores all the data that your application needs to service the user • Is talked to directly from your main framework • Almost always represents the bottleneck to scale for early stage companies. Transactional Database
  • 11.
  • 12. • Your data is your most precious asset, make sure to have good backups, plus a slave database for redundancy • As your application grows, it’s not uncommon to have multiple databases, but keep it simple to start • A single web page load often makes dozens or even hundreds of database requests Transactional Database
  • 13. So great that you have this fancy powerful framework, and this scalable transactional database. But daaaamn, that’s a lot of work just to deliver the same boring pages all day. ! Computers don’t mind doing lots of busy work over and over. But wouldn’t it be nicer if they didn’t? And faster for users too! Cache
  • 14. CACHING • Anything that’s costly to load, calculate, lookup, or fetch from the network can be stored for quick lookup by a cache. • Very lightweight, fast, and usually stores all your data in memory • Caches dies?Your system must be able to rebuild it on the fly • Useful for high read/low write products (which you have!) • The hard part of caches is invalidation, a.k.a. figuring out when that copy of the data is no longer fresh. Cache
  • 15. Memcached !! Varnish APC or or perhaps JCSEhcache
  • 16. • Whole HTML pages (minus the personalized parts) • Chunks of pages that rarely change • User info for currently active users • Database-backed objects Cache
  • 17. Now you’ve got a bunch of users joining your app! And it’s speedy to load all those cached pages. ! But signup is super slow, because when they sign up, you need to prepare their account, send them a welcome email, link them up to all their FB friends. ! How do all those big sites not grind to a halt?! Background Queue
  • 18. BACKGROUND QUEUEING • You should never make your users wait for anything that could happen “whenever”, in the background. • First part: the queue, onto which you put instructions that need running when the system gets around to it. • Second part: the workers, who watch the queue for all those instructions and execute them. Background Queue
  • 20. • Sending emails, SMS, push notifications • Recalculating leaderboards • Running slow analytics reports • Publishing FB open-graph data • Anything you aren’t absolutely sure has to happen while the user is waiting for a page load • Or tasks that might be unreliable, like interfacing with 3rd party vendors Background Queue
  • 21. Inevitably, you bring in more rich text content, like user comments, blog posts, tweets, emails, news stories, vendor descriptions, etc. ! You discover that your spiffyTransactional Database is really terrible at search through all that stuff. It does a poor job, and does it slowly! Search
  • 22. SEARCH • Most products need some kind of rich text search even if it’s not obviously a core component • Many great cloud hosted solutions for search will save you headaches. SaaS is perfect for low-volume search • Having a search index means a copy of your data is stored in search. Common bugs when the transactional data and the search data get out of sync Search
  • 24. • Anything that involves human text data is better served by search • Search systems handle fuzzy matching, word stemming, and lots of other goodies you want Search
  • 25. • Search by tag • Search through user bios • Admins searching for comments • Automated search for profanity Search
  • 26. With all these engaged users, you are spending more effort creating relevant touch-points for them. That means reaching them where they live, on email, SMS, and mobile push notifications. ! Heaven help you if you are running those systems yourself. You wouldn’t build your own postal fleet to deliver postcards, right? Right?? Email / SMS / Push
  • 27. EMAIL / SMS / PUSH • Widely distributed communications to uncontrolled endpoints is tough • It’s easy to do it cheaply with very low volume, but you will quickly hit headaches with deliverability, performance, and security. Email / SMS / Push
  • 29. • So many vendors, pricing changes all the time. Avoid lock-in. Design your system to be vendor agnostic. • Pick services that have lots of users like you • Outreach for promotional, is different than transactional. Pick the right partner for the job • Never run your own mail servers Email / SMS / Push
  • 30. Hopefully your developers have been house-keeping their world all along, without you having to ask… ! The world’s best restaurants have impeccably run kitchens. Config / Deployment
  • 31. CONFIG / DEPLOYMENT • How to provision a new machine • Organize code branches for parallel feature work • Spell out a process for emergency hot-fixes • Automated testing before each deploy • One-button deployment for any developer Config / Deployment
  • 32. Amazon OpsWorks / CloudFormation / ElasticBeanstalk Fabric Git-Flow
  • 33. • Release more frequently (every day, every hour, or more) • Deploying code is dependable, no matter who does it • Makes rollbacks trivial in case something goes wrong • Dramatically lowers maintenance costs as your infrastructure grows Config / Deployment
  • 34. No matter how good a job you do, there are always things you can’t control. Your app will have unexpected issues. ! But that doesn’t mean your customers should find problems before you do! Monitoring
  • 35. MONITORING • Internal monitoring watches for errors, plus service or machine failures. • External monitoring simulates your application as your users see it • Sentries monitor invariant conditions, a catch-all for the unknown unknowns. Monitoring
  • 37. • Alert monitoring must wake you up in the wee hours if you are ever going to fix stuff • Run all issues through a single reporting channel with an escalation policy • Non-critical / trend monitoring is just as important, review it at least daily • Report issues immediately to your customers viaTwitter and/or a status page Monitoring
  • 38. Now that you have a business, you need some of that elusive “business intelligence” ! You want to extract insights from your data, user behavior patterns from your logs, revenue and growth forecasts, campaign conversion rates, and deep app forensics. Reporting/Analytics
  • 39. REPORTING / ANALYTICS • Analytics systems are fundamentally separate from transactional data systems. • You might get away with one MySQL database serving both purposes, but not for too long. • Take advantage of great hosted analytics tools, and augment with your own big data store for custom queries • Multiple tools to extract insights from your data Reporting/Analytics
  • 41. • User behavior analytics • “What pages do users visit just before signing up?” • System / Data stats • “How many comments are being left per day?” • Ad-hoc data queries / Data science • “An investor asked us for a vanity metric we don’t track. Help!” • Forensics • “It seems like someone is trying to hack our API, what do we know?” Reporting/Analytics
  • 42. Queue Email / SMS / Push Transactional Database Monitoring Search Deployment Language/Framework Cache Reporting/Analytics
  • 44. • Evaluate your own needs for each of these systems • Have a chat with your dev team about it 1. Do we need these things? 2. When do we need them? 3. Are we special?
  • 46. APPLICATION ANATOMY 101 Will Koffel ! @wkoffel