지식경제부는 디지털 컨버전스시대에서 SW시장의 새로운 블루오션으로 떠오르고 있는 임베디드SW와 공개SW분야를 본격적으로 지원할 수 있는 전략적 프로그램을 마련했다고 13일 밝혔다.

이는 과거 국내 임베디드SW산업이 주로 IT기기에 한정됨에 따라 제조업 등 주력산업과 융합이 제대로 되지 못한 한계를 극복하고, SW개발이 인터넷 이용 확산으로 폐쇄형에서 공개·참여 형식의 개방형 개발방식으로 변화하는 추세에 부응하기 위한 것이라고 지경부는 전했다.

임베디드·공개SW 글로벌 경쟁력 보유 불구 체계적 지원 부족
그동안 임베디드와 공개SW분야는 일부 글로벌 기업이 대부분을 차지하고 있는 시장구조에서 국내 기업이 글로벌 기업과 경쟁이 가능한 전략 산업임에도 불구하고 적극적이고 체계적인 지원이 부족했다.


임 베디드SW 분야의 경우 제조업 등에 새로운 기능을 부가해 SW산업과 주력산업이 지속적으로 동반 성장시킬 수 있는 성장동력임에도 불구, 자동차·조선 등 국내 수요기업은 대부분 외산SW를 탑재하고 SW기업은 특정분야의 임베디드SW에 편중돼 있다는 점이 문제점으로 지적돼 왔다.

공개SW 분야는 IT제조업·포탈·인터넷쇼핑몰 등 다양한 분야에서 기본·부가 기능 구현을 통해 SW 개발기술의 내재화와 SW기술 경쟁력 확보가 가능하나, 어플리케이션·호환성 등이 부족해 PC OS와 미들웨어는 대부분 외산 상용SW를 사용하고 있다.

이번 정책은 국산 임베디드SW와 자동차․모바일 등 주력산업간 융합, 공개SW 역량 강화 등을 통해 전통시장(패키지SW 등)에서 벗어나 새로운 시장을 창출하는 데 주안점을 두고 있다.

임베디드SW, 인프라 조성·신시장 창출 지원해 선순환 구조 형성
임베디드SW 분야의 경우 개발과 융합 제품 등을 위한 인프라 조성, 신규 시장 창출 지원 등을 통해 SW산업 생태계의 선순환 구조를 형성한다는 전략이다.


먼저, 주력 제조업 등과 SW융합을 위한 대규모 융합제품 상용화지원 등을 통한 민간의 융합역량 강화를 위해 이 부문 지원금액을 지난해 357억원에서 올해 684억원까지 확대한다.

또, 구매조건부 제품개발 시범사업 등을 통한 수요-부품-SW기업간 유기적 협력 생태계 조성을 위해 올해 7억원을 지원하고, 수요-부품-SW기업이 공동 참여하는 인력교차교육, 테스트베드 지원 등을 위한 ´SW융합지원센터´ 설립에 20억원을 투자한다.

이와 함께, 임베디드SW 기술의 신뢰성 검증 방법론과 인증체계를 마련, 국산 임베디드SW 제품의 성공적인 국내외 시장진입도 지원한다는 계획으로, 올해 중 차량 전장시스템 안전 공정기술 방법론(ISO 26262) 개발이 예정돼 있다.

지원 대상으로는 세계시장점유율도 높으면서 당장의 지원 효과가 기대되는 전략산업을 우선 집중 지원한다는 전략 하에 단기적으로는 기업체 위주의 상용화 개발지원에 치중하면서 장기적으로 세계시장 진입을 위해 핵심 SW플랫폼과 응용SW를 개발할 계획이다.

휴대폰용 SW플랫폼의 경우 안드로이드·심비안 등에 필적하는 플랫폼 개발이 이뤄지도록 집중 지원할 계획이다.

또, 세계시장 점유율 확대에 나선 국내 완성차와 부품 업체들의 수출 경쟁력 확대에 기여할 AUTOSAR SW 플랫폼 등 자동차SW 분야도 지원한다는 방침이다.

공개SW, 국내 사용분야 확대·대표기업 육성·생산기반 강화 추진
공개SW 분야는 선진국의 SW기술 추격, SW산업구조 고도화 등을 위해 2011년까지 매년 단계별 정책을 통한 국내 공개SW 사용분야 확대, 대표기업 육성과 생산기반 강화를 추진한다.

