2007/11/11 - [Hot Issues] - Web App Framework 전쟁이야기(1)
2007/11/12 - [Hot Issues] - Web App Framework 전쟁이야기(2)
2007/11/12 - [Hot Issues] - Web App Framework 전쟁이야기(3)
2007/11/17 - [Hot Issues] - Web App Framework 전쟁이야기(4)

새롭게 원격 블러깅 툴을 ecto라는 이쁜 툴로 바꿨는데 쩝..아직 익숙하지 않아서인지  작성이 완료된 마지막 글을 모두 날려 버렸습니다. 우울. 하여간 빨리 마무리를 하고 연말 준비를 해야 겠습니다. 다음 주에는 해외 출장도 있고..돌아오면 발표도 있고..무지하게 바쁜 한주가 될 것 같습니다 ^-^ .

마지막으로 이전 글에서의 정리한 내용들을 기반으로 하여 WAF를 분류하고 마지막으로 저만의 결론을 좀 정리해 보겠습니다.

1.WAF 분류

현재 제공되고 있는 WAF의 수는 무지하게 많습니다. 이 모든 것을 속속들이 살펴보고 이의 장.단점만을 분석하는 것도 족히 논문 주제꺼리라고 생각합니다. 어떻게 분류를 해 볼까 고민을 하다 크기 2가지로 분류를 해보기로 했습니다 - MVC 모델, 요청 처리 방식.

1.1 MVC 모델에 따른 분류

- M(model only):JavaBean/JDO(Java Database Object)/Hibernate/iBatis/...
개발자에게  관계형 DB를 손쉽게 다둘 수 있는 모델 기능을 제공합니다. 가장 범용적으로는 자바 빈에서 부터 JDO, 그리고 국내 개발자들이 많이 이용하는 자카르타 Hibernate와 iBATIS가 있습니다. 제 주변에서는  iBATIS를 선호하는 개발자가 많습니다. 아마 SQL에 익숙하며 DBA를 통해 Query 최적화 등이 가능하기 때문인 것 같습니다.

- V(View only-Template engine) : Velocity/FreeMarker/WebMacro/JSP/...
템플릿 엔진이라고도 합니다. 처리된 결과의 뷰를 작성하고 사용자의 요청된 폼을 분석하고 레이아웃 등을 관리하며 심지어 여러 다양한 언어의 뷰를 만들어 주기도 합니다. 가장 일반적으로는 JSP를 많이 사용하지만 Velocity가 다양한 프레임웍과 통합되어 많이 이용됩니다.

- C(Controller Only-Front controller) :Struts(ActionServlet)/...
컨트롤러 개발시 주로 이용되어 페이지 컨트롤로나 프론트 컨트롤러 등 MVC  호출 패턴을 손쉽게 구현하게 해줍니다. 현재  Structs가 애용되고 있습니다. 개발자는  Struts  의 ActionServlet을 구현하여 프론트 컨트롤러를 손쉽게 구현할 수 있습니다.

- MVC
 MVC 모델이 경우 컨트롤러가 처리된 결과를 뷰에게 전달하는 푸쉬 모델과 반대로 뷰에서 사용자의 요청 처리를 위해 필요한 데이타를 복수 개의 컨트롤러에게 요청하여 받아처리는 풀 모델로 구분할 수 있습니다. 다음은 이에 따른 분류입니다.

 Push MVC : Struts,Spring MVC,...
 Pull MVC : Tapestry,JBossSeam,Webwork,Struts2(Struts+WebWork)

- MVC+Component : JSF,Shale(+Spring),...
MVC 기반에 하에 컴포넌트 모델을 지원하는  WAF 으로 JSF와 구현체로 자카르타 Shale 등이 있습니다.


1.2 요청 처리 방식에 따른 분류

사용자의 요청을 처리하는 방법에 따라 WAF 을 분류할 수 있다.

- Request-based Framework
먼저 요청 기반 프레임웍은 컨트롤러가 액션을 이용하여 사용자의 요청을 처리합니다. 대부분의 WAF가 이러한 프레임웍을 제공하며 대표적으로는  Struts , Webwork(Struts2) , Beehive , Stripes가 이에 해당됩니다.

- Component-based Framework
컨트롤러와 액션을 통해 사용자의 요청을 처리하는 방법이 아니라 컴포넌트와 이에 대한 액션에 기반하여 처리합니다. JSF , Tepestry , Wicket이 이에 해당됩니다.

