SlideShare a Scribd company logo
Application Design for the Cloud/AWS
Jonathan Holloway (@jph98)
Application Architect @ Brightpearl
A little bit of background
Brightpearl grew out of a company called Lush
Longboards in Bristol
Chris Tanner and Andrew Mulvenna identified
a need for a single online business
management app
First customer on Brightpearl in 2007
Over 1300 customers currently on Brightpearl
and growing
The numbers:
Founded 2007
Today, we have:
1,300+ customers
53 countries
87 employees
(in San Francisco and Bristol)
$1.3 billion
gmv processed
What Does Brightpearl Do?
- Multi-channel integration (Amazon, Ebay)
- Storefront integration
- Inventory, orders, and customers
- Logistics and shipping
- Web and POS interface
- App store for third party integrations
Business @ Scale on the Amazon Platform
Over 1,300 customers run on our cloud based platform
Company Culture
Rapidly growing
Team, Product, Technology, Career
Team and People
Passionate, Diverse, Agile
The way we work
Open Plan, Open Minded, Autonomous
Great social life
We call our colleagues friends and do fun stuff
together outside the office.
Career development
We invest in our people and support their
career aspirations.
Open atmosphere
Our managers don’t have offices and openly
tell us about the business’ progress.
Multi-cultural workforce
We have employees who come from over 20
different countries.
Tech Culture
General tech lunch and learns (TLAL) for various technology talks
(Java, PHP, Javascript)
Ruby project workshop for building apps once every two weeks,
encourage use outside development
Friday - half day for personal tech projects, e.g. dashboards,
product improvements
Java Meetup Group for external talks with developers from other
companies in the Bristol and Bath area. We host PHPSW along with
Basekit in Bristol
My Background
Application Architect - Solutions/Technical, Developer
Started with SaaS back in 2010 with email archiving and large scale
storage/search solution
- Cassandra, Hadoop, Pig, Lucene and Jersey
Worked in statistical computing with distributed grids (Oracle Grid
Engine, LSF). Deployed on large compute clusters internally in
pharma, looked at cloud based solution using Starcluster, Python
Java background, Ruby, Python and Javascript
Cloud, Tech Overview
SaaS - Big Product Examples
Lots of big SaaS based products on the web today including:
On-demand movie rental
Customer Relationship Management
Microsoft Office Toolsuite Online
Conference and collaboration
SaaS and PaaS and IaaS
It’s all very confusing… think of it as a pyramid
IaaS - Infrastructure as a service (Tools/services for devops)
- Amazon EC2, Windows Azure, Heroku
PaaS - Platform as a service (Tools/services for app devs)
- AWS Beanstalk, Heroku, Google App Engine, Redhat
Openshift
SaaS - Software as a service (Apps for end users - yay)
- e.g. Netflix, Brightpearl, Salesforce, Office365
How do I know when a product should be SaaS based?
- Have to be careful with data requirements, data at rest,
transfer because of the public cloud. VPC and VPN can help.
- I/O and throughput might prohibit movement of files
- Have to be careful don’t just move your application into the
cloud… break it down… re-assemble with cloud based
application services
- Factor in availability, performance, failover, reliability. Don’t
underestimate reliability
SaaS - Archiving Solution
Customer Account
Metadata
Postgres/Slony
Search Services
SOL
R
SOL
R
SOL
R
Content Extraction
Tika Tika
Content Storage
Solaris/ZFS
Search Interface
Django
Tika
Mail Archive
Mail Archive
Mail Archive
- Worked on this for a private cloud solution
- Why doesn’t it fit the public cloud - Amazon/Rackspace?
- Couldn’t move it “as is”
SaaS Distributed Grid - Cloud Bursting Scenario
Oracle Grid Engine
Grid Master
Slave
Slave
Slave
Stats Desktop
SAS
Matlab
Amazon Cloud
Slave
(m3 large)
Slave
(m3 large)
Slave
(m3 large)
Slave
(g2 GPU)
Slave
(g2 GPU)
Slave
(g2 GPU)
1. Provision new instances
2. Extend Capacity Internally
3. Transfer Files
4. Execute Files
5. Shutdown when done
R
SaaS eCommerce Business Management Scenario
Amazon Web Services - Cloud Computing Services
Using AWS for ~ 4 years as a IaaS platform
Brightpearl is designed for use on AWS
Make use of both US and European datacentres, multi-availability
zones - approx 90 EC2 instances
All Amazon Linux based images, use Centos 5.x in dev/test
We approximate an environment for development and test
Architectural Overview
Will break it down into the following views:
- Infrastructure and Operating System
- Application Services (Queuing, Data Storage, Load Balancing)
- Software Stack (Brightpearl Application - JS, PHP and Java)
Infrastructure
We build on various Amazon base Images (based on Amazon Linux)
with different specifications...
- m1 medium (webserver)
- t1 micro (mail relay)
- m1 small (messaging)
EC2Instances is useful - http://www.ec2instances.info/
Software is provisioned on top of the base O/S with Chef (we
maintain this configuration and keeping it up to date).
Application Services
Elastic Compute Cloud (based off Xen)
- Various instance sizes (small, medium large, xlarge)
- Basis is an AMI - Centos, RHEL, Windows
Amazon RDS (Relational Database Service) - aka MySQL
- Data Storage
Content delivery network, think Akamai
- Global delivery of static resources (images, content)
Application Services
Key/value store - useful for storing large data that
won’t fit in a relational database
Amazon S3 - storage service for files
ELB (Elastic Load Balancer) - instance load balancing
Languages - Javascript
Javascript for DOM manipulation, data binding, validation
- Functional, oh so functional
- JQuery for DOM manipulation and UI elements
- Backbone for structure (+ CommonJS)
- Mocha for testing
- JS on the serverside - Node
- Dependency Management (Bower, NPM)
Languages - PHP
PHP for web development in the presentation tier
- Dynamically typed, interpreted
- Single threaded
- Well supported, lots of third party software
- Lightweight, fast and proven
Languages - Java
Java for scaling services out
- Statically and strongly typed
- Good for concurrency and parallelisation
- Good library, framework & IDE support (Intellij)
- Build RESTful API’s for PHP to communicate with
Languages - Ruby
Ruby - for provisioning infrastructure, configuration and test
- Our “devops” and “test engineer” language
- Dynamically typed, multi paradigm
- Readable, testable, way cool
- Great third party library support
- Chef by Opscode used for configuring EC2 instances
- Cucumber and Webdriver for application testing
Design Problems
AWS Design Considerations
Sometimes we need to be agnostic for performance, cost reasons
and also for vendor (Amazon) lockin
Have to build in failover to each individual service
Don’t use SQS (Simple Queueing Service) - instead we roll our own
Roll our own datagrid for cross EC-2 instance data - an in-memory
datagrid. Think distributed Java collections.
Make use of a distributed file system for transient file storage
Problems at Scale
Design for redundancy:
- Ephemeral storage by default. Use EBS (Elastic Block Storage)
- Multiple copies of services deployed on instances
- Multiple instances for failover
Design for scale:
- Partitioning of accounts using separate RDS instances
Problems at Scale
Design for concurrency:
- Immutability is key, Actor Model, STM are useful
Design for performance:
- Profile everything (Yourkit is great for this)
- Java is very memory hungry… tune the JVM and GC strategy
Problems at Scale
Design for cost:
- Reserved instances (up-front cost) can save a fair bit
Design for content delivery:
- Server side caching (Varnish, mod_cache)
- Client side caching (expires headers, etags)
- Content Delivery Network - (Cloudfront, Akamai)
Design for failure:
- Internal Services (Redundant Copies)
- External Services
- Protect against them overloading your internal
services
- Don’t flood them with your traffic
Problems at Scale
Future Tech
Some future technology we’re interested in...
- Web Components (Polymer)
- Functional JVM languages (JDK 8 Streams, Clojure)
- Docker (LXC containers) for virtualisation
- Interested in Quasar for lightweight
threading
Oh by the way… we’re expanding...
Current Open Positions
Senior Developers
Graduate Developers
Test Engineers
Key Events @ Brightpearl
5th August - Java Meetup Group
20th August - PHPSW Meetup
Questions?