먼저 1단계로, 올해 중 공개SW의 효과적 추진이 가능하도록 컨트롤 타워 역할을 수행하는 ´공개SW 역량센터´ 구축 등을 통해 공개SW 주도세력을 형성하고 SW지식기반을 확충할 계획이다.

이어, 2단계로 2010년에는 국방, 디지털 교과서·온나라 시스템, Smart Grid 등 공공분야 수요창출을 위한 대규모 프로젝트 추진과 타산업 분야와의 연계를 통한 공개SW 사용분야 확대를 추진한다.

3단계로, 2011년에는 국내 대표 공개SW 솔루션·서비스 제품·SI기업 육성, 해외시장 진출을 위한 분야별 기반 조성 등을 통해 공개SW G7 국가 진입을 노린다는 전략이다.


이번 임베디드SW와 공개SW 정책은 과거 SW산업의 양적 성장패러다임에서 벗어나 신규 시장·비즈니스 모델·고부가가치 창출 등 SW와 주력산업의 질적 수준을 제고하는 계기가 될 것으로 기대되고 있다.

지경부 관계자는 "임베디드SW 지원은 과거 정보가전·통신 등 IT기기에서 우리나라가 경쟁력을 보유한 자동차·조선 등 전체산업 도메인에 확대 적용돼 산업간 SW융합이 본격화될 것"이라고 말했다.

이 관계자는 또, "공개SW 활성화는 신뢰할 수 있는 공개SW 공급처와 신규 수요 창출 등을 통해 자생력 있는 공개SW 산업기반 확충이라는 효과를 낳을 것"이라고 덧붙였다.
박영국 기자 24pyk@ebn.co.kr

http://starple.com  서비스에 사용된 내용에 대한 자료


JEUS 운영 및 관리

JEUS 5.0을 버전을 기준으로 하고 설치시 입력한 JEUS 관리자의 비밀번호는 jeusadmin이라고 전제한다.

JEUS 구동

주로 jboot, jdown이란 이름으로 스크립트를 작성하여 실행한다. 이 파일들의 실제 명령행은 다음과 같다.

  • jboot: jeus -Uadministrator -Pjeusadmin
  • jdown: jeusadmin -Uadministrator -Pjeusadmin jeusexit

jeusadmin console

jeusadmin 콘솔툴을 이용하여 JEUS 컨테이너기동/종료, 엔진리스트확인 등 JEUS 엔진의 상태를 제어 및 점검한다.

  • 콘솔 실행: jeusadmin 'hostname' -Uadministrator -Pjeusadmin
  • 명령 목록
    • allenglist: jeusadmin의 allenglist 명령은 현재 각 컨테이너의 엔진기동 상태를 보여준다.
    • downcon <container-name>: 지정된 컨테이너를 종료시킨다.
    • startcon <container-name>: 지정된 컨테이너를 기동시킨다.
    • pidlist: JEUS의 엔진 프로세스를 확인한다.

webadmin console

webadmin 콘솔은 JEUS의 컨테이너 내부에 기동된 서블릿 엔진의 상태를 모니터링하기 위한 명령프롬프트이다.

  • 콘솔 실행: webadmin <container-name> -Uadministrator -Pjeusadmin
  • 명령 목록
    • ti: ti는 Thread Information의 약자로 JEUS 서블릿 엔진의 컨텍스트그룹 내부의 Worker Thread의 상태를 체크하기 위한 명령어이다.
    • st -m: 현재 Container의 JVM Memory 사용 현황
    • st -r: 설정한 Context로 들어온 요청 count와 평균처리시간
    • st -s: 현재 유지하고 있는 세션 객체의 수

webadmin 반복 모니터링

webadmin 내의 모니터링 명령어를 주기적으로 자동실행하게 하려면 다음과 같은 형식으로 명령어를 실행한다.

  • <command> -i 주기(초) -k 횟수
  • 예) ti -i 2 -k 10 : ti 명령어를 2초 간격으로 10번 수행

dbpooladmin console