- Hybrid ::Request&Component Framework
상기 2개의 모델을 함께  제공합니다.  Spring , RIFE 등이 이에 해당됩니다.

2. 주요 WAF의 개반 패턴 정리
다음은 주요한   WAF의 개발 패턴에 따른 주요한 내용을 간략히 정리해 보았습니다.

사용자 삽입 이미지


3. 선택의 중요성
-신중이  WAF를 선택해야 합니다.
-왜냐하면 , 한번 선택된  WAF는 변경하기 어렵기 때문입니다.
-주변에는 아직도 Editor로 개발을 하는 개발자가 많지만......
-아직도 WAF를 사용하지 않는 것은 어리석은 것입니다.
-또한 선택한 WAF를 제대로 사용해야 합니다.

제가 정리를 하면서 추천하고 픈 의견은 다음과 같습니다.
현재 국내 많은 자바 개발자 분들께서는 주로 Struts를 많이 사용하십니다.  그렇다면 지금부터 Struts2로 전환을 추천 합니다. 그런데 이 과정은 기존 Struts를 업그레이드하기 보다는 기존의 컨트롤러 프레임웍 위주의 Struts를 웹 개발의 전체 과정을 지원하는 새로운 플랫폼으로 전환하는 것이라고 봐야 할 것 입니다. 그리고 새롭게 프레임웍 채택을 고민하신다면  JSF표준을 추천하고 싶습니다. 물론 Struts2/Spring같은 멋진 프레임웍도 있지만 표준이라는 점과 컨포넌트 기반의 웹 개발, 더우기 visual IDE와 함께 사용할 경우 높은 생산성을 얻을 수 있습니다. 그리고 개발하기도 기존의 프레임웍보다 쉽습니다. 특히,  Struts2가 컴포넌트 기반의 태그를 지원하기 때문에 종국에는 JSF표준을 수용하리라 예상됩니다.  가령, 현재 진행되고 있는 Shale 등을 통합하면 비로서 표준화된 WAF로 우뚝 설 수도 있겠죠^-^. 그리고 웹 개발에 있어 폼 처리는 아주 중요한 부분입니다. 따라서 XForm을 주의  깊게 보아야 합니다. 현재 표준화가 되었기에 조만간 널리 사용될 것 입니다.  XForm에 대해서는 올 5월에 올린 글들에서 자세히 설명했으니 참조하기 바랍니다.

마치면서....
처음 작업을 할 때 검토할 자료들이 너무 많아 무척 애를 먹었습니다.  그러나 저로서도 정리를 하면서 많은 것을 배울 수 있었던 좋은 기회였던 것 같습니다. 모쪼록  제가 정리한 글중에서 잘못된 것이 있을 수 있습니다. 특히, 제가 하드코딩을 하며 모든 기능과 패턴을 검증하지 않았기에 더욱 그러할 수 있습니다. 이런 부분은 여러분께서 의견을 주셔서 보다 정확한 정보들이 공유되었으면 합니다.

개발자 여러분! 행복하세요.

Posted by 박재현
,

지난 번까지  WAF에서 제공하는 주요한 모델들에 대해 살펴보았습니다. 이번에는 간략히 WAF에서 제공하는 주요 컴포넌트(서비스)들을 살펴보고 이들을 기준으로 WAF 분류해 보겠습니다. 이들 기본 컴포넌트들은 Wiki에서 여러 개발자들이 올린 것들입니다.

- MVC 모델 지원(지난 번에 자세히 보았죠^-^)
- Ajax  연동(말이 필요없을 것 같습니다.^-^)

- 국제화와 지역화
  다국어 처리와 다양한 리소스 번들 처리는 번거롭지만 반드시 발생하는 작업입니다. 이러한 작업의 편의를 위해 많은 WAF이 국제와와 지역화 서비스를 기본적으로 제공하고 있습니다. 가령,  국내 개발자들이 많이 사용하는  struts 를 보면 리소스를 초기부터 분리하여 다국어 처리 등을 손쉽게 해줍니다. 미리미리 리소스를 정리해 두지 않으면 나중에 무지하게 고생을 합니다.

