C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

메신저 프로젝트
[969] 1. 시스템 구성
NeverWash [neverwash] 41304 읽음    2012-03-01 11:58
개인적으로 프로젝트를 계획하고 있는것이 있는데 워밍업도 할 겸, 목적을 가지고 진행해야겠다고 생각이 들어, 부족하지만 메신저 프로젝트를 해 보려고 합니다.

우선 기본적인 구성을 스케치 해봤습니다.
스케치 내용은 jpg로 첨부하였습니다.

수억명이 동시에 사용할 수 있는 메신저를 목표로 하기 때문에 여러 시스템으로 분산되어 있습니다.
실제로 대형시스템을 운영하면서 테스트를 할 수 없기 때문에 컴퓨터 한대에서 서버 클라이언트 데이터베이스까지 다 돌려가면서 테스트 하기위해서 모든 개발은 윈도우 환경에서 하기로 하였고요.

버전관리나 로그인을 처리하는 쪽은 부하가 집중되기 때문에 로드밸런싱을 하고, 데이터 베이스 쪽도 마찬가지로 로드밸런싱으로 부하를 분산하고, 일부 시스템다운으로 전체 시스템이 마비되는것을 방지합니다.

패치서버 : 사용자의 클라이언트를 최신버전으로 관리해주는 기능
로그인서버 : 사용자의 로그인을 처리하고 로그인 후 처리를 담당할 커넥트 서버를 할당하는 기능
커넥트서버 : 사용자의 접속상태를 실시간 체크하고 사용자의 요구를 수용하는 메인 서버
커뮤니케이트서버 : 파일전송, 텍스트 채팅이나 비디오나 오디오가 지원되는 멀티미디어 대화를 지원하는 서버
컨트롤서버 : 시스템관리 요원이 전체 시스템의 상황을 모니터링하고 관리하기 위한 서버

이밖에 게임이나 메일기능을 지원하기 위한 서버를 생각할 수 있지만, 원리가 비슷하고 상용 메신저를 목표로 하는것이 아닌 엔진개발에 초점을 맞추고 있기때문에 그런 부분은 생략하였습니다.

암호화 라이브러리 : 네트웍 패킷과 민감한 데이터를 암/복호화 하는 기능
네트웍 라이브러리 : C/S P2P 통신을 처리하는 기능
베이직 서버 클래스 : 기본적인 서버 클래스
     ㄴ 패치 서버 클래스 : 베이직 서버 클래스를 상속받아 패치 서버를 구성하는 클래스
     ㄴ 로그인 서버 클래스 : 베이직 서버 클래스를 상속받아 로그인 서버를 구성하는 클래스
     ㄴ 커넥트 서버 클래스 : 베이직 서버 클래스를 상속받아 커넥트 서버를 구성하는 클래스
     ㄴ 커뮤니케이트 서버 클래스 : 베이직 서버 클래스를 상속받아 커뮤니케이트 서버를 구성하는 클래스
     ㄴ 컨트롤 서버 클래스 : 베이직 서버 클래스를 상속받아 컨트롤 서버를 구성하는 클래스

유저 인터페이스에는 신경을 쓰지 않기로 했습니다.

네트웍 라이브러리가 좀 고민인데요, 기본 플랫폼을 윈도우로 정했기 때문에 유닉스 소켓 프로그래밍은 할수가 없고 인디 라이브러리를 쓸까 직접 만들까 고민중입니다.
이번 프로젝트가 도전을 목적으로 하기 때문에 한번도 제대로 해보지않은 윈속을 써서 직접라이브러리를 만들어 보는것을 목표로 잡아봤습니다.
아마 여기서 시간이 제일 많이 잡아먹힐것 같군요.
예제수준의 프로그램이 아니라 운영이 가능한 상태를 만드려면 네트웍 라이브러리에 굉장히 많은 공을 들여야 할거 같은데요. 하다가 정 안되면... 인디 라이브러리를 쓸 수 밖에요.

프로젝트 이름은 Wine으로 정했습니다.
요즘 Wine에 빠져서 매일 마시는데, 그래서 그런지 알딸딸 하군요.

+ -

관련 글 리스트
969 1. 시스템 구성 NeverWash 41304 2012/03/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.