More Related Content

What's hot

Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
Amazon Web Services
 
The Open Data Lake Platform Brief - Data Sheets | Whitepaper
The Open Data Lake Platform Brief - Data Sheets | WhitepaperThe Open Data Lake Platform Brief - Data Sheets | Whitepaper
The Open Data Lake Platform Brief - Data Sheets | Whitepaper
Vasu S
 
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth AnalysisCloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Andrew Brust
 
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro SessionAWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
SaM theCloudGuy
 
The other Apache Technologies your Big Data solution needs
The other Apache Technologies your Big Data solution needsThe other Apache Technologies your Big Data solution needs
The other Apache Technologies your Big Data solution needs
gagravarr
 
Architecting Big Data Ingest & Manipulation
Architecting Big Data Ingest & ManipulationArchitecting Big Data Ingest & Manipulation
Architecting Big Data Ingest & Manipulation
George Long
 
AWS Webcast - Data Integration into Amazon Redshift
AWS Webcast - Data Integration into Amazon RedshiftAWS Webcast - Data Integration into Amazon Redshift
AWS Webcast - Data Integration into Amazon Redshift
Amazon Web Services
 
DAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQLDAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQL
Kamal Gupta
 
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro SessionAWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
SaM theCloudGuy
 
Concevoir une application scalable dans le Cloud
Concevoir une application scalable dans le CloudConcevoir une application scalable dans le Cloud
Concevoir une application scalable dans le Cloud
Stéphanie Hertrich
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
Amazon Web Services
 
