Client/Server Computing and Web Technologies

Slides:



Advertisements
Similar presentations
Multiple Processor Systems
Advertisements

Tableau Software Australia
2  Industry trends and challenges  Windows Server 2012: Beyond virtualization  Complete virtualization platform  Improved scalability and performance.
1 Chapter 11: Data Centre Administration Objectives Data Centre Structure Data Centre Structure Data Centre Administration Data Centre Administration Data.
System Center 2012 R2 Overview
Profit from the cloud TM Parallels Dynamic Infrastructure AndOpenStack.
1 NETE4631 Cloud deployment models and migration Lecture Notes #4.
MCITP Guide to Microsoft Windows Server 2008 Server Administration (Exam #70-646) Chapter 12 Application and Data Provisioning.
Presented by Sujit Tilak. Evolution of Client/Server Architecture Clients & Server on different computer systems Local Area Network for Server and Client.
Virtual Network Servers. What is a Server? 1. A software application that provides a specific one or more services to other computers  Example: Apache.
Deploying Moodle with Red Hat Enterprise Virtualization Brian McSpadden Director of Network Operations Remote-Learner.net.
Additional SugarCRM details for complete, functional, and portable deployment.
ATIF MEHMOOD MALIK KASHIF SIDDIQUE Improving dependability of Cloud Computing with Fault Tolerance and High Availability.
Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over the Internet. Cloud is the metaphor for.
Module 13: Network Load Balancing Fundamentals. Server Availability and Scalability Overview Windows Network Load Balancing Configuring Windows Network.
Windows Azure Conference 2014 Running Docker on Windows Azure.
A Cloud is a type of parallel and distributed system consisting of a collection of inter- connected and virtualized computers that are dynamically provisioned.
Windows 2000 Advanced Server and Clustering Prepared by: Tetsu Nagayama Russ Smith Dale Pena.
+ CS 325: CS Hardware and Software Organization and Architecture Cloud Architectures.
Appendix B Planning a Virtualization Strategy for Exchange Server 2010.
1 NETE4631 Amazon Cloud Offerings Lecture Notes #6.
DCE (distributed computing environment) DCE (distributed computing environment)
Overview of Cloud Computing Sven Rosvall ACCU
11 CLUSTERING AND AVAILABILITY Chapter 11. Chapter 11: CLUSTERING AND AVAILABILITY2 OVERVIEW  Describe the clustering capabilities of Microsoft Windows.
Windows Azure Virtual Machines Anton Boyko. A Continuous Offering From Private to Public Cloud.
VMware vSphere Configuration and Management v6
Virtualization Technology and Microsoft Virtual PC 2007 YOU ARE WELCOME By : Osama Tamimi.
Docker and Container Technology
Virtualization One computer can do the job of multiple computers, by sharing the resources of a single computer across multiple environments. Turning hardware.
Performance Testing Test Complete. Performance testing and its sub categories Performance testing is performed, to determine how fast some aspect of a.
Web Technologies Lecture 13 Introduction to cloud computing.
© ExplorNet’s Centers for Quality Teaching and Learning 1 Explain the purpose of Microsoft virtualization. Objective Course Weight 2%
 Cloud Computing technology basics Platform Evolution Advantages  Microsoft Windows Azure technology basics Windows Azure – A Lap around the platform.
Cofax Scalability Document Version Scaling Cofax in General The scalability of Cofax is directly related to the system software, hardware and network.
XEN – The Art of Virtualisation. So what is Virtualisation? ● Makes use of spare capacity ● Run multiple instances of OSes simultaneously ● Multitasking.
Presented by Michael Rainey South Mississippi Linux Users Group
Introduction to threads
Distributed Virtualization for Net-Centric Operations Draft
Let's talk about Linux and Virtualization in 'vLAMP'
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CLOUD COMPUTING
Scaling Network Load Balancing Clusters
Bentley Systems, Incorporated
Architectural Overview Of Cloud Computing
Introduction to Distributed Platforms
Affinity Depending on the application and client requirements of your Network Load Balancing cluster, you can be required to select an Affinity setting.
OpenMosix, Open SSI, and LinuxPMI
Docker and Azure Container Service
Prepared by: Assistant prof. Aslamzai
Docker Birthday #3.
Building a Virtual Infrastructure
StratusLab Final Periodic Review
StratusLab Final Periodic Review
Network Load Balancing Functionality
Network Load Balancing
Platform as a Service.
System Architecture & Hardware Configurations
VIDIZMO Deployment Options
TYPES OF SERVER. TYPES OF SERVER What is a server.
Introduction to Cloud Computing
Cloud Computing ISY143.
Replication Middleware for Cloud Based Storage Service
Distributed System Structures 16: Distributed Structures
PaaS - Development Stefan Geiger Gerry
Outline Virtualization Cloud Computing Microsoft Azure Platform
AWS Cloud Computing Masaki.
Cloud-Enabling Technology
Chapter-1 Computer is an advanced electronic device that takes raw data as an input from the user and processes it under the control of a set of instructions.
Azure Container Service
Containers on Azure Peter Lasne Sr. Software Development Engineer
Presentation transcript:

Client/Server Computing and Web Technologies #09 Web Deployment Client/Server Computing and Web Technologies

Web Deployment Production Environment Reverse Proxy Docker Load Test

Production Environment App must be build or run in production mode. Case Study: https://expressjs.com/en/advanced/best-practice-performance.html

Things to do Dev part Use gzip compression Don’t use synchronous functions Do logging correctly Handle exceptions properly Ops part Set NODE_ENV to “production” Ensure your app automatically restarts Run your app in a cluster Cache request results Use a load balancer Use a reverse proxy

PM2 Advanced, production process manager for Node.js Offering Cluster Mode Simple Application Declaration Example: process.yml apps: - script: src/main.js name: mms env: NODE_ENV: production >> npm install pm2@latest -g >> pm2 start process.yml >> pm2 startup

Reverse Proxy a type of proxy server that retrieves resources on behalf of a client from one or more servers. Unlike a forward proxy, which is an intermediary for its associated clients to contact any server, a reverse proxy is an intermediary for its associated servers to be contacted by any client. These resources are then returned to the client, appearing as if they originated from the proxy server itself.

Load Balancer Acts as a reverse proxy Distributes network or application traffic across a number of servers. To increase capacity (concurrent users) and reliability of applications. Some industry standard algorithms are: Round robin Weighted round robin Least connections Least response time

Case Study: Nginx as a reverse proxy How To Set Up a Node.js Application for Production on Ubuntu 18.04 https://www.digitalocean.com/community/tutorials/ how-to-set-up-a-node-js-application-for-production- on-ubuntu-18-04

Depolyment in Dark Ages One Application on one physical server Slow Deployment times Huge costs Wasted resources Difficult to scale Difficult to migrate Vendor lock in

Hypervisor-based Virtualization One Physical server can contain multiple applications. Each application runs in a virtual machine (VM). Better resource pooling One physical machine divided into multiple virtual machines Easier to scale VMs in the cloud Rapid elasticity Pay as you go model

Limitations of VMs Each VM stills requires CPU allocation Storage RAM An entire guest operating system The more VMs you run, the more resources you need Guest OS means wasted resources Application portability not guaranteed

What is container? Standardized packaging for software and dependencies Isolate apps from each other Share the same OS kernel Works with major Linux and Windows Server

Comparing Containers and VMs

Load Testing Kind of Performance Testing which determines a system's performance under real-life load conditions. Determine how the application behaves when multiple users access it simultaneously. This testing usually identifies - The maximum operating capacity of an application Determine whether the current infrastructure is sufficient to run the application Sustainability of application with respect to peak user load Number of concurrent users that an application can support, and scalability to allow more users to access it.

Goals of Load Testing Response time for each transaction Performance of System components under various loads Performance of Database components under different loads Network delay between the client and the server Software design issues Server configuration issues like a Web server, application server, database server etc. Hardware limitation issues like CPU maximization, memory limitations, network bottleneck, etc.

K6 k6 is a developer centric open source load testing tool for testing the performance of your backend infrastructure.

K6 Metrics

HTTP-specific built-in metrics Metric name Type Description http_reqs Counter How many HTTP requests has k6 generated, in total. http_req_blocked Trend Time spent blocked (waiting for a free TCP connection slot) before initiating request. float http_req_waiting Time spent waiting for response from remote host (a.k.a. "time to first byte", or "TTFB"). float http_req_duration Total time for the request. It's equal to http_req_sending + http_req_waiting + http_req_receiving (i.e. how long did the remote server take to process the request and respond, without the initial DNS lookup/connection times). float See completed list of metrics at https://docs.k6.io/docs/result-metrics

Case Study K6 with InfluxDB and Grafana https://docs.k6.io/docs/influxdb-grafana Note: Docker Compose is a tool for defining and running multi-container Docker applications.