반응형

'2021/03'에 해당되는 글 3건

반응형

EC2 ( Elastic Compute Cloud)

 > AWS 에 OS 만 설치되어 있는 VM 이라고 생각하면 된다.

 

EBS ( Elastic Block Store )

 > 우리가 생각하는 HDD 나 SSD 처럼 저장장치로 생각

 

S3 ( Simple Storage Store )

 > 사진이나 동영상 같은 파일들을 저장하는 서비스

 

EBS 와 S3 의 차이?

 - EBS : Block Storage 

    > 사용자가 Block Storage 가 있는 컴퓨터에 직접 붙어서 폴더나 파일을 생성하는 작업을 함.

 

 - S3 : Object Storage

    > 웹페이지나 URL 로 HTTP 통신하여 폴더나 파일을 생성할 수 있음.

 

S3 를 사용하면 버킷이라는 단위(버킷 : 여러가지 사물을 하나에 담는다.) 아래

폴더 및 파일을 업로드하여 업로드 된 객체 URL 로 접근하여 폴더나 파일의 내용을 조회 및 수정할 수 있음

 

 

RDS ( Relational Database Service )

 > AWS에서 데이터를 저장할 수 있는 RDB 서버를 제공하는 서비스

 > 기본제공 엔진 : Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle, MS SQL

 

Auto Scaling

 > AWS 의 실시간 상황에 맞게 자동으로 인스턴스 개수를 늘리거나 줄여주는 기능

   대상당 애플리케이션 로드 밸러서 요청 수, 평균 CPU 사용률, 평균 네트워크 입출력양을 기준으로 잡고,

   기준치가 초과되면 EC2 인스턴스의 개수를 늘려줄 수 있음.

 

   예를 들어 평소 10개의 EC2 인스턴스를 사용하던 공연예매서버가 공연예매 시작시에는 EC2 인스턴스 서버갯수를

100개로 늘렸다가 트래픽이 줄어들어 정상적인 상태로 돌아오면 10개로 다시 되돌릴 수 있다.

 

Region

 > AWS 의 데이터 센터가 존재하는 지역을 리전이라고 한다.

네트워크 속도로 인해 주 사용자가 서버 위치와 가까운 것이 좋음.

한국에서 서버를 관리하지만 런던에 있는 주재원에 서비스를 한다면 런던에 있는 리전을 선택하는 것이 서비스 속도가 더 좋음.

 

 

Availability Zone

 > 여러개의 데이터 센터들을 논리적으로 결합하여 만든 데이터 센터

한개의 Region 에서 서비스 중 장애가 발생 시 타 지역에 있는 Availablility Zone 에 있는 다른 데이터 센터를 사용할 수 있다.

 

 

EC2 요금제

 1. On-Demand 인스턴스 요금제

   > 사용한 시간에 비례하여 요금을 내는 방식

 

 2. Spot 인스턴스 요금제

   > 경매 방식 요금제

             AWS 에서 놀고 있는 EC2 인스턴스를 경매 방식으로 가격을 입찰하여 사용하는 요금제

             저렴하게 사용할 수는 있으나 스팟 인스턴스 수요가 많아져 가격이 오르면

             AWS 에서 사용하던 인스턴스를 회수할 수 있음.

 

             즉, 작업하다 사라져도 큰 상관없는 인스턴스로 사용하면 비용절감에 용이함.

 

 3. Reserved 인스턴스 요금제

   > 어떤 타입의 인스턴스를 몇년간 사용하겠다고 예약을 하는 요금제

       - Standard 타입

            : 인스턴스크기를 바꿀 수 있음.

       - 컨버터블 타입

            : 인스턴스 타입이나 OS 를 바꿀수 있음

   > 결제조건

        3-1. 전체 선결제

        3-2. 부분 선결제

        3-3. 선결제 없음

 

EBS 요금제

 1. 범용 SSD(gp2) 볼륨 : 월별 제공된 스토리지 GB 당 0.114 USD

 2. 프로비져닝된 IOPS SSD(io1) 볼륨 : 월별 제공된 스토리지 GB 당 0.1278 USD & 월별 프로비전이된 IOPS당 0.0666 USD

 3. 처리량 최적화 HDD(st1) 볼륨 : 월별 제공된 스토리지 GB 당 0.051 USD

 4. 콜드 HDD(sc1) 볼륨 : 월별 제공된 스토리지 GB 당 0.029 USD

 

 

S3 요금제

 1. S3 Standard

   - 모든 데이터 유형에 적합한 범용 스토리지로, 대게 자주 엑세스하는 데이터에 사용됨

 2. S3 Intelligent - Tiering

   - 엑세스 패턴을 알 수 없거나 엑세스 패턴이 변경되는 데이터에 대해 자동 비용 절감 효과 제공