- O-R 매핑
관계형 DBMS를 객체로 매팅시켜 주는 서비스입니다. 국내에서는  SQL을 XML 로 매핑시켜 사용하는 방식인 iBatis 를 많이 사용합니다만 , 외국에서는 Hibernate 를 많이 사용하는 데 XML로 테이블을 클래스를 매핑시키는 방법을 사용합니다. 이외에도 JPA(Java Persistence API)를 사용하는 개발자도 많다고 합니다. JPA에서는 Java Persistence Query Language (JPQL)를 자바 언어로 만들어서 직접 관계형 DBMS를 다룰 수 있게 해 줍니다. 국내에서는 거의 이용하지 않는 것 같습니다.

- 테스팅 프레임웍
Junit같은 테스팅 프레임웍을 함께 사용하여 단위 테스트를 수행합니다. 가급적 이클립스 등  생산성 높은 IDE와 함께 테스트과 프로파일링을 하는 게 좋습니다.

- 보안 프레임웍
많은 개발자들이 보안을 기본적으로 제공해야 할 주요한 기능으로 보는 것 같지는 않습니다. 또한 아쉽게도 보안을 강력하게 제공하는 WAF도 아직 존재치 않습니다. 가능한 방법으로 J2SE의 일부 패키지이자 Java2 Security에서 제공하는 JAAS(Java Authentication and Authorization Service)-java.security.auth*와 JSSE,JCA를 사용해서 사용하는 방법이 있습니다.  JAAS를 이용하면 접근권한과 로그인 제어 등을 손쉽게 할 수 있고  JSSE는 SSL을 통한 네트웍 보안, JCA는 암호화 기능을  이용할 수 있습니다. 물론 관련 정보는 DBMS를 통해 처리됩니다. 처음  개발하시는 분들에게 도움이 될 것 같습니다.

- 템플릿
템플릿은 기본적으로 View 부분의 손쉽게 개발해줍니다. 대표적인 것이 바로  JSP 입니다. 이외에도 Velocity,FreeMarker,WebMacro 등이 템플릿 전용 프레임웍입니다. 이들 전용 프레임웍외에 많은 WAF에는 내부에 템플릿 지원을 지원하고 있습니다. 가령, Struts는 템플릿으로 자카르타 Tiles 프레임웍을 함께 제공하고 있습니다.

- 폼 밸리데이션
사용자가 제출한 입력 데이타의 무결성을 점검하는 것은 아주 중요하지만 번거로운 일입니다. 이 작업을 손쉽게 해주는 컴포넌트가 바로 폼 밸리데이터입니다. 일반적으로 기본적인 밸리데이터를 제공하고 사용자가 직접 밸리데이터를 작성하여 사용할 수 있도록 합니다. 대표적으로 Struts에서는 Jakarta Common의 Validator를 기본으로 제공합니다.

- 캐싱
많은 개발자들이 성능 개선이나 보안 등의 이유로 캐싱 기능을 원하는 것 같습니다. 개인적으로는 특별한 이유가 아니면 필요하다고는 생각치 않습니다. 그러나 만약 필요하다면 JCS(Java Caching System) 컴포넌트를 함께 이용하는 것도 방법입니다. 기본적으로 파일 캐싱과 오브젝트 캐싱을 제공합니다. 그런데 제 경험상 버그가 좀 있었던 것 같은데.. 오픈소스라 지금은 좀 개선됐을 수도 있을 것 같습니다.


다음은 위키에서 많은 개발자들이 위의 분류에 위해  분류한 WAF에서 자바 언어만을 정리한 표입니다. 아래 표에서 테라코타는 인도의 회사인데 캐싱을 통해 성능 개선을 하는 기술이 아주 좋은 회사입니다. 2006년 자바월드에서 만난 경험이 있습니다^-^.

사용자 삽입 이미지

힘이 들어서 한번 끈고 가야할 것 같습니다. 이번 달은 무지 하게 바쁜 달이 될 것 같습니다. 벌어지는 사업 지원만 해도 참 많네요. 거기다 사람같이 않은 사람이 다시 저를 괴롭히기 시작해서 참 힘드네요..


Posted by 박재현
,