dbpooladmin 콘솔은 컨테이너별로 할당된 Database Pool의 상태를 모니터링하기 위한 명령프롬프트이다.

  • 콘솔 실행: dbpooladmin<container-name> -Uadministrator -Pjeusadmin
  • 명령 목록
    • Info: 해당 컨테이너에서 관리되고 있는 Database Pool의 정보가 표시된다.
    • min, max 값은 JEUSMain.xml에 설정한 Pool의 최소/최대값이며 current는 현재 풀에 보관되고 있는 실제 커넥션의 수, idle의 풀에 보관되고 있는 커넥션중, 사용가능한 개수를 의미한다.

JEUS 웹 관리자

http://hostname:9744/webadmin 로 접속하여 administrator/jeusadmin 계정으로 로그인한다.

사용자 삽입 이미지

JEUS 웹 관리자

JEUS 장애 처리

JEUS 프로세스ID (PID) 확인

JEUS의 엔진 프로세스는 다음과 같이 2가지 방법으로 확인할 수 있다.

  • ps -ef | grep java
    • -Xmx512m 이후 부분을 확인하여 JEUS Manager 프로세스임을 확인한다.
    • [-D컨테이너이름]을 이용하여 컨테이너 프로세스임을 확인한다.
  • jeusadmin 콘솔툴을 이용한 PID 확인
    • pidlist: pidlist 명령을 사용하여 PID를 확인한다.

JAVA Dump

  • 덤프 생성: kill -3 [JEUS-PID]
  • 덤프 확인: JEUS JAVA프로세스에서 생성한 덤프는 JeusServerLog에서 확인한다.
    • 예) vi $JEUS_HOME/logs/`hostname`/JeusServer_20070201.log
WebtoB 운영 및 관리

WebtoB 구동

  • wsboot
  • wsdown-I : ps -ef을 이용하여 wsm, hth, htl, html 등의 프로세스가 나타나지 않으면 정상 종료

wsadmin console

WebtoB 시스템을 관리하기 위해서 wsadmin이라는 프로그램이 제공된다. wsadmin 프로그램은 UNIX 환경의 shell과 비슷한 Command Interpreter 이다. 즉, 항상 프롬프트상태로 대기중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다. 여러 Node를 한 Domain으로 사용하는 경우 wsadmin으로 전체를 중앙관리가 가능하며 각 Node 별로 로컬에서만도 관리가 가능하다.

  • wsadmin
  • 명령 목록
    • ci: 요청에 대한 현재 클라이언트 정보를 표시한다. HTH당 접속한 클라이언트의 KeepAlive 되어있는 개수를 보여준다. WebtoB단에 요청을 보내고 HTTP Session의 KeepAliveTimeout 전까지 유지되고 있는 클라이언트의 총 개수 정보이다.
    • ci -s: 현재 클라이언트의 전체 수를 표시한다.
    • si: 웹서버 환경설정 파일에서 *SERVER 절에 선언한 서버들의 수행정보를 보여준다.
    • st -s: 웹서버 환경설정 파일에서 *SERVER, *URI, *EXT 절에 설정한 서비스의 상태가 보인다.
    • st -p: WebtoB 프로세스의 상태를 표시한다. 주로 JEUS-WebtoB간 연동 상태를 확인할 때 사용한다.

wsadmin 명령 연속 보기

ci, st -s, st -p, si 등의 명령어를 다음과 같이 수행하면 주기적으로 WebtoB의 상태를 모니터링할 수 있다.

  • r -i <시간(초)> -k <횟수> <명령>
  • 예) r -i 1 -k 1000 st -s
JEUS alias 설정

.profile 참고

...
export JEUS_HOME=/jeus
...
#### JEUS alias ####
alias ja='jeusadmin `hostname` -Uadministrator -Pjeusadmin'
alias ea='ejbadmin `hostname`_ejb_engine1 -Uadministrator -Pjeusadmin'
alias wa='webadmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias da='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin'
alias ti='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin ti -i 3 -k 100000'
alias ss='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -s -i 3 -k 100000'
alias sd='webadmin `hostname`_servlet_engine1 -Uadministrator -Pjeusadmin st -d -i 3 -k 100000'
alias di='dbpooladmin `hostname`_container1 -Uadministrator -Pjeusadmin info -i 3 -k 100000'

