'웹 애플리케이션'에 해당되는 글 2건

  1. 2007.11.21 Web App Framework 전쟁이야기(4)
  2. 2007.03.29 2007 Web 2.0 korea 발표 후기 (3)

지난 번까지  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 박재현

댓글을 달아 주세요


오늘 삼성동에서 열린 web2.0 korea 2007에서 "웹 플랫폼상에서의 애플리케이션 개발,관리"에 대해 발표를 했습니다. 300명이 넘는 분들이 참석하여 오랜만에 후끈한 열기를 느낄 수 있는 자리 였습니다.

사용자 삽입 이미지
포탈 업체에서 부터 웹 에이전시, 그리고 일반 업체의 웹 관련된 분들까지 다양한 곳에서 다양한 연령층의 분들이 모인 자리이고 모두 비싼 컨퍼런스 비용을 내고 참석하시는 분들이라 사실 여간 준비하면서 신경을 부쩍 쓴 컨퍼런스 였습니다. 물론 모든 발표때 마다 고민을 합니다. ^-^ 가급적 실제 실무 개발시 고민해야 할 사안들에 대해 정리해 보았습니다.

웹 플랫폼은 한마디로 웹 브라우져, 웹 서버 기반의 애플리케이션을 개발하여 H/W, OS 등과 무관하게 어디에서나 이용하게 하자는 것 입니다. 이러다 보니 실제 웹 애플리케이션은 웹 서버와 웹 클라이언트의 기술과 제약에 영향을 받습니다.  특히, 웹 브라우져가 더욱 영향이 크다 할 수 있습니다. 실제  그간 웹 브라우져는 단순히 HTML을 서버로 부터 받아와 뷰잉하는 역할이었습니다. 그러나 이러한 소즉적인 기능에서 벗어나 현재 웹 브라우져는 Ajax, DOM ,CSS, Flash, Java Appet 등 다양한 기술을 사용하여 동적인 메뉴 구성와 출력이 가능해졌습니다. 이러한 기술을 효과적으로 사용하기 위해서 7가지 기본 가이드와 아키텍쳐 패턴을 정리해 보았습니다.

1. Dynamic User interface
2. Real time event-driven programming

3. Light weight MVC programming on client side

4. Server is headless & open API serverp

5. Apply the agile web platform

6. Light weight system architecture6. Light weight system architecture

7. Software As A Service(SAAS)

그러나 현재에도 여러 제약들이 존재하고 있습니다.

- Offline 지원
- 대용량 데이타 처리

이러한 문제를 해결하는 방법은 현재로서는 웹 브라우져상에서 사용가능한 스토리지를 활용하는 것 입니다.

현재 웹 브라우져 상에서 이용할 수 있는 스토리지로는 Flash의 Local storage , IE의 userData behavior, FF의 DomStorage 등이 있습니다. 그러나 이들 스토리지는 작게는 1M에서 최대 10M 이상은 지원되지 않습니다.

따라서 이들 저장공간을 효과적으로 이용하기 위한 방법이 필요합니다. 씽크프리에서는 과거 DOS 시절에 많은 워드 프로세서 들이 사용했던 방법을 도입하여 이를 해결하였습니다. 과거 기본 메모리가 640K에 확장 메모리가 2M가 채 되지 않던 시절, 어떻게 10M가 넘는 파일을 편집하고 처리할 수 있을까요? 바로 여기에 아키텍쳐 그리고 운영체제 등의 기술이 필요합니다.

자세한 내용은 제 강의 자료를 참조해 주십시요.


제가 강조하고 싶은 부분은 사회를 이해하기 위해 역사를 공부하듯 아무리 현재가 웹 플랫폼 시대이지만 과거 DOS나 터미널 서버 시절의 기술들도 이해해야 하며 특히, 애플리케이션의 구조와 그에 따른 장.단점 들은 잘 파악하고 있어야 한다는 사실입니다.

저는 코더와 개발자는 다르다고 생각합니다. 코더는 말 그래로 주어진 스펙에 맞춰 코딩을 하는 사람이고 개발자는 주어진 문제를 풀기위해 최적화된 방법을 찾고 이를 해결해 나가는 사람이라고 생각합니다. 간혹 사람들이 이런 말을 합니다. "사람은 많은 데 쓸만한 사람은 없다." 현재 상황이 이런 것 같습니다. "코더는 많은 데 쓸만한 코더(개발자)가 없다." 모두 코더가 아니라 개발자가 되길 기원합니다.
 
저는 Web2.0이니 Enterprise2.0 이나 하는 것이 다분히  마케팅적이고 비지니스적인 욕구에 의해 만들어진 것임을 잘 이해 합니다. 물론 이러한 것들이 없는 것을 만들어 낸 것은 아닙니다. 그러나 좀 걱정스러운 것은 기본과 본질을 이해하려는 노력없이 유행만을 추구한다면 결국 이를 따라가다 지치게 될 것이라는 사실입니다.

이 짓을 오래하다 보니 돌고도는 기술을 보면서 느끼는 것을 주절주절 정리해 보았습니다. 저는 내일 제주도에 한국 커머스넷 춘계 Conference에 패널로 참가를 합니다. 모처럼 생각도 정리할 겸 그곳에 아는 지인들도 만날 겸 좋은 자리가 될 것 같읍니다.



 




Posted by 박재현

댓글을 달아 주세요

  1. Favicon of http://taoism.tistory.com BlogIcon 타오 2007.03.29 23:35 신고  댓글주소  수정/삭제  댓글쓰기

    발표하시느라 수고하셨어요^^ 글 잘보고 있습니다~

  2. 박재현 2007.03.30 17:51  댓글주소  수정/삭제  댓글쓰기

    별말을...수고

  3. 철이 2007.04.10 13:21  댓글주소  수정/삭제  댓글쓰기

    좋은 글 잘~ 읽고 가네요~