3. S3 Standard - Infrequent Access

   - 라이브 상태가 된 지 오래되었지만 밀리초 단위 엑세스 성능이 요구되는 자주 엑세스 하지 않는 데이터용

4. S3 One Zone - Infrequent Access

   - 밀리초 단위 엑세스 성능이 요구되는 다시 생성 가능한 자주 엑세스하지 않는 데이터용

5. S3 Glacier

   - 검색 옵션이 1분부터 12시간까지인 장기적인 백업 및 아카이브용

 

요청 및 데이터 검색 요금

1. PUT, COPY, POST, LIST 요청

2. GET, SELECT 및 기타 모든 요청

3. 수명 주기 전환 요청

4. 데이터 검색 요청

5. 데이터 검색

 

※ 결과적으로 파일을 저장하는데 드는 요금 + 외부 URL 을 통해 조회 및 수정에도 요금을 지불해야 한다.

 

 

IAM ( Identify and Access Management ) 

   - AWS 에서 생성 및 관리하고 있는 모든 서비스를 안전하게 제어하기 위한 계정 관리 서비스

 

 

VPC ( Vertual Private Cloud )

   - 가상 네트워크를 제공하는 서비스

   - 사용자 계정별로 내부 네트워크 설정 및 관리 기능을 수행한다.

   - EC2 인스턴스 등의 서비스 자원을 생성하면 기본적으로 생성된다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

jmeter 의 webdriver 를 사용하여 selenium 을 사용하다보면

 

iframe 을 포함하고 있는 페이지의 동작이 필요한 경우가 발생하게 됩니다.

 

하지만 selenium 에서 iframe 에 있는 아이디나 tag, xpath, linkText 등등 여러가지를 사용해서

 

iframe 내에 있는 동작을 처리하려고 할 때 정상적으로 되지 않는 경우가 발생합니다.

 

 

<html lang="ko"><script src="chrome-extension://ljdobmomdgdljniojadhoplhkpialdid/page/prompt.js"></script><script src="chrome-extension://ljdobmomdgdljniojadhoplhkpialdid/page/runScript.js"></script><head>
	<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
	<link rel="icon" href="/images/favicon.ico" type="image/x-icon">

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=Edge">	
	
	<script type="text/javascript" src="/js/jquery/jquery-3.5.1.min.js"></script>
	<script type="text/javascript" src="/js/jquery/jquery.serializeObject.min.js"></script>	

	<title>Test</title>
    
    ....
	<body>
    ....
    <iframe id="iframe-1">
    #document
    <!DOCTYPE html>
    	<html>
        <head>
        <body>
        ....
        	....
            ....
            <div id="iframe_div">
            	....
                ....

 

위의 예시는 기본 html 내 iframe 이 속해있는 구조입니다.

 

이런 구조에서 iframe 내에 있는 iframe_div 를 조작하려고 하면 커서가 iframe 쪽으로 이동하지 않았기 때문에

 

로그도 남지 않고 아무런 반응이 일어나지 않는 경우가 있습니다.

 

그럼 ifrmae 쪽으로 커서를 이동해주어야 iframe 내에 있는

 

컴포넌트들이 동작을 할텐데 어떻게 해야하는지 알아보겠습니다.

 

 

var iframe = WDS.browser.findElement(org.openqa.selenium.By.xpath("//iframe[@name='iframe-1']"))
WDS.browser.switchTo().frame(iframe)

wait.until(ui.ExpectedConditions.visibilityOfElementLocated(org.openqa.selenium.By.id('iframe_div')))
WDS.browser.findElement(org.openqa.selenium.By.xpath("//div[@id='iframe_div']/div[4]/div/div/div/div[2]/span")).click();
WDS.browser.findElement(org.openqa.selenium.By.xpath("//div[@id='iframe_div']/div[27]/div/img")).click();

 

방법은 위와 같이 아주 간단합니다.

 

iframe 을 식별할 수 있는 iframe-1 을 선택할 수 있게 switchTo function 을 사용하면 간단하게 커서 이동이 됩니다.

 

그 후에는 iframe 내에 있는 객체들을 마음껏 사용할 수 있습니다

 

간단하게 사용할 수 있으니 테스트한번 해보시기 바랍니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

jMeter plugin webDriver 설치 및 사용방법

 

 

성능 테스트를 하기 위해 jMeter 를 설치하고 http request sampler 를 이용하여

 

테스트를 하고 있었는데 dynamic script 를 호출하여 CGI 프로그램을 실행해야하는 부분이 존재하였다.

 

