두가지 질문을 한꺼번에 하셨군요. 이번에는 제가 델파이 Q/A와 파이어버드쪽 Q/A로 복사를 해서 따로 답변을 드립니다. 앞으로는 내용이 다른 질문은 따로 해주시기 바랍니다.
파이어버드용 연결 컴포넌트를 선택하는 문제에 대한 답변은 파이어버드 Q/A 게시판에 올렸습니다.
http://firebird.borlandforum.com/impboard/impboard.dll?action=read&db=fb_qna&no=2882
원론적으로 답변을 드리자면, 20유저 정도라면 2티어, 그러니까 C/S가 더 빠릅니다.
3티어 아키텍처를 사용하는 원래의 목적은 성능 문제가 아닙니다. 기본적으로 3티어는 2티어보다 느립니다. 상식적으로 생각해봐도, 데이터가 디비로부터 사용자 피씨까지 직접 전달되는 경우와 중간에 다른 서버에서 받아서 중계를 하는 경우를 생각해보면 당연히 2티어가 빠를 거라는 짐작이 가능하죠.
원론적으로 따지면, 3티어가 C/S보다 빨라지는 경우는 연결된 사용자의 수가 너무 많아서 데이터베이스에서 연결들을 관리하는 데에 오버헤드가 발생하는 경우가 있겠고요. (따라서 2티어, 3티어 비교에서 말하는 유저 수는 총 사용자가 아니라 동시 연결 사용자 수입니다.) 또, 일반 소켓 접속 등보다는 데이터베이스 연결이 맺어지는 속도가 느리기 때문에 조금 빨라질 수 있지만 이건 그다지 큰 이슈가 아닙니다.
3티어 구조가 성능 면에서 2티어보다 실질적으로 빨라질 수 있는 경우는, 미들티어에서 데이터 캐싱을 하고 있는 경우, 그리고 대규모 시스템에서 한대의 서버로 처리가 어려울 경우 미들티어를 2대 이상으로 분산시켜 로드발란싱을 하는 경우 등을 들 수 있습니다. 후자보다는 전자가 일반적인 프로젝트에서 더 효율적인데요.
그런데 마이다스(지금은 DataSnap으로 이름이 바뀌었죠)의 경우 데이터 캐싱이나 분산 처리를 지원하지 않습니다. 따라서 DataSnap의 경우 전반적으로 C/S보다 성능 면에서 빠르게 만들기 어려우며, 대부분 오히려 느려지기 쉽고, 빨라진다고 해도 그 정도는 미미하게 됩니다. (다만, DataSnap이 향후 더 발전할 가능성은 있습니다)
그래서 성능을 위해 3티어를 고려하는 거라면, DataSnap이 아니라 kbmMW나 RemObjects같은 좀더 본격적인 3티어 프레임워크가 필요합니다. 하지만, 이런 경우에도 20유저 미만 정도의 사용자 규모라면 효과는 그다지 크지 않을 겁니다.
제 경험을 바탕으로 말씀드리면, 3티어가 성능 면에서 월등해지려면 동시 사용자 수가 50명 선 이상의 시스템이어야 합니다. 아마 30명 정도라도 차이는 있겠지만, 그렇게 사용자가 체감할 정도는 못될 겁니다. 그리고 이런 경우라도 개발하는 방법에 따라 별로 효과를 못보거나 오히려 성능이 떨어질 수도 있습니다.
그럼...
초보 님이 쓰신 글 :
: 현재는 2Tier만을 프로그램 해 봤습니다.
:
: 이제는 3Tier를 구성해 보고 싶네요.
:
: 사용자가 한 30명 정도 되구요.
:
: Midas를 이용하고 싶구요, 근데 잘 몰라서 그러는데...
:
: 1. App Server에 IBPlus나 IBDac에 있는 Query 컴포넌트를 사용하는 것이 일반 TQuery를 사용하는 것 보다 좋은건지요?
:
: 2. 그리고 보통 몇 명의 동시 접속자가 있을 경우 3Tier가 효과를 발휘할 수 있을까요?
:
: 제가 20명 정도의 동시 접속자를 2Tier로 해 봤는데요, 그 당시에는 서버의 사양도 현재에 비하면 많이 떨어진 경우 입니다. 그래도 별 무리 없이 동작하더군요.
:
: 현재 구성 할 Server는 보급형으로 1CPU에 듀얼코어나 쿼드코어 입니다. 메모리는 2GB 정도이구요.
:
: DB는 FB 2.1을 사용하려고 합니다.
:
: 답변 부탁드리겠습니다.
:
: 감사합니다.