Rich Data Graphs for MapReduce
Rich Data Graphs for MapReduceRich Data Graphs for MapReduce
Rich Data Graphs for MapReduce
Scott Cinnamond
 
Introduction To HBase
Introduction To HBaseIntroduction To HBase
Introduction To HBase
Anil Gupta
 
Building Your Data Warehouse with Amazon Redshift
Building Your Data Warehouse with Amazon RedshiftBuilding Your Data Warehouse with Amazon Redshift
Building Your Data Warehouse with Amazon Redshift
Amazon Web Services
 
Hadoop and Hive in Enterprises
Hadoop and Hive in EnterprisesHadoop and Hive in Enterprises
Hadoop and Hive in Enterprises
markgrover
 
Bursting on-premise analytic workloads to Amazon EMR using Alluxio
Bursting on-premise analytic workloads to Amazon EMR using AlluxioBursting on-premise analytic workloads to Amazon EMR using Alluxio
Bursting on-premise analytic workloads to Amazon EMR using Alluxio
Alluxio, Inc.
 
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012Andrew Brust
 
What database
What databaseWhat database
What database
Regunath B
 
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
Data Con LA
 

What's hot (20)

Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
Building a Modern Data Warehouse: Deep Dive on Amazon Redshift - SRV337 - Chi...
 
The Open Data Lake Platform Brief - Data Sheets | Whitepaper
The Open Data Lake Platform Brief - Data Sheets | WhitepaperThe Open Data Lake Platform Brief - Data Sheets | Whitepaper
The Open Data Lake Platform Brief - Data Sheets | Whitepaper
 
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth AnalysisCloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
 
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro SessionAWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
AWS tutorial-Part58:AWS Cloud Database Products-1st Intro Session
 
The other Apache Technologies your Big Data solution needs
The other Apache Technologies your Big Data solution needsThe other Apache Technologies your Big Data solution needs
The other Apache Technologies your Big Data solution needs
 
Architecting Big Data Ingest & Manipulation
Architecting Big Data Ingest & ManipulationArchitecting Big Data Ingest & Manipulation
Architecting Big Data Ingest & Manipulation
 
AWS Webcast - Data Integration into Amazon Redshift
AWS Webcast - Data Integration into Amazon RedshiftAWS Webcast - Data Integration into Amazon Redshift
AWS Webcast - Data Integration into Amazon Redshift
 
DAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQLDAT304_Amazon Aurora Performance Optimization with MySQL
DAT304_Amazon Aurora Performance Optimization with MySQL
 
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro SessionAWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
AWS tutorial-Part59:AWS Cloud Database Products-2nd Intro Session
 
Concevoir une application scalable dans le Cloud
Concevoir une application scalable dans le CloudConcevoir une application scalable dans le Cloud
Concevoir une application scalable dans le Cloud
 
NoSQL Seminer
NoSQL SeminerNoSQL Seminer
NoSQL Seminer
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
 
Rich Data Graphs for MapReduce
Rich Data Graphs for MapReduceRich Data Graphs for MapReduce
Rich Data Graphs for MapReduce
 
Introduction To HBase
Introduction To HBaseIntroduction To HBase
Introduction To HBase
 
Building Your Data Warehouse with Amazon Redshift
Building Your Data Warehouse with Amazon RedshiftBuilding Your Data Warehouse with Amazon Redshift
Building Your Data Warehouse with Amazon Redshift
 
Hadoop and Hive in Enterprises
Hadoop and Hive in EnterprisesHadoop and Hive in Enterprises
Hadoop and Hive in Enterprises
 
