3. 프로젝트 배경
• 영화관 설립에 있어서 서버, 네트워크 환경 구성 및 웹서
비스 구축은 중요합니다. 고객이 영화 예매부터 관람까지
안정된 네트워크 환경을 이용할 수 있도록, 그리고 예매 시
스템을 효율적으로 만들어 고객 모두가 만족하는 영화관 운
영 시스템을 만들고자 합니다.
4. 목표
□ 기가박스 데이터센터 구축
□ 영화관 지점 네트워크 구축
□ 데이버베이스 구축
□ 인터넷 예약 웹사이트 및 매표소 발권시스템 개발
5. 팀원
박종현 데이터센터 라우터, 스위치 설치, 영화파일 전송 시스템, DNS
오승건 웹서비스 회원 관리 및 예매 기능, 매표소 발권시스템
황병길 지점 라우터, 스위치 설치, 영사기 네트워크화, DB구축
7. 설치할 운영체제 및 서비스 패키지/기
능
IDC 서버
• 파일서버와 데이터서버, 웹서버, 백업서버, DNS서버는 센
토스OS를 설치한다.
• 웹아파치, SSH, VSFTP, MARIADB, PHP를 이용한다.
영화관 시스템
• 발권시스템과 영화관리시스템, 영사기 영상출력은
Windows가 설치된 PC로 구성한다.
• 웹아파치, SSH, VSFTP, TMS를 이용한다.
데이터센터 구축은 라우터, 스위치 설치 및 네트워크 구성이고 영화관 지점으로 영화파일 전송하는 시스템을 구현하고 웹서비스를 위한 DNS 구현하는것입니다.
영화관 지점 네트워크 구축은 라우터, 스위치 설치 및 네트워크 구성하고 디지털 영사기 네트워크연결 구성하여 상영시스템을 만드는 것입니다
데이버베이스 구축은 회원목록DB, 예매목DB, 영화목록DB, 영화관목록DB를 구축하는것입니다.
웹서비스 개발은 회원 가입, 탈퇴기능 구현과 웹사이트 좌석예약 기능을 구현, 매표소 직원이 직접 발권할 수 있는 발권 기능구현입니다.
저흰 설계 주요 목표는 안정적인 상영을 위한 네트워크 환경을 구성하고, 데이터센터에서 각 지점으로 영화파일을 전송할 수 있으며, 온 오프라인 예매 웹 서비스가 작동되는 환경을 만드는 것이였습니다. 오른쪽 그림과같이 데이터센터를 구성하고, 인터넷을 통해 각 지점으로 연결되는 모양으로 설계하였습니다.
데이터센터
데이터 센터는 데이터서버, 웹서버, 네임서버, FTP서버, 백업서버를 갖춘다.
백업서버는 예매는 실시간으로 이루어지므로 예매데이터는 5분 간격으로 백업서버에 저장한다. 그 외의 회원정보, 영화정보 데이터는 하루 간격으로 저장한다.
FTP서버는 영화파일이 한 개당 200기가바이트 정도이므로 하드디스크 용량이 10TB이상으로 정한다. (현재 메가박스 상영 영화 40개이므로 8TB에 여유 공간까지 더하여 상정했다), 웹서버와 네임서버는 주말이나 공휴일에 트래픽이 몰리는 것에 대비하여 보조 서버를 둔다.
웹 서버와 DNS서버는 하루 웹사이트 방문객과 오프라인 발권 인원을 최대 30만으로 계산하여 정한다. 백업서버와 FTP서버, 데이터 서버는 기본사양으로 정한다.
영화관시스템
실제 영화관은 TMS를 설치하여 상영관리를 하지만, 시네마서버와 라이센스서버가 있어야 실행되므로 DLNA을 이용하여 상영관영사기(PC)에서 재생하는 방식으로 설계한다. 영화관에서는 2K~4K 해상도의 영상(4k는 최대 35Mbps의 대역폭을 사용)을 상영하므로 스트리밍을 위해 기가비트 환경으로 꾸민다.
IDC 서버
파일서버와 데이터서버, 웹서버, 백업서버, DNS서버는 센토스OS로 설치한다.
웹아파치, SSH, VSFTP, MARIADB, PHP를 이용한다.
영화관 시스템
발권시스템과 영화관리시스템, 영사기 영상출력은 Windows가 설치된 PC로 구성한다.
웹아파치, SSH, VSFTP, PLEX를 이용한다.
데이터 설계를 위한 ERD다이어그램입니다.
테이블은 회원과 영화, 영화관, 좌석으로 입력 수정가능 한 데이터로 구성하였으며, 각 데이터를 가져온 데이터로 티켓 테이블을 만들었습니다. 티켓 테이블의 데이터는 나중에 예매내역을 불러올 때 쓰일 예정입니다.
혹시나 나중에 값이 중복되는 문제를 방지하기 위해서 중복되지않는 uid와 각 일련번호 Mid Tid Sid를 참조하여 데이터를 구성하였습니다.
웹서비스는 기본적인 회원가입 및 탈퇴, 로그인, 예매 기능을 설계했습니다.
웹서비스를 설계하기 위해 저희가 수업에서 배운 웹아파치, PHP, MariaDB를 이용하기기로 했습니다. JavaScript는 인터넷에 오픈소스구하기 쉬운언어면서 클리이언트 사이드 스크립트이여서 다른 설치 필요없이 실행되는 장점이 있어 선택하였습니다.
저희는 네트워크 환경을 구성하기 위해 Gns3를 이용하였습니다.
설계와 같이 서버구역과 지점 구역으로 나눈 후, 각 영사기와 발권기는 PC로 대체하였습니다.
각 구역을 물리적으로 구분했을뿐만 아니라 서브넷으로 분리 하여 구성하였습니다.
고객이 사용하는 웹서비스 환경을 똑같이 구성하기 위해 DNS서버를 구축했습니다
영화관은 주말과 휴일에 트래픽이 급증하는 환경이므로 이를 위해 추가로 보조 DNS, 웹서버를 구축하면 보다 원할한 웹서비스 제공이 가능할걸로 생각됩니다. 원랜 구현할 예정이였지만… 구현은 하지 못했습니다.
.
네임서버는 한 스위치에 추가했습니다.
설계와 달라진 부분 중 하나인데, 웹서버와 데이터베이스 서버는 사양이 그리 톺지 않고, php를 이용하여 데이터의 저장과 불러오기가 쉽게 되어야 하므로 한곳에 설치하였습니다.
Db서버에 백업용 서버를 연결 시킵니다. 백업서버는 나중에 설명드리겠습니다.
Php-mysql과 php-mysqlnd가 충돌해서 나는 오류
SSH서비스 데몬은 이미 설치가 되어있습니다.
저희는 데이터 저장 입력을 하기 위해 Mariadb를 사용했습니다.
Member테이블은 회원정보, movie테이블은 영화정보, seat테이블은 좌석위치정보, theater테이블은 영화관 정보이고 예매정보는 ticket테이블에 저장됩니다.
앞서 설명드렸다시피
테이블은 회원과 영화, 영화관, 좌석으로 입력 수정가능 한 데이터로 구성하였으며, 각 데이터를 가져온 데이터로 티켓 테이블을 만들었습니다. 티켓 테이블의 데이터는 나중에 예매내역을 불러올 때 쓰일 예정입니다.
혹시나 나중에 값이 중복되는 문제를 방지하기 위해서 중복되지않는 uid와 각 일련번호 Mid Tid Sid를 참조하여 데이터를 구성하였습니다.
.예매는 실시간으로 이루어지므로 예매데이터는 5분 간격으로 백업서버에 저장하고, 그 외의 회원정보, 영화정보 데이터는 하루 간격으로 저장하게 구성하였습니다. 데이터베이스 서버를 백업서버를 연결 시켰고, 데이터베이스의 백업파일이 백업서버에 저장될 수 있게 구현하였습니다
화면에 Scp는 다른 서버로 파일을 보내는 기능을 하는 명령어입니다.
*/5가 5분 간격으로를 뜻하는 옵션입니다. 그리고 백업 디렉토리도 잊지 말고 만들었구요
Scp명령어를 쓰려면 암호를 입력해야하는데 크론데몬에서는 쉽지않은작업이고 보안때문에 보통 공개키를 이용합니다.
(irsa(개인키), rsa.pub(공개키) 파일이 생성된다)
(irsa(개인키), rsa.pub(공개키) 파일이 생성된다)
Cron 데몬으로 실행하기위해 공개키설정을 합니다.
위와 같이 설정하면 자동으로 백업하여 데이터베이스 서버에서 백업서버로 보내는 기능을 크론데몬이 실행 할수있습니다.
600소유자에게 읽기 쓰기권한 줌니다.
각 PC들은 고정아이피로 구성하였는데 유동아이피는 연결때 마다 연결되는 장비의 위치가 달라져 관리가 어려우므로 고정아이피를 할당하였습니다.
발권기, 영사기는 gns3에서 구현하기 어려우므로 PC로 구성하였습니다. TMS를 제외한 모두 PC입니다.
기존에 하려던 TMS시스템 솔루션은 가상환경에서 설치가 되지 않아 가장 비슷한 영화관 시스템을 구현하기 위해 DLAN미디어 공유을 이용하였습니다.
DLNA미디어 공유는 Ethernet, Wi-Fi, Bluetooth와 같은 네트워크 기능을 갖춘 기기들간에 네트워크를 통해서 스마트폰이나 카메라, PC, TV에서 네트워크를 통해 쉽게 감상할 수 있고, 공유하는걸말합니다.
솔루션으로는 DLNA 미디어 서버 구축이 가능한 Plex media server를 설치하였습니다. 설치파일은 plex 공식홈페이지에서 다운받을수 있으며 NAS환경 구성할때도 자주 쓰이는 솔루션입니다.
동시접속 스트리밍을 이용한 기가비트 환경을 구성하는데에 중요한 것은 저장장치인데 기가비트를 지원하는 저장장치를 쓰면 동시에 여러곳 에서 영화를 상영하는데 문제없을 걸로 예상됩니다.
더 안정적인 영화관 네트워크를 구성한다면 영사기당 미디어파일을 저장하는 서버를 만들고 재생하면 될거같습니다.
DLNA란 Digital Living Network Alliance의 약자로서 DLNA인증을 통한 제품간에는 네트워크를 통하여 제조사와 제품 종류에 관계 없이 다양한 미디어 컨텐츠(음악/사진/동영상)를 공유하고 재생할 수 있도록 규약을 정의하는 단체이다.
웹서비스는 오픈소스를 많이 사용하여 수정 보완하면서 만들었습니다.
웹서비스는 기본적인 회원가입 및 탈퇴, 로그인 기능과 예매, 발권, 예매확인 취소 기능까지 구현하였습니다. 예매기능은 자리선택 기능과 예매 완료된 자리 표시 기능 등 실제 영화예매사이트처럼 구현하진 못했습니다.
웹서비스를 설계하기위해 저희가 수업에서 배운 웹아파치, PHP, MariaDB와 JavaScript 이용하여 구현하였습니다. JavaScript는 인터넷에 오픈소스 구하기 쉬운 언어면서 클리이언트 사이드 스크립트이여서 다른 설치 필요없이 실행되는 장점이 있어 선택하였습니다.
캐쉬서버에서 nslookup 명령어를 쳤을때 네임서버는 잘 작동하는걸 알 수 있습니다.
회원 가입 및 탈퇴기능은 잘 실행됩니다.
예매 기능도 잘 실행됩니다.
혹시나 나중에 값이 중복되는 문제를 방지하기 위해서 uid와 각 일련번호 Mid Tid Sid로 데이터를 구성하게 만들었습니다.
예매목록 검색해서 예매 취소하는 기능은 잘 작동하며
발권 기능 중 출력은 종이에 하는 것이 아니라 화면에 출력이 잘되는지 확인했습니다.