alias jcfg='cd ${JEUS_HOME}/config/`hostname`'
alias jbin='cd ${JEUS_HOME}/bin'
alias scfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_servlet_engine1'
alias ecfg='cd ${JEUS_HOME}/config/`hostname`/`hostname`_ejb_engine1'

alias jhome='cd ${JEUS_HOME}'
alias lhome='cd ${JEUS_HOME}/logs'

alias jlog='tail -f ${JEUS_HOME}/logs/`hostname`/JeusServer_`date +%Y%m%d`.log'
alias alog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/accesslog/access_`date +%Y%m%d`.log'
alias elog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/errorlog/error_`date +%Y%m%d`.log'
alias ulog='tail -f ${JEUS_HOME}/logs/`hostname`_servlet_engine1/MyGroup/userlog/user_`date +%Y%m%d`.log'

...
오늘 소개해 드릴 프로그램은 LogMeIn Hamachi란 프로그램입니다. 뭐 하는 프로그램인고 하니 방화벽 환경이나 공유기를 통한 환경에서 가상의 네트워크 망을 구축 해 주는 프로그램 입니다. 집이나 회사에서 프로그램 외 설정 없이 편리하게 내부 네트워크 망을 사용 하는 것처럼 사용하실 수 있습니다. 원격 데스크톱이나 네트워크 드라이브, 공유 프린터 등 포드 제한없이 가상 네트워크 그룹에 속한 사람들끼리 제한 없이 사용할 수 있습니다.

LogMeIn Hamachi는 상업용 라이센스와 비 상업용 라이센스를 제공합니다. 라이센싱 페이지를 참고하시고요. Windows와 Linux, OS X를 지원합니다. 초고수님이 한글로 번역해주셔서 한글로 편하게 사용할 수 있습니다.

LogMeIn Hamachi – 다운로드

Windows 기준으로 설명 드리도록 하겠습니다.

설치 화면


image


image

image

설치 경로와 시작 메뉴 그룹명을 지정합니다. Hamachi를 Wiodows 시작시 자동으로 시작하거나 바탕화면에 바로가기 아이콘을 만들지를 체크 하실 수 있습니다.

image

Hamachi를 사용하게 되면 구성되는 네트워크망 에서는 자신의 네트워크 자원을 모두 개방한다는 의미입니다. 보안에 신경 쓰이는 분들은 “Hamachi를 통해 취약한 Widows 서비스 사용 안 함”을 체크하세요.

image

Hamachi는 무료 버젼인 기본 버전과 유료 버젼인 프리미엄 버젼을 제공합니다. 두번째를 체크하여 프리미엄 버젼을 경험하신 후 기본 버젼을 사용하시거나 땡기시면 돈주고 프리미엄 버젼을 사용하세요. 기본 버젼과 프리미엄 버젼과의 차이점 페이지를 확인하세요.

image

다음을 누르면 Hamachi가 설치됩니다. 음… 이런 설치 진행창도 좋군요.

image

설치가 완료되었습니다!

image

설치가 완료되면 Hamachi에서 제공하는 Quick Guide가 반깁니다. 여기서 하라는대로 따라하면 큰 어려움 없이 Hamachi를 사용하실 수 있습니다!

그래도… 여기까지 적으면 너무 내용이 부실하기에…

image

왼쪽 아래 버튼을 사뿐히 눌러주세요. 그럼 설정 창이 나오고 별명을 지정할 수 있는데 기본값으로 자신의 컴퓨터 이름이 등록됩니다. 확인을 누르시면 위 이미지처럼 녹색 버튼이 생기면서 자신의 IP가 할당됩니다.

자 이제 자신의 네트워크를 구성해봅시다. 오른쪽 하단 첫번째 아이콘을 누르시면 “새 네트워크 만들기”와 “기존 네트워크에 가입” 메뉴가 보입니다. 자신이 네트워크를 구성하려면 새 네트워크 만들기를 클릭하시면 됩니다.

image

네트워크 이름과 암호를 지정합니다 .암호를 입력하지 않으면 아무나 들어오니까 보안에 문제가 되겠죠. 이제 자신이 만든 네트워크 이름과 암호를 같이 공유하고자 하는 분께 알려 드리면 마치 그분과 로컬 네트워크에 있는 것 같은 환경이 됩니다.

image

가상 네트워크 그룹이 활성와 되었습니다.