Bursting on-premise analytic workloads to Amazon EMR using Alluxio
Bursting on-premise analytic workloads to Amazon EMR using AlluxioBursting on-premise analytic workloads to Amazon EMR using Alluxio
Bursting on-premise analytic workloads to Amazon EMR using Alluxio
 
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012
Microsoft's Big Play for Big Data- Visual Studio Live! NY 2012
 
What database
What databaseWhat database
What database
 
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
Big Data Day LA 2015 - NoSQL: Doing it wrong before getting it right by Lawre...
 

Similar to Application design for the cloud using AWS

AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
Chris Purrington
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
Above the cloud joarder kamal
Above the cloud   joarder kamalAbove the cloud   joarder kamal
Above the cloud joarder kamal
Joarder Kamal
 
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
Amazon Web Services
 
Big Data, Ingeniería de datos, y Data Lakes en AWS
Big Data, Ingeniería de datos, y Data Lakes en AWSBig Data, Ingeniería de datos, y Data Lakes en AWS
Big Data, Ingeniería de datos, y Data Lakes en AWS
javier ramirez
 
Using Data Lakes: Data Analytics Week SF
Using Data Lakes: Data Analytics Week SFUsing Data Lakes: Data Analytics Week SF
Using Data Lakes: Data Analytics Week SF
Amazon Web Services
 
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Precisely
 
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
Amazon Web Services
 
Using Data Lakes
Using Data Lakes Using Data Lakes
Using Data Lakes
Amazon Web Services
 
Streaming Solutions for Real time problems
Streaming Solutions for Real time problemsStreaming Solutions for Real time problems
Streaming Solutions for Real time problems
Abhishek Gupta
 
Azure data platform overview
Azure data platform overviewAzure data platform overview
Azure data platform overview
James Serra
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
Amazon Web Services
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
AWS Big Data Landscape
AWS Big Data LandscapeAWS Big Data Landscape
AWS Big Data Landscape
Crishantha Nanayakkara
 
From raw data to business insights. A modern data lake
From raw data to business insights. A modern data lakeFrom raw data to business insights. A modern data lake
From raw data to business insights. A modern data lake
javier ramirez
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
Amazon Web Services
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV Forum
Adrian Cockcroft
 
Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL Databases
Jon Meredith
 

Similar to Application design for the cloud using AWS (20)

AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Above the cloud joarder kamal
Above the cloud   joarder kamalAbove the cloud   joarder kamal
Above the cloud joarder kamal
 
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
(ISM304) Oracle to Amazon RDS MySQL & Aurora: How Gallup Made the Move
 
Big Data, Ingeniería de datos, y Data Lakes en AWS
Big Data, Ingeniería de datos, y Data Lakes en AWSBig Data, Ingeniería de datos, y Data Lakes en AWS
Big Data, Ingeniería de datos, y Data Lakes en AWS
 
Using Data Lakes: Data Analytics Week SF
Using Data Lakes: Data Analytics Week SFUsing Data Lakes: Data Analytics Week SF
Using Data Lakes: Data Analytics Week SF
 
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
 
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
 
Using Data Lakes
Using Data Lakes Using Data Lakes
Using Data Lakes
 
Streaming Solutions for Real time problems
Streaming Solutions for Real time problemsStreaming Solutions for Real time problems
Streaming Solutions for Real time problems
 
Azure data platform overview
Azure data platform overviewAzure data platform overview
Azure data platform overview
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
AWS Big Data Landscape
AWS Big Data LandscapeAWS Big Data Landscape
AWS Big Data Landscape
 
From raw data to business insights. A modern data lake
From raw data to business insights. A modern data lakeFrom raw data to business insights. A modern data lake
From raw data to business insights. A modern data lake
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV Forum
 
Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL Databases
 

More from Jonathan Holloway

The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
Jonathan Holloway
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
Jonathan Holloway
 
Mockito intro
Mockito introMockito intro
Mockito intro
Jonathan Holloway
 
Debugging
DebuggingDebugging
SOLID principles
SOLID principlesSOLID principles
SOLID principles
Jonathan Holloway
 
Building data pipelines
Building data pipelinesBuilding data pipelines
Building data pipelines
Jonathan Holloway
 
Introduction to JVM languages and Fantom (very brief)
Introduction to JVM languages and Fantom (very brief)Introduction to JVM languages and Fantom (very brief)
Introduction to JVM languages and Fantom (very brief)
Jonathan Holloway
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
Jonathan Holloway
 
Introduction to using MongoDB with Ruby
Introduction to using MongoDB with RubyIntroduction to using MongoDB with Ruby
Introduction to using MongoDB with Ruby
Jonathan Holloway
 

