반응형

분류 전체보기 133

Connection pool

Connection Pool 이란? => DB와 같은 외부 리소스에 대한 커넥션을 관리하는 기술 => 어플리케이션에서 데이터베이스와의 연결을 관리 => 커넥션을 효율적으로 사용하고 재사용 할 수 있게 해줌 사용 이유 => was와 DB 간 커넥션을 맺는 것은 비용이 크다. 매번 데이터 베이스에 연결하고 연결을 끊는 것은 성능 저하의 원인이 된다. 이러한 이유로 인해 Connection Pool 이 사용됨 동작 => was가 실행되면서 일정량의 Connection 객체를 미리 만들어두고 유지함 => 어플리케이션이 DB에 접근해야 할 때, Pool에서 커넥션을 가져와 사용하고 작업이 완료되면 반환함 장점 1. 서버 부하 감소 - DB Connection 을 맺는 과정이 부하가 많이 걸리는 작업임 미리 Con..

mod_jk.so (Apache Tomcat Connector 모듈 파일)

mod_jk.so => Apache Tomcat Connector 모듈 파일 => Apache 웹 서버에서 JSP 및 Servlet과 같은 JAVA 웹 어플리케이션을 실행할 수 있도록 함 설정 옵션 JkWorkersFile - Worker의 정의 파일 경로 지정 - Worker는 Tomcat 과 통신을 위한 정보를 가지고 있음 JkLogFile - mod_jk의 로그 파일 경로 지정 - 모듈 동작 및 오류 관련 로그 기록 JkLogLevel - 로깅 레벨 설정 - 설정 값 : emerg, alert, crit, error, warn, notice, info, debug 등이 있음 JkMount - 웹 서버에 전달할 요청 경로를 Tomcat에 매핑함 JkMountCopy - ON or OFF로 설정됨 - ..

[CentOS 7] 아파치, 톰캣 연동 (mod_jk, Cent OS, Tomcat Connector)

아파치와 톰캣을 mod_jk를 통해 연동 하고자 한다. (localhost, HTTP) 최종 결과물은 아파치의 80포트 진입 시 아파치 톰캣 8080 포트로 진입되는 것 톰캣 서버가 보이거나 따로 작성한 html 파일 내용이 보여야함 필자는 Cent OS 에서 실습을 진행하였음 아파치와 톰캣은 이미 설치되어 있고 아파치:80, 톰캣:8080 으로 테스트 웹브라우저 출력 확인은 완료된 상태임 아직 확인 완료 하지 못한 부분은 아래 링크 확인 아파치 설치 https://chance-story.tistory.com/94 [CentOS 7] 아파치 설치 및 실행 (yum 활용) 개발 환경 $ cat /etc/redhat-release CentOS Linux 버전 : 7.9.2009 아파치 설치 - yum 활용 ..

[CentOS 7] 아파치 톰캣 설치 및 실행 (jdk 설치, wget 활용)

open jdk 11 설치 => java --version 을 통해 설치 유무 확인 설치가 되어있지 않다면 설치 가능 리스트 확인 # yum list java*jdk-devel [root@localhost test2]# yum list java*jdk-devel Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp Available Packages java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base java-1.7.0-openj..

[CentOS 7] 아파치 설치 및 실행 (yum 활용)

개발 환경 $ cat /etc/redhat-release CentOS Linux 버전 : 7.9.2009 아파치 설치 - yum 활용 => 설치에 필요한 패키지를 같이 설치해줌 => yum 으로 설치 시 systemctl 에 자동으로 서비스가 등록된다 // root 로그인 하기 (su / 패스워드 입력) $ yum install httpd // 중간중간 설치 진행 여부 물음 y 응답 특정 버전의 Apache 를 다운로드 할 경우 RPM 이용하여 설치 아파치 설치 확인 $ httpd -v // 버전 응답 아파치 실행 /etc/httpd/conf/httpd.conf 파일 내에서 port 지정 가능 (Default : 80) $ systemctl start httpd // 아파치 시작 $ systemctl s..

Coherence 란?

Coherence 란? => Oracle 에서 제공하는 In-Memory Data Grid => 대규모 데이터를 분산하여 저장 및 액세스 할 수 있는 분산 캐시 시스템 => 여러 서버 노드에 데이터를 자동으로 분산하여 저장 => 데이터에 대한 고속 액세스 제공 주요 기능 1. 데이터 분산 : 데이터를 여러 서버 노드에 자동으로 분산하여 저장 데이터 부하 분산 및 확장성 향상 2. 데이터 캐싱 : 데이터를 메모리에 캐싱하여 빠른 액세스 제공 캐시된 데이터는 빠르게 액세스 할 수 있고 반복적인 액세스를 줄일 수 있음 3. 고가용성 : 데이터의 복제와 장애 조치 기능을 제공 하나 이상의 복제본을 유지하여 데이터 손실 없이 서비스 지속 가능 4. 분산 쿼리 및 계산 : 복잡한 쿼리를 분산하여 병렬 처리 및 결과..