image

다음은 제 집에 접속해 본 화면입니다. 여기서 spowner-com 네트워크 그룹과 spowner-home 네트워크 그룹은 서로 영향을 주지는 않습니다. 같은 네트워크 그룹에 속한 사람들끼리만 상대방 IP 포트에 접속이 가능합니다.

자! 이제 원격에 있는 사람과 Hamachi를 이용해 UDP로 스타도 할 수 있고요… 방화벽의 답답함과 공유기의 번거로운 설정할 필요 없이 Hamachi만 설치하고 네트워크에 등록만 하면 원격 데스크톱 등 불편 없이 사용할 수 있습니다!


 

Tim Bray의 Comparing Frameworks 내용 소개

이 글은 Tim Bray의 Comparing Frameworks의 내용을 참고한 글입니다.
여기서 다루는 건 연산 성능 등의 일반적인 이슈를 고려하지 않고 단지 웹 어플리케이션의 개발에 초첨을 맞추어서 작성한 글이라고 하네요.
여기서는 4가지 기준으로 분류를 하여 비교하였네요. 나름대로 의미는 있어 보입니다.

Framework

첫번째 확장성
역시 가용성(서버의 성능, 고객의 수용능력) 관점이 아닌 개발 관점에서 확정성은 PHP에 많은 점수를 줬습니다. 다양한 확장 기능을 개발하기 위해서는 자바보다는 덜 똑똑해도 된다는 입장으로 표현된 듯합니다. 한마디로 쉽게, 문제없이 어떤 개발 기능을 쉽게 확장해 나갈 수 있는 장점이 있다는 이야기로 들립니다.

두번째 개발 속도
Rails 최고의 성공작인 CRUD 지향적 개발에 장점이 있고 quick-and-clean의 의미처럼 빠르고 깨뜻하게 개발할 수 있다는 의미로 들립니다. 이건 누구도 공감하는 바 일것입니다. 뚝딱화면 하나의 웹기능이 쉽게 나온다는 말로 오해할 여지가 있어 보입니다.

세번째 개발 도구
Rails에는 TextMate가 있고 PHP에는 Zend 제품군이 있죠. 그리고 PHP와 Ruby를 지원하려는 Eclipse 기반의 작업도 진행되고 있는걸로 알고 있습니니다만 이 중 어느 것도 Java 개발자가 NetBeans나 Eclipse 또는 Idea로부터 얻는 포괄적이고, 통합되어 있으며, 잘 다듬어져 있으며, 신속히 지원되는 환경과는 거리가 멀다고 합니다. 그래서 자바의 진영에 높은 점수를 준 이유인듯 합니다.

네번째 유지 보수성
여기서 가장 중요한 요소는 객체지향성, MVC 아키텍처, 코드 가독성, 코드 크기(작으면 작을수록 좋다.)라고 생각합니다. 물론 이것은 PHP의 아킬레스건이죠. ^^ 한데 여기서는 Rails의 코드가 Java보다 훨씬 짧기 때문에 Rails가 더 낫다고 보고 있습니다. 코드의 유지보수 비용은 코드의 크기와 매우 연관성이 있다는 단지 그이유라고 하네요. 하지만 개발 기능의 복잡도를 배제한 체 단순 비교한다는 자체로도 문제가 많습니다.

하여튼 어느정도의 당위성은 보이는 대목들입니다. 이런 프레임웍의 추세가 앞으로 개발자들의 밥벌이와도 연관이 있을테니 새로운 언어와 트랜드를 익히는데 소홀하면 안될것 같네요.

 

Web 2.0 비지니스가 이슈로 떠오르면서 많은 기업들의 웹 어플리케이션에서의 아키텍쳐 모델에 변화가 일어나고 있습니다. 즉, Lightweight Architecture(이하 LA)라는 놈인데.. 많은 기업에서 이를 기반으로 하여 서비스에 적용하고 있습니다. 물론 아직까지 우리나라에서는 서비스를 하고 있는데가 있는지는 모르겠지만 거의 제 귀에서는 아직 들리지 않는 것 같습니다만. 하지만 중소 규모의 Web 2.0기업에서는 기업의 비지니스를 런칭하기 위해서는 Starting Cost를 줄여야만 하는 이유도 아키텍쳐의 변화에 타당성을 높여줍니다. 이러한 점에서 LA는 Web 2.0 기업의 비즈니스에서 중요한 부분을 차지하고 있다고 할 수 있습니다.