More from Jonathan Holloway (11)

The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Mockito intro
Mockito introMockito intro
Mockito intro
 
Debugging
DebuggingDebugging
Debugging
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
 
Building data pipelines
Building data pipelinesBuilding data pipelines
Building data pipelines
 
Introduction to JVM languages and Fantom (very brief)
Introduction to JVM languages and Fantom (very brief)Introduction to JVM languages and Fantom (very brief)
Introduction to JVM languages and Fantom (very brief)
 
Database migration with flyway
Database migration  with flywayDatabase migration  with flyway
Database migration with flyway
 
Lightweight web frameworks
Lightweight web frameworksLightweight web frameworks
Lightweight web frameworks
 
Introduction to using MongoDB with Ruby
Introduction to using MongoDB with RubyIntroduction to using MongoDB with Ruby
Introduction to using MongoDB with Ruby
 

Recently uploaded

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 

Recently uploaded (20)

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 

Application design for the cloud using AWS

  • 1. Application Design for the Cloud/AWS Jonathan Holloway (@jph98) Application Architect @ Brightpearl
  • 2. A little bit of background Brightpearl grew out of a company called Lush Longboards in Bristol Chris Tanner and Andrew Mulvenna identified a need for a single online business management app First customer on Brightpearl in 2007 Over 1300 customers currently on Brightpearl and growing The numbers: Founded 2007 Today, we have: 1,300+ customers 53 countries 87 employees (in San Francisco and Bristol) $1.3 billion gmv processed
  • 3. What Does Brightpearl Do? - Multi-channel integration (Amazon, Ebay) - Storefront integration - Inventory, orders, and customers - Logistics and shipping - Web and POS interface - App store for third party integrations
  • 4. Business @ Scale on the Amazon Platform Over 1,300 customers run on our cloud based platform
  • 5. Company Culture Rapidly growing Team, Product, Technology, Career Team and People Passionate, Diverse, Agile The way we work Open Plan, Open Minded, Autonomous Great social life We call our colleagues friends and do fun stuff together outside the office. Career development We invest in our people and support their career aspirations. Open atmosphere Our managers don’t have offices and openly tell us about the business’ progress. Multi-cultural workforce We have employees who come from over 20 different countries.
  • 6. Tech Culture General tech lunch and learns (TLAL) for various technology talks (Java, PHP, Javascript) Ruby project workshop for building apps once every two weeks, encourage use outside development Friday - half day for personal tech projects, e.g. dashboards, product improvements Java Meetup Group for external talks with developers from other companies in the Bristol and Bath area. We host PHPSW along with Basekit in Bristol
  • 7. My Background Application Architect - Solutions/Technical, Developer Started with SaaS back in 2010 with email archiving and large scale storage/search solution - Cassandra, Hadoop, Pig, Lucene and Jersey Worked in statistical computing with distributed grids (Oracle Grid Engine, LSF). Deployed on large compute clusters internally in pharma, looked at cloud based solution using Starcluster, Python Java background, Ruby, Python and Javascript
  • 9. SaaS - Big Product Examples Lots of big SaaS based products on the web today including: On-demand movie rental Customer Relationship Management Microsoft Office Toolsuite Online Conference and collaboration
  • 10. SaaS and PaaS and IaaS It’s all very confusing… think of it as a pyramid IaaS - Infrastructure as a service (Tools/services for devops) - Amazon EC2, Windows Azure, Heroku PaaS - Platform as a service (Tools/services for app devs) - AWS Beanstalk, Heroku, Google App Engine, Redhat Openshift SaaS - Software as a service (Apps for end users - yay) - e.g. Netflix, Brightpearl, Salesforce, Office365
  • 11. How do I know when a product should be SaaS based? - Have to be careful with data requirements, data at rest, transfer because of the public cloud. VPC and VPN can help. - I/O and throughput might prohibit movement of files - Have to be careful don’t just move your application into the cloud… break it down… re-assemble with cloud based application services - Factor in availability, performance, failover, reliability. Don’t underestimate reliability
  • 12. SaaS - Archiving Solution Customer Account Metadata Postgres/Slony Search Services SOL R SOL R SOL R Content Extraction Tika Tika Content Storage Solaris/ZFS Search Interface Django Tika Mail Archive Mail Archive Mail Archive - Worked on this for a private cloud solution - Why doesn’t it fit the public cloud - Amazon/Rackspace? - Couldn’t move it “as is”
  • 13. SaaS Distributed Grid - Cloud Bursting Scenario Oracle Grid Engine Grid Master Slave Slave Slave Stats Desktop SAS Matlab Amazon Cloud Slave (m3 large) Slave (m3 large) Slave (m3 large) Slave (g2 GPU) Slave (g2 GPU) Slave (g2 GPU) 1. Provision new instances 2. Extend Capacity Internally 3. Transfer Files 4. Execute Files 5. Shutdown when done R
  • 14. SaaS eCommerce Business Management Scenario
  • 15. Amazon Web Services - Cloud Computing Services Using AWS for ~ 4 years as a IaaS platform Brightpearl is designed for use on AWS Make use of both US and European datacentres, multi-availability zones - approx 90 EC2 instances All Amazon Linux based images, use Centos 5.x in dev/test We approximate an environment for development and test
  • 16. Architectural Overview Will break it down into the following views: - Infrastructure and Operating System - Application Services (Queuing, Data Storage, Load Balancing) - Software Stack (Brightpearl Application - JS, PHP and Java)
  • 17. Infrastructure We build on various Amazon base Images (based on Amazon Linux) with different specifications... - m1 medium (webserver) - t1 micro (mail relay) - m1 small (messaging) EC2Instances is useful - http://www.ec2instances.info/ Software is provisioned on top of the base O/S with Chef (we maintain this configuration and keeping it up to date).
  • 18. Application Services Elastic Compute Cloud (based off Xen) - Various instance sizes (small, medium large, xlarge) - Basis is an AMI - Centos, RHEL, Windows Amazon RDS (Relational Database Service) - aka MySQL - Data Storage Content delivery network, think Akamai - Global delivery of static resources (images, content)
  • 19. Application Services Key/value store - useful for storing large data that won’t fit in a relational database Amazon S3 - storage service for files ELB (Elastic Load Balancer) - instance load balancing
  • 20. Languages - Javascript Javascript for DOM manipulation, data binding, validation - Functional, oh so functional - JQuery for DOM manipulation and UI elements - Backbone for structure (+ CommonJS) - Mocha for testing - JS on the serverside - Node - Dependency Management (Bower, NPM)
  • 21. Languages - PHP PHP for web development in the presentation tier - Dynamically typed, interpreted - Single threaded - Well supported, lots of third party software - Lightweight, fast and proven
  • 22. Languages - Java Java for scaling services out - Statically and strongly typed - Good for concurrency and parallelisation - Good library, framework & IDE support (Intellij) - Build RESTful API’s for PHP to communicate with
  • 23. Languages - Ruby Ruby - for provisioning infrastructure, configuration and test - Our “devops” and “test engineer” language - Dynamically typed, multi paradigm - Readable, testable, way cool - Great third party library support - Chef by Opscode used for configuring EC2 instances - Cucumber and Webdriver for application testing
  • 25. AWS Design Considerations Sometimes we need to be agnostic for performance, cost reasons and also for vendor (Amazon) lockin Have to build in failover to each individual service Don’t use SQS (Simple Queueing Service) - instead we roll our own Roll our own datagrid for cross EC-2 instance data - an in-memory datagrid. Think distributed Java collections. Make use of a distributed file system for transient file storage
  • 26. Problems at Scale Design for redundancy: - Ephemeral storage by default. Use EBS (Elastic Block Storage) - Multiple copies of services deployed on instances - Multiple instances for failover Design for scale: - Partitioning of accounts using separate RDS instances
  • 27. Problems at Scale Design for concurrency: - Immutability is key, Actor Model, STM are useful Design for performance: - Profile everything (Yourkit is great for this) - Java is very memory hungry… tune the JVM and GC strategy
  • 28. Problems at Scale Design for cost: - Reserved instances (up-front cost) can save a fair bit Design for content delivery: - Server side caching (Varnish, mod_cache) - Client side caching (expires headers, etags) - Content Delivery Network - (Cloudfront, Akamai)
  • 29. Design for failure: - Internal Services (Redundant Copies) - External Services - Protect against them overloading your internal services - Don’t flood them with your traffic Problems at Scale
  • 30. Future Tech Some future technology we’re interested in... - Web Components (Polymer) - Functional JVM languages (JDK 8 Streams, Clojure) - Docker (LXC containers) for virtualisation - Interested in Quasar for lightweight threading
  • 31. Oh by the way… we’re expanding... Current Open Positions Senior Developers Graduate Developers Test Engineers Key Events @ Brightpearl 5th August - Java Meetup Group 20th August - PHPSW Meetup Questions?