본문 바로가기
3. 웹개발/3_1_1 JAVA

[Java] html 제너레이션 (html 젠)

by 갓대희 2018. 7. 1.
반응형


[Java] html 제너레이션 (html 젠)


안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Java] html 제너레이션 (html 젠) ] 입니다. : ) 


쇼핑몰 운영/개발 업무를 하다 보면 "제너레이션", "" 이라는 말을 앞으로 들을 수 있을 것이다.


왜?? 필요한가??


Case1

 - 네이버 첫 페이지


엄청난 사람들이 다 "네이버" 첫 페이지에 접근 한다.


네이버 첫페이지엔 "실시간 급상승", "뉴스", "날씨" 등 많은 정보들을 보여주게 된다.


수많은 사람들이 접근 하는데 이 많은 정보를 보여주기 위해 


한사람 당 "DB에 20번 접근 후 compile" 하는 작업 작업이 일어 난다고 하자.


서버에 엄청난 부하가 걸릴 것이다.


JSP가 아닌 "미리 만들어 놓은 단순 HTML" 을 호출하게되면 (Servlet이나 Spring 사용시)


속도도 빠르고, 서버에 부하도 덜 주게 된다.



Case2


쇼핑몰과 같은 경우 네이버 광고를 많이 사용 한다.


네이버 광고를 통해 특정 시간에 갑자기 접속자가 늘어나는 경우를 대비하여 다른 여러 성능문제 해결 방법이 있겠지만, 


이 HTML Generation 기능을 사용하고 싶다고 한다.



나도 "젠"이라는 기능을 듣고 알고 있었으나 개발할 일은 없었다. 


하지만 현재 진행중인 과업이 끝나면 내가 해당 기능을 구현해야 한다고 한다.


구현하는데는 어렵지 않으나 다양한 방법이 있다고 알아보라고 하는 상황. 


그래서 다음과 같은 키워드를 사용하여 구글링, 네이버 검색을 해보았다.



하지만 명확하게 답을 알려주는 곳을 못 찾았다.


정말 많이 들어봤는데, 다들 사용해 보았다고 하는면서 "제너레이션"이란 용어를 쓰는데


왜 이렇게 관련 정보가 없을까???


이 용어가 정식 명칭이 아닌가??


많이 찾아봤지만 내 검색능력으로썬 해답을 찾지 못했다.


그래서 한큐에 답을 얻진 못했지만 데충 짱구를 굴려 구현 해보기로 했다.



우선 구현한 소스로 Generate한 결과부터 보자.


(우리 싸이트는 올릴 수 없으니까 간단하게 Naver를 예제로 제너레이션을 해보았다.)



위 : 진짜 Naver.com 페이지


아래 : Generate한 내 html 파일

[ 진짜 NAVER.COM ]



[Generate 한 HTML 파일]



빨간 네모 부분인 로그인 부분을 제회한 부분은 똑같이 호출 된다.


(내가 제너레이션 할 Page는 어려 모듈을 갖다 붙이지 않아서 모두 올바르게 동작 되었다.)



검색엔진도 정상적으로 동작 한다.




올바르게 network도 찌를 부분 확인.





버전 업을 해야 하겠지만 일단 기본적인 구현은 완료 한 듯 하다.



구현시 활용 한 Java 클래스 : HttpURLConnection 클래스


 - 구현 원리와 해당 클래스에 대한 포스팅은 다음 포스팅에 하도록 해야 겠다.

   (버전업 좀 하고, 테스트도 진행 후 )



내가 구현한 방식의 껍데기만 먼저 간략히 표현 하자면.



// 소스 구현

public class generateUtil(

   public static JSONObject urlToHtml (String url){

         //구현부

      return JSONObject;

   }

}





// 실행 예)

generateUtil("https://www.naver.com/");






// 로그

/*************** Generate Start ***************

응답코드 : http 200

파일명   : generated_1530250879846

파일경로 : c:/data/test/

result : success

errMsg : null

fullPath : c:/data/test/generated_1530250879846.html

/*************** Generate End ***************



ex) 성공 예시




ex) 실패했을때의 예시



위 로그에 있는 내용들을 JSONObject로 리턴해주는 식으로 Util을 만들어 보았고 


앞으로 버전업 하여 활용 하면 될 듯하다.


HttpURLConnection 클래스를 사용하지않고 다른 방법들도 이번 과업을 시작하면 찾아 봐야 겠다.



반응형

댓글1