그래서 기존의 고가 장비로 이루어진 소수의 서버에서 다양한 업무를 수행하는 3-Tier 개념에서 저가의 리눅스 장비를 통해 비교적 가벼운 비즈니스를 지원하는 2-Tier 개념을 도입하고 장비의 Cluster화 하여 충분한 부하를 견딜 수 있도록 설계를 합니다. 이를 좀 더 자세히 살펴보기 위해 Hardware적인 측면과 Software적인 측면으로 나누어 생각할 수 있습니다.

1. Hardware 측면

3-tier

                                   그림1. 3-Tier Architecture

Architecure

                                    그림2. 2-Tier Architecture

이렇듯 기존의 3-Tier에서는 고비용이어서 Scale-up 전략을 추구하게 되는데 이는 정확한 용량 계획을 해야만 과잉 지출 등을 예방할 수 있기때문에 그에 필요한 업무 로드도 무시 못하죠. 여러분 중 용량 계획을 해 본사람들은 알 것입니다.
그리고 2-Tier방식에서는 Scale-out 전략을 구사하게 되죠. 로드 발란싱을 통해 WorkLoad를 저가 장비의 분산하는 전략을 말합니다.

2. Software 측면

Architecture

                      그림3. Lightweight Software Architecture

소프트웨어 측면에서의 전략은 기존 3-Tier 기반에서 Application은 J2EE + EJB와 같은 복잡한 Framework를 사용하여 무겁고 유지보수 비용이 높았는데 아마존이나 플리커에서 높은 개발 생산성 과 낮은 소유비용을 가지는 PHP, ruby on rails, 혹은 Struts, Spring + iBatis, Hibernate 등의 보다 가벼운 J2EE Framework으로 이전 하고 있다. 또한 개별 Service에 가장 적합한 형태의 Framework를 구축할 수 있어 개발 생산성과 유지 보수 비용면에서도 많은 효율을 보일 수 있습니다.

즉, 적재 적소에 모듈화된 비즈니스 로직을 안정적으로 제공하고, Time-to-Market을 달성하는 것이야 말로 대다수의 웹 비즈니스 기업들이 LA를 선택하는 이유이다.

 

이른바 빅 사이트들의 웹 테크놀로지가 어떻게 구성되어 있는지에 대한 정보를 공유하겠습니다. 웹 서비스 설계에 있어서 가장 중요한 부분이 High Scalability일 것입니다. 수많은 트래픽을 어떻게 극복할 것인가?
이런 부분을 고민하다보면 웹의 H/W, S/W 아키텍처를 어떻게 구성할 것인가 부분이 나오게 되는데 해외의 빅 사이트들의 구성도를 보면서 이렇게 구성해도 High Scalability에 문제가 없구나하면서 레퍼런스 사이트만으로도 가능성을 타진할 수 있습니다.

물론 개발 기능들의 높은 성숙도가 더 중요하겠지만요. 이런 다양한 사이트들의 사례를 통해 High Scalability의 문제를 보완해 나가고 타당성의 검증 근거로 삼게 되죠.
참고로 빅 사이트들은 Flickr, YouTube, PlentyOfFish, Digg, TypePad, LiveJournal, Friendster, MySpace, Wikipedia의 9개 사이트입니다.


위의 그램을 요약해보면..
  • OS: Linux 7 - Windows 2
  • Web server: Apache 7 - IIS 2 - Lighttpd 2
  • Scripting: PHP 4 - Perl 4 - ASP.NET 2 - Python 1 - Java 1
  • Database: MySQL 7 - SQL Server 1 (possibly 2)
윈도우 서버보다는 리눅스 서버가 많고 웹 서버는 아직까지 Apache가 많네요. 데이터 베이스틑 MySQL이 많은 사용률을 갖고 있네요. 물론 네트워크 인프라 등의 정보도 중요하겠죠. ^^
  • 참고 사이트 : http://royal.pingdom.com/?p=173

'개발도 하냐?' 카테고리의 다른 글

