2007년 03월 02일
웹페이지도 클라이언트 시스템의 자원을 고려해야만 한다.
리눅스나 윈도우즈 프로그래밍을 처음 배울 때 '시스템의 자원을 독차지해서는 안된다.'라는 말을 누구나 들어봤을 겁니다. 그리고 실제로도 무엇인가를 하려면 운영체제의 허락을 받아야하는 경우가 많습니다. 예를 들자면 윈도우에 뭔가 작업을 하기 전에 GetDC() 등을 통해서 핸들값을 받아야 하는 것 등이죠.
오늘날 대부분의 사용자들이 사용하는 운영체제는 멀티태스킹 환경이기 때문에 이런 운영체제에서 작동하는 프로그램은 가능한 시스템의 자원을 알맞게 쓰려고 노력해야 합니다. 자신이 하는 일에 맞는 만큼만 시스템 자원을 사용해야 한다는 것이죠.
이것이 중요한 이유는 프로그램이 사용자의 활동 영역을 침범하거나 방해해서는 안되기 때문입니다. 누구든지 어떤 프로그램을 사용할 때에는 그 프로그램에 기대하는 것이 있습니다. 예를 들어 데스크탑 한쪽 구석에 포스트잇을 띄워주는 프로그램이라면 사용자는 화면 일부분만 포스트잇에 허용할 뿐, 포스트잇 프로그램이 CPU를 지나치게 차지한다거나 하드디스크 액세스를 느리게 하는 것을 바라지 않는다는 얘기입니다.
아무리 잘 만들어졌더라도 성능적으로 사용자의 기대치에 부합하지 못하면 결국 버려지는 프로그램이 될 뿐입니다. (네, 품질 요구사항 관점에서 보면 결국 품질이 낮은 프로그램이라는 얘기가 되겠죠.)
어디서 봤는지 잘 기억은 안나는데 '내가 잘나서 시스템 자원을 독차지하는 것이 아니라 사용자에게 버림받지 않기 위해 시스템 자원을 적게 써야 한다.'라는 (늬앙스의) 말이 생각나는군요.
게임이나 특수 계산 등의 목적을 가진 프로그램을 제외하고는 시스템 자원에 대한 독점이 허용되는 프로그램은 거의 없습니다. 그렇지 않은 프로그램들을 전 '깡패 애플리케이션'이라고 종종 부릅니다. ^^;
웹사이트의 경우 일차적으로 고려해야 하는 건 서버의 자원입니다. 한 페이지에 대한 요청을 처리하는데 서버의 자원을 100% 가까이 쓰는 일이 있어서는 안되겠죠.
하지만 그렇다고 클라이언트-사이드가 중요하지 않은 것은 아닙니다. 대부분의 경우, 웹사이트도 사용자가 동시에 수행하는 작업들 중의 하나일 뿐이기에 웹사이트가 사용자의 작업을 방해하는 일이 있어서는 안됩니다.
가장 흔한 경우가 플래시 배너로 떡칠을 해서 CPU 사용량을 수 십 퍼센트 이상 잡아먹는 웹페이지입니다.
다음을 한 번 생각해보죠. 사용자가 어떤 게임을 하고 있고, 게임을 하다 종종 화면전환으로 게임 공략을 소개한 웹페이지를 참조하는 경우입니다. 그런데 게임 공략을 소개한 웹페이지는 온갖 플래시 광고들이 있고 이로 인해 사용자는 원활한 게임을 하는데 방해를 받게 됩니다. 결국 사용자는 그 웹페이지에 짜증을 내며 다른 공략 사이트를 찾으려 할 것입니다. 결국 버려지는 것이죠.
사용자를 배려한 하나의 좋은 예로 모 게임 포털은 게임이 실행되면 작동하던 플래시를 전부 중단시키고 브라우저를 최소화해서 클라이언트 시스템 자원 사용량을 최소화합니다. (이렇게만 해도 저사양 컴퓨터에서는 체감 성능 차이가 큽니다.)
플래시 외에도 요즘 많은 문제가 되는 것은 Ajax 웹페이지입니다. Ajax가 문제라기 보다는 Ajax 오남용으로 인해 웹페이지가 쓸데없이 시스템 자원을 많이 차지하는 경우입니다. Ajax를 적용한 어떤 메타블로그 사이트는 1시간 동안 무려 30MB나 메모리 사용량이 증가했던 경우가 있습니다. 5시간이면 무려 150MB를 낭비하게 되는 것이죠.
특히 Ajax로 개발을 할 때에는 DOM 구조, closure 등으로 인해 발생할 수 있는 여러 성능 이슈를 잘 알고 있어야 하고 개발 후 반드시 해당 페이지를 테스트해야 합니다.
웹페이지의 사용성을 고려할 때는 웹페이지의 용도와 사용자의 환경을 고려해야만 합니다. 특히 요즘 같이 클라이언트측 기술에 관심이 많아지는 때에, 반드시 짚고 넘어가야할 사항이 아닌가 합니다.^^
오늘날 대부분의 사용자들이 사용하는 운영체제는 멀티태스킹 환경이기 때문에 이런 운영체제에서 작동하는 프로그램은 가능한 시스템의 자원을 알맞게 쓰려고 노력해야 합니다. 자신이 하는 일에 맞는 만큼만 시스템 자원을 사용해야 한다는 것이죠.
이것이 중요한 이유는 프로그램이 사용자의 활동 영역을 침범하거나 방해해서는 안되기 때문입니다. 누구든지 어떤 프로그램을 사용할 때에는 그 프로그램에 기대하는 것이 있습니다. 예를 들어 데스크탑 한쪽 구석에 포스트잇을 띄워주는 프로그램이라면 사용자는 화면 일부분만 포스트잇에 허용할 뿐, 포스트잇 프로그램이 CPU를 지나치게 차지한다거나 하드디스크 액세스를 느리게 하는 것을 바라지 않는다는 얘기입니다.
아무리 잘 만들어졌더라도 성능적으로 사용자의 기대치에 부합하지 못하면 결국 버려지는 프로그램이 될 뿐입니다. (네, 품질 요구사항 관점에서 보면 결국 품질이 낮은 프로그램이라는 얘기가 되겠죠.)
어디서 봤는지 잘 기억은 안나는데 '내가 잘나서 시스템 자원을 독차지하는 것이 아니라 사용자에게 버림받지 않기 위해 시스템 자원을 적게 써야 한다.'라는 (늬앙스의) 말이 생각나는군요.
게임이나 특수 계산 등의 목적을 가진 프로그램을 제외하고는 시스템 자원에 대한 독점이 허용되는 프로그램은 거의 없습니다. 그렇지 않은 프로그램들을 전 '깡패 애플리케이션'이라고 종종 부릅니다. ^^;
웹사이트의 경우 일차적으로 고려해야 하는 건 서버의 자원입니다. 한 페이지에 대한 요청을 처리하는데 서버의 자원을 100% 가까이 쓰는 일이 있어서는 안되겠죠.
하지만 그렇다고 클라이언트-사이드가 중요하지 않은 것은 아닙니다. 대부분의 경우, 웹사이트도 사용자가 동시에 수행하는 작업들 중의 하나일 뿐이기에 웹사이트가 사용자의 작업을 방해하는 일이 있어서는 안됩니다.
가장 흔한 경우가 플래시 배너로 떡칠을 해서 CPU 사용량을 수 십 퍼센트 이상 잡아먹는 웹페이지입니다.
다음을 한 번 생각해보죠. 사용자가 어떤 게임을 하고 있고, 게임을 하다 종종 화면전환으로 게임 공략을 소개한 웹페이지를 참조하는 경우입니다. 그런데 게임 공략을 소개한 웹페이지는 온갖 플래시 광고들이 있고 이로 인해 사용자는 원활한 게임을 하는데 방해를 받게 됩니다. 결국 사용자는 그 웹페이지에 짜증을 내며 다른 공략 사이트를 찾으려 할 것입니다. 결국 버려지는 것이죠.
사용자를 배려한 하나의 좋은 예로 모 게임 포털은 게임이 실행되면 작동하던 플래시를 전부 중단시키고 브라우저를 최소화해서 클라이언트 시스템 자원 사용량을 최소화합니다. (이렇게만 해도 저사양 컴퓨터에서는 체감 성능 차이가 큽니다.)
플래시 외에도 요즘 많은 문제가 되는 것은 Ajax 웹페이지입니다. Ajax가 문제라기 보다는 Ajax 오남용으로 인해 웹페이지가 쓸데없이 시스템 자원을 많이 차지하는 경우입니다. Ajax를 적용한 어떤 메타블로그 사이트는 1시간 동안 무려 30MB나 메모리 사용량이 증가했던 경우가 있습니다. 5시간이면 무려 150MB를 낭비하게 되는 것이죠.
특히 Ajax로 개발을 할 때에는 DOM 구조, closure 등으로 인해 발생할 수 있는 여러 성능 이슈를 잘 알고 있어야 하고 개발 후 반드시 해당 페이지를 테스트해야 합니다.
웹페이지의 사용성을 고려할 때는 웹페이지의 용도와 사용자의 환경을 고려해야만 합니다. 특히 요즘 같이 클라이언트측 기술에 관심이 많아지는 때에, 반드시 짚고 넘어가야할 사항이 아닌가 합니다.^^
# by | 2007/03/02 04:22 | Computer Code | 트랙백 | 덧글(3)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
// But many developers have limited time for their products. Above all things, they(including me) need to have leeway. Of course, self-try must be required. (Because developer's quility is the quility of software in the software industry.)
kkongchi
// FLASH, Flex는 괜찮은 성능 테스트 도구들이 지원되지만, 아직 script의 영역에서는 소스 레벨 차원에서 어느 부분이 얼마만큼의 성능 문제를 발생시키는지를 알 수 있는 툴이 부족합니다. 저 역시 좋은 툴이 나오기를 기다리고 있지만, 지금은 일반적인 응용프로그램 테스트 툴로도 CPU, 메모리 사용량에 있어서는 괜찮은 결과를 얻고 있습니다. ^^