This repo is for concreting the concept of the things I've been studying including nginx, docker, crontab, ngrinder(performance testing),kubernetes and jenkins
web server can be divided into four parts. Web Browser, Server, WAS, and Database.
Web Browser
A Web Browser is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves files from a web server and then displays the page on the user's screen.
The purpose of a web Browser is to fetch content from the web or from local storage and display it on the user's device.
EX) Firefox, Chrome, Explorer, Safari etc..
Server
Server refers to a software that responds for the request of a client(browser) normally static. webserver uses HTTP and other protocols to respond to client requests.
EX) Nginx, Apache etc..
WAS(Web Application Server)
An WAS’s fundamental job is to provide its clients with access to what is commonly called business logic, which generates dynamic content; that is, it’s code that transforms data to provide the specialized functionality offered by a business, service, or application.
EX) Node.js, Apache Tomcat, JBoss etc..
Pods are the smallest deployable units of computing that you can create and manage in Kubernetes
A pod is a group of one or more containers, with shared storage and network resources, and a specification for how to run the containers.
pods that run a single container:
it's the most common Kubernetes use case; in this case, you can think of a pod as a wrapper aroung a single container; kubernetes manages Pods rather than managing the containers directly
pods that run multiple containers that need to work together:
A pod can encapsulate an application composed of multiple co-located containers that are tightly coupled and need to share resources. These co-located containers form a single conhesive unit.
Performance testing is simply testing how many users that the web-server(API) can afford. other than that it can also be used to check whether which model shows a better performance.
TPS -> Transaction Per Second
TPS = Active User / Response Time
From the picture above, the total TPS and Latency would be
Throughput | Latency |
---|---|
500TPS | 350ms |
Latency sums up all section but Throughput is the min value of all the section
Thus if you want to improve TPS it is crucial to find the critical path.
and if you want to improve latency, you should minimize each latency.
as you see the graph above, At
saturation Point TPS no longer when User increases which means
TPS = Active User / Response Time -> Active User = Response time
-So it means that response time is increasing -> which is the imoportant point to define performance 'load point'
REF: https://ch4njun.tistory.com/266
Jenkins offers a simple way to set up a CI or CD environment for almost any combination of languages and source code repositories using pipelines, as well as automating other routine development tools than you can easily build yourself
Continuous Integration refers to the practice of automatically and frequently integrating code changes into a shared source code repository.
CD stands for Continuous Delivery and/or Continuous Deployment