'동적파일'에 해당되는 글 1건

  1. 2009.01.12 DB에서 데이터를 가져오는 것....


NeoZest입니다.

오늘은 신입/초급 웹 개발자를 위해 포스트를 적어볼까 합니다.

대부분 프로젝트를 수행할 때 기본 원칙과 현실적인 트릭을 함께 사용해야 할 경우가 있습니다. 그중 대표적인 것이 콘텐츠 동적 생성과 정적 생성입니다.

최근 웹 페이지는 콘텐츠를 데이터베이스에 많이 넣어두고 생성을 하죠.
그러면서 요청이 있을 때마다 데이터베이스에 연결해서 내용을 가져와서, 템플릿 코드로 뿌리죠. 그런데 이렇게 작성하는 것은 개발환경에서는 문제가 없는데...다수의 사용자가 요청할 때는 서버에 부담을 주게 됩니다.

반면 정적인 파일을 그냥 클라이언트로 전달하는 것은 연산작업이 없기 때문에 상대적으로 훨씬 적은 부담을 주게됩니다.

따라서 서버에서 전달할 콘텐츠가 실시간성이냐 아니냐를 잘 고민해 보고, 실시간성이 아닐 경우에는 일정 주기별로 정적 파일을 생성하고, 이 파일을 이용하는 것이 좋습니다. 일종의 캐싱기법을 직접 적용하는 것이죠.(이 방법보다 정석은 캐싱서버를 두는 것이겠지요.)

예를 들어 인기검색어를 XML로 뿌려주는 웹페이지를 만든다고 했을 때, 인기검색어가 초단위로 팍팍~ 변하는 것은 아니겠지요. 예를 들어 10분정도마다 변화가 있고, 10분마다 데이터를 갱신하더라도 사용자의 불만이 없는 상황이라 생각되면, 10분마다 정적인 파일을 생성하는 것이 좋겠지요.

여기까지 이야기를 하면 다들 어떤 파일명으로 바로 쓰기 작업을 하는 경우가 있는데요. 한 쓰레드가 동일 파일명으로 쓰기 작업을 수행할 경우에는 Lock이 걸립니다. 이런 문제는 결국 임시파일로 생성한 다음, 정상적으로 생성된 경우에만 rename/move를 해주는 것이 편법의 정석이겠지요.

신입/초급 개발자들을 보면 너무 DB에 많은 부담을 지우는 것 같아서 이런 방법도 있다라는 것을 알려주고, 또한 시스템 전체적으로 성능을 향상시키는 방법을 고민해 보라는 차원에서 적었습니다. 그리고 데이터의 생명주기까지 한번 고민해 보는게 좋을 것 같아요.

이런 경우가 안생기도록 서비스 플랫폼 구조를 만들고, 미리미리 성능까지 테스트하는 것이 가장 최선이겠지요!
Posted by NeoZest