세션 클러스터링 (Session Clustering) 이란?

세션 클러스터링이란? => 여러 서버에 걸쳐 세션 데이터를 분산 저장하고 관리하는 기술 => 일반적으로 웹 어플리케이션은 세션을 사용하여 클라이언트의 상태를 유지하고 사용자에게 일관된 경험을 제공함 => 단일서버 실행 시 서버 장애 또는 부하 분산의 어려움으로 인해 세션 데이터 손실 및 서비스 중단의 위험이 존재 - 이러한 문제를 해결하기 위해 여러 서버 간 세션 데이터 공유 및 동기화 방법 제공 => 클러스터링 된 환경에서는 각 서버가 동일한 세션 데이터를 사용하며, 클라이언트의 요청이 동일한 세션에 접근하더라도 서버 간에 세션 데이터를 공유하여 일관성을 유지함 장점 - 고가용성 : 세션 클러스터링을 통해 여러 서버간에 세션 데이터를 공유하므로 단일 서버 장애 시 세션 데이터 유실 없이 서비스 지속 가..

vhosts 란? (Virtual Hosts)

vhosts란? => 가상 호스트 라고 하며 한 서버에 여러 도메인을 등록하여 사용한다는 의미 => 하나의 물리적인 서버를 사용하여 다수의 독립적인 웹사이트를 운영할 수 있음 => 클라이언트의 요청에 대한 도메인 이름을 기반으로 적절한 가상 호스트 설정을 찾아 처리함 => 하드웨어 및 운영 비용 절감 => 독립된 도메인 간 서로 영향을 주지 않고 개별적 관리 가능 장점 - 비용절감 : 단일 서버에서 여러 도메인을 호스팅 할 수 있어 하드웨어 및 운영 비용이 절감됨 - 자원공유 : 서버 자원을 효율적으로 공유할 수 있음 (CPU, Memory, 대역폭 등 여러 도메인 간 나누어 사용 가능) - 유연성 : 각 도메인을 독립적으로 관리할 수 있으므로 하나의 도메인이나 어플리케이션 장애가 다른 도메인에 영향을 ..

Apache Tomcat vs WebLogic

