diff --git a/2021-10-31.md b/2021-10-31.md index 4e14b38..fd9a995 100644 --- a/2021-10-31.md +++ b/2021-10-31.md @@ -204,4 +204,68 @@ [출처] https://www.youtube.com/watch?v=1jo6q4dihoU [출처] https://vigli.tistory.com/52 [출처] https://www.youtube.com/watch?v=ABPOjjre0C8 + +# 7 +# Jar와 War의 배포 방식 + +**JAVA를 사용하여 만든 소프트웨어를 배포하려면 패키징을 해야 하는데, 보통 jar 또는 war로 배포를 합니다.** + +- Jar + - JAR는 Java Archive의 약자입니다. class 및 설정 파일들을 압축해서 만들어진 하나의 어플리케이션 혹은 라이브러리입니다. + +- WAR + - WAR는 Web Application Archive의 약자입니다. JSP나 Servlet 등 WAS 컨테이너 위에서 동작하게끔 빌드된 형태입니다. + - 웹 어플리케이션을 어떻게 설정할 지에 대한 정의가 있는 web.xml파일을 포함하고 있습니다. WAS가 동작을 하면 이 파일에서 설정들을 불러옵니다. + - *JAR 배포 시 JSP 템플릿 프레임워크 작동하지 않음 jsp는 jar로 묶을 때, src/main/webapp/WEB-INF/jsp에 위치하다보니 jar에 포함되지 않습니다. + - 만약 jar 배포를 하고 싶은데, jsp를 같이 넣고 싶다면 src/main/resources/META-INF/resources/WEB-INF/jsp에 jsp 파일을 두면 jar에 포함되고, view도 잘 찾는다고 합니다. + +**정리** +- 외장 WAS를 쓰셔야하는 환경이라면 war 배포 +- 내장 WAS를 써야하는 환경이라면 jar 배포를 하시면 됩니다. +- jar와 달리 war는 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조를 사용하며, WAR 파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹서버(WEB) 또는 웹컨테이너(WAS)가 필요합니다. + +[출처] https://mongsil1025.github.io/til/server/warjar/ + +# 8 +# 부하테스트와 스트레스 테스트 + +- 부하 테스트(Load Test) + - 임계 값 한계에 도달하는 순간까지 시스템의 부하를 지속적으로 증가하면서 진행하는 테스트이다. 보통 LoadRunner 등의 테스트 도구를 활용해서 다양한 부하 시나리오를 설정하고, 강도를 지속적으로 증가하면서 결과를 확인한다. 이 테스트의 목적은 부하를 증가시키면서 생기는 다양한 시스템의 한계를 찾아내는 것이 목표인데, 버퍼 오버플로우, 메모리 누수, JVM의 Garbase Collection 동작 확인, DB 병목점 확인 등을 생각하면 된다. 각 상황에서의 최대 상한 값을 확인해서 각각의 시나리오에 대한 계획을 세우는 것이 최종 목표이다. 예를 들면, 서비스 오픈 이벤트를 대비한 최대 부하 확인, 무료 경품 이벤트로 인한 시스템 부하 대비 등을 위해 진행하는 테스트로 적절하다. + +- 스트레스 테스트(Stress Test) + - 시스템이 과부하 상태에서 어떤 동작을 보이는지 확인하는 테스트이다. 과부하 상태에서 모니터링 도구는 정상적으로 동작하는지, 시스템의 Failover는 적용되는지, SPoF 혹은 보안 상의 문제가 존재하는지 등을 확인한다. 예를 들면, 시스템 과부하 상태에서 모니터링의 알림이 잘 오거나 시스템의 Auto Scaling 계획이 잘 동작하는지 등을 확인하는 테스트로 적절하다. + +**이외의 테스트유형** +지연 테스트 (Latency Test) - 종단 트랜잭션에 걸리는 시간은? +처리율 테스트 (Throughput Test) - 현재 시스템이 처리 가능한 동시 트랜잭션 개수는? +내구성 테스트 (Endurance Test) - 시스템을 장시간 실행 시 성능 이상 증상이 나타나는가? +[출처] https://loopstudy.tistory.com/33(jmeter 사용법) +[출처] https://goodgid.github.io/Java-Optimizing-Performance-Test-Pattern-and-Anti-Pattern + +# 9 +# DataBase 분산기법 + +- 클러스터링 + - DB 서버를 여러 개 두어 서버 한 대가 죽었을 때 대비할 수 있는 기법 + + 1. Active - Active Clustering + * DB 서버를 여러 개 구성하는 데, 각 서버를 Active 상태로 둠 + * CPU와 메모리 이용률을 올릴 수 있음 + * 서버를 여러대 한꺼번에 운영하므로 비용이 더 발생 + + 2. Active - Standby Clustering + * 서버를 하나만 운영하고 나머지 서버는 Standby 상태로 둠, 운영하고 있는 서버가 다운되었을 시에 Standby 상태의 서버를 Active상태로 전환 + * Active-Active 클러스터링에 비해 적은 비용 + * 서버가 다운되었을 때 Standby 상태의 서버를 Active상태로 전환 시 시간이 듬 + +- 레플리케이션 +**두 개의 이상의 DBMS 시스템을 Mater / Slave로 나눠서 동일한 데이터를 저장하는 방식이다. 사용하기 위한 최소 구성은 Master / Slave 구성을 하여야 됩니다.** + - Master DBMS 역할 : 웹서버로 부터 데이터 등록/수정/삭제 요청시 바이너리로그(Binarylog)를 생성하여 Slave 서버로 전달하게 됩니다 (웹서버로 부터 요청한 데이터 등록/수정/삭제 기능을 하는 DBMS로 많이 사용됩니다) + + - Slave DBMS 역할 : Master DBMS로 부터 전달받은 바이너리로그(Binarylog)를 데이터로 반영하게 됩니다 (웹서버로 부터 요청을 통해 데이터를 불러오는 DBMS로 많이 사용됩니다) + +[출처] https://server-talk.tistory.com/240 + + +