웹 프레임워크 비교  (0) 2008.12.26
Lightweight Architecture  (0) 2008.12.26
톰켓을 사용하는데 필요한 20가지 Tips  (0) 2008.12.26
웹 퍼블리셔란?  (0) 2008.12.20
DTD에 따른 브라우저 박스크기변화  (0) 2008.12.20

1. jdk 1.5이상이면 아래 설정을 JAVA_OPTS안에 추가한다면 YourKit을 가지고 힙덤프를 분석할 수 있다.
 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/heapdump

2. Jasper 2 JSP Engine 지원을 위해 $CATALINA_BASE/conf/web.xml 설정 변경하라.
 - development : false, genStringAsCharArray : true, modificationTestInterval : true, trimSpaces : true
 - 자세한 건 여기를 참조하라.

3. 가용성 확보를 위해 Tomcat의 clustering/session replication을 사용하라.
 - 사용방법은 여기를 참조하라.

4. error pages를 작성하여 적용하라.(web.xml)
 - <error-page>
      <error-code>404</error-code>
      <location>/error/404.html</location>
   </error-page>

5. 어플리케이션에서 System.out과 System.err를 제거하고 Log4j를 사용하라.

6. application마다 같은 라이브러리는 WEB-INF/lib에서 CATALINA_HOME/shared/lib로 옮겨서 공유하라.
 - 메모리를 절약할 수 있다.

7. memory parameters를 잘 활용하라.

8. 불필요한 어플리케이션을 제거하라.

9. Manager서버의 보안을 강화하라.
 - CATALINA_HOME/conf/tomcat-users.xml
  <role rolename="manager">
   <user username="darren" password="ReallyComplexPassword" roles="manager"></user>
  </role>
 - CATALINA_HOME/conf/server.xml에 IP 블럭킹 기능도 유용하다.
  <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*"></Valve>

10. server.xml을 최적화 하라.
 - 서버 환경에 맞는 CATALINA_HOME/conf/server-original.xml, CATALINA_HOME/conf/server-minimal.xml 선택하여 server.xml로 변경하라.

11. 톰켓 업그레이드는 설치디렉토리를 분리하여 적용하라.

12. Tomcat 서버는 root로 띄우지 마라.
 - 자세한 내용은 여기를 참조하라.

13. Precompile JSPs (at build time)
 - 자세한 내용은 여기를 참조하라.

14. 디렉토리 보이는 걸 막아라.
  - CATALINA_HOME/conf/web.xml
  <servlet>
   <servlet-name>default</servlet-name>
   <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
   <init-param>
   <param-name>debug</param-name>
   <param-value>0</param-value>
   </init-param>
   <init-param>
   <param-name>listings</param-name>
   <param-value>false</param-value>  <!-- make sure this is false -->
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>

15. 듀얼 코어 CPU를 사용할 경우 쓰레드풀을 250개 이상 설정하라.

16. Tomcat MBeans이나 다양한 모니터링 도구를 활용하여 서버를 모니터링하라.
 - 자세한 내용은 여기를 참조하라.

17. jdk1.5, 1.6이 성능이 좋다.

18. -server JVM option을 사용하라.

19. GZIP compression을 사용하라.
 - <Connector>compression="on"
   compressableMimeType="text/html,text/xml,text/plain,application/xml"
   </Connector>
 - 자세한 건 여기를 참조하라.

20. Security Manager를 잘 사용하라.
 - 자세한건 여기를 참조하라.


웹 퍼블리셔라는 말을 만들 때에 내 명함에 찍혀있던 내 업무 역할은 웹디자이너였다. 하는 역할은 HTML 코더의 역할이었지만 솔직한 심정으로 명함에 HTML 코더라는 업무 역할을 넣기는 싫었다. HTML 코더는 단순직 알바, 작업물의 퀄리티보다는 작업량으로 평가받고 필요할 때마다 잠깐씩 빌려서 사용되고 있다는 인식 때문이었다. 다른 사람이 나를 이러한 시각으로 본다는 것이 싫었고 나의 업무상의 위치나 결과물은 HTML 코더의 그것과는 분명이 차이가 있어야 한다고 생각을 했다. 그리고 웹 제작 프로세스에서 반드시 필요한 위치가 되어야 한다고 생각했다. 그래서 HTML 코더와 구별할 수 있는 새로운 말을 찾기 시작했다.