Apache Tomcat과 WebLogic은 둘 다 WAS의 종류에 속하는 서버 소프트웨어 이다. Apache Tomcat - 오픈소스 기반의 WAS - 가벼운 웹 어플리케이션을 실행하는데 사용됨 - 주로 Servlet 및 JSP (JavaServer Pages) 컨테이너 로서 동작함 - 서블릿 기반의 어플리케이션을 호스팅 하고 처리함 - Java EE (Java Enterprise Edition) 대부분의 기능을 제공함 - 스레드 기반으로 동작 Oracle WebLogic - 상용 WAS로서 Oracle Corporation 에서 개발 및 유지보수 - 기업의 대규모 및 복잡한 어플리케이션 실행 시 사용 - Java EE 표준 사양을 완벽히 준수 및 기술 지원 (Java Message Service, E..

서블릿 (Servlet)이란?

서블릿이란? => Servlet => 자바를 사용하여 웹 어플리케이션을 개발하기 위한 기술 => 서버 측에서 동적 웹 페이지를 생성하고 클라이언트에 대해 응답을 제공 => 자바 언어를 기반으로 작성되며 웹 서버에서 실행되는 작은 프로그램 단위 => 웹 요청과 응답의 흐름을 간단한 메소드 호출만으로 체계적으로 다룰 수 있게 함 => 웹 컨테이너에서 이것을 실행함 - 서블릿 인스턴스 생성 후 서버에서 실행됨 특징 - HTML을 사용하여 응답 - JAVA 스레드 이용 - UDP보다 속도가 느림 - HTML변경 시 Servlet을 재 컴파일 해야함 참고 https://coding-factory.tistory.com/742 [Web] 서블릿(Servlet)이란 무엇인가? 서블릿 총정리 서블릿(Servlet)이란?..

3-way Handshake 란? (TCP 통신, 4-way Handshake)

TCP 란? => Trasmission Control Protocol => 인터넷상에서 데이터를 신뢰성있게 전송하기 위해 사용되는 프로토콜 => 패킷 기반의 통신이며 데이터 분할, 전송 순서 제어, 에러 검출 및 복구 담당 3-way Handshake 란? => TCP 통신 시작 전 클라이언트와 서버 간 논리적 연결을 설정하기 위해 사용 3-way Handshake 3단계 1. 클라이언트는 서버에게 SYN (Synchronize Sequence Number) 패킷 으로 연결 요청 - 클라이언트가 서버와 통신을 시작하고자 알리는 역할 2. 서버는 클라이언트의 연결 요청을 받고 클라이언트에게 수락의 의미인 ACK(SYN+ACK) 패킷 전송 3. 클라이언트는 서버의 ACK 패킷을 받고 이에 대한 확인 ACK를..

MPM (Multi-Processing Module) 이란?

MPM이란? => 웹 서버에서 동시에 여러 개의 클라이언트 요청을 처리하는 방법을 제공하는 모듈 => 웹 서버 성능 및 확장성 향상 아파치에서 사용되는 MPM 3가지 1. Prefork MPM => 여러개의 프로세스를 생성하여 각각이 독립적인 클라이언트 요청 처리 => 단일 스레드로 동작하며 요청 하나 당 프로세스 할당 => 프로세스 별 자체 메모리 보유 - 독립적 환경으로 동작 => 안정성이 높지만 프로세스 간 오버헤드가 있고 메모리 사용량이 많아 성능이 떨어질 수 있음 2. Worker MPM => 멀티 스레드 기반 => 여러개의 프로세스를 생성하고 각 프로세스는 여러 스레드로 클라이언트 요청 처리 => Prefork MPM 보다 메모리 사용량이 적고 처리량과 동시성이 높음 => 스레드 간 동기화와 ..

GSLB 란? (Global Server Load Balancing)

GSLB 란? => 여러 지리적 위치에 분산된 서버 및 데이터 센터 간의 부하 분산을 관리하는 기술 => 주로 웹 사이트, 어플리케이션, 클라우드 서비스에 사용됨 => DNS 기반으로 작동 (+ health check, active/backup 지정 가능) 1. 사용자가 웹사이트에 접속 요청 2. DNS 쿼리 실행 -> 도메인 이름을 IP 주소로 변환 3. GSLB 사용 시 DNS 서버는 사용자의 위치, 서버 상태, 트래픽 조건 등을 고려하여 적합한 IP 주소 반환 이때, 다중화 되어있는 서버의 상태를 확인하여 IP 주소를 반환해준다. ex. A 서버는 active 상태, B서버는 Back-up 상태일 경우 A 서버를 반환해주고 두 서버 모두 active 상태 일 경우 로드 밸런서로의 기능으로 부하 분산..

L4 부하 분산 - 로드밸런싱 방법 (해시, R.R, LC)

L4 (Transport Layer) 부하분산 => 네트워크 트래픽을 전송 계층에서 분산 시키는 방법 IP 해시 => 클라이언트의 소스 IP 주소(+ port 도 될 수 있음)에 따라 트래픽을 특정 서버에 할당한다. => 세션 연결 유지 목적 => IP 주소가 변경되면 서버에 할당된 부하분산이 변경될 수 있다. => 동일한 사용자에 대해 동일한 서버로 연결됨 라운드 로빈 (Round Robin) => 모든 서버에 동일한 순서로 트래픽을 분산 시킴 => 간단하고 구현이 쉽다. => 서버간의 성능이 비슷한 경우에 사용됨 => 5대의 서버가 있다면 5부터 1 다시 1부터 5 이러한 방식으로 분산됨 => 경로보장 x 가중 라운드 로빈 (Weighted Round Robin) => 서버마다 가중치를 지정하여 트래..

GC (Garbage Collection, G1GC 란?)란? - Heap Memory

GC (Garbage Collection) => 자바 프로그램에서 동적 할당된 객체들 중에서 사용되지 않는 객체들을 자동으로 탐지하여 해제하는 프로세스 => 메모리 누수와 같은 일반적인 메모리 관리 문제를 해결하기 위해 사용 => Heap Memory 에서 사용되지 않는 객체를 식별하고 회수하여 메모리를 재사용 할 수 있음 Heap Memory 란? => 자바에서 동적으로 생성된 객체들이 저장되는 메모리 영역 => JVM 메모리 구조 중 하나 => 프로그램 실행 중 필요한 객체들이 할당되고 관리 => 크기가 유동적이며, GC 대상임 GC 알고리즘 : 사용되지 않는 객체를 식별하고 해제하는 방법 / App의 요구사항과 환경에 맞는 알고리즘 선택 GC 구성요소 New 영역 1. 객체 동적 할당 : new 영..

반응형