지난 번에 이어서 WAF 의 전쟁 이야기를 계속해 봅니다.  WAF의 분류를 위해서는 크게 2가지 관점에서 이해가 필요합니다. 하나는  WAF에서 사용하는 주요한 모델(패턴)들에 대한 이해이고 다른 하나는 공통으로 제공하는 컴포넌트(서비스)에 대한 이해입니다.  모델은 일반적으로 프로그램에서 인터페이스와 상속 등의 관계를 통해 해당 문제를 해결하기 위한 방법을 강제하게 해 줍니다. 또한 컴포넌트는 웹 개발에 필요한 각종 라이브러를 제공합니다.

그럼 먼저 현재 WAF에서 사용하는 주요한 모델들에 대해 좀 정리해 보겠습니다.

1. WAF에서 사용하는 주요한 모델들

1.1 MVC(Model-View-Controller) 모델 
일반적으로 MVC 모델은 사용자 인터페이스와 액션을 받아 들이는 View와 해당 응용의 데이타 모델과 이에 대한 조작을 담당하는 Model, 그리고  View를 통해 전달된 사용자의 액션을 처리하고 실제 모든 비지니스 로직을 담고 있는 controller로 구성됩니다.

사용자 삽입 이미지

흔히 MVC를 모델1, 모델2라고 구분합니다. 이는 JSP,ASP 처럼 View를 담당하는 페이지에, Controller부분을 포함할 것인가 아닌가에 따라 구분됩니다. 가령, 모델1은 하나의 JSP 페이지에 View와 Controller가 포함된 것이고 모델2는 JSP에는 View만 두고  Controler는 분리하는 것 입니다. 당연히 모델2가 모델1에 비해 의존성이 떨어지기 때문에 유지보수와 확장이 용이하며 재사용성 등 많은 장점들을 갖고 있습니다. 현재 대부분의  WAF는 모델2 MVC 패턴을 사용하고 있습니다.

모델1,모델2외에  Push& Pull model을 이해해야 합니다. 이 모델에 따라 WAF의 개발 방법이 많이 달라지기 때문입니다. 먼저 Push model은 초기 WAF에서 주로 채택했던 방법으로 사용자의 요청에 의해 처리된 결과를 View에 밀어 넣는(push)하는 방법입니다. 이에 반해 Pull model은  View에서 다수의 controller로 부터 필요에 따라 처리 결과를 땡겨(pull) 오는 것 입니다. Pull model은 View에서 마치 필요한 컴포넌트를 호출하여 처리하는 방식이 가능하기 때문에 이를 컴포넌트 MVC 라고도 부릅니다. 최근에 발표된 많은 WAF는 pull model을 사용합니다. 이 말은 이제 대세가 과거 데스크탑에서 비쥬얼 베이직이나 자바 스윙 컴포넌트를 사용하여 응용 프로그램을 개발하는 것과 동일한 방식과 철학으로 웹 응용 개발이 가능하다는 것을 말합니다. 나중에 보겠지만 실제  JSF (Java Server Face) 표준은 이러한 것을 규정한 개발 표준입니다.

-PageController VS  FrontController 모델

수많은 클라이언트의 요청을 효과적인 처리는 WAF 에 있어 가장 첫번째 중요한 과제입니다. 이러한 상황에서 취할 수 있는 2가지 모델이 있습니다. 하나는  PageController로서 모든 클라이언트 요청을 PageController가 받은 후 처리하는 것 입니다. 초기 대부분의 웹 응용 프로그램을  PageController 방식으로 개발했습니다. 이 방법의 문제는 클라이언트의 요청이 많을 경우 부하 걸린다는 것이고 하나의 페이지마자 하나씩의 PageController를 만들어야 한다는 것 입니다.

사용자 삽입 이미지

PageController의 중앙부하집중 문제점을 해결한 방식이 바로 FrontController입니다.  FrontController에서 controller는 핸들러와 복수개의 커맨드로 구현됩니다. 이렇게 함으로써 부하 집중 문제를 풀 수 있습니다.

사용자 삽입 이미지

실제 현재 모든  WAF 에서 이 모델을 사용하고 있습니다. Structs에서는 ActionServlet, WebWork에서는 ServletDispatcher , Spring MVC 에서는 DispatcherServlet, Tapestry 에서는 ApplicationServlet, JSF 에서는 FacesServlet이 바로 FrontController  패턴으로 클라이어트의 요청을 처리합니다.

생각보다 길어 지네요.. 아무래도 2,3 편은 족히 더 써야 할 것 같습니다. 다음 편에는 WAF 에서 제공하는 주요 서비스들에 대해 살펴보겠습니다.

Posted by 박재현
,

지난 번 1편을 쓴 이후에 한 분께서 현재 쓰고 있는 WAP가 자바 언어에 대한 WAP에 대한 것이라는 지적이 있으셨습니다. 결론은 맞습니다. 제가 정리하고자 하는 것은 JWAP에 대한 것 입니다. 여러 이유가 있겠지만 먼저 현재 나와 있는 WAF중 자바 WAF 가 가장 널리 사용되고 있기 때문입니다. 또한 제가 제일 잘 이해하고 있는 분야이기도 하구요...^-^ 현재  WAF 의 언어별 숫자는 다음과 같습니다.

 ASP.NET : 2 ,  ColFusion : 4 , Perl : 5 , Ruby : 7 , Physon : 12 , PHP : 15 , Client-Side : 18 , Java 25
- 출처 위키 : http://en.wikipedia.org/wiki/List_of_web_application_frameworks

그런데 중요한 것은 WAF 가 언어에 따라 엄청나게 다른 것이 아니라는 것 입니다. 물론 차이점이 없다는 것은 아니지만 웹을 개발하는 데 있어 필요한 프레임웍이 모여 있어 이를 이용할 경우 개발자의 생산성이 높아진다는 공통점이 있습니다.

WAF를 이해하기 위해 먼저 S/W 아키텍쳐 - S/W 프레임웍 - S/W 패턴의 관계를 정확히 이해하는 게 중요합니다. S/W 아키텍쳐는 S/W를 개발하는 데 있어 뼈대가 되는 근간 모델을 말합니다. 만약 이를 웹 S/W에 적용한다면 OS - TCP/IP 네트웍 - 자바 이런 식의 참조 모델을 의미할 수도 있고 , 분산 객체 기반의 웹S/W의 경우 CORBA 같은 아키텍쳐를 들 수 있을 것 입니다. 이러한 아키텍쳐하에서 실제 S/W를 개발하다 보면 유사한 문제에 대한 공통적인 해결 방안을 얻을 수 있습니다. 가령, 클라이언트의 요청을 받고 이를 처리하는 PageController 나 널리알려진  MVC 모델 등을 예로 들 수 있습니다. 이러한 웹 개발에 있어 얻은 경험을 바탕으로 반복해서 발생하는 문제를 해결하기 위한 권고안이 바로  S/W패턴입니다. 정답이 아니라 권고안이기 때문에 실제 적용은 개발자의 몫이긴 합니다. 웹 개발에 있어 공통적으로 발생하는 문제들의 해결 패턴들을 하나의 라이브러리로 정리하여 개발에 있어 공통으로 적용하는 것이 바로 웹 개발 프레임웍(WAF)입니다. 따라서 자바로 개발을 하든, 루비로 하든 기본적으로 WAF는 웹 개발에 있어 필요한 공통의 사안이 지원돼야 합니다.  바로 이러한 것들의 차이가 WAF 의 차이라 할 수 있습니다. 언어보다는 패턴과 프레임웍상의 기능 차이가  WAF를 평가하는 주된 기준이라 보는 게 더욱 소프트웨어 개발을 즐기는 시야일 것 입니다.

아키텍쳐 - 프로그램 혹은 컴퓨팅 시스템의 소프트웨어 아키텍처란, 소프트웨어 컴포넌트, 이들 컴포넌트의 가시적인 속성, 그리고 컴포넌트 사이에 관계로 구성된 시스템의 전체적인 구조를 말한다. Bass, Clements, Kazman, 1998

WAF - 웹 응용 프로그램와 서비스 등을 개발하는 데 필요한 공통의 컴포넌트를 제공하여 개발자의 오버헤드를 덜어주고 개발과 유지보수 상의 생산성을 높여주는 프레임웍. - Jhpark, 2007( 접니다. ^-^)

이제  WAF 에 대한 정의가 끝났다면 , 다음으로는  WAF 를 이해하기 위해  WAF 에 적용되는 여러 유용한 패턴들에는 무엇이 있을까요?

하나 , MVC(Model-View-Controller) 모델  :  모델 1, 모델2 , Push& Pull model
둘, Page Controller VS  FrontController 모델
셋 ,  Request  based VS Component Based  모델

이들 패턴들외에 WAF 에는 개발자들에게 유용한 공통의 컴포넌트들을 제공합니다. 이들 공통 컴포넌트로는  Ajax 프레임웍 지원, i18n(internalization) & l10n(localization), O-R mapping , Testing , Security , Template & Form validation , Caching 등 을 들 수 있습니다.  다음은 위의 기준으로 정리한 자바 WAF를 정리한 표 입니다[위키참조].

사용자 삽입 이미지
 
다음에는 위의 패턴들과 공통 컴포넌트를 이해하면서  WAF를 다양한 기준으로 분류해 보겠습니다.


Posted by 박재현
,

웹 애플리케이션 개발자에게 가장 큰 곤욕은 알아야 할 게 너무 많다는 것일 것 입니다. 운영체제는 기본이고 네트웍, 특히 웹 거기에 자바 언어, 서블릿, JSP 등을 숙지해야 하며  DBMS 관리, 세션 및 권한 관리 등 시스템 기반 기술과 더불어 최근에는 HTML과  CSS, Aajx 등도 알아야 어디가서 웹 개발자라고 명함을 내밀 정도가 되었습니다.

이러한 개발자들의 노고를 덜어 주고자 나온 것이 바로 웹 개발 프레임웍(WAF, Web Application Framework)입니다. 그 간 웹 개발을 하며 얻은 노하우( 일반적으로 소프트웨어 패턴이라고 하죠)를 하나의 체계적인 프레임웍으로 만든 것 입니다. 현재 상황이 이러다 보니 개발자들입장에서 거의 대다수가 WAF를 하나 이상 사용하고 있습니다.  그런데 문제는 WAF가 너무 많아 현재 프로젝트나 상황에 적합한 것을 고르기가 만만치 않을 뿐만 아니라 , 새로운  WAF를 배우고 익히는 게 무척 부담스러운 일이기 때문입니다.

짬짬히 WAF 에 대해 정리를 하던 차에 이달 29일에 개발의 성과를 좌우할 웹개발 프레임워크 최신 동향 및 선택 가이드라는 제목으로 발표를 하게 되었습니다. 그런데 정리를 하다 보니 생각보다 참 봐야 할 것이 너무 많아 곤욕스럽습니다. 정리를 하며 발표에는 시간상 자세히는 소개하지 못하지만 중요한 것들을 좀 재미나게 소개해 보겠습니다.

1. 얼마나 많은 WAF가 있을까?

http://en.wikipedia.org/wiki/List_of_web_application_frameworks , WAF 종류
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks,  WAF 비교

무지하게 많습니다. 위의 자료를 보면 100여 종류가 넘습니다. 저도 듣도 보다 못한 것들이 있는데 더욱 중요한 것은 여러 곳에서 , 여러 이유에서 사용되고 있다는 것 입니다. 그리고 이들 역시 치열한 경쟁을 통해 사라지거나 합쳐지면서 발전하고 있다는 것 입니다. 지금 사용하고 있는 WAF가 몇개월 후에는 사라져 있을지도 모르니까요..

2. 개발자들은 어떤 WAF 를 사용하고 있을까요?

사용자 삽입 이미지

사용자 삽입 이미지

왼쪽의 투표 결과는 개발자를 대상으로 한 조사 결과입니다.

현재 , 템플릿 프레임웍으로는 JSP를 가장 많이 사용하고 있고 이어서 JSF가 사용되고 있습니다.

그리고 클라이언트의 Request를 받고 이를 처리하는 컨트롤러로는  Struts가 가장 각광을 받고 있고 이어서 Spring MVC가 뒤를 따르고 있습니다.(참고로 해당 투표를 진행한 사이트가  Spring입니다^-^)

마지막으로 스프링과 가장 많이 사용되는 오픈소스 서버로
사용자 삽입 이미지
는 톰캣과 Model 층의  서버인 Hibernate였습니다.

3.  WAF 의 선택은 생산성을 선택하는 것이다.

WAF는 웹 개발에 있어 개발자들의 생산성을 높이기 위해 개발된 것이기에 이의 선택은 아주 중요합니다. 

앞으로 몇번에 걸쳐 WAF에 대해 살펴보면서 가장 최선의 방법을 찾아 보도록 하겠습니다(WAF 는 자바 기반의  WAF 를 말합니다).

다음 주제는 WAF의 분류 입니다. 다양한 WAF 를 분류해 보겠습니다.


Posted by 박재현
,