지금은 웹에 어플리케이션의 개념이 많이 들어오고 있지만 웹은 기본적으로 문서다. 그래서 문서나 책을 출판하는 퍼블리시(publish)라는 단어를 생각하게 되었고, 실제로 이 단어는 이미 여러곳에서 사용되고 있었다. 플래시에서 HTML 코드를 만드는 기능도 퍼블리시고 MS 프론트페이지(FrontPage)에서도 퍼블리싱이라는 용어를 썼다. 그리고 어도비(Adobe)에서도 웹페이지를 만드는 작업을 웹 퍼블리싱(Web publishing)이라고 지칭하고 있었다. 이 외에도 많은 툴에서 웹페이지를 실제로 제작하거나 배포하는 단계를 지칭해서 퍼블리시라는 단어를 많이 쓰고 있었다. 웹을 출판하는 사람이라는 의미가 기존의 시각에만 집중한 웹 저작과는 반대되는 의미를 가지고 있다는 느낌도 이 용어를 선택하게 된 이유중의 하나였다. 그래서 한번 해보자는 심정으로, 그리고 웹에이전시라는 용어를 홍익인터넷에서 만든 것과 같이 웹퍼블리셔라는 용어도 나중에 많이 사용될 수도 있다는 모험으로 명함에 웹 퍼블리셔(Web publisher)라는 업무 역할을 박았다”.


당연히 처음에는 이 단어를 사용할 때마다 부연 설명을 붙여야만 했다. 그리고 견적서에도 웹 퍼블리셔 항목이 들어가면 열이면 열, 견적서를 확인하자마자 전화를 걸어서 이 항목이 도대체 뭐냐고 물어왔다. 그럴 때는 나 자신도 일반인이 이해하기 쉽게 설명하는게 힘들었고 다른 사람들도 역시 설명하기를 힘들어 했다. 회사에서도 명함에 넣는 것까지는 이해를 해 줬지만 실제로 이 역할이 무슨 일을 하는지는 HTML 코더의 수준 이상으로 이해를 하지 못했다. 다행히 지금은 사용하는 사람들도 많고 고객사에서도 웹 퍼블리셔라는 용어에 대해서 질문을 해 오는 경우는 거의 없다.


앞에서도 잠깐 얘기 했지만 이 용어를 만들게 된 이유는 퍼블리싱이라는 업무가 기존의 포지션에서 벗어나서 보다 확실한 전문 영역으로 자리 잡기를 바랬기 때문이다. 과거에는 별로 주목받지 못했던 사용자측 개발이 매우 중요한 영역이고 제품의 품질과 직결된다는 믿음 때문이었다. 용어는 만들어졌지만 사람들이 이 용어를 사용하지 않았으면 지금같이 자리잡지 못했을 것이다. 지금은 커뮤니티도 생겼고 많은 분들이 웹 퍼블리셔를 자청해서 보다 나은 웹을 만들기 위해서 노력중이다. 요즘은 클라이언트 사이드 개발 뿐만 아니라 웹표준, 웹접근성 전문가를 지칭하는 말로도 사용되고 있다.


웹 퍼블리셔라는 말은 아직 완성된 말은 아니다. 그리고 그 말을 완성시킬 수 있는 사람은 자신을 웹 퍼블리셔라고 말하면서 자신의 위치를 확고하게 만들어 가는 사람들일 것이다. 김춘수의 꽃에서와 같이 이름을 정하고 불러준다는 것은 매우 중요한 일이다. 물론 모든 웹 퍼블리셔들의 능력이 똑같을 수는 없지만 자신을 웹 퍼블리셔라고 자신있게 말하는 순간 그 사람은 웹 퍼블리셔가 되는 것이고 같은 목적을 향해서 노력할 준비를 갖추는 것이다.


보다 많은 웹 퍼블리셔들이 나와서 자신의 위치를 확고하게 하고 웹 시장에서 전문가로 자리매김을 하고, 보다 나은 웹, 보다나은 IT 생태계를 만들어 갈 수 있었으면 좋겠다. 자기 자신을 자신있게 외치면 결국 그렇게 만들어 질 수 있다고 믿는다. 사람의 힘은 무한하니까….


출처 : Standard Magazine


+ Recent posts