1. www.mobiliya.com
Cloud Stack in 2017
“What is & How to choose a cloud stack ?“
“AN OPINIONATED VIEW”
Gaurav Roy, @MobiliYa
gaurav-roy-2457635
opengauravroy
- Spread the Knowledge, Initiative
- Feb 4th 2017
2. 2
Agenda
1. Intro - Cloud Application Stack Options
2. Breath-wise dive into options & how to choose
1. Cloud Hosting
2. Public Cloud
3. Private Cloud
4. Architecture
5. Backend
6. Front End
7. DB - Relational
8. DB – NoSQL
9. Deployment Tools
10. QA Automation
11. Monitoring &
Logging Tools
3. 3
What is a Cloud?
Cloud
“An Internet-based computing environment providing
shared computation resources and data
to computers and other devices on demand.”
4. 4
When do you need to choose a Cloud stack?
New web application?
Re-architect parts of an existing application?
For Performance
For Elastic Load Scaling
For Security
For re-usability
For Manageability & Governance
5. 5
Why is this a recurring choice @ Mobiliya?
We do a lot of R&D & Consulting that have Cloud requirements
on Works Areas : Cloud, IoT, AR, Mobility, Analytics
on Domains : Devices, Automotive, Healthcare, Telecom, Finance
Most of projects are from scratch development
A new Project = A new choice
6. 6 6
KNOWING WHEN
TO USE WHAT
“IS IMPORTANT “
EACH TOOL HAS A PURPOSE AND FITS A BILL!
7. 7
What are the Cloud Options – “Cambrian Sea Slide”
1. Cloud Hosting
2. Public Cloud
3. Private Cloud
4. Architecture
5. Backend
6. Front End
7. DB - Relational
7. DB – NoSQL
8. Deployment
Tools
9. QA Automation
10. Analytics
11. Data Routing
12. Monitoring &
Logging
Monolithic Micro-services Serverless
Azure Warehouse
Zuul
PUBLIC CLOUD PRIVATE CLOUD HYBRID CLOUD
Truckload of other options
Not covered in this presentation
Not covered in presentation
8. 8
What do you need to choose?
1. Cloud Hosting
2. Public Cloud
3. Private Cloud
4. Architecture
5. Backend
6. Front End
7. DB - Relational
7. DB – NoSQL
8. Deployment
Tools
9. QA Automation
10. Analytics
11. Data Routing
12. Monitoring &
Logging
Monolithic Micro-services Serverless
Azure Warehouse
Zuul
PUBLIC CLOUD PRIVATE CLOUD HYBRID CLOUD
Monolithic Micro-services Serverless
Azure Warehouse
https://en.wikipedia.org/wiki/Machine_learning
Zuul
12 areas of choices and some more
- Choose one or more components in each area.
- There are more choice areas in a cloud stack and certainly main more options
than depicted in each area.
9. A CHOICE AT A TIME
BREAK-UP THE CLOUD. MAKE IT SIMPLER.
LOOK AT ONLY SECTION OF INTEREST IN SLIDES AHEAD
10. 10
Choice #1 : Cloud Hosting
Choice #1: Cloud Hosting
Where are we Hosting the cloud ?
[Private] Inside our company
[Public] Shared internet data center
[Hybrid] Confidential parts private, rest public
13. 13
1.1 Private Cloud : What ?
Deployed within/for a single organization
Multiple known machines acting together as a common system
Monitored using modern Platform Tools. (for downtime & other outages)
Just hosting a webserver on prem does not mean it’s a private cloud.
On premise network
Private Cloud
External Clients
Internal Clients
External Clients
15. 15
1.2 Public Cloud : What ?
Deployed on the internet
Shared infrastructure by multiple apps or organisations.
Standardized interfaces given by Public Cloud Provider
Monitored using advanced Public Cloud Tools.
Public Cloud Provider Network
Public Cloud (running various apps)
Cloud
Provider
Firewall
App#2 Client
App#1 Clients
16. 16
#1.3 HOSTING : THE “HYBRID CLOUD”
Park and Ride
(use the tool, where it’s useful)
17. 17
1.3 Hybrid Cloud : What ?
Use both Public & Private Cloud
Regulated data in Private Cloud and other data in Public Cloud
Can do customizations in Private Cloud section
Public Cloud Provider Network
Private Cloud
External Clients
External Clients
Internal Clients
Cloud
Provider
Firewall
18. 18
SHORT IDEA (Infra) YOUR OWN DATA CENTER SHARED DATA CENTER YOUR & SHARED DATA CENTER
When to use? • Regulated Data
(financial, medical etc)
• Gradual increase in Load
• Consumer usecases
• Bursty Load (Black Friday)
• Part regulated part
unregulated data
• All Weather Load
Cost (operating) 60x (at scale)
150x (at no scale)
100x 150x
Devops Effort 100x 20x 100x
Code Effort 50x 50x 100x
Opportunities Large Enterprises Startups & Large Enterprises Large Enterprises with legacy
inhouse servers
Strengths Customizability & Control,
Data Security
Feature rich, Quick setup,
standardized API, talent hiring,
Scale on the GO
Best of both Worlds,
Customizable & Scalable
Weakness Time & Cost -
Build/Operate/Scale
3rd Party provider trust Cost, Technical Complexity
1. Cloud Hosting : A simple compare table
Private Cloud Public Cloud Hybrid Cloud
19. 19
Choice #1 : Decision Tree Cloud Hosting ?
Q : Private Data?
(cannot host outside?)
YES :
(Note: This needs to be due to some Govt, regulation
or financial/medical/competitive reasoning)
Private Cloud
NO
PARTIALLY
Public Cloud
Q : Do you have
low or
bursty load ?
YES:
reco move
(less load
or bursty)
Hybrid Cloud
NO : Steady & High Load
Q : Is not well funded
PROOF OF CONCEPT
like funding?
YES:
Start with public
For quick POC
(cheaper & easier)
NO
20. 20
1. SHORT DECISION (for new apps)
Highly
Confidential
Data
Super Large
App
PRIVATE
CLOUD
For all
Else,
there’s
PUBLIC
CLOUD
Large Enterpises would be
HYBRID, if looked across org
However,
Individual Apps or Services
are likely to be Either
PRIVATE or PUBLIC
21. 21
1. Marketshare : Private Vs Public (2016)
Just hosting a webserver on prem does not mean it’s a private cloud. A lot more services on prem, which are not private cloud.
Large enterprises prefer Private or Public. Startups – Public. Reason: Features/Costs on PUBLIC cloud are a lot more compelling for quick release.
Ref : http://wikibon.com/public-cloud-iaas-is-3-5x-the-size-of-true-private-cloud-adoption/
$25
Billion
$7
Billion
Private Cloud
Public Cloud
22. 22
Choice #2: Public Cloud : Infra Models
Cloud Infrastructure Models ?
[IaaS] Infrastructure as a service
[PaaS] Platform as a service
[FaaS] Function as a service
[SaaS] Software as a service
23. 23
2. What is IaaS – PaaS – FaaS - SaaS?
Functions
Data
Application
Runtime
Backend Code
OS
Virtualization
Server Machines
Storage
Networking
Awesome Vizualisation picked from : Ref : http://www.slideshare.net/manuel_silveyra/austin-cf-meetup-20150224/3
PS: We expect Container as a Service term in 2017-18 too, there is a separate section on it later
Functions
Data
Data
Runtime
Backend Code
OS
Virtualization
Server Machines
Storage
Networking
Function
Data
Application
Runtime
Backend Code
OS
Virtualization
Server Machines
Storage
Networking
Functions
Data
Application
Runtime
Backend Code
OS
Virtualization
Server Machines
Storage
Networking
Public Cloud Provider - responsibility
Application Writer - responsibility
Private Cloud Infrastructure
(as a service)
Platform
(as a service)
Function
(as a service)
(serverless arch)
Functions
Data
Application
Runtime
Backend Code
OS
Virtualization
Server Machines
Storage
Networking
Software
(as a service)
24. 24
SHORT IDEA LEASE MACHINES LEASE AN APP RUNTIME LEASE A FUNCTION RUNTIME
What it means? Lease Virtual Machines,
Storage and Network.
Like Leasing a Machines
Lease a Runtime to execute
code.
Like lease a JVM
Lease an env that runs
functions.
Like get an object
Code/Devops Effort High Medium Minimal
Lock In to Cloud Provider LOW NEAR COMPLETE IMPOSSIBLE TO MOVE
Advantage • Flexible in usage
• Can Customize
• Complete freedom for dev
• Semi-flexible in usage
• Super-Easy to deploy, scale
• Usually has a methodology
of code and limited
languages supported
• Cannot change anything
Cost (operating) • 100x • 110x • 200x
Cost (development) • 100x • 70x • 10x
• Fantastic in some scenarios
(new hot dish on the block)
2. Cloud Infra : A simple compare table
Infrastructure
(as a service)
Platform
(as a service)
Function
(as a service)
25. 25
2. Software as a Service
Software as a Service
Whole Software is leased
No deployment, limited/no development
Specialized domain specific software
Configs are available to customize generic software as per org needs.
API are available to read/write data to the Cloud Software. (Hybrid Cloud or extend)
For eq: Office 365, Azure-AD, Sales Force
Choice : “Build (PaaS/IaaS/FaaS) or Lease (SaaS) Software”
We will not cover range of SaaS in this presentation – “Too large an area”
26. 26
Private Cloud
Infrastructure
(as a service)
Platform
(as a service)
Function
(as a service)
Software
(as a service)
Customizability
Cost/Time of Development
& Maintenance
2. Customizability Vs Cost of Development
27. 27
2. Customizability : How to choose – Cloud as a Service ?
1. GET GOING FAST : You Will be able to get rolling and scale up really fast.
2. SO LONG AS: What works for everyone, works for you. Cannot request many changes in the food
1. SaaS is like McDonald (take it, if it works for you) – simple decision of YES/NO.
2. FaaS, PaaS maybe like going to a Restaurant.
3. Others are like cooking yourself.
28. 28
2. Cloud Infra : How to choose - IaaS or PaaS?
B. Do you have legacy code or 3rd
Party dependencies ?
Or App is not simple – ie. simple app-
a DB + business logic + API calls?
IaaS PaaS, FaaS
YES NO
29. 29
Choice #2 : Type of Cloud choice? Type of Cloud ?
Q : Any readymade
Sofrware work
available ?
YES
SaaS IaaSPaaS
Q : Standard
run of mill app
(from scratch dev -
no legacy code) ?
YES
Q : Is app
completely
event driven
or API Intensive ?
YES
FaaS
YES
NO
NO
30. 30
Choice #2.1: Select A Cloud Provider
Who do we select ?
Tens of Public Cloud Providers
AWS, Azure, Google Cloud, Oracle Cloud
Rackspace, Heroku, VmWare, CISCO
31. 31
2.1 Leased Components on Public IaaS/PaaS (typical)
1
Compute
VMs (IaaS)
Runtime (Pass)
Runs your
apps
2
Database
R-DBMS or
NoSQL
Save data
3
Storage
File Storage &
Archiving
Save large
files
4
Networking
Routing, VPN
Connect up
everything
5
Monitoring
VM Health,
Outages
Health
Check
32. 32
2.1.1 What do we lease for Public Cloud ? Examples?
Compute (VM)
Compute (Docker Container Mgmt)
Compute (FaaS)
Storage (large files)
Storage (VM persistent)
DB (Relational)
DB (NoSQL)
DB (Caching)
Networking (API Gateway)
Networking (Virtual Private N/w)
Networking (Load Balancer, Routing)
Amazon Web Services
EC2
EC2 Container Service
Lambda
S3, Glacier, Cloud Front
Elastic File, Block Storage
RDS (MySQL), Redshift
DynamoDB
Elastic (Memcache/Redis)
AWS API Gateway
VPC
Elastic Load Balancer, Route 53
Microsoft Azure
Virtual Machines
Azure Container Service, Registry
Function, Batch Jobs
Blob, File, Data Lake, CDN
Disk
SQL, Data Warehouse
DocumentDB, TableStorage
Redis Cache
API Management, App Gateway
VPN
Load Balancer
1 Compute
2 Storage
3 Database
4 Networking
Note: Have chosen top two providers but everyone has the same situation. ( in various stages progression )
33. 33
Spoilt for choice ? Among Cloud Providers
Choosing a Cloud Provider is like “Buying a SUV”
[lot of options – choose as per your needs and likes]
1. Look at your Usage Cost (each provider has a cost calculator)
2. Check for Marketshare & stability of cloud platform.
3. Check code language support (when using Paas/FaaS) – wrt expertise in your team
4. Each Public Cloud has found a niche.
A good tool to use for feature compare : http://cloudcomparison.rightscale.com/
34. 34
2.2.1 : Cloud Provider : AWS
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Best in Class
IaaS (Bare metal) -
PaaS -
FaaS Best in Class (tied with Azure)
SaaS -
DB Best in Class (arguably)
Analytics Best in Class (tied with Azure)
Storage Best in Class (tied with Azure)
Networking Best in Class (tied with Azure)
Monitoring, Ops Best in Class
Value Added : IoT, MSGQs Best in Class (tied with Azure)
Best in Class - Offering
Market Leader (IaaS)
Expertise easy to get
Very Reliable
Good Support & Training
Java Go
JS/Node PHP
Python Ruby
.NET C++
Started the revolution – by leasing internal unused infrastructure capacity
IaaS – still remains main selling point
Awesome - Value Added services
Defacto Recommendation – along with Microsoft Azure (safe bet)
Australia X
China X
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
X
Enterprises X
SMEs X
Startups X
Individuals X
35. 35
2.2.2 : Cloud Provider : Microsoft Azure
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Best in Class
IaaS (Bare metal) -
PaaS WebApps (.Net,Node,Java,PHP)
FaaS Best in Class (tied with AWS)
SaaS Office 365, Azure-AD etc
DB Competitive
Analytics Best in Class (tied with AWS)
Storage Best in Class (tied with AWS)
Networking Best in Class (tied with AWS)
Monitoring, Ops Competitive
Value Added : IoT, MSGQs Best in Class (tied with AWS)
Microsoft Ecosystem
Awesome Offerings
Great Support
SaaS complementary
Java GO
JS/Node PHP
Python Ruby
.NET C++
Home Turf - .NET (as PaaS), Diversified to support other eco-systems
Works very well for enterprises – (Part – IaaS/PaaS – Part – SaaS)
Lot of SaaS Offerings – Dynamics, 365, Azure-AD,
Defacto Recommendation – along with AWS (safe bet)
Strongly Recommend : When legacy app sections in .NET
Strongly Recommend : When integrating with Microsoft SaaS Services
Australia X
China X
India X
Middle East
East Asia X
Europe X
Russia
USA X
South
America
X
Enterprises X
SMEs X
Startups X
Individuals X
36. 36
2.2.3 : Cloud Provider : IBM Bluemix/Softlayer
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Competitive
IaaS (Bare metal) Best in Class
PaaS Best in Class (Cloud Foundry)
FaaS -
SaaS 160 Various Small SaaS Elements
DB (R-DBMS) Weaker
Analytics Only SaaS (IaaS – Weaker)
Storage Competitive
Networking Competitive
Monitoring, Ops Weaker
Value Added : IoT, MSGQs Weaker
Private Cloud like IaaS
Salesforce, SAP
Integration
CloudFoundry Ecosystem
Java GO
JS/Node PHP
Python Ruby
.NET C++
SoftLayer – acquired by IBM – Bare Metal (IaaS) + Lots of Data Centers
IBM – Traditionally strong with Consulting Services, Enterprise Integration
Modules
CloudFoundry (PaaS) – is a newer addition. (for rapid development)
Niche Recommendation – Want Public Cloud (with customization)
Niche Recommendation – Want integration modules + strong partner
Niche Recommendation – Quick development – CloudFoundry (lock in)
Australia X
China X
India X
Middle East
East Asia X
Europe X
Russia
USA X
South
America
X
Enterprises X
SMEs X
Startups
Individuals
37. 37
2.2.4 : Cloud Provider : Oracle
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Competitive
IaaS (Bare metal) Competitive
PaaS Competitive
FaaS -
SaaS Best in Class
DB (R-DBMS) Best in Class
Analytics Competitive
Storage Competitive
Networking Competitive
Monitoring, Ops Competitive
Value Added : IoT, MSGQs Competitive
Great SaaS Portfolio
Existing Enterprise
Customers and Contracts
Supports IaaS, PaaS, SaaS
Java GO
JS/Node PHP
Python Ruby
.NET C++
IaaS gives REST APIs
Late in Public Cloud.
Strong Enterprise connections and Enagements
Wanting to keep customers as they move to the Coud
Niche Recommendation – Enterprises moving from On Prem to Cloud
Niche Recommendation – Enterprises wanting part SaaS / IaaS (build + buy)
Australia
China
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
X
Enterprises X
SMEs
Startups
Individuals
38. 38
2.2.5 : Cloud Provider : Google Cloud Platform
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) New
IaaS (Bare metal) -
PaaS Google App Engine(Java,Python)
FaaS -
SaaS -
DB (R-DBMS) Weaker
Analytics Competitive
Storage Competitive
Networking Competitive
Monitoring, Ops Weaker
Value Added : IoT, MSGQs Very Weak
Google Eco-system
PaaS – easy to scale
Google Brand
Java GO
JS/Node PHP
Python Ruby
.NET C++
Launched PaaS – Google App Engine (did not take off – due to lock-in fear)
Venturing into IaaS Space Recently.
Great for Consumer apps on Google App/Android Eco-system
Niche Recommendation – Consumer App Ecosystem – Google Integration
Australia
China
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
Enterprises
SMEs X
Startups X
Individuals X
39. 39
2.2.5 : Cloud Provider : Rackspace
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Competitive
IaaS (Bare metal) Competitive
PaaS -
FaaS -
SaaS -
DB (R-DBMS) Weaker
Analytics Competitive
Storage Competitive
Networking Competitive
Monitoring, Ops Weaker
Value Added : IoT, MSGQs Very Weak
Mature Cloud platform –
quick to Open Stack
upgrades
Monitoring of App done
by Rackspace
Provides Architectural,
Design Guidance
Best in class - support
Java GO
JS/Node PHP
Python Ruby
.NET C++
NA: Mainly Infra
Launched as IaaS (bare metal) in 2003
Monitoring, Architecture & Management services for Rackspace + other clouds
Niche Recommendation – Infant Cloud development org (first cloud project)
Niche Recommendation – New to devops & monitoring
Australia
China
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
Enterprises
SMEs X
Startups X
Individuals X
40. 40
2.2.7 : Cloud Provider : VmWare
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) Awesome (vSphere)
IaaS (Bare metal) -
PaaS -
FaaS -
SaaS -
DB (R-DBMS) Weaker
Analytics -
Storage Weaker
Networking -
Monitoring, Ops Competitive
Value Added : IoT, MSGQs Weak
Hybrid Cloud
Private (on Public)
Horizon (virtual Desktops)
Java GO
JS/Node PHP
Python Ruby
.NET C++
NA : As just gives infra
Legend in Virtualization. Early in Private Cloud. Late in Public Cloud.
Strength – Hybrid – when coupled with vSphere.
Dedicated Cloud Offering (nearly private)
Niche Recommendation – Wanting Private/Hybrid on Public Cloud Infra
(with existing reliance on Windows eco-system – managed by VmWare)
Australia X
China
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
Enterprises
SMEs X
Startups X
Individuals X
41. 41
2.2.8 : Cloud Provider : Heroku (Salesforce)
Offering Value
Proposition
Languages Data
Centers
Customers
History (Core Strength) When to Recommend?
IaaS (VM) -
IaaS (Bare metal) -
PaaS Competitive
FaaS -
SaaS -
DB (R-DBMS) Weaker
Analytics -
Storage Weaker
Networking -
Monitoring, Ops Competitive
Value Added : IoT, MSGQs Weak
Rapid App Development
Java GO
JS/Node PHP
Python Ruby
.NET C++
PaaS – developed with Ruby
Super quick and easy to setup, prototype and write apps
Later added support – for some other languages
Niche Recommendation – Rapid development of apps, Consumer side
Australia
China
India
Middle East
East Asia X
Europe X
Russia
USA X
South
America
Enterprises
SMEs
Startups X
Individuals X
42. 42
2. Which Public
Cloud? Which Public Cloud?
Q : From scratch
a new concept
(no strings
attached) ?
AWS Oracle
Google
Cloud
Azure
Q : Customer
prefers ?
AWS
(mostly)
Azure
(mostly)
IBM
Q : Are we Hybrid ?
NO
Google
(consumer
product)
Vm
Ware
Yes
(with
private
with
VmWare)
Rack
space
Yes
(and also
not sure of
public Cloud
to support)
Yes
(good devops org
& no VmWare Private Cloud)
YES
Q : Any SaaS
available (partly) ?
NO
YES
IBM?
YES
Oracle
YES
Microsoft?
YES
any others?
NICHE RECOMMENDATIONSMAINSTREAM
Major Factors are always
1. COST
- Use service provider calculator
2. Language Support
- (PaaS/FaaS Programming Language)
- (Storage, Messaging libraries)
43. 43
2. Public Cloud : Which Public Cloud ?
Area of Work Recommended Cloud Provider Why?
Most Projects {Defacto} AWS or Azure Eco-system, Features, Support
Hybrid Cloud VmWare If Private Cloud –VmWare {largest marketshare}
Non-commital on Cloud Rackspace Support other providers, ops and engg support
Enterprise (SaaS) Oracle or IBM or Microsoft If SaaS available for part of software
Consumer (Google Eco) Google Cloud Platform Google Eco-system
44. 44
IaaS
Provider
Market Share
31%
24%
14%
5%
4%
2%
2. Public Cloud IaaS : Market Share
Above chart as per June-2016. Major options are above.
Note: There are others too – making up remaining 20% (like VmWare, Heroku ). https://www.statista.com/statistics/
Cisco, HP-E have discontinued their services, however they support existing customers
PaaS (Platform as a Service) : Hard to tell really
SaaS (Software as a service)
Ever increasing vertical domains.
(as cloudification increases)
AWS & Azure are so far ahead due to a reason
45. 45
Choice #1 : Cloud Hosting
Choice #3: Private Cloud
What do we choose for building our Private Cloud ?
VmWare
OpenStack
SCCM & Azure Pack
Apache CloudStack
46. 46
3. Steps to a private Cloud
1
2 Connect & Define Cloud
- a Private Cloud Tool
Buy
– Physical Servers,
Storage, Networking
Deploy & Monitor
- a Private Cloud Tool
Write Code, DB Schemas
3
4
Buy Physical Infra
Orchestrate a Cloud
App Development
Monitor Operation
47. 47
3. Typical Private Cloud
CPU NETWORKING STORAGE
Compute (VM etc)
Mgmt Nodes / Console
VPN
Security & Roles
Load Balancing
Routing
Block Storage
Virtual File System
App Image Mgmt
Database
1Physical Infra
2Cloud Orchestration
(private cloud tool)
Web Application API Definition DB Schema & Migration
3App Development
Metering Failover & Redundancy App-VM Provisioning
4Monitor Operation
Monitoring
Reporting
Private Cloud ToolApp Logic/Infra
Essentially choice here is which private tool to use – which gives us more Blue Boxes – out of the box.
48. 48
3.1 : Private Cloud : VmWare
Offering Value
Proposition
Languages Weakness
Customers
History (Core Strength) When to Recommend?
Compute vSphere Hypervisor (ESXi- VMs)
DB (R-DBMS) -
Storage VMFS over vSAN & iSCSI, vBlob
Networking NSX, Traditional Switching
Monitoring, Ops vRealize Automation, Ops
Data Management Replication, Data Protection
Log vRealize Log Insight
Mgmt Console vCenter
Identity -
Analytics -
API Powershell + Perl (vmWare spec)
Existing VmWare
Virtualized Infrastructure
VmWare eco-system in IT
Java GO
JS/Node PHP
Python Ruby
.NET C++
Any : Server Virtualized
VmWare was always Virtualization Behemoth (large trained IT)
Enterprises want to private cloudify their internal VmWare virtual machines
– so it was a natural progression for VmWare to add deployment+monitoring
Super easy tools, Traditional Enterprise Apps (Oracle, SAP, Microsoft)
Defacto Recommendation (Market Leader) : Small -medium size projects for
enterprises
Defacto Recommendation : Windows Intensive eco-system
Recommendation : Simple Setup expectation by org for maintenance/setup
Enterprises X
SMEs X
Startups X
Individuals X
Proprietary Platform
Cost more than Open
Source Alternatives
Awesome for Windows
Apps Private Clouds
Most apps are very tuned
to Windows
Supports only ESXi as
default hypervisor
(OpenStack has a variety
of hypervisors) - ESXi
Disclaimer: Limited experience on VmWare
49. 49
3.2 : Private Cloud : Open Stack
Offering Value
Proposition
Languages Weakness
Customers
History (Core Strength) When to Recommend?
Compute Nova (VM), BareMetal (Ironic)
DB (R-DBMS) Trove
Storage Cinder (Block), Object (Swift)
Networking Neutron, DNS (Designate)
Monitoring, Ops Heat, Mistral, Glance
Data Management Shared File System (Manila)
Log Telemetry (Ceilometer)
Mgmt Console Horizon
Identity Keystone, Barbican
Hypervisors KVM, VmWare, Xen,
API REST (like AWS)
Free
Open Source
Feature Rich & Mature
Large Community
Java GO
JS/Node PHP
Python Ruby
.NET C++
Any : Server Virtualized
Started as a joint project between Rackspace & NASA. – now non-profit
Diversified to Public Cloud – though loosing the battle.
API modelled on AWS EC2 & S3 REST API (leverage trained engineers)
Defacto Recommendation – The Private Cloud Standard (for large projects)
Enterprises X
SMEs X
Startups X
Individuals X
Learning Curve & Skill
Complex Setup & Debug
High number of Mgmt
nodes
http://docs.openstack.org/developer/nova/support-matrix.html
50. 50
3.3 : Private Cloud : System Center
Offering Value
Proposition
Languages Weakness
Customers
History (Core Strength) When to Recommend?
Compute VMs (under Windows Server)
DB (R-DBMS) -
Storage ReFS
Networking Traditional
Monitoring, Ops SCCM
Data Management -
Log SCCM Plugins
Mgmt Console SCCM
Identity Azure-AD, AD, Dynamic Access Contrl
Hypervisor Hyper-V
API Comprehensive SDK
Popular in Enterprise IT
Microsoft Eco-system
Java GO
JS/Node PHP
Python Ruby
.NET C++
With R12 Windows, Microsoft offered IT an easy way to host a private cloud with
the tools like SCCM – IT knows and loves these tools.
Defacto Recommendation – Cloudification of hosted Windows Servers
(ideally use Azure Pack)
Enterprises X
SMEs X
Startups X
Individuals X
Not a modern cloud
(look at Azure Pack)
Lock-in to Microsoft
Ecosystem
Limits to flexibility &
customizability
51. 51
3.3 Doing a Private Cloud with Win R12 & SCCM
CPU NETWORKING STORAGE
(Win R12 Server)
1Physical Infra
Microsoft defines a private cloud using SCCM giving – pooled resource with dynamic provisioning, elastic scaling, resource metering.
Though this is not a private cloud tool for some, market uptake for this is a lot in traditional enterprises – IT Driven
Compute (Win Server)
Mgmt Console (SCCM)
VPN
Security & Roles (AD)
Load Balancing
Routing
Block Storage (Windows
Virtual FS (Windows)
App Image (Windows)
Database
2Cloud Orchestration
(private cloud tool)
Web App (MS tech) API Definition DB Schema & Migration
3App Development
Metering Failover & Redundancy App-VM Provisioning
4Monitor Operation
Monitoring
ReportingSCCM
SCCM &
Win Server
52. 52
3.4 : Private Cloud : MS Azure Pack
Offering Value
Proposition
Languages Weakness
Customers
History (Core Strength) When to Recommend?
Compute Windows Server (Azure PaaS & IaaS)
DB (R-DBMS) SQL & MySQL Database Connectors
Storage
Networking Virtual N/wing, Service Bus
Monitoring, Ops
Data Management
Log
Mgmt Console Azure like + System Center
Identity Azure-AD, AD
Hypervisor Hyper-V
API ODATA REST API
Free
Open Source
Java GO
JS/Node PHP
Python Ruby
.NET C++
Public Cloud like tools (from Azure Public Cloud to manage SCCM + Win Server
Best of Microsoft Public and Private Cloud from the last few years.
Multi-tenancy – allowing the private cloud to be leased by multiple customers
(incase the enterprise wants to become a SaaS provider)
Defacto Recommendation – Cloudification of hosted Windows Servers
(ideally use Azure Pack)
Enterprises X
SMEs X
Startups X
Individuals X
Lock-in to Microsoft Eco-
system
Limits to flexibility &
customizability
Ref : https://www.microsoft.com/en-in/cloud-platform/windows-azure-pack
53. 53
3.4 How does Azure-Pack differ from Win R12 & SCCM
CPU NETWORKING STORAGE
(Win R12 Server)
1Physical Infra
With AzurePack, Private Cloud gets a lot of added features –PaaS, Tenant Mgmt, ServiceBus.
Compute (IaaS/PaaS)
Mgmt Console (SCCM)
VPN
Security & Roles (AD)
Load Balancing
Routing
Block Storage (Windows
Virtual FS (Windows)
App Image (Windows)
Database
2Cloud Orchestration
(private cloud tool)
Web App (MS tech) API Definition DB Schema & Migration
3App Development
Metering Failover & Redundancy App-VM Provisioning
4Monitor Operation
Monitoring
ReportingAzure Pack
Azure Pack
SCCM &
Win Server
Private Cloud Tool - responsibility
Application Writer - responsibility
54. 54
3.5 : Private Cloud : Apache Cloudstack
Offering Value
Proposition
Languages Weakness
Customers
History (Core Strength) When to Recommend?
Compute Presentation writer does not know
DB (R-DBMS) Presentation writer does not know
Storage Presentation writer does not know
Networking Presentation writer does not know
Monitoring, Ops Presentation writer does not know
Data Management Presentation writer does not know
Log Presentation writer does not know
Mgmt Console Presentation writer does not know
Identity Presentation writer does not know
Hypervisor KVM, Xen, VmWare
API REST (own + AWS) + Ruby/Python Lib
Free
Open Source
Relatively easier to use
among Open source
Java GO
JS/Node PHP
Python Ruby
.NET C++
Any : Server Virtualized
Started in 2008, acquired by Citrix, opensourced as Apache Cloudstack – 2011-12
Easy to install, Good Web UI
Niche Recommendation : Low cost Vs VmWare – simpler than open stack.
(sort of middle ground)
Enterprises X
SMEs X
Startups X
Individuals X
Marketshare / Community
more with OpenStack
Disclaimer: Limited experience on private cloud with Cloudstack
55. 55
3 Private Cloud : Marketshare
Hard to tell marketshare (as its private cloud): Best we can guess market pulse from surveys (one below from RightScale)
Note: A Bare Metal Cloud – App Writer deploys apps on physical servers without using any private cloud tool (perfectly possible). App Writer invests in his own tools as required.
56. 56
3. Which Private Cloud? Which Private Cloud?
Q : Migrating on Prem
to Cloud ?
Vm
Ware
Azure
+
SCCM
Q : IT skilled in
SCCM/VmWare ?
VmWare
Azure
or
SCCM
Q : Are we large and
muli-tenanted ?
NO
Open
Stack
YES
(community)
Cloud
Stack
YES
(simplicity)
YES
NO
(we are small-medium)
57. 57
Choice #1 : Cloud Hosting
Choice #4: Application Architecture
How do we define the application ?
Monolithic
Micro-services (usually with containers)
Serverless (FaaS paradigm)
58. 58
4. Application Architecture
Patterns are a widely used concept in computer science to describe good solutions to reoccurring
problems in an abstract form.
For Cloud Application Architecture, we have 3 high level design patterns
Monolithic Micro-services Serverless
59. 59
4.1 Monolithic Architecture
Binary (executable) Single (all modules compiled into one large binary)
DB Inter-connected (all tables kept in a single relational DB)
Scaling Horizontal (whole app scales with load, add more nodes)
Intermodule comms Function Calling (directly call functions between modules)
TRAITS
Typical Online Ordering Site.
Identity
& Auth
Products
Web Portal Analytics
Billing & Order
Mgmt
Load
Balancer
Router
Clients
Clients
Data
base
60. 60
4.2 Micro-Services Architecture
Binary (executable) Multiple (all modules [aka micro-services] compiled & deployed separately)
DB Separated (each micro-service has its own data, no relationship with other’s data)
Scaling Vertical (loaded micro-services will be scaled and allocated more resources)
Intermodule comms Defined HTTP or Messaging API (web or message Q based formalized calls)
TRAITS
Identity Mgmt
+ Authentication
Products
User Settings
Analytics
Billing & Order
Mgmt
Load
Balancer
Router
VM
VM
VM
VM
VM
Clients
Clients
DB
DB
DB
DB
DB
61. 61
4.2 Micro-Services Architecture (with Containers)
Binary (executable) Multiple (all modules [aka micro-services] compiled & deployed separately)
DB Separated (each micro-service has its own data, no relationship with other’s data)
Scaling Vertical (loaded micro-services will be scaled and replicated)
Intermodule comms Defined HTTP or Messaging API (web or message Q based formalized calls)
MULTIPLE MICRO-SERVICES ON ONE VM (smaller micro-services can be deployed on a single VM)
SAME TRAITS
(ONE DEVOPS ADDITION)
Identity Mgmt
+ Authentication
Products
User Settings
Analytics
Billing & Order
Mgmt
Load
Balancer
Router
VM
VM
VM
Clients
Clients
DB
DB
DB
DB
DB
Contnr
Contnr
Contnr
Contnr
Contnr
Contnr VM
Contnr VM
62. 62
4.3 Server-less Architecture
Identity Mgmt
+ Authentication
Products
User Settings
Analytics
Billing & Order
Mgmt
Load
Balancer
Router
Clients
Clients
DB
DB
DB
DB
Binary (executable) Multiple (all code is in form of reactive functions - executed on a virtual runtime)
- Certain Cloud Platforms give functions (limited time)
DB Separated or Relational (functions should separate data / but not mandatory)
Scaling Vertical (scale individual as per needs)
Intermodule comms Defined HTTP or Messaging API (web or message Q based formalized calls)
TRAITS
There is no VM, hence Server-less
Compute is ON DEMAND
63. 63
4. Cloud Architecture Options
SHORT IDEA ONE LARGE BINARY MULTIPLE SMALLER BINARIES SMALL FUNCTIONS (no VM)
What it means? • Traditional Web Arch
• Single large app
• Relational DB Design
• Split into small modules
• Multiple Binaries
• Split DB Design
• Split into multiple
request/response functions
• API Driven Design
Code Effort Low Medium Low
Devops Effort Low High Low
Advantage • Quick Execution
• Simple Architecture
• Resilience to complete failure
• Clean & Small components
• Easy to split into teams
• Efficient elastic scaling
• Resilience to complete failure
• Quick Execution & Least Effort
• Hardly any devops effort
• Super-easy elastic scaling
Disadvantage • Hard for project newbees
• Hard to split work between
multiple teams
• Horizontal scaling is wasteful in
resource terms
• Complex Architecture
• Need experience to get it right
• Costly in terms of dev effort for
small projects
• Works only for Event/Driven
Projects
• Lot of limitations depending on
FaaS Provider
• Classified : Experimental
Monolithic
(yesterday)
Micro-services
(today)
Serverless
(tomorrow ?)
64. 64
4. Monolith – When server is down
If single server (monolith) is rendering this whole page & sourceing data,
When the monolith is down, whole page is down. But, its simple to implement
65. 65
4. Micro-services : Breakdown the data on the page
Lets try to split up this site into individual data – for micro-services.
66. 66
4. Micro-services –backend into smaller services
Each Micro-service has
1. Data
2. API
Advertisement Micro-service
Advertisement
Micro-service
Scores
Micro-service
Content
Micro-service
Content
Micro-service
User Context Micro-service
Search MS Identity MS
67. 67
4. Micro-services : When a Micro-service is down
If micro-services are rendering this whole page, data is fetched from different micro-services.
Most folks don’t even notice the difference – unless really wanting to use the feature
Scores
Micro-service is
up/down
68. 68
4. Micro-services Vs Monolith Complexity
Advertisement Micro-service
Advertisement
Micro-service
Scores
Micro-service
Content
Micro-service
Content
Micro-service
User Context Micro-service
Search MS Identity MS
Micro-services increase
complexity in
1. API design,
2. DB transactions
3. Deployment
Benefit:
1. Scaling Teams
2. Scaling Performance
3. Resilience to Failure
69. 69
Choice # 4. Application Architecture
Which Architecture ?
Q : Is the project
completely Event Driven
?
Micro
services
Server
less
Q: Large Project?
Or
Spread Teams?
NO
YES
(community)
Mono
lithic
NO
YES
70. 70
Choice #1 : Cloud Hosting
Choice #5: Backend (Runtime)
In which eco-system do we develop our app ?
PHP
Java
Ruby
ASP.NET
Node.js
Golang
71. 71
5. BackEnd & FrontEnd
Clients
Clients
HTML
CSS
Java Script
Mobile/Desktop App
Load
Balancer
Router
Front End
Application Code
App Server
Framework
Language Runtime
Database
Back End
72. 72
5. What is a backend (runtime) ?
Lets get back to out definition:
“An Internet-based computing environment providing shared computation resources and data to computers and other devices on
demand.”
Typically for most web, mobile apps, the cloud runs
A. Application - Business Logic / Code
B. Application - Server
C. Application - Framework
D. Application – Dependencies
E. Application - Object Relation Mapper to Database
F. Database
BLUE elements – leverage existing 3rd party components
ORANGE element – need to build ourselves as app developers
73. 73
5 Backend (runtime) choice
A
Language
Write Code in?
B
Web Server
Process
running your
app
C
Framework
App
Scaffolding
D
ORM
DB to App
Mapping
E
Your
Application
Design
Patterns &
Logic
Choosing one – limits the choice of the others
74. 74
5. Backend – Select One Selects All
LANGUAGE SERVER
FRAMEWORK
& MODULES
Language
Eco-system
When you select a language – you are committing to the whole eco-system
75. 75
5.A Backend (Language)
Language
Every one knows what this is
Each language is a specification to
formulate your code in.
There are a few considerations when
choosing the languages
1. Compiled Code vs Interpreted Code
2. Static vs Dynamic Typing
It usually takes a developer a bit of
learning and unlearning to move from
one category to another.
76. 76
5.B Application Frameworks
Framework
A Framework is the base scaffolding on
which your app is built on.
It comes with
• Base code (everyone needs)
• Design Patterns
• Repository of helper modules
Each language has a set of
app-frameworks to choose from.
FaaS/PaaS also provide a Framework
77. 77
5.C Application Server
Application Server
Application server serves the clients
It comes with
• Process HTTP/other protocols
• Data Routing (URL to resource map)
• Spawns threads for dynamic requests
Each language has a set of
app-servers to choose from.
FaaS/PaaS also provide a App Server
Application Server is process running on your
VM/Container.
Java Glassfish, Wildfly, Tomcat, JOnS, Weblogic, Google App Engine
Rails Passenger, Unicorn, Thin, Puma
Node.js Google V8 Engine (Connect & Express)
.NET IIS, Mono, Base4, TNAPS
Python CherryPy, Gunicorn, Tornado, uWSGI, Twisted Web
PHP Zend Server, appserver.io, Quercus, PHP-FPM
GO Enduro/X
78. 78
5.D 3rd Party Module Repository
3rd Party Module Support
Power of an eco-system is to pick
libraries that accelerate the project
These libraries can be picked from a
central repository.
Server languages are rated on its library
eco-system. More libraries – less work
Ref: http://www.modulecounts.com/
Note: Maven double counts some modules
However, Maven, nuget have been quality modules.
npm has the widest repo, but you need to hunt stable and supported modues
Java Maven
Rails Ruby Gems
Node.js NPM
.NET Nuget
Python PyPI
PHP Packagist
GO Go Doc
Perl CPAN
79. 79
5.E Object Relationship Mapper – Language to DB
Object Relationship Mapper
Translates Database objects to
Language Objects – without writing
irritating code.
This is an optional item
Java Hibernate, EclipseLink, JPA, MyBatis, jOOQ, TopLink
Rails ActiveRecord, DataMapper
Node.js Wetland
asp.NET ADO.net
Python Django-ORM, SQLAlchemy, Storm, web2py
PHP All frameworks come with own ORM
GO gorm, xorm, gorp
80. 80
5. Detailed Eco-system Analysis next
You could skip next 10 slides – at end of section #5 for recommendations, if too detailed for you
81. 81
5.1 Backend : PHP
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Facebook
Claim to fame : SPEED OF DEVELOPMENT for EASY SITES, Community
Most simple sites on Web on PHP.
Most Websites in the
world written in PHP
Easy to master, start with
Development Speed
Free Community Modules
Engg Availability – high
LAMP stack was the web
standard for sometime
Code Organization
Performance
Design Patterns
Code imported as source
Discipline needed to
secure code
Standardized package
repository just came in
Memory Mgmt
No Multithreading
Trending Down
PHP License. (free)
Runtime : Scripted
Best Fwks: Laravel
Born in : 1995
Domains : Informative & Consumer Websites
Teams: Small Teams
When : Super-Quick Development needed
Project Size : Small to medium
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
PHP
28
Website Leader
83. 83
5.2 Backend : Java
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Claim to Fame : ENTERPRISE, large-long running projects, engg availability
Enterprise Leader
Performance
Large Community
Open Source
Free Community Modules
Known Design Patterns
Lots of Expertise available
Easier to Secure
More code to be written
for same work
Super-Strong Typing is a
bit old school now
Useful for large – long
running projects
Slower Development
Google
Amazon
Ebay
LinkedIn
Domains : Enterprize
Teams: Large Teams
When : Enterprise Software, Security, Distributed Teams, CPU intensive work
Project Size : Medium to Large
(free & paid options)
Runtime : Compiled (JVM)
Best Fwks: Spring
Born in : 199438
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
Java
Enterprise Leader
85. 85
5.3 Backend : Ruby
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Github
AirBnB
Slideshare
free (MIT License)
(tools paid like good IDEs)
Runtime : Scripted
Best Fwks: Rails
Born in : 2004
Web Dev Leader
Less code for work done
Awesome Gems, modules
Opinionated – defaults
makes config & setup easy
Speed of development
Maintainable – defined
code structure
Database Migration –
easiest across frameworks
Performance vs compiled
and also due to rails stack
Needs more experience to
debug complex bugs due
to layer in rails
Harder to modify base
assumptions – due to it
being opinionated
Need experience to
optimize rails
Domains : Startups
Teams: Small-Medium Teams
When : Rapid Web Development, Proof of Concepts, First version of Product
Project Size : Small to Medium
Claim to Fame : RAPID WEB DEVELOPMENT
Interesting Read from the Hacker who made Ruby on Rails : https://m.signalvnoise.com/the-day-i-became-a-millionaire-55d7dc4d8293#.ge96bqjl4
31
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
Ruby
Website Leader
87. 87
5.4 Backend : Python
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Pinterest
free
Runtime : Scripted
Best Fwks: Django
Born in : 1991
Speed of Development
Less code for work done
Code Readability
LAMP stack was the web
standard for sometime
Performance vs compiled
Maintainable code needs
more experienced hands
Quality Engg Availability
(a lot python devs don’t
have web development
expertise – sys admins)
Domains : Content Management, System Administration, Python on PaaS
Teams: Niche framework now (Ruby solves in same space has more followers)
When : Rapid Development, Code Readability
Project Size : Small to Medium
Claim to Fame : Quick Web Development
26
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
Python
89. 89
5.5 Backend : ASP.NET (C#, VB.Net or Python)
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Bing
MSN
Free (but tools paid)
Runtime : Compiled (CLI)
Best Fwks: asp.net
Born in : 2002
Microsoft Ecosystem
Code Maintainability
Enterprise expertise
Performance
Security
Design Patterns
Vast structured libraries
Tools (IDE) are pricier
Lock in to Microsoft
Enterprise Classification
Less Vibrant and
supportive open source
community
Hosting of Windows
Servers is pricier
Complex than others
Domains : Enterprise
Teams: Large Teams
When : Microsoft Products Integration, Azure or VmWare
Project Size : Large
Claim to Fame : Microsoft Eco-system
30
Don’t reject it just because it comes from Microsoft
Asp.net is a framework. Hence, its not an apples to apples comparison. Languages supported are C#, VB.Net, Python. However, it’s a specialized eco-system
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
asp.net
Enterprise Incumbent
90. 90
5.6 Backend : node.js
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Medium
Uber
Free
Runtime : V8 Engine
Best Fwks: Express.js
Born in : 2009
Fullstack using Javascript
Large set of modules
Performance
Do more for less code
Free
Eco-system
Heavy I/O intensive apps
Same code can run on
both client & server
Web sockets – well
integrated into design
Maintainability harder –
no real design patterns.
Transfer of knowledge
Error handling
Memory mgmt. –
performance bursts
NPM module stability
Secure module usage
needs experiene
Domains : IoT, Gaming
Teams: Small Teams
When : Interactive Apps, Realtime or Large I/O, Proof of Concepts (POCs)
Project Size : Small to Medium
Claim to Fame : One Dev (full stack development)
Great for Input/Output intensive app
33
Challenger - Web, IoT, Gaming, POCs
91. 91
5.7 Backend : Golang
Offering (Spider Chart) Strengths Famous Sites Weakness
Nuances
When to use Recommendation
Some parts of Google
Backend
Free
Runtime : Compiled
Best Fwks:
Born in : 2007
High Performance - Scale
Concurrency
Mature for its age
C/C++ like
CPU utlization
Easy to learn
Package Eco-system weak
Expertise
Community
Domains : High Performance
Teams: Small Teams
When : High Performance Apps
Project Size : Any
Claim to Fame : High Performance & Compute Requirements , Easy to learn
24
0
1
2
3
4
5
Age
Skill Availability
Development Speed
Package Repository
CostPerformance
Tools Support
Easy to Secure
Maintainability
go
Challenger - High Performance
92. 92
5. Backend : How to choose ?
Lack of Resource Expertise : Is the Top Challenge with Cloud Maturity.
Ref: Right scale state of the Cloud https://www.rightscale.com/lp/state-of-the-cloud
93. 93
5. Backend : How to choose ?
Job Postings : Your Technology Bet is not receding ? Check trends on indeed.com / github.com
95. 95
5B. Expertise Trends
Industry Job Trends
Java, C#, Python – Tier #1 (leaders)
Rails, PHP, asp.net – Tier #2 (steady)
Node.js, Golang – Tier #3
(trending up)
Courtesy : Indeed.com & Google Trends
Some Java, C#, Python – includes non-web development. Hence take these with a pinch of salt.
96. 96
5B. Trends (Growing or Receding)
Receding
PHP
Steady - Growing
Ruby, Python, C#
Growing
Java, Node.js, Go
Not too sure about Python
97. 97
5. Backend : How to choose ?
Knowledge from previous slides
98. 98
5.C. Backend : How to choose right tool ?
Area of Work Recommended Eco-system Why?
Enterprise (Generic) Java Maintainability, Design Patterns, Security
Enterprise (Microsoft) Asp.net Microsoft SaaS - Library support and integration
IoT Node.js High I/O
High Load (AR) Go Parallelism and High Performance
Gaming Node.js High I/O (bidirectional), interactivity
Website Ruby Rapid Development, Maintainable
Website (sometimes) PHP When you see the right module available for pickup
99. 99
Choice #1 : Cloud Hosting
Choice #6: Frontend (Web development)
In which eco-system do we develop our app ?
HTML
CSS
Java Script
100. 100
6. BackEnd & FrontEnd
Clients
Clients
HTML
CSS
Java Script
Mobile/Desktop App
Load
Balancer
Router
Front End
Application Code
App Server
Framework
Language Runtime
Database
Back End
Directly accessible to
the end user
Not Directly accessible to
the end user, but
performs a function for
him
101. 101
6. Server Side Rendering
Front End
Browser
Back End
Server
HTML (data)
Clients Browser
Server creates HTML with data and formatting. Spoon feeds the Front End.
102. 102
6. Client Side Rendering
Front End
Browser
Back End
Server
HTML
Clients Browser
Server sends static resources (HTML/CSS/Javascript)
Client fetches data using API to fill into DOM.
CSS
Javascript
Data
103. 103
6. Server Vs Client Side Rendering
SHORT IDEA SERVER SENDS HTML with DATA CLIENT JS FETCHES DATA
Advantage • Search engines can index your page
• Usually simpler
• Easier to secure
• Partial content changes – renders faster
Disadvantage • Each click is a new page load • Browser JS Compatibility Issues
Latency • End-to-end latency is lower • Initial page slower
• Subsequent pages faster
Use For • Read Only Web
• Wikipedia, ESPN, CNN
• Interactive Web
• Gmail, Facebook, Office 365
Programming Environments • HTML + Data assimilated using backend
framework from PHP, Rails, Java (JSF),
Python, asp.net etc.
• Java Script (Client Side)
Server Side Client Side
Cloud is used primarily for Interactive Web – hence some Client Side Rendering is always there.
In today’s day & age, a combination of client + server side rendering is usually done.
104. 104
6. Front End - Basic Building Blocks
HTML & XHTML
Bootstrap, Foundation,
Semantic UI, Materialize
JQuery, Angular, React
Render
Data
Lets add
some Style
Add some
behavior
HTML
CSS
Java Script
1
2
3
105. 105
6.2 CSS Frameworks – What do we get with it?
Reset CSS - short, often minified set of CSS rules (theme)
- resets the styling of all HTML elements to a consistent baseline for your site.
Responsive Grid - Grid layout to auto-size space as per mobile, tablet, desktop resolutions.
Web Typography - Fonts
Icons - Sprites and Standard icon support
Styling - Styling for tooltips, buttons, elements of forms etc.
Extra GUI Elements - Extra elements to make richer UI – accordions, breadcrumbs, tabs etc
106. 106
6.2 CSS Frameworks – What should you look for?
1. Community - how much is the framework in use.
2. Responsiveness - work for mobile, TV, Desktops etc
3. Component Richness - tables, buttons, checkboxes etc.
4. Easy of Customization- to be able to retheme the defaults
5. File Sizes - size of the framework
107. 107
6.2. CSS Framework Options
Backing Twitter Google
Popularity on GitHub
Advantage • Community
• Revolutionary Web Framework
• Very Stable
• Tons of Components with API
• Easy to write
• Full Material Design
• Easy to write
• Mobile First UI
Disadvantage • No Material Design Support • No Material Design support
• No Angular.js support
• Limited UI Components
• UI Components consume too
much space
Reco • Reco : just use this • Reco : Mobile Centric Apps
(with focus on Android)
Bootstrap Semantic UI Angular Material
108. 108
6.2 CSS: What is this Material Design we keep hearing ?
Google concept : how apps for Android should look
Set of Guidelines and References for UI Design
Adhering to Guidelines, will make your app look like any other app on the OS.
Especially useful – where you want to make your app look like any other – Mobile Oses
Designing your own UI guidelines has costs.
You can leverage Material Design to do it for you. Makes life easy.
If what works for everyone works for you “Material Design”
Note : There is some other jazz around, Material Design being like pen and paper, which I never quite understood.
109. 109
6.C Java Script Frameworks
Classification Library Framework Library
Popularity
Advantage • Community
• Revolutionary Web Framework
• Very Stable
• Tons of Components with API
• Easy to write
• Opinionated set of stuff
• Full Material Design
• Easy to write
Disadvantage • No Material Design Support • No Material Design support
• No Angular.js support
• Limited UI Components
• UI Components consume too
much space
Trend • Decline • Leader & Growing • Growing
110. 110
6.C. Java Script Race
Angular & React are the two libraries trending up – all others are flat or trending down.
111. MVVC/MVC Frameworks
DOM to REST API Linkage
2010-11
Best of existing MVC Frameworks (from Backbone etc)
+ Declarative Programming,
+ Custom Modules, + Dependency Injection
+ Google Branding
2010
+ No MVC Simple View Library
+ Components with Code + UI
+ Virtual DOM – super performance
+ Facebook Branding
2013
Java Script Library
Manually Change DOM
AJAX, Interactive Websites
2006
6.C. Client Side Java Script Framework History
112. 112
6.C. Java Script Story (JQuery)
JQuery Library –
(post 2006) : All new sites moved from plain Java Script to JQuery
First proper DOM manipulation library
JQuery allows your code to interact with the DOM elements directly.
As app size increases,
No way to write modularized code – it becomes a spaghetti.
Lose track of code, for medium to complex apps
113. 113
6.C. Java Script Story (AngularJS)
MVC Architecture : AngularJS Framework
(post 2011) Most new sites are written with AngularJS
A complete Framework not only a library
Brought some structure to code – (MVC – model, view & controller)
Dependency Injection
Two way data binding – without writing much code.
(info can flow from JS to HTML & vice-versa)
It makes complex things in JQuery very simple & structured
114. 114
6.C. Java Script Story (ReactJS)
V Component Architecture : ReactJS Library
(post 2014) Most new sites being written with ReactJS
New Simplified Structure –
how you design UX is how you write code (hierarchy of components)
Simpler than Angular, uses JSX
Have a page of components, made of sub-components. (HTML/CSS + JS)
Virtual DOM – Improved Performance
if a user is viewing a list of 100 items rendered with React, and he or she changes the third one down
somehow, only that item gets rerendered, leaving the other 99 items unchanged.
115. 115
6.C. Angular Vs React Direct Comparison
Attribute AngularJS Angular 2 React
Author Google Google Facebook
Language Javascript/HTML Typescript JSX (extended Java Script)
Size 143K 764K 151K
DOM Regular DOM Regular DOM Virtual DOM
Learning Curve High Medium Low
Packaging Weak Medium Strong
Abstraction Weak Strong Strong
Debugging General Good HTML / Bad JS Good JS/Good HTML Good JS / Bad HTML
Debug Line NO No No Yes
Unclosed Tag Mentioned? No No Yes
Fails When? Runtime Runtime Compile-Time
Binding 2 Way 2 Way Uni-Directional
Templating In HTML In TypeScript Files In JSX Files
Component Model Weak Strong Medium
Building Mobile? Ionic Framework Ionic Framework React Native
MVC Yes Yes View Layer Only
Ref : https://www.pluralsight.com/guides/front-end-javascript/angular-vs-react-a-side-by-side-comparison
116. 116
6.C. Reco : React.js
Use : React.js for new projects
Unless: Wanting to use MEAN Stack
MEAN = Mongo, Express.js, Angular, Node
117. 117
Choice #1 : Cloud Hosting
Choice #7: Database Choice
Which DB would you choose ?
Relational R-DBMS (Oracle, MySQL etc)
NoSQL (Mongo, Cassandra etc)
Data Warehouse (Redshift etc)
118. 118
7. A Backend DB of today looks like
A backend of today has
(0-1) SQLs
(0-1) “Not Only SQL” – NoSQL players
(0-n) “Big Data”.
It’s a potpourri of what works best for which datasets.
Data
Warehouse
Usually 1
Usually 1
Usually 0-n
119. 119
7.1 Relational model of Database
1. Relations : Organize data into tables (or “relations”) of columns or rows
2. Relationships : Relationships are a logical connection between tables
The most important concept is that a relational database has “Relations”
- Meaning data is organized in TABLES
Tuple
Attribute
Relation
120. 120
7.2 R-DBMS Popularity
Marketshare 25% 5% 29% 23%
Most popular open
source R-DBMS
Most advanced open
source from SQL
perspective
Most advanced
paid R-DBMS
An Advanced R-DBMS
from Microsoft
Cost $ $ $$$$ $$$$
When to use Most cases,
Easy to setup / configure
Good for high read loads
Niche
SQL compliance
Less Money
Harder to setup
Heavy Usage cases
Great Tools
Have money
Using Oracle SaaS
Hard to setup/configure
Niche
Microsoft Eco-system
Have Money
Licensing GPL v2 BSD Proprietary Proprietary
Above choices are available for R-DBMS.
The choice are easy when you just choose R-DBMS.
121. 121
7.2 What is NoSQL
1. All data – is not (Relational)
2. All transactions don’t require ACID (immediate consistency)
The above two allow/need a new type of idealogy “NoSQL”
Characteristics of a NoSQL DB
Schema-less (no fixed relation)
Simple API
Eventually consistent (BASE)
Store huge amounts of data (without slowdown)
122. 122
7.2 Classification of NoSQL Databases
NoSQL DBs
Types Examples
Column DB H-Base, Cassandra, Hypertable, MapR
Document Store MongoDB, Couchbase, CouchDB
Key Value Store DynamoDB, Riak, Redis,
MemcacheDB
Graph DB Neo4j, OrientDB
….. There are a lot more types
A comparison only within a category is fair. As each area solves a different problem in R-DBMSes
123. 123
7.2.1 Choose NoSQL : Column DBs
Traffic Patterns
High Write Traffic & High Availability
Super large data sets – in 100s of terabytes
Short term inconsistency is fine
Storage: Store data in columns
When to use?
Analytics
Big Data Science
Social Networks
Search Engines
Denormalize the data
124. 124
7.2.2 Choose NoSQL : Document DBs
Traffic Patterns
Schema-less
When data is accessed together, Store in a document
Provide Indexing on document content
Storage : Store data in Documents (xml or json)
When to use?
Web Apps with large reads/writes – no ACID reqs
Large Metadata of objects
Apps with JSON structures (ease of implementation)
Data with structures within structures
(essentially competes with R-DBMS for storage)
125. 125
7.2.3 Choose : NoSQL – Key Value Pair
Traffic Patterns
Simple Reads/Writes
Lookup using a simple key
Storage : Hash Table
When to use?
Cache implementation
User Sessions & Shopping Carts
App Configuration Management
126. 126
7.2.4 Choose : NoSQL – Graph
Traffic Patterns
Focuses on Relationships between Entities
Storage : A Graph
When to use?
Niche: Crazy Queries for Business Intelligence
Niche: Social Networking
Model real world human interactions with objects, each other places
127. 127
7.C Database Vs Data Warehouse
Transactional Database (R-DBMS or NoSQL)
What it does: Transactional systems run efficiently.
Optimized for : Performing read-write operations of single point transactions.
Not for : A transactional database doesn’t lend itself to analytics
aka OLTP (online transaction processing) database – MySQL, PostgreSQL
Needs 99.99% SLA
Data Warehouse
What it does : A large store of data accumulated from a wide range of sources
Optimized for : Large bulk reads and sequential fewer inserts
Not for : A data warehouse does not lend itself to being the primary backed of a webapp.
aka OLAP (online analytical processing) database – AWS Redshift, Azure Data Warehouse
Weaker SLAs are fine.
Note: Both may or maynot use SQL for accessing data.
128. 128
7. Reco : Databases
Area of Work Major Recommendation Niche Recommendation
Main Transactional Database MySQL Oracle or Microsoft (eco-system)
Database for Sessions, Config, Cache NoSQL Key value – Redis, Riak, Cloud PaaS (like DynamoDB if appl)
Large JSON serializable datasets NoSQL – like Mongo, CouchBase
Large Analytical Datasets (from one source) NoSQL – Cassandra
Analytical Data (from many sources) Data Warehouse –like Oracle, Redshift,
Azure Data Warehouse
129. 129
Choice #1 : Cloud Hosting
Choice #8: Deployment Ops Tool
Which Devops Tool to use ?
Chef
Salt
Puppet
Kubernetes
EC2 Container Service
130. 8. Deployments tools? Why do I need one?
A nail can be used without a
hammer, however with a
hammer its easier!
(especially, if you need to
hammer multiple nails)
131. 131
8. What do these tools do?
1. Cloud Orchestration (Container or VMs)
2. Push or Continuous Deployments
3. Configuration Management
4. Networking
5. Credential & Access Security
6. Auto Scaling
7. Wrap Private/Public Cloud APIs (sometimes)
It’s about automating the above.
Write once – run many times.
132. 132
8.1 Cloud Orchestration
1. Create VMs & Containers
2. Give the VM a app to run
3. Connect up the VMs and
Containers
4. Monitor whether VMs &
Containers
133. 133
8.2 Manual Push and Continuous Deployments
1. Command to push an app
binary to a VM/Container
2. When build is done, auto-
deploy app binary to a Container
3. When auto-deploy is done, run
integration test
4. Ability to do Rolling Upgrades
(upgrade one instance at a time)
134. 134
8.3 App Properties Configuration
1. Configure File Server
Paths in Apps
2. Configure Database urls
3. Configure env properties
like feature toggles
Depending on whether it’s
a production, engineering
or test environment,
Configuration properties
change
Tool helps automating
these configurations in
various apps
A feature toggle is a config
flag to enable/disable a
feature on an environment
135. 135
8.4 Networking
1. Service/App Registry
(which services running where & their health)
2. Apps URL orchestration
(map IPs for which app/service is running where –
tell other apps about it)
3. Configure Load balancer, API
Gateways for external internal
routes
136. 136
8.5 Security – API & Credentials
1. Credential & Config
in Apps/Services
(Apps need Credentials / Roles for
access of DB/Files, configure this
without human touch/error is
important)
2. API Configuration
(which api is accessible to the world
vs privately)
As per OWASP – top 10
Configuration Security
issues is the No 5 top
vulnerability in Cloud
Deployments
https://www.owasp.org/ima
ges/f/f8/OWASP_Top_10_-
_2013.pdf
137. 137
8.6 Auto-scaling on load
1. Add/Remove VMs
on load
2. Quota
Management
(don’t allow crazy scaling, scale with
limits)
138. 138
8.7 Platform Independent Orchestration
1. Wrap the
underlying API
(AWS, Azure, Google Cloud, OpenStack
API wrapping allows easier porting
across Cloud Providers)
2. Multi-Cloud
Usage
(though rare in practice, allows for
different services like DB from Azure
and S3 from Amazon to be used –
with VMs in either )
139. 8.1.1 Evolution of Cloud Orchestration
-2007 2007-2014 2014 +
Manually Deploy Era
•Build Server copies wars
•Scale using Cloud Provider Tools
VM Orchestration Era
•Deploy app using multiple VMs
•Horizontal & Vertical Scaling VMs
Containers & Micro-services Era
•Move to Docker / LXC Containers
•Flexibly scale using Containers & VMs
Automation VM Utilization
140. 140
8.1.2 What are the container techs available?
Ofcourse, most use Reason: Support, Eco-system, Tool integration
Others are available too :
A Small Startup, available on github
Microsoft Drawbridge Windows Container option (still a research project)
Cannonicals own usage of LXC (the tech that docker uses too)
141. 141
8.1.3 Containerization Benefits – Less OS Overhead
Machine
#1
OS #1 OS #2 OS #3
App Server
#1
App
Server #2
App
Server #3
Machine #1
Host Operating System
Hypervisor
Guest OS
#1
Guest OS
#2
Guest OS
#3
App Server
#1
App
Server #2
App
Server #3
Machine
#2
Machine
#3
Machine #1
Host Operating System
Container
App Server
#1
App
Server #2
App
Server #3
Hosting without Virtual Machines Hosting with Virtual Machines Hosting with Containers
Optimize – running
multiple apps on a single
machine using VMs
Optimize – utilization of
Infrastructure by doing
function call mapping vs
virtualization
Note: a Hypervisor is a full emulation of a machine, a
Container is not, so, if there are certain functions
that are not mapped by the container, you cannot
access those OS functions.
Works for most apps
Less OS overhead
142. 142
8.1.4 Container Benefits – CPU Utilization
Containers
Micro-service #1
Micro-service #2
Micro-service #3
Without Containers
If we have
2 - geographical regions
2x – redundancy per region
3 - microservices,
we need 12 VMs
- Though we don’t use them to capacity,
we pay, say we use 1/4th capacity
With Containers
If we have
2 - geographical regions
3x – redundancy per region
3 - microservices,
we need 6 VMs
- With maximum utilization of capacity
possible
Better CPU Utlization
143. 8.1.5 Container Other Benefits
Cloud Agnostic
(same image runs on AWS, Azure
App is portable)
Developer Environment
(dev env and the cloud env mimick each other)
Release Cadence
(increases release cadence due to
alignment with CI/CD)
144. 144
8.2 Devops Tools Race
Puppet
• Advantage
• Robustness
• Web UI & Reporting
• Disadvantage
• Learning Curve
• Scaling
•Language : Ruby
Salt
• Advantage
•Tech Depth
•Flexibility
•Easy debug
• Disadvantage
•Basic UI
•Less Windows Support
•Language : Python
Ansible
• Advantage
•Agent less
•Very Easy
• Disadvantage
•Less Powerful
•Language: YAML (easy)
Chef
• Advantage
•Mature Solution
•Large Community
•Window, Linux
Support
• Disadvantage
•Complex
•Learning Curve
•No Push
•Language: Ruby
Kubernetes
• Advantage
• Best in class features
• Community
• Google Backing
• Disadvantage
•Complexity
•Language : Go
DockerSwarm
• Advantage
• Easy to setup/use
• Docker friendly
• Docker like API
• Disadvantage
•Features Vs Docker
Large Apps
(microservices)Simple Apps
Another Tool worth a mention is AWS-ECS – however this is limited to orchestration of containers on AWS.
145. 145
8.2 Public Cloud – Devops Tools
Each Public Cloud Provider gives a variety devops tools.
When to use: If lock-in is fine, these maybe super easy to work with.
For eq: AWS gives Cloudformation, ECS = Elastic Container Service, ECR = Elastic Container Repo, AWS CLI, AWS Data Piplelines for achieving an awesome
amount of devops automation.
147. 9. Need for QA Automation
1. Regression Testing – doing regression on each release/each new piece of code is expensive
2. Automation – Helps increase productivity
3. Automation – Lesser mishaps and vs manually testing releases
4. Reduce Vulnerabilities
5. Reduce Performance Regressions
6. Maintain 3rd Party developer API contracts
7. Replay – failed QA tests can be replayed by Developers
MOST IMPORTANTLY: CANNOT DO CONTINUOUS INTEGRATION & DELIVERY WITHOUT IT
148. 148
9. Categories of QA Automation
Performance Testing
- Load Testing (every Release)
- Latency Testing (every Release)
Penetration Testing
- Code Scan Utilities (every Checkin)
- Pentest Utils (every Release)
Automated UI Testing
- Automated User Acceptance Tests
- (every deployment)
Unit Testing
- Run Unit tests (every checkin)
- Linked with a code coverage bar
API Testing
- API Testing (every deployment)
Quality increases with each Category of Automation
149. 149
9.1 Unit Testing
Unit testing is very language specific
Language Tools
PHP SimpleTest, PHPUnit
Java JUnit, TestNG, Mockito, PowerMock
Ruby On Rails Rspec, MinTest, Cucumber
Node.js Mocha, Jasmine, Expresso (no longer maintained), Should, NodeUnit, jsUnit
Python Python Unit Tests, unittest, nosetests, pylint
C# C# Tests
Golang testify, ginkgo + gomega
150. 150
9.2 API Testing Tools
API testing is very dependent on the API Spec (REST, SOAP, SAP)
Language Tools
REST API RestAssured, SOAP UI, Jmeter,
Even without tools a standard code can be used to trigger API testing.
151. 151
9.3 QA – UI Automation tools
(some popular ones,, there are a whole lot more – depends on your clients and service)
Selenium
• Website
Testing
•Language : Java
Watir
• Website
Testing
•Language : Ruby
Coded UI
• Windows
Apps
•Language: C#
AutoIT
• Windows
Apps
•Language: Basic iike
scripting
TestPlant
/EggPlant
• Website,
Android
•Language : English like
Scripts
QTP
• Windows
Browser,
Mobile
•Language : VB Script
152. 152
9.4 QA – Performance Testing tools
(some popular ones,, there are a whole lot more – depends on your clients and service)
Jmeter/
Blazemeter
• PRO
•Easy to learn
•Simple Charts
• CONS
• Reporting is limited
HP LoadRunner
• PRO
•Low cost of distributed load
testing
• Good use of generator farm
• CONS
•Cost for enterprise grade
WebLoad
• PRO
•Good Web Tech coverage
• CONS
Borland Silk
Performer
• PRO
•Licensing Model
• CONS
•Cost for enterprise grade
IBM Rational
Performance
Tester
• PRO
•No code knowledge reqd
• CONS
•Cost for enterprise grade
#HTTP #FTP #HTTP #SAP #Oracle #SaaS #HTTP #HTTP #FTP #Email #HTTP #SOA #SAP
153. 153
9.5 Code Vulnerability Tools
Typically integrated with the build environment
Language Tools
Free Java (FindBugs, Xanitizer,) PHP (RIPS)
Commercial KlocWork, Fortify, Coverity Code Advisor,
154. 154
Choice #1 : Cloud Hosting
Choice #10: Analytics Pipeline
It’s a thesis in itself and not covered in this
presentation. We will do another one on it.
155. 155
Choice #1 : Cloud Hosting
Choice #11: Data Routing
Not covered in this presentation
158. 12.1 Cloud Health Monitoring Dashboards ?
A Cloud Monitoring Dashboard helps monitor health of the cloud
Meaning
1. Compute
2. File Storage
3. Networking & Heartbeats
4. Infrastructure Load & Scaling
5. Exceptions
Note: Some do more than just monitoring
like Prometheus
Sample Prometheus Dashboard (promdash). Courtesy : https://prometheus.io/docs/visualization/promdash/
159. 159
12.1 Cloud Log Dashboards Comparison
A visual dashboard and
query UI
Part of ELK Stack.
Market leader
Use: For Log Based Cloud
Monitoring
A visual dashboard
Graphana +
InfluxDB/Graphite
Use: For beautiful
visualizations & graphs
A Storage backend with
visual dashboard
Promdash + Prometheus
New kid on the block
Use: Good with Docker &
Kubernetes / Alerting too
Old IT and Cloud
Monitoring Dashboard and
backend
Nagios
Old & mature tool
Use: Great scalability
A special case, where its possible to combine one or more of these.
160. 12.2 Cloud Application Performance Monitoring?
A CAPM Tool will help instrument and monitor a cloud application. (not the infrastructure)
Meaning
1. Application Business Logic
2. Application Framework
3. Database
4. Networking Traffic
5. Messaging Systems
Sample NewRelic CAPM Dashboard. Courtesy : www.newrelic.com
161. 12.2 Cloud Application Performance Monitoring?
1. End User App Monitoring
• Passive : Monitoring –Network Traffic (Network port mirroring & agentless)
• Active : Monitoring the internal app API hits – using a agent compiled into the app
• Useful : End User Outages & Latency Monitoring
2. App Runtime Architecture
Discovery & Monitoring
• Mapping & Discovering the different servers/micro-services required for an API hit
• Provides the flow of data and control through the system for each transaction
• Useful : Mapping Components Involved in a transaction
3. Business Transaction
Profiling
• Aggregation of Business Transactions into categories
• Monitor category wise to get aggregated views on usage & performance
• Useful : Optimizing Infrastructure & Code
4. Deep Dive Component
Monitoring
• Monitoring Internal App Monitoring like DB, App, Web, MessageQs, Disk
• Needs instrumentation or agent into the application logic
• Useful : Exception & Performance Bottleneck Debugging
5. Reporting & App Data
Analytics
• Standardized reports and dashboards to present the data
• Only based on the APM Tool
• Useful : Trends, Capacity Planning, Service Level Management
Features of CAPM Tools
162. 162
12.3 Application Logging Tools Comparison
Languages
Java, Scala, .NET, PHP,
Node.js, Ruby and Python
Deploy : SaaS
Pricing: Expensive
Best Overall Tool
Languages
Java, Scala, .NET, PHP
Deploy: SaaS/Onprem
Pricing: Expensive
Best Enterprizy Tool
Languages
Java, .NET, Go, Ruby, PHP,
Node.js, Scala, Python
Deploy: SaaS
Pricing : Cheaper
Most Value for money
Languages
Java, .NET, PHP, Node.js
Deploy : SaaS
Pricing : Expensive
If you can afford it
163. 163
12.3 Application Logging Tools
Basically, it’s a capture of the history of your application.
Use logs for debugging,
Prevent repetition of pain
Basically has 4 components
1. Instrumented Cloud Application –sends the logs
2. Log Collection Service –stores the logs
3. Indexing Service –allows quick query of logs
4. Graphical Interface – easily visualize, query and view logs
164. 164
12.3 Application Logging Tools Comparison
PROs
#Free #Opensource
#DockerImage
#MarketLeader
#PluginEcosystem
CONs
#UIKibanaSetup
#FiltersHardToWrite
#NoAlerts
#MemoryHeavy
When:
Most of the time
PROs
#Simple
#RidiculouslyEasysetup
CONs
#Paid
#NoUI
#NeedsStatHat etc
PROs
#Enterprizy
#EasySetup
CONs
#Paid
When:
Large scale enterprise log
analytics
PROs
#Free #Opensource
#PluginEcosystem
#MemoryFootprint
#Simplicity
CONs
#ComplicatedConfig
PROs
#RealtimeAlerts
#GreatSearch
#EasySetup
#GoodVisualizations
CONs
#Paid
ELK – Stack Trendsetter Logging Service Reco by Amazon/Google
EnterpriseCommon Man
165. 165
12.4 Exception Monitoring Tools
Basically, it’s a capture of the failure traces of your application.
Captures/Groups the
exceptions
Maintains a DB of all the unhandled exceptions that may have occurred in
your application.
1. Captures all software errors
2. Groups them up
3. Allows query and error visualizations
4. Alerts on high error rates
166. 166
12.4 Exception Monitoring Tools Comparison
Ruby, PHP, JavaScript,
.NET, Python, Django,
Node.js, iOS, Swift,
Android, Go, Angular,
Flask, Java
Rackspace Project
Pricing : Super-cheap
(but no free plan,
unlimited is cheap)
JavaScript, Angular,
Node.js, Python, Ruby,
Django, PHP, Clojure, .NET,
Android, iOS, Haskell,
Drupal, Rails
Needs code changes to
work
Pricing : Cheap
JavaScript, Node.js,
Python, Go, PHP, Ruby, C#,
Objective-C, Java
Opensource project that
took off
Pricing: Expensive
Android, Go, iOS, .NET,
Node.js, PHP, Python,
Ruby, Unity.
Pricing : Expensive
.NET, Android, Drupal, Go,
iOS, JavaScript, Node.js,
PHP, Python, Ruby, Unity
Pricing : Expensive
Use atleast 1, does not matter whichever. The competition here is close.
167. 167
Choice #1 : Cloud Hosting
Cloud Stacks after here (just for fun)
https://stackshare.io/stacks#!