웹페이지 안에 dynamic script 가 정상적으로 호출되지 않아

 

CGI 프로그램의 response 를 정상적으로 받지 못하는 상황이 발생.

 

어떻게 해야 정상적으로 프로그램을 짤 수 있을까 찾아보던 도중

 

jMeter plugin 중 webDriver 라는것이 존재한다는 사실을 확인하였다.

 

webDriver 를 사용하게 되면 기존에 http request Sampler 를 사용했던 것과는 달리

 

sampler 를 추가 했을 때 빈화면이 나와서 당황스러울수도 있다.

 

직접 소스코딩을 하라는 얘기인데 강력한 기능에는 강력한 권한이 부여되니 너무 걱정하지 않아도 된다.

 

사용해보고 어떻게 사용하는지 설치 및 사용방법에 대해 간단하게 정리해놓기로 한다.

 

jMeter 는 정상적으로 설치되었다는 가정하에 시작.

 

 

1. Options 메뉴의 Plugins Manager 선택

 

 

2. webdriver 라고 검색하면 selenium/WebDriver Support 항목을 체크 후  Apply Changes and Restart JMeter 버튼을 클릭한다.

 

 

플러그인이 정상적으로 설치되며, jmeter 가 재시작되게 된다.

 

 

3. Chrome Driver Config 및 WebDriver Sampler

 

이제 Thread Group 내 Chrome Driver Config 와 WebDriver Sampler 를 사용할 수 있게 되었다.

 

 

Chrome Driver Config

 

 

 

WebDriver Sampler

 

4. ChromeWebDriver 를 다운로드 받는다.

 

chromedriver.chromium.org/downloads

 

위 경로에 들어가서 받을 수 있다.

 

chrome web driver

 

현재 자신이 사용하고 있는 chrome browser 의 버전과 동일한 web driver 를 다운받아야 정상적으로 테스트를 할 수 있다. ( 그렇지 않으면 스크립트 오류가 발생하는 것을 확인함 )

 

 

 

 

다운 받은 chromedriver 의 exe 파일은 Chrome Driver Config 쪽에 등록해주면 기본적인 세팅은 끝

 

Chrome Driver Config 에서는 Use Chrome headless mode 를 사용할 수 있다.

 

headless mode 는 jMeter 를 run 시키면 크롬 브라우저가 실행되면서

 

내가 직접 작성한 내용이 브라우저에서 그대로 실행되는데

 

headless mode 를 체크 후 실행하면 back ground 에서 실행되게되니 부하기의 리소스를 덜 먹게 된다.

 

5. webDriver Sampler 소스를 입력

 

 

var pkg = JavaImporter(org.openqa.selenium);
var ui=JavaImporter(org.openqa.selenium.support.ui) 
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);

WDS.sampleResult.sampleStart()
WDS.browser.get("http://localhost:8080/index.aspx/?Param=aaa");

var wait = new support_ui.WebDriverWait(WDS.browser, 500);
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.id('login_id')))    
WDS.browser.findElement(pkg.By.xpath("//div[@id='login_btn']/div[3]/div/img")).click();

wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.className('ui-menu')))
WDS.browser.findElement(pkg.By.linkText("new report")).click();
wait.until(ui.ExpectedConditions.visibilityOfElementLocated(pkg.By.name('menu-01')));
WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39")).click();

var action = new org.openqa.selenium.interactions.Actions(WDS.browser)
action.moveToElement(WDS.browser.findElement(pkg.By.id("FDOI5LBN053KNK39"))).doubleClick().build().perform()
WDS.browser.findElement(pkg.By.id("execute")).click();


WDS.sampleResult.sampleEnd()

 

로컬에 설치해놓은 서버에 접근해서 화면을 조회하는 화면이다.

 

기본적인 개념은 webDriver 를 사용하면 브라우저가 해당 object 를 rendering 하는 시간이 소요되게 되는데

 

rendering 전에 object 를 찾으려고 하면 찾을 수 없으니 object 가 화면에 그려진 후 다음 작업을 진행되도록 처리하였다.

 

object 를 찾는 것은 xpath, id, name, class, linkText 를 이용하여 객체를 찾을 수 있다.

 

좀 더 스크립트를 쉽게 개발하기 위해서는

 

chrome 의 확장프로그램을 이용하여 recording 을 할 수 있는 Katalon Recorder 가 있지만

 

recorder 를 100% 믿을 수는 없는 것이 no such element: Unable to locate element 오류를 만날 수 있기 때문이다.

 

해결 방법은 위에 적어놓음.

 

다음에 다시 load test 를 하는 날에 다시 읽어볼 날이